tableau处理分区表

时间:2016-09-21 21:11:30

标签: postgresql tableau

我有一大堆分区表,我想将其用于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

1 个答案:

答案 0 :(得分: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作为单个表工作。