データの結合 - Amazon QuickSight

データの結合

Amazon QuickSight で結合インターフェイスを使用して、1 つ以上のデータソースからオブジェクトを結合できます。Amazon QuickSight を使用してデータを結合することで、異なるソースのデータを複製することなく、分散したデータをマージできます。

以下の制限が結合に適用されます。

  • 複数のデータソースの結合の場合、結果セットは SPICE データセットになります。

  • 複数のデータソースの結合の場合、データセットの作成に使用するデータのサイズ制限はありません。常に最大のテーブルから結合を開始してください。多くの場合、これはファクトテーブルです。残りのテーブルは、合計サイズが 1 GB 未満である必要があります。

  • Amazon QuickSight で作成した計算フィールドで結合することはできません。

  • 地理空間データタイプを使用するフィールドでは結合できません。

複数のデータソース間でテーブルを結合するいくつかの例については、AWS ビッグデータブログの Joining across data sources on Amazon QuickSight を参照してください。

結合の作成

以下の手順に従って、データセットで使用するテーブルを結合します。開始する前に、データのインポートまたはデータへの接続を行います。Amazon QuickSight がサポートする任意のデータソース間の結合を作成できます (IoT データを除く)。例えば、コンマ区切り値 (.csv) ファイル、テーブル、ビュー、SQL クエリ、JSON オブジェクトを Amazon S3 バケットに追加できます。

1 つ以上のファイルを追加するには

  1. 使用するデータセットを開きます。

  2. (オプション) 開始する前に、データのサンプルに基づいて自動生成されたプレビューを無効にするかどうかを決定します。この機能をオフにするには、右上の [Auto-preview] を選択します。これは、デフォルトで有効になっています。

  3. クエリモードをまだ選択していない場合は、[Query mode]を選択します。

    [SPICE] を選択してデータセットを SPICE に保存するか、[Direct query] (直接クエリ) を選択して毎回ライブデータをプルします。データセットに手動でアップロードされたファイルが 1 つ以上含まれている場合、データセットは SPICE に自動的に保存されます。

    [SPICE] を選択すると、データは QuickSight に取り込まれます。データセットを使用するビジュアルは、データベースではなく SPICE でクエリを実行します。

    [Direct query] (直接クエリ) を選択する場合、データは SPICE に取り込まれません。データセットを使用するビジュアルは、SPICE ではなく、データベースでクエリを実行します。

    [Query mode] を選択した場合は、ビジュアルのロード時のパフォーマンスを向上するために、必要に応じて結合に一意のキーを設定してください。

  4. データ準備ページで、[Add data (データの追加)] を選択します。

  5. 開いた [Add data] ページで、次のいずれかのオプションを選択し、次の手順を実行します。

    • データセットからデータを追加する。

      1. [Dataset] を選択する。

      2. リストからデータセットを選択する。

      3. [Select] (選択) を選択します。

    • データソースからデータを追加する。

      1. [Data source] を選択する。

      2. リストからデータソースを選択する。

      3. [Select] (選択) を選択します。

      4. リストからテーブルを選択する。

      5. [Select] (選択) を選択します。

    • 複数回、テーブルを追加して自己結合を作成する。名前の後にカウンターが表示されます。例えば、[Product (製品)]、[Product (2) (製品 (2))]、[Product (3) (製品 (3))] と表示されます。特定のフィールドがどのテーブルインスタンスからのものかを確認できるように、[Fields (フィールド)] セクションや [Filters (フィルタ)] セクションのフィールド名には同じカウンターが含まれるようにします。

    • [Upload a file] を選択して新しいファイルを追加し、統合するファイルを選択する。

  6. (オプション) SQL データソースのクエリを書き込むには、[カスタム SQL の使用] を選択してクエリエディタを開きます。

  7. (オプション) データを追加したら、メニューアイコンを選択して各テーブルを操作します。テーブルをドラッグアンドドロップして再配置します。

    この結合を設定する必要があることを示す、赤いドットの付いたアイコンが表示されます。まだ設定されていない結合には、2 つの赤いドットが表示されます。結合を作成するには、最初の結合設定アイコンを選択します。

  8. (オプション) 既存の結合を変更するには、2 つのテーブル間の結合アイコンを選択して、[Join configuration (結合の設定)] をもう一度開きます。

    [Join configuration (結合の設定)] ペインが開きます。結合インターフェイスで、テーブルを結合するために使用する結合タイプとフィールドを指定します。

  9. 画面の下部に、別のテーブルのフィールドと同等のテーブルのフィールドを設定するオプションが表示されます。

    1. [Join clauses (結合句)] セクションで、各テーブルの結合列を選択します。

      (オプション)選択したテーブルが複数の列で結合する場合は、[Add a new join clause (新しい結合句の追加)] を選択します。これにより、結合句に別の行が追加され、結合する次の列セットを指定できます。2 つのデータオブジェクトのすべての結合列を指定するまで、このプロセスを繰り返します。

  10. [Join configuration (結合の設定)] で、適用する結合の種類を選択します。結合フィールドが一方または両方のテーブルの一意のキーである場合は、一意のキー設定を有効にします。一意のキーは直接クエリにのみ適用され、SPICE データには適用されません。

    結合の詳細については、結合の種類 を参照してください。

  11. [Apply (適用)] を選択して選択内容を確定します。

    変更を加えずに終了するには、[Cancel (キャンセル)] を選択します。

  12. WorkSpace の結合アイコンが変更され、新しい関係が表示されます。

  13. (オプション) [Fields (フィールド)] セクションでは、各フィールドのメニューを使用して、次の 1 つ以上の操作を実行できます。

    • 地理空間フィールドに階層を追加する

    • フィールドを含めるまたは除外する

    • フィールドの名前および説明を編集する

    • データ型の変更

    • 計算を追加する (計算フィールド)。

    • アクセスを自分のみに制限する (自身のみがアクセスできます)。これは、すでに使用しているデータセットにフィールドを追加する場合に便利です。

  14. (オプション) [Filters (フィルタ)] セクションで、フィルタを追加または編集できます。詳細については、データのフィルタリングを参照してください。

