web-dev-qa-db-ja.com

Tableauで結合せずに2つのデータソースを接続する

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

そのようなことは可能ですか?

ありがとう!!

7
pau.ferrer

3番目のオプションがあります。テーブルのサイズによっては、これで十分です。 Tableauデータブレンディングを使用します。 Idフィールドを使用して、2つのテーブル間にリンクを作成します([データ]-> [リレーションシップの編集])。

次に、必要な情報をテーブルAからワークシートにドラッグし、フィールドXとフィールドYをフィルターにドラッグします。ボイラ。

テーブルが大きすぎる場合(特にテーブルB)、事前に結合することをお勧めします。しかし、それは重複したエントリの問題を引き起こす可能性があります(AとBの各エントリに複数の対応がある場合)。左結合の方がお勧めです(フィルターはありません)。

5
Inox