2016-09-21 80 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最適合適合一張表的非規格化數據。我已經看到有500M行加載到Tableau的表格。 –

回答

1

如果你能保證每個表的數據是唯一的,那麼就不要使用UNION ,因爲它需要額外的工作才能製作出不同的行。

改爲使用UNION ALL,它基本上是行的附加。 UNIONUNION 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

我試過聯盟所有,但它仍然只是跑了幾個小時,從來沒有完成。多讀一點之後,我只是做了一個預聚合表而不是分區,它的構建很快,並且像迄今爲止的一個夢一樣運行。感謝您爲我提供答案,它絕對有幫助! – Caullyn