我有一大堆分区表,我想将其用于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 :(得分: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作为单个表工作。