リスト分析ルール - AWS Clean Rooms

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

リスト分析ルール

AWS Clean Rooms の リスト分析ルールは、追加先の設定済みテーブルと、クエリを行えるメンバーの設定済みテーブルの間の重複を示す、行レベルのリストを出力します。クエリを行えるメンバーが、リスト分析ルールを含むクエリを実行します。

リスト分析ルールは、エンリッチメントやオーディエンス構築などのユースケースに対応します。

この分析ルールの事前定義されたクエリ構造と構文の詳細については、「リスト分析ルールの事前定義された構造」を参照してください。

リスト分析ルール - クエリコントロール で定義されているリスト分析ルールのパラメータにはクエリコントロールがあります。クエリコントロールには、出力に表示できる列を選択する機能が含まれています。クエリには、直接または間接的にクエリを実行できるメンバーの設定済みテーブルとの結合が少なくとも 1 つ必要です。

集計分析ルールのようなクエリ結果コントロールはありません。

リストクエリでは算術演算子しか使用できません。他の関数 (集約やスカラーなど) は使用できません。

リストクエリの構造と構文

リスト分析ルールが追加されたテーブルに対するクエリは、次の構文に従う必要があります。

--select_list_expression SELECT [TOP number ] DISTINCT column_name [[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] --limit_expression [LIMIT number]

次の表は、前述の構文で示したそれぞれの式について説明しています。

定義
select_list_expression

テーブル列名を 1 つ以上含むカンマ区切りリストです。

DISTINCT パラメータが必須です。

注記

select_list_expression では AS パラメータの有無にかかわらず、列にエイリアスを指定できます。

TOP パラメータもサポートしています。詳細については、「AWS Clean Rooms SQL リファレンス」を参照してください。

SELECT DISTINCT segment

table_expression

テーブルまたはテーブルの結合と、それを join_condition に連結するための join_condition

join_condition はブール値を返します。

table_expression では、以下がサポートされています。

  • 特定の JOIN 型 (INNER JOIN)

  • join_condition 内の等価比較条件 (=)

  • 論理演算子 (ANDOR)

FROM consumer_table INNER JOIN provider_table ON consumer_table.identifier1 = provider_table.identifier1 AND consumer_table.identifier2 = provider_table.identifier2
where_expression ブール値を返す条件式です。次ような要素で構成されています。
  • テーブルの列名

  • 算術演算子

  • [String literals] (文字列リテラル)

  • 数値リテラル

サポートされている比較条件は (=, >, <, <=, >=, <>, !=, NOT, IN, NOT IN, LIKE, IS NULL, IS NOT NULL) です。

サポートされている論理演算子は (AND, OR) です。

where_expression はオプションです。

WHERE state + '_' + city = 'NY_NYC'

WHERE timestampColumn = timestampColumn2 - 14

limit_expression

この式は正の整数にする必要があります。TOP パラメータと交換することもできます。

limit_expression はオプションです。

LIMIT 100

リストクエリの構造と構文については、次の点に注意してください。

  • SELECT 以外の SQL コマンドはサポートされていません。

  • サブクエリと共通テーブル式 (WITH など) はサポートされていません。

  • HAVING、GROUP BY、および ORDER BY 句はサポートされていません。

  • OFFSET パラメータはサポートされていません。

リスト分析ルール - クエリコントロール

リストクエリコントロールを使用すると、テーブル内の列を使用してテーブルにクエリを実行する方法を制御できます。例えば、どの列を結合に使用するか、SELECT ステートメントや WHERE 句でどの列を使用できるようにするかを制御できます。

以下のセクションでは、それぞれのコントロールについて説明します。

結合コントロール

結合コントロールを使用することで、テーブルを table_expression で他のテーブルに結合する方法を制御できます。AWS Clean Rooms は、INNER JOIN のみをサポートしています。リスト分析ルールでは、少なくとも 1 つの INNER JOIN が必要であり、クエリを行えるメンバーは、自身が所有するテーブルを INNER JOIN に必ず含めなければなりません。つまり、クエリを行えるメンバーは、自身のテーブルを相手のテーブルと直接または間接的に結合する必要があります。

以下は間接的な結合の例です。

ON my_table.identifer = third_party_table.identifier .... ON third_party_table.identifier = member_who_can_query_table.id

INNER JOIN ステートメントでは、分析ルールで明示的に joinColumn として分類された列のみを使用できます。

INNER JOIN は、自身の設定済みテーブルの joinColumn と、コラボレーション内のもう 1 つの設定済みテーブルの joinColumn で動作する必要があります。テーブルのどの列を joinColumn として使用できるようにするかはテーブルの所有者が決定します。

ON 句内の一致条件ごとに、2 つの列間の等価比較条件 (=) を使用する必要があります。

ON 句では次のようにして複数の一致条件を使用できます。

  • AND 論理演算子を使用して組み合わせる

  • OR 論理演算子を使用して区切る

注記

JOIN の一致条件では、必ず JOIN の各側の 1 つの行が一致しなければなりません。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 クエリを行えるメンバーに INNER JOIN ステートメントでの使用を許可する列。

同じ列を joinColumnlistColumn の両方に分類することはできません (「リストコントロール」を参照)。

joinColumn は INNER JOIN 以外のクエリのどの部分でも使用できません。

リストコントロール

リストコントロールは、クエリ出力 (SELECT ステートメントで使用) または結果のフィルタリング ( WHEREステートメントで使用) に使用できる列を制御します。

コントロール 定義 使用方法
listColumns クエリを行えるメンバーに SELECT および WHERE での使用を許可する列。 listColumn は SELECT と WHERE で使用できます。

同じ列を listColumnjoinColumn の両方として使用することはできません。

リスト分析ルールの事前定義された構造

次の例には、リスト分析ルールを完成させる方法を示す事前定義された構造が含まれています。

次の例では、MyTable がデータテーブルを表しています。各ユーザー入力プレースホルダーは、独自の情報に置き換えることができます。

{ "joinColumns": [MyTable column name(s)], "listColumns": [MyTable column name(s)], }

リスト分析ルール - 例

次の例は、2 つの企業が AWS Clean Rooms でリスト分析を使用してコラボレーションを行う方法を示しています。

A 社には顧客関係管理 (CRM) データがあります。A 社は、顧客についてさらに詳しく知るため、また属性を他の分析のインプットとして使用するために、顧客に関する追加のセグメントデータを取得したいと考えています。B 社には、自社で入手したデータに基づいて作成した独自のセグメント属性で構成されるセグメントデータがあります。B 社は、自社のデータと A 社のデータの間で重複している顧客についてのみ、固有のセグメント属性を A 社に提供したいと考えています。

両社は、A 社が重複するデータのエンリッチメントを行えるよう協力することにしました。A 社はクエリを行えるメンバーで、B 社はデータを寄稿するメンバーです。

コラボレーションを作成し、コラボレーションでリスト分析を実行するために、各社は次のことを行います。

  1. A 社がコラボレーションを作成し、メンバーシップを作成します。このコラボレーションには、B 社がコラボレーションの相手方のメンバーとして参加します。A 社はコラボレーションでのクエリログ記録を有効にし、自社アカウントでのクエリログの記録を有効にします。

  2. B 社がコラボレーションでメンバーシップを作成し、そのアカウントでのクエリログの記録を有効にします。

  3. A 社が、設定済み CRM テーブルを作成します。

  4. A 社が、次の例のような分析ルールを設定済み顧客テーブルに追加します。

    { "joinColumns": [ "identifier1", "identifier2" ], "listColumns": [ "internalid", "segment1", "segment2", "customercategory" ] }

    joinColumns – A 社は、hashedemailthirdpartyid (ID ベンダーから取得) を使用して CRM データの顧客とセグメントデータの顧客を照合したいと考えています。これにより、A 社は適切な顧客のエンリッチメントデータと照合できるようになります。JoinColumns が 2 つあることで、分析の一致率が向上する可能性があります。

    listColumns – A 社は、listColumns を使用して、自社のシステム内で使用している internalid に加えてエンリッチメントのための列を取得します。segment1segment2customercategory を追加し、フィルタで使用することでエンリッチメントを特定のセグメントに限定できるようにします。

  5. B 社が、設定済みセグメントテーブルを作成します。

  6. B 社が、分析ルールを設定済みセグメントテーブルに追加します。

    { "joinColumns": [ "identifier2" ], "listColumns": [ "segment3", "segment4" ] }

    joinColumns – B 社は、A 社が identifier2 で結合を実行して、セグメントデータの顧客を CRM データの顧客と照合できるようにします。A 社と B 社は ID ベンダーと協力して、今回のコラボレーションに適していそうな identifier2 を取得しています。identifier2 は最も一致率が高く、最も正確で、これ以外の ID はクエリに必要ないと考えられたため、他の joinColumns は追加しませんでした。

    listColumns – B 社は、自社で作成、収集し、データエンリッチメントに含めるために (A 社とともに) 調整した属性である segment3 および segment4 の属性で、A 社がエンリッチメントを行えるようにします。こうした重複するセグメントを A 社に行レベルで取得してもらうのは、これがデータエンリッチメントのコラボレーションであるためです。

  7. A 社が、CRM テーブルとコラボレーションとの関連付けを作成します。

  8. B 社が、セグメントテーブルとコラボレーションとの関連付けを作成します。

  9. A 社が、次のようなクエリを実行して、重複する顧客データのエンリッチメントを行います。

    SELECT companyA.internalid, companyB.segment3, companyB.segment4 INNER JOIN returns companyB ON companyA.identifier2 = companyB.identifier2 WHERE companyA.customercategory > 'xxx'
  10. A 社と B 社がクエリログを確認します。B 社は、クエリがコラボレーション契約で合意された内容と一致していることを確認します。