中查詢執行的一般指引 Query Service

本檔案詳細說明在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
NOTE
若要覆寫最大列數限制,包括 LIMIT 0 在您的查詢中。 10分鐘的查詢逾時仍然適用。

依預設,互動式查詢的結果會傳回至使用者端,並會 已保留。 為了將結果作為資料集保留在 Experience Platform,查詢必須使用 CREATE TABLE AS SELECT 語法。

非互動式查詢執行

透過提交的查詢 Query Service API會以非互動方式執行。 非互動式執行表示 Query Service 會接收API呼叫,並依接收順序執行查詢。 非互動式查詢一律會在中產生新資料集 Experience Platform 以接收結果,或將新列插入現有資料集。

存取物件中的特定欄位

若要存取查詢中物件內的欄位,您可以使用點標籤法(.)或方括弧標籤法([])。 下列SQL陳述式使用點標籤法來遍歷 endUserIds 物件,一直到 mcid 物件。

NOTE
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}
分析表格的名稱。
NOTE
由於每個符號型別都會傳回相同的結果,因此您選擇使用的符號取決於您的偏好設定。

上述兩個範例查詢都傳回平面化的物件,而不是單一值:

              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"
)
NOTE
雙引號 無法 與點標籤法欄位存取搭配使用。

後引號

後引號 ` 用於逸出保留的欄名稱 僅限 使用點標籤法語法時。 例如,由於 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

檢視表格資訊

連線至查詢服務後,您可以使用下列其中一種方式來檢視平台上的所有可用表格: \dSHOW 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_tablecustom_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語法檔案.

如需可在查詢服務中使用的更多查詢範例,請參閱以下使用案例檔案:

recommendation-more-help
ccf2b369-4031-483f-af63-a93b5ae5e3fb