2つデータセットをLEFT JOINし直接クエリで定義したうえでクエリパラメタを与えられるようにしたい

お世話になります。

一般的な業務トランザクションテーブルとマスタテーブルをLEFT JOIN で結合するケースです。
課題があり、マスタ側は時系列で保持しているため全ての組み合わせをSPICEに保管するのは
現実的ではない状況です。
そこで直接クエリを使ってマスタ側は動的に絞り込みをしたうえで、LEFT JOINをさせたいと考えています。

イメージは以下のとおりです。

もともとのデータの実態はS3に配置したParquetファイルとなっており、
Athenaからトラン、マスタそれぞれデータソースとしてクエリ定義をしています。
それらをQuickSightのデータセットとしてLEFT JOIN した定義を直接クエリの形式で
保存したいのですが、結合条件を設定したタイミングでクエリモードが
「SPICE」で必ず設定されてしまいます。

当方でこちらの仕様を確認したところ、以下の記載がありますが、
>データセットに手動でアップロードされたファイルが 1 つ以上含まれている場合、データセットは SPICE に自動的に保存されます。

今回はそれぞれAthenaを経由しており、直接アップロードファイルを参照していないため、
直接クエリになることを期待しています。

また、実は同じ要件で実際に「直接クエリ」で定義ができたものもあるのですが、
それと同じ条件で再構築を試みてもクエリモードが「SPICE」になっていまい、
何が原因で「SPICE」で判定されるのかがわかりませんでした。

大変お手数ですが、本件の原因と対応策についてご教示頂けますと幸いです。

ご質問ありがとうございます。

同一ソースのデータセットと判断されていない可能性があります。
すでに確認頂いているページの記載通り、以下を満たしていないとクロスソースとなり、SPICEの利用が必須となります。

  • いずれかの論理テーブルが QuickSight データソースを参照している場合:

    • このデータセット内のすべての論理テーブルは、同じ QuickSight データソースを参照する必要があります。これは、2 つの個別の QuickSight データソースが同じ基盤となるデータベースを参照している場合には適用されません。まったく同じ QuickSight データソースである必要があります。単一データソースの使用の詳細については、「既存のデータソースを使用したデータセットの作成」を参照してください。
  • いずれかの論理テーブルが親 QuickSight データセットであるデータセットを参照している場合:

    • 親データセットは直接クエリを使用する必要があります。
    • 親データセットは同じ QuickSight データソースを参照する必要があります。

上記の条件が満たされない場合、データセットはクロスソース結合と見なされます。

以下の手順に従い、同一ソースと認識されるか確認願います。

@Reon

上記提供いただいたスクリーンショットから、同じデータソースではないですね。
左側のトランザクションテーブルはAthenaのテーブルをデータソースとしているようですが、右のマスタテーブルはデータセットのように見えます。上記ymatzさんが回答されているように、データソースを参照している場合は、双方とも同じデータソース、そうではなく、データセットを参照している場合は双方とも同じデータソースを参照したデータセットである必要があります。

JOIN結果を直接クエリでデータセットを作成したい場合は、マスタテーブルをデータセットにせずに、「データ追加」で、「データソース」を選択し、トランザクションテーブルのAthenaと同じデータソースを選択し、直接カスタムクエリを作成することで可能かと思います。

1 Like

@ymatz @Wakana

早々にご回答をいただきありがとうございます。
ご指摘のとおり、参照しているデータソースを確認したところ、同一のデータストアにも関わらず、別名でデータソースが定義されておりました。
背景としてチームで複数の管理者がデータセットを作成しており、最初の段階でデータソースの共有設定ができておらず、複数のデータセット定義が存在していることがわかりました。

初回の投稿で"うまくいったケースもある"というのは、そのときは同一データソースだったからでした。
ご丁寧に回答をいただきとても助かりました。ありがとうございました。
本件は解決・クローズとしていただければと思います。

1 Like