我有一个有点大的表(1.3 亿行),我能够在 10 分钟内在同一台服务器上处理它,并生成一个精简的预聚合表,它工作得很好,每个人都乐于使用它.
该表由大约 6 列分组,其余列与HLL优化的SUM()
或各种聚合。COUNT(DISTINCT myColumn)
hll_union_agg(hll_add(hll_empty(15, 4), hll_hash_bigint(my_column)))
使用这个小结果表的人可以仅按原始列的 1 或 2 个进行分组,以获得更广泛的摘要。只有在最后一步才会产生实际计数
hll_cardinality(hll_union_agg(my_intermediary_hll_set))
结果以毫秒为单位产生。
问题是将其作为 Hyper 中的提取物移至Tableau,因为人们想在那里使用它。Tableau 不了解 HLL,它希望自己进行非重复计数。然而,推送所有这些原始数据非常慢(比如慢了 5 小时)。
我愿意在速度上妥协,但不会从 10 分钟缩短到 5 小时。有没有办法将当前表示为 HLL 的集合作为一整列传输?像数组或 JSON 之类的?
我在这里发现了一个类似的问题,但更多的是关于 Cassandra,而不是关于 Tableau 数据提取。
使用 Tableau 从 cassandra 列中查找不同计数
总结一下:
我如何将预先聚合的行传递给 Tableau,并且仍然能够COUNT(DISTINCT x)
在 Tableau 端产生有效的计算?