2016-09-21 5 views
0

私はTableauで使用したいパーティションテーブルの負荷があります。これはQlikの意味ではうまくいきました。なぜなら、各テーブルを自分のメモリに消費してから処理するからです。tableauはパーティションテーブルを扱います

では、私はUNIONテーブルへの道のりを見ることができません(ただし、UNIONファイルがあります)。私はそれをカスタムSQLとして結合しようとすると、ただ時間がかかるので、一度にすべてのデータを引っ張っていると仮定しています。これは7GBのデータで、dbまたはTableauでうまく動作しません。データベースはPostgreSQLです。

パーティションは、事前に集計されているので、私はカスタムクエリ組合を行うときには、次のようになります。

SELECT user_id, grapes, day FROM steps.steps_2016_04_02 UNION 
SELECT user_id, grapes, day FROM steps.steps_2016_04_03 UNION 
SELECT user_id, grapes, day FROM steps.steps_2016_04_04 UNION 
+0

AFAIK Tableauは、1つのテーブルに収まる非正規化データで最も効果的です。私は500Mの行がTableauに読み込まれたテーブルを見てきました。 –

答えて

1

あなたが各テーブルのデータが一意であることを保証することができた場合は、UNIONを使用していませんこれは、別の行を作成するために余分な作業を必要とするためです。

代わりにUNION ALLを使用してください。これは基本的に行の追加です。あなたが示したようにUNIONまたはUNION DISTINCT(同)は、とやや同等です:

SELECT DISTINCT * FROM (
    SELECT user_id, grapes, day FROM steps.steps_2016_04_02 UNION ALL 
    SELECT user_id, grapes, day FROM steps.steps_2016_04_03 UNION ALL 
    SELECT user_id, grapes, day FROM steps.steps_2016_04_04 
) t; 

そしてDISTINCTが非常に遅く、操作することができます。

さらに簡単なオプションは、PostgreSQL's partitioning with table inheritanceを使用してTableauを単一のテーブルとして扱うことです。

+0

私はUNION ALLを試しましたが、まだ何時間も走ってしまい、決して終了しませんでした。もう少し読んだ後、私はパーティショニングの代わりに事前集計テーブルを作成するために行った。これはすぐに構築され、これまでのところtableauの夢のように動作する。私のために答えをまとめてくれてありがとう、それは間違いなく助けになった! – Caullyn

関連する問題