tableau 处理分区表
tableau handle partitioned tables
我有一大堆分区的 table,我想将其使用到 Tableau 中。这对于 Qlik sense 非常有效,因为它会将每个 table 消耗到它自己的内存中,然后对其进行处理。
在 Tableau 中,我看不到 UNION tables 的方法(尽管您可以 UNION 文件)。如果我尝试将它作为自定义 sql 合并,它只会加载几个小时,所以我假设它只是一次提取所有数据,这是 7GB 的数据并且在数据库或 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
如果你能保证每个table的数据是唯一的,那么就不要使用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 上作为单个 table.
工作
我有一大堆分区的 table,我想将其使用到 Tableau 中。这对于 Qlik sense 非常有效,因为它会将每个 table 消耗到它自己的内存中,然后对其进行处理。
在 Tableau 中,我看不到 UNION tables 的方法(尽管您可以 UNION 文件)。如果我尝试将它作为自定义 sql 合并,它只会加载几个小时,所以我假设它只是一次提取所有数据,这是 7GB 的数据并且在数据库或 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
如果你能保证每个table的数据是唯一的,那么就不要使用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 上作为单个 table.
工作