2017-01-23 21 views
1

自分でデータソースをフィルタリングしたいと思います。 SQLでは、それ自体でテーブルを内部結合するだけです。例えば1つの列に2つのフィルターがあります。

SELECT table1.* 
FROM table1 INNER JOIN (SELECT id FROM table1 WHERE variable = ‘X’ AND value = 1) q1 ON table1.id = q1.id 
WHERE table1.variable = ‘Y’ 

あなたは、私は、変数=」X」と値= 1に対して「Y」に等しいだけの変数を提示したい見ることができるように。私は私の主キーは、一緒に「ID」と「変数」であることを意味し、長いデータ・ファイルを使用しています

SELECT * 
FROM table1 
WHERE variable = ‘Y’ AND id IN (SELECT id FROM table1 WHERE variable = ‘X’ AND value = 1) 

私もそれには、次のように書くことができます。したがって、「id」にvariable = ‘X’ AND value = 1がある場合にのみ、variable = ‘Y’のデータがすべて表示されるようにします。このプロセスをTableauダッシュボードでどのように翻訳するのですか?

データソース自体を内部的に結合することなくそれを行う方法に関する提案はありますか?内部結合方法を試しましたが、データが非常に大きく、処理時間が長くなり、他のすべてのプロセスが非常に遅くなります。

答えて

0

最初に、他の変更を加えずに、データソースをtable1でポイントしてください。簡潔でシンプル。

第2に、ワークシート上に戻って、datapaneのidフィールドを選択し、右クリックしてセットを作成します。設定したダイアログペインの全般タブで[すべて]ラジオボタンを選択し、[条件]タブに切り替えます。数式max(variable = 'x' and value = 1)でセットを定義します。あなたのセットは、ids_having_an_X1のような意味があります。これにより、条件に一致する少なくとも1つのデータ行を持つIDのセットが作成されます。それが役に立つならば、SQL IN(...)句の中に入るIDのリストと考えることができます。

これで、フィルタ棚のセットをクエリや計算に含めることができます、または他の棚に置いてください。

where句の効果を得るには、変数 'Y'のみを選択してフィルタシェルフに変数を設定します。

関連する問題