本檔案詳細說明在Adobe Experience Platform中撰寫查詢時需要瞭解的重要細節 Query Service.
如需有關中所用SQL語法的詳細資訊, Query Service,請閱讀 SQL語法檔案.
Adobe Experience Platform Query Service 有兩種查詢執行模型:互動式和非互動式。 互動式執行用於商務智慧工具中的查詢開發和報表產生,而非互動式則用於大型作業和作業查詢,作為資料處理工作流程的一部分。
透過以下方式提交查詢,便能以互動方式執行查詢: Query Service UI或 透過連線的使用者端. 執行時 Query Service 透過連線的使用者端,使用中的工作階段會在使用者端與之間執行 Query Service 直到提交的查詢傳回或逾時。
互動式查詢執行有下列限制:
參數 | 限制 |
---|---|
查詢逾時 | 10 分鐘 |
傳回的最大列數 | 50,000 |
最大並行查詢數 | 5 |
若要覆寫最大列數限制,包括 LIMIT 0
在您的查詢中。 10分鐘的查詢逾時仍然適用。
依預設,互動式查詢的結果會傳回至使用者端,並會 非 已保留。 為了將結果作為資料集保留在 Experience Platform,查詢必須使用 CREATE TABLE AS SELECT
語法。
透過提交的查詢 Query Service API會以非互動方式執行。 非互動式執行表示 Query Service 會接收API呼叫,並依接收順序執行查詢。 非互動式查詢一律會在中產生新資料集 Experience Platform 以接收結果,或將新列插入現有資料集。
若要存取查詢中物件內的欄位,您可以使用點標籤法(.
)或方括弧標籤法([]
)。 下列SQL陳述式使用點標籤法來遍歷 endUserIds
物件,一直到 mcid
物件。
Experience CloudID (ECID)也稱為MCID,並將繼續用於名稱空間。
SELECT endUserIds._experience.mcid
FROM {ANALYTICS_TABLE_NAME}
WHERE endUserIds._experience.mcid IS NOT NULL
AND TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 1
屬性 | 說明 |
---|---|
{ANALYTICS_TABLE_NAME} |
分析表格的名稱。 |
下列SQL陳述式使用方括弧標籤法來遍歷 endUserIds
物件,一直到 mcid
物件。
SELECT endUserIds['_experience']['mcid']
FROM {ANALYTICS_TABLE_NAME}
WHERE endUserIds._experience.mcid IS NOT NULL
AND TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 1
屬性 | 說明 |
---|---|
{ANALYTICS_TABLE_NAME} |
分析表格的名稱。 |
由於每個符號型別都會傳回相同的結果,因此您選擇使用的符號取決於您的偏好設定。
上述兩個範例查詢都傳回平面化的物件,而不是單一值:
endUserIds._experience.mcid
--------------------------------------------------------
(48168239533518554367684086979667672499,"(ECID)",true)
(1 row)
傳回的 endUserIds._experience.mcid
物件包含下列引數的對應值:
id
namespace
primary
當欄只宣告為向下至物件時,會將整個物件以字串形式傳回。 若只要檢視ID,請使用:
SELECT endUserIds._experience.mcid.id
FROM {ANALYTICS_TABLE_NAME}
WHERE endUserIds._experience.mcid IS NOT NULL
AND TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 1
endUserIds._experience.mcid.id
----------------------------------------
48168239533518554367684086979667672499
(1 row)
單引號、雙引號與後引號在「查詢服務」查詢中的使用方式不同。
單引號('
)來建立文字字串。 例如,它可用於 SELECT
陳述式傳回結果中的靜態文字值,以及 WHERE
用於評估資料行內容的子句。
下列查詢會宣告靜態文字值('datasetA'
)代表欄:
SELECT
'datasetA',
timestamp,
web.webPageDetails.name
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
以下查詢使用單引號字串('homepage'
)的WHERE子句傳回特定頁面的事件。
SELECT
timestamp,
endUserIds._experience.mcid.id
FROM {ANALYTICS_TABLE_NAME}
WHERE web.webPageDetails.name = 'homepage'
AND TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
雙引號("
)來宣告含空格的識別碼。
當一欄的識別碼中包含空格時,下列查詢會使用雙引號來傳回指定欄的值:
SELECT
no_space_column,
"space column"
FROM
( SELECT
'column1' as no_space_column,
'column2' as "space column"
)
雙引號 無法 與點標籤法欄位存取搭配使用。
後引號 `
用於逸出保留的欄名稱 僅限 使用點標籤法語法時。 例如,由於 order
是SQL中的保留字,您必須使用反引號來存取欄位 commerce.order
:
SELECT
commerce.`order`
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
後引號也可用來存取以數字開頭的欄位。 例如,若要存取欄位 30_day_value
,您必須使用後引號標籤法。
SELECT
commerce.`30_day_value`
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
後引號為 非 如果您使用方括弧標籤法則需要。
SELECT
commerce['order']
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
連線至查詢服務後,您可以使用下列其中一種方式來檢視平台上的所有可用表格: \d
或 SHOW TABLES
命令。
此 \d
命令顯示標準 PostgreSQL 檢視以列出表格。 此命令的輸出範例如下所示:
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+----------
public | luma_midvalues | table | postgres
public | luma_postvalues | table | postgres
(2 rows)
SHOW TABLES
command是自訂命令,可提供表格的詳細資訊。 此命令的輸出範例如下所示:
name | dataSetId | dataSet | description | resolved
-----------------+--------------------------+----------------+-------------+----------
luma_midvalues | 5bac030c29bb8d12fa992e58 | Luma midValues | | false
luma_postvalues | 5c86b896b3c162151785b43c | Luma midValues | | false
(2 rows)
若要檢視表格中綱要的詳細資訊,您可以使用 \d {TABLE_NAME}
命令,其中 {TABLE_NAME}
是要檢視其綱要資訊之表格的名稱。
下列範例顯示 luma_midvalues
表格,使用即可檢視 \d luma_midvalues
:
Table "public.luma_midvalues"
Column | Type | Collation | Nullable | Default
-------------------+-----------------------------+-----------+----------+---------
timestamp | timestamp | | |
_id | text | | |
productlistitems | anyarray | | |
commerce | luma_midvalues_commerce | | |
receivedtimestamp | timestamp | | |
enduserids | luma_midvalues_enduserids | | |
datasource | datasource | | |
web | luma_midvalues_web | | |
placecontext | luma_midvalues_placecontext | | |
identitymap | anymap | | |
marketing | marketing | | |
environment | luma_midvalues_environment | | |
_experience | luma_midvalues__experience | | |
device | device | | |
search | search | | |
此外,您可以將欄的名稱附加至表格名稱,以取得特定欄的詳細資訊。 這會以格式撰寫 \d {TABLE_NAME}_{COLUMN}
.
下列範例顯示的其他資訊 web
欄,並使用下列命令叫用和: \d luma_midvalues_web
:
Composite type "public.luma_midvalues_web"
Column | Type | Collation | Nullable | Default
----------------+-----------------------------------+-----------+----------+---------
webpagedetails | luma_midvalues_web_webpagedetails | | |
webreferrer | web_webreferrer | | |
您可以將多個資料集聯結在一起,將其他資料集的資料納入查詢。
以下範例將連線以下兩個資料集(your_analytics_table
和 custom_operating_system_lookup
)並建立 SELECT
前50名作業系統(依頁面檢視次數計算)的陳述式。
查詢
SELECT
b.operatingsystem AS OperatingSystem,
SUM(a.web.webPageDetails.pageviews.value) AS PageViews
FROM your_analytics_table a
JOIN custom_operating_system_lookup b
ON a._experience.analytics.environment.operatingsystemID = b.operatingsystemid
WHERE TIMESTAMP >= TO_TIMESTAMP('2018-01-01') AND TIMESTAMP <= TO_TIMESTAMP('2018-12-31')
GROUP BY OperatingSystem
ORDER BY PageViews DESC
LIMIT 50;
結果
作業系統 | 頁面檢視 |
---|---|
Windows 7 | 2781979.0 |
Windows XP | 1669824.0 |
Windows 8 | 420024.0 |
Adobe AIR | 315032.0 |
Windows Vista | 173566.0 |
行動iOS 6.1.3 | 119069.0 |
Linux | 56516.0 |
OSX 10.6.8 | 53652.0 |
Android 4.0.4 | 46167.0 |
Android 4.0.3 | 31852.0 |
Windows Server 2003和XP x64 Edition | 28883.0 |
Android 4.1.1 | 24336.0 |
Android 2.3.6 | 15735.0 |
OSX 10.6 | 13357.0 |
Windows Phone 7.5 | 11054.0 |
Android 4.3 | 9221.0 |
查詢服務支援重複資料刪除,或從資料中刪除重複列。 如需重複資料刪除的詳細資訊,請參閱 查詢服務重複資料刪除指南.
查詢服務會使用UTC時間戳記格式,標準化Adobe Experience Platform中的持續資料。 如需有關如何將時區要求轉換為UTC時間戳記的詳細資訊,請參閱 有關如何將時區變更為UTC時間戳記以及從UTC時間戳記變更的常見問題集區段.
閱讀本檔案後,您瞭解了使用編寫查詢時的一些重要注意事項 Query Service. 如需有關如何使用SQL語法撰寫您自己的查詢的詳細資訊,請參閱 SQL語法檔案.
如需可在查詢服務中使用的更多查詢範例,請參閱以下使用案例檔案: