本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
彙總分析規則
注意
適用於: AWS Clean Rooms SQL 分析引擎
在 中 AWS Clean Rooms,彙總分析規則會沿著選用維度使用 COUNT、SUM 和/或 AVG 函數產生彙總統計資料。當彙總分析規則新增至設定的資料表時,可讓可查詢的成員在設定的資料表上執行查詢。
彙總分析規則支援行銷活動規劃、媒體觸及、頻率測量和屬性等使用案例。
支援的查詢結構和語法在 中定義彙總查詢結構和語法。
中定義的分析規則參數彙總分析規則 - 查詢控制項包含查詢控制項和查詢結果控制項。其查詢控制項包含要求已設定資料表加入至少一個由成員擁有的已設定資料表的功能,該成員可以直接或暫時查詢。此要求可讓您確保查詢在資料表及其 的交集 (INNERJOIN) 上執行。
彙總查詢結構和語法
具有彙總分析規則之資料表的查詢必須遵循下列語法。
--
select_aggregate_function_expression
SELECT aggregation_function(column_name) [[AS] column_alias ] [, ...] --select_grouping_column_expression
[, {column_name|scalar_function(arguments)} [[AS] column_alias ]][, ...] --table_expression
FROM table_name [[AS] table_alias ] [[INNER] JOIN table_name [[AS] table_alias] ON join_condition] [...] --where_expression
[WHERE where_condition] --group_by_expression
[GROUP BY {column_name|scalar_function(arguments)}, ...]] --having_expression
[HAVING having_condition] --order_by_expression
[ORDER BY {column_name|scalar_function(arguments)} [{ASC|DESC}]] [,...]]
下表說明上述語法中列出的每個表達式。
表達式 | 定義 | 範例 |
---|---|---|
|
逗號分隔的清單,其中包含下列表達式:
注意
|
|
|
套用到一或多個資料欄的一或多個支援彙總函數。僅允許資料欄做為彙總函數的引數。 注意
|
|
|
可使用下列項目包含任何表達式的表達式:
注意
|
|
|
資料表或資料表聯結,使用 連接聯結條件式表達式
|
|
|
傳回布林值的條件式表達式。它可能包含下列項目:
支援的比較條件為 ( 支援的邏輯運算子為 (
|
|
|
符合 需求的逗號分隔表達式清單 |
|
|
傳回布林值的條件式表達式。它們具有套用至單一資料欄的支援彙總函數 (例如 支援的條件為 ( 支援的邏輯運算子為 (
|
|
|
以逗號分隔的表達式清單,與
注意
|
|
對於彙總查詢結構和語法,請注意下列事項:
-
不支援 以外的 SQL SELECT 命令。
-
不支援子查詢和常用資料表表達式 (例如 WITH)。
-
不支援合併多個查詢的運算子 (例如 UNION)。
-
TOP不支援 LIMIT、 和 OFFSET 參數。
彙總分析規則 - 查詢控制項
透過彙總查詢控制項,您可以控制資料表中的資料欄用於查詢資料表的方式。例如,您可以控制要用來聯結的欄位、可以計算的欄位,或可以在WHERE陳述式中使用的欄位。
以下各節說明每個控制項。
彙總控制項
透過使用彙總控制項,您可以定義要允許哪些彙總函數,以及必須套用哪些資料欄。彙總函數可用於 SELECT、 HAVING和 ORDERBY運算式。
控制項 | 定義 | 用量 |
---|---|---|
aggregateColumns |
您在彙總函數中允許使用的已設定資料表資料欄資料欄。 |
有些 指定的 也 |
function |
您允許在 上使用的 COUNT、SUM 和 AVG 函數aggregateColumns 。 |
|
聯結控制項
子JOIN
句用於根據兩個或多個資料表中的相關資料欄來組合資料列。
您可以使用聯結控制項來控制資料表如何聯結至 中的其他資料表table_expression
。 AWS Clean Rooms 僅支援 INNER JOIN。 INNERJOIN陳述式只能使用在分析規則joinColumn
中明確分類為 的資料欄,但需受您定義的控制項所限制。
INNER JOIN 必須在joinColumn
您設定的資料表和協作中joinColumn
另一個設定的資料表的 上操作。您可以決定資料表中哪些資料欄可以用作 joinColumn
。
子ON句中的每個相符條件都需要在兩個資料欄之間使用等式比較條件 (=
)。
ON 子句中的多個相符條件可以是:
-
使用
AND
邏輯運算子合併 -
使用
OR
邏輯運算子分隔
注意
所有JOIN相符條件都必須符合 每一端的一列JOIN。或OR
AND
邏輯運算子連接的所有條件也必須遵守此要求。
以下是具有AND
邏輯運算子的查詢範例。
SELECT some_col, other_col FROM table1 JOIN table2 ON table1.id = table2.id AND table1.name = table2.name
以下是具有OR
邏輯運算子的查詢範例。
SELECT some_col, other_col FROM table1 JOIN table2 ON table1.id = table2.id OR table1.name = table2.name
控制項 | 定義 | 用量 |
---|---|---|
joinColumns |
您想要允許可在 INNERJOIN陳述式中使用查詢的成員的資料欄 (如果有的話)。 |
特定 相同的資料欄無法同時做為 除非它也被分類為 |
joinRequired |
控制您是否需要INNERJOIN具有可查詢之成員所設定資料表的 。 |
如果您啟用此參數,INNERJOIN則需要 。如果您未啟用此參數,則 INNERJOIN為選用。 假設您啟用此參數,則能夠查詢的成員需要在 INNER 中包含他們擁有的資料表JOIN。他們必須JOIN直接或暫時使用您的資料表 (也就是,將資料表加入另一個資料表,而資料表本身會加入資料表)。 |
以下是傳輸性的範例。
ON my_table.identifer = third_party_table.identifier .... ON third_party_table.identifier = member_who_can_query_table.id
注意
可以查詢的成員也可以使用 joinRequired
參數。在這種情況下,查詢必須與至少另一個資料表聯結。
維度控制項
維度控制項控制可篩選、分組或彙總彙總資料欄的資料欄。
控制項 | 定義 | 用量 |
---|---|---|
dimensionColumns |
您允許可在 SELECT、BY、 和 中查詢使用之成員的資料欄 WHERE GROUP (若有)ORDERBY。 |
相同的資料欄不能同時是 |
純量函數
純量函數控制哪些純量函數可用於維度資料欄。
控制項 | 定義 | 用量 |
---|---|---|
scalarFunctions |
可在查詢 |
指定您允許 (例如,) 套用至 的純量函數 (如果有的話CAST) 純量函數無法用於其他函數的頂端,也不能用於其他函數。純量函數的引數可以是資料欄、字串常值或數值常值。 |
支援下列純量函數:
-
數學函數 – ABS、CEILING、FLOOR、LOG、LN、ROUND、SQRT
-
資料類型格式化函數 – CAST, CONVERT, TO_CHAR, TO_DATE, TO_NUMBER, TO_TIMESTAMP
-
字串函數 – LOWER、UPPER、TRIM、RTRIM、SubSTRING
-
對於 RTRIM,不允許要修剪的自訂字元集。
-
-
條件式表達式 – COALESCE
-
日期函數 – EXTRACT、GETDATE、CURRENT_DATE、DATEADD
-
其他 函數 – TRUNC
如需詳細資訊,請參閱 AWS Clean Rooms SQL 參考。
彙總分析規則 - 查詢結果控制項
使用彙總查詢結果控制項,您可以指定每個輸出列必須符合的一或多個條件來控制傳回的結果。 AWS Clean Rooms 支援 形式的彙總限制COUNT (DISTINCT column) >= X
。此表單要求每一列至少從您設定的資料表彙總 X 個不同的值 (例如,最低數量的不同user_id
值)。即使提交的查詢本身未使用指定的資料欄,系統也會自動強制執行此最低閾值。它們會在協同合作中每個成員所設定資料表的查詢中,於每個已設定的資料表中共同強制執行。
每個設定的資料表在其分析規則中必須至少有一個彙總限制條件。已設定的資料表擁有者可以新增多個 columnName
和關聯minimum
,而且它們會集體強制執行。
彙總限制
彙總限制控制查詢結果中傳回哪些資料列。若要傳回,資料列必須符合彙總限制中指定之每個資料欄中指定的相異值下限。即使查詢或分析規則的其他部分未明確提及資料欄,此要求也適用。
控制項 | 定義 | 用量 |
---|---|---|
columnName |
|
可以是已設定資料表中的任何資料欄。 |
minimum |
|
值必須至少 |
彙總分析規則結構
下列範例顯示彙總分析規則的預先定義結構。
在下列範例中,
參考您的資料表。您可以使用自己的資訊取代每個MyTable
使用者輸入預留位置
。
{ "aggregateColumns": [ { "columnNames": [
MyTable column names
], "function": [Allowed Agg Functions
] }, ], "joinRequired": ["QUERY_RUNNER"], "joinColumns": [MyTable column names
], "dimensionColumns": [MyTable column names
], "scalarFunctions": [Allowed Scalar functions
], "outputConstraints": [ { "columnName": [MyTable column names
], "minimum": [Numeric value
] }, ] }
彙總分析規則 - 範例
下列範例示範兩家公司如何使用彙總分析 AWS Clean Rooms 合作。
A 公司有客戶和銷售資料。A 公司有興趣了解產品退回活動。B 公司是 A 公司的零售商之一,並具有傳回資料。B 公司也有客戶客群屬性,對 A 公司很有用 (例如,購買相關產品、使用來自零售商的客戶服務)。B 公司不想提供資料列層級的客戶傳回資料和屬性資訊。B 公司只想為 A 公司啟用一組查詢,以最低彙總閾值取得重疊客戶的彙總統計資料。
A 公司和 B 公司決定合作,讓 A 公司可以了解產品退回活動,並在 B 公司和其他管道交付更好的產品。
若要建立協作並執行彙總分析,公司會執行下列動作:
-
公司 A 會建立協作並建立成員資格。協同合作讓 B 公司成為協同合作中的另一個成員。公司 A 會在協同作業中啟用查詢記錄,並在其帳戶中啟用查詢記錄。
-
B 公司在協同合作中建立成員資格。它會在其帳戶中啟用查詢記錄。
-
公司 A 會建立銷售設定的資料表。
-
公司 A 會將下列彙總分析規則新增至銷售設定資料表。
{ "aggregateColumns": [ { "columnNames": [ "identifier" ], "function": "COUNT_DISTINCT" }, { "columnNames": [ "purchases" ], "function": "AVG" }, { "columnNames": [ "purchases" ], "function": "SUM" } ], "joinColumns": [ "hashedemail" ], "dimensionColumns": [ "demoseg", "purchasedate", "productline" ], "scalarFunctions": [ "CAST", "COALESCE", "TRUNC" ], "outputConstraints": [ { "columnName": "hashedemail", "minimum": 2, "type": "COUNT_DISTINCT" }, ] }
aggregateColumns
– 公司 A 想要計算銷售資料和傳回資料之間重疊中的唯一客戶數量。A 公司也想要加總purchases
要與 數目比較的 數目returns
。joinColumns
– 公司 A 想要使用identifier
,將客戶從銷售資料比對給客戶,從傳回資料比對。這將有助於公司 A 配對返回正確的購買。它還有助於公司 A 區段重疊的客戶。dimensionColumns
– 公司 A 使用 依特定產品dimensionColumns
篩選、比較特定期間的購買和退貨、確保退貨日期晚於產品日期,以及協助劃分重疊的客戶。scalarFunctions
– 公司 ACAST
會根據設定的資料表,視需要選取純量函數以協助更新資料類型格式 公司 A 與協同合作的關聯。它也會新增純量函數,以在需要時協助格式化資料欄。outputConstraints
– 公司 A 會設定最低輸出限制。它不需要限制結果,因為允許分析師查看其銷售資料表中的資料列層級資料注意
A 公司不包含在分析規則
joinRequired
中。它可讓分析師靈活地單獨查詢銷售資料表。 -
B 公司會建立傳回設定的資料表。
-
B 公司將下列彙總分析規則新增至傳回設定的資料表。
{ "aggregateColumns": [ { "columnNames": [ "identifier" ], "function": "COUNT_DISTINCT" }, { "columnNames": [ "returns" ], "function": "AVG" }, { "columnNames": [ "returns" ], "function": "SUM" } ], "joinColumns": [ "hashedemail" ], "joinRequired": [ "QUERY_RUNNER" ], "dimensionColumns": [ "state", "popularpurchases", "customerserviceuser", "productline", "returndate" ], "scalarFunctions": [ "CAST", "LOWER", "UPPER", "TRUNC" ], "outputConstraints": [ { "columnName": "hashedemail", "minimum": 100, "type": "COUNT_DISTINCT" }, { "columnName": "producttype", "minimum": 2, "type": "COUNT_DISTINCT" } ] }
aggregateColumns
– 公司 B 可讓公司 A 與購買數量進行總和returns
比較。它們至少有一個彙總資料欄,因為它們正在啟用彙總查詢。joinColumns
– 公司 B 可讓公司 A 加入identifier
,以比對客戶從銷售資料傳回給客戶的資料。identifier
資料特別敏感,並將它做為 ,joinColumn
確保資料永遠不會在查詢中輸出。joinRequired
– B 公司要求對傳回資料的查詢與銷售資料重疊。他們不想讓 A 公司查詢其資料集中的所有個人。他們也同意其合作協議中的該限制。dimensionColumns
– 公司 B 可讓公司 A 依state
、 和 進行篩選和分組popularpurchases
,customerserviceuser
這些是可協助進行公司 A 分析的唯一屬性。公司 B 可讓公司 A 使用returndate
篩選 之後returndate
發生的輸出purchasedate
。透過此篩選,輸出在評估產品變更的影響時更為準確。scalarFunctions
– B 公司啟用下列項目:-
日期的 TRUNC
-
LOWER 和 UPPER,以防在其資料中輸入
producttype
的格式不同 -
CAST 如果 A 公司需要將銷售中的資料類型轉換為與傳回中的資料類型相同
公司 A 不會啟用其他純量函數,因為他們不認為查詢需要它們。
outputConstraints
– B 公司在 上設定最低輸出限制,hashedemail
以協助降低重新識別客戶的能力。它還在 上新增了最低輸出限制producttype
,以減少重新識別傳回之特定產品的能力。根據輸出的維度 (例如,state
),某些產品類型可能更為優勢。無論 A 公司為其資料新增的輸出限制,一律都會強制執行其輸出限制。 -
-
A 公司建立與協同合作的銷售資料表關聯。
-
B 公司會建立與協同合作的傳回資料表關聯。
-
與 2022 年依位置的總購買量相比,A 公司會執行查詢,例如下列範例,以進一步了解 B 公司中的退貨數量。
SELECT companyB.state, SUM(companyB.returns), COUNT(DISTINCT companyA.hashedemail) FROM sales companyA INNER JOIN returns companyB ON companyA.identifier = companyB.identifier WHERE companyA.purchasedate BETWEEN '2022-01-01' AND '2022-12-31' AND TRUNC(companyB.returndate) > companyA.purchasedate GROUP BY companyB.state;
-
公司 A 和公司 B 會檢閱查詢日誌。B 公司會驗證查詢是否符合合作協議中同意的內容。
對彙總分析規則問題進行故障診斷
當您使用彙總分析規則時,請使用此處的資訊來協助您診斷和修正常見問題。
我的查詢未傳回任何結果
當沒有相符的結果,或相符的結果不符合一或多個最低彙總閾值時,就會發生這種情況。
如需最低彙總閾值的詳細資訊,請參閱彙總分析規則 - 範例。