Impala 上的多维数据集运算符

Posted

技术标签:

【中文标题】Impala 上的多维数据集运算符【英文标题】:Cube Operators on Impala 【发布时间】:2017-06-29 10:23:46 【问题描述】:

在 Impala 和 PrestoDB 之间进行基准测试时,我们注意到在 Imapala 中构建数据透视表非常困难,因为它没有像 Presto 那样的 Cube 运算符。以下是 Presto 中的两个示例:

CUBE 运算符为给定的一组列生成所有可能的分组集(即幂集)。例如查询:`

SELECT origin_state, destination_state, sum(package_weight)
FROM shipping
GROUP BY CUBE (origin_state, destination_state);

相当于:

SELECT origin_state, destination_state, sum(package_weight)
FROM shipping
GROUP BY GROUPING SETS (
 (origin_state, destination_state),
 (origin_state),
 (destination_state),
 ());

另一个例子是ROLLUP 运算符。完整文档在这里:https://prestodb.io/docs/current/sql/select.html

这不是语法糖,因为 PRESTO 对整个查询执行一次表扫描 - 因此使用此运算符可以在 Impala 需要运行 2-3 个查询的一个请求中构建数据透视表。

有没有一种方法可以让我们在 Impala 中使用一个查询/表扫描而不是 3 来做到这一点?否则在创建任何类型的数据透视表时性能会变得很糟糕。

【问题讨论】:

【参考方案1】:

我们可以使用 impala windows 函数,但不是单列输出,而是 3 列。

SELECT origin_state,
        destination_state,
        SUM(package_weight) OVER (PARTITION BY origin_state, destination_state) AS pkgwgrbyorganddest,
        SUM(package_weight) OVER (PARTITION BY origin_state) AS pkgwgrbyorg,
        SUM(package_weight) OVER (PARTITION BY destination_state) AS pkgwgrbydest
 FROM shipping;

【讨论】:

我不确定这是否会帮助你,但你会了解分析函数 链接:cloudera.com/documentation/enterprise/5-6-x/topics/…

以上是关于Impala 上的多维数据集运算符的主要内容,如果未能解决你的问题,请参考以下文章

Kylin - 查询 Hbase 上的 OLAP 多维数据集?

如何执行与 SSAS 多维数据集在红移上的相同机制?

通过 SAP 上的 MDX 更新多维数据集(写回)

使用双跳 Windows 身份验证连接到 Microsoft Analysis Services 多维数据集

CubesViewer 服务器并不总是加载多维数据集

Druid SQL 查询汇总和多维数据集不起作用