結合の種類

Amazon QuickSight では、以下の結合タイプがサポートされています。

  • 内部結合

  • 左と右の外部結合

  • 完全外部結合

これらの結合タイプでのデータの処理について詳しく見ていきます。このサンプルデータでは、widgetsafety rating という名前の次のテーブルを使用しています。

SELECT * FROM safety-rating rating_id safety_rating 1 A+ 2 A 3 A- 4 B+ 5 B SELECT * FROM WIDGET widget_id widget safety_rating_id 1 WidgetA 3 2 WidgetB 1 3 WidgetC 1 4 WidgetD 2 5 WidgetE 6 WidgetF 5 7 WidgetG

内部結合

2 つのテーブル間で一致するデータのみを表示するには、内部結合 ( ) を使用します。例えば、[safety-rating] テーブルと [widget] テーブルで内部結合を実行したとします。

次の結果セットでは、安全評価のないウィジェットは削除され、関連付けられたウィジェットがない安全評価も削除されています。含まれるのは、完全に一致する行のみです。

SELECT * FROM safety-rating INNER JOIN widget ON safety_rating.rating_id = widget.safety_rating_id rating_id safety_rating widget_id widget safety_rating_id 3 A- 1 WidgetA 3 1 A+ 2 WidgetB 1 1 A+ 3 WidgetC 1 2 A 4 WidgetD 2 5 B 6 WidgetF 5

左と右の外部結合

これらは左または右の外部結合とも呼ばれます。1 つのテーブルのすべてのデータと、別のテーブルの一致する行のみを表示するには、左 ( ) または右 ( ) の外部結合を使用します。

グラフィカルインターフェイスで、右または左にあるテーブルを確認できます。SQL ステートメントでは、最初のテーブルは左側にあると見なされます。そのため、右外部結合ではなく左外部結合を選択することは、テーブルのクエリツールでの配置方法のみに依存します。

例えば、safety-rating (左のテーブル) と widgets (右のテーブル) に対して左外部結合 ( ) を実行したとします。この場合、すべての safety-rating 行が返され、一致する widget 行だけが返されます。一致するデータがない箇所は結果セットで空白になります。

SELECT * FROM safety-rating LEFT OUTER JOIN widget ON safety_rating.rating_id = widget.safety_rating_id rating_id safety_rating widget_id widget safety_rating_id 1 A+ 2 WidgetB 1 1 A+ 3 WidgetC 1 2 A 4 WidgetD 2 3 A- 1 WidgetA 3 4 B+ 5 B 6 WidgetF 5

代わりに右外部結合 ( ) を使用する場合は、safety-rating が左側、widgets が右側になるように同じ順序でテーブルを呼び出します。この場合、一致する safety-rating 行だけが返され、すべての widget 行が返されます。一致するデータがない箇所は結果セットで空白になります。

SELECT * FROM safety-rating RIGHT OUTER JOIN widget ON safety_rating.rating_id = widget.safety_rating_id rating_id safety_rating widget_id widget safety_rating_id 3 A- 1 WidgetA 3 1 A+ 2 WidgetB 1 1 A+ 3 WidgetC 1 2 A 4 WidgetD 2 5 WidgetE 5 B 6 WidgetF 5 7 WidgetG

完全外部結合

これらは単に外部結合と呼ばれることもありますが、この用語は左外部結合、右外部結合、完全外部結合のいずれかを意味する場合もあります。意味を定義するため、完全な名前の完全外部結合を使用します。

一致するデータに加えて、一致しない両方のテーブルのデータを表示するには、完全外部結合 ( ) を使用します。この結合タイプには、両方のテーブルのすべての行が含まれます。例えば、safety-rating テーブルと widget テーブルに対して完全外部結合を実行した場合、すべての行が返されます。行は一致する場所で整列されて、余分なデータはすべて別個の行に含まれます。一致するデータがない箇所は結果セットで空白になります。

SELECT * FROM safety-rating FULL OUTER JOIN widget ON safety_rating.rating_id = widget.safety_rating_id rating_id safety_rating widget_id widget safety_rating_id 1 A+ 2 WidgetB 1 1 A+ 3 WidgetC 1 2 A 4 WidgetD 2 3 A- 1 WidgetA 3 4 B+ 5 B 6 WidgetF 5 5 WidgetE 7 WidgetG