Tableauに2つのデータソース(AとB)があります。関係は1:nです。列A(主キー)、フィールド1、フィールド2 ...を含むテーブルA(メインテーブル)。列ID(PKではない)、フィールドX、フィールドYを含むテーブルB。
フィールドBを使用してフィールドXとフィールドYによるフィルタリングを行い、SQLでWHERE A.ID IN(SELECT B.ID FROM TableB B)と同等になるフィルターを使用して、テーブルAからの関連データをプロットしたいテーブルBは、フィールドXとフィールドYの値によって既にフィルターされています。
いくつかの調査の後、私には納得できない2つのオプションが見つかりました。
オプション1:2つのテーブル間で共通の内部結合を使用し、重複を避けるために、テーブルAのメジャーでAVGおよびCOUNT DISTINCTのような集計関数を使用します。
オプション2:Tableauから送信されたパラメーターに基づいてテーブルAでカスタムSQLを使用し、データベースレベルでテーブルAをフィルターします。
最良のオプションは、次の構造でソース間を結合することです
SELECT A. * FROM tableA A INNER JOIN(SELECT DISTINCT ID FROM TABLE B WHERE Field X IN(Dynamic selection from Tableau)AND Field Y IN(Dynamic selection from Tableau))B ON A.ID = B.ID
そのようなことは可能ですか?
ありがとう!!
3番目のオプションがあります。テーブルのサイズによっては、これで十分です。 Tableauデータブレンディングを使用します。 Idフィールドを使用して、2つのテーブル間にリンクを作成します([データ]-> [リレーションシップの編集])。
次に、必要な情報をテーブルAからワークシートにドラッグし、フィールドXとフィールドYをフィルターにドラッグします。ボイラ。
テーブルが大きすぎる場合(特にテーブルB)、事前に結合することをお勧めします。しかし、それは重複したエントリの問題を引き起こす可能性があります(AとBの各エントリに複数の対応がある場合)。左結合の方がお勧めです(フィルターはありません)。