Performance 黑斑羚上的立方体算子
在Impala和PrestoDB之间进行基准测试时,我们注意到在Imapala中构建数据透视表非常困难,因为它不像Presto那样具有多维数据集操作符。以下是Presto中的两个示例: 多维数据集运算符为给定的一组列生成所有可能的分组集(即幂集)。例如,查询:` 相当于: 另一个例子是Performance 黑斑羚上的立方体算子,performance,hadoop,cloudera,impala,presto,Performance,Hadoop,Cloudera,Impala,Presto,在Impala和PrestoDB之间进行基准测试时,我们注意到在Imapala中构建数据透视表非常困难,因为它不像Presto那样具有多维数据集操作符。以下是Presto中的两个示例: 多维数据集运算符为给定的一组列生成所有可能的分组集(即幂集)。例如,查询:` 相当于: 另一个例子是ROLLUP操作符。完整文档位于此处: 它不是静态的,因为PRESTO对整个查询执行一个表扫描-所以使用这个操作符,您可以在一个请求中构建透视表,Impala需要运行2-3个查询 在Impala instaead
ROLLUP
操作符。完整文档位于此处:
它不是静态的,因为PRESTO对整个查询执行一个表扫描-所以使用这个操作符,您可以在一个请求中构建透视表,Impala需要运行2-3个查询
在Impala instaead 3中,有没有一种方法可以通过一次查询/表扫描来实现这一点?否则,在创建任何类型的数据透视表时,性能都会变得非常糟糕。我们可以使用impala windo函数,但不是单列输出,而是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;
我不确定这对您是否有帮助,但您将了解分析功能链接:
SELECT origin_state, destination_state, sum(package_weight)
FROM shipping
GROUP BY GROUPING SETS (
(origin_state, destination_state),
(origin_state),
(destination_state),
());
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;