Sql 避免在Presto中多次计算相同的值 样本表: 期望输出:
目前我正在尝试编写一个Sql 避免在Presto中多次计算相同的值 样本表: 期望输出:,sql,presto,amazon-athena,Sql,Presto,Amazon Athena,目前我正在尝试编写一个Presto查询,用于亚马逊雅典娜 选择 虚拟数据, “Pre| | | split(伪|u数据,”|“[2]与_前缀一样, 拆分(虚拟_数据,“_”)[2]| | |“| Suf”与带_后缀的 从虚拟表格 上述查询导致计算两次split(伪数据,''u'[2]。有没有办法避免重复计算?普雷斯托是否也发现它是相同的计算,并避免重新计算 我试图避免使用子查询或With子句。目前,Presto不取消子表达式计算的重复。我为此创建了功能请求:。 通过检查EXPLAIN输出,可以
Presto查询
,用于亚马逊雅典娜
选择
虚拟数据,
“Pre| | | split(伪|u数据,”|“[2]与_前缀一样,
拆分(虚拟_数据,“_”)[2]| | |“| Suf”与带_后缀的
从虚拟表格
上述查询导致计算两次split(伪数据,''u'[2]
。有没有办法避免重复计算?普雷斯托是否也发现它是相同的计算,并避免重新计算
我试图避免使用子查询或With子句。目前,Presto不取消子表达式计算的重复。我为此创建了功能请求:。 通过检查
EXPLAIN
输出,可以看到表达式被多次计算(例如,请参见问题)
如您所知,您可以通过使用内联视图强制执行重复数据消除:
SELECT
dummy_data,
'Pre_' || sub_data AS with_prefix,
sub_data || '_Suf' AS with_suffix
FROM (
SELECT
dummy_data,
split(dummy_data,'_')[2] AS sub_data
FROM (VALUES 'XXX_1234_YYYY') t(dummy_data)
);
目前,Presto不取消子表达式计算的重复。我为此创建了功能请求:。 通过检查
EXPLAIN
输出,可以看到表达式被多次计算(例如,请参见问题)
如您所知,您可以通过使用内联视图强制执行重复数据消除:
SELECT
dummy_data,
'Pre_' || sub_data AS with_prefix,
sub_data || '_Suf' AS with_suffix
FROM (
SELECT
dummy_data,
split(dummy_data,'_')[2] AS sub_data
FROM (VALUES 'XXX_1234_YYYY') t(dummy_data)
);
谢谢,我会关注github的问题。谢谢,我会关注github的问题。
SELECT
dummy_data,
'Pre_' || sub_data AS with_prefix,
sub_data || '_Suf' AS with_suffix
FROM (
SELECT
dummy_data,
split(dummy_data,'_')[2] AS sub_data
FROM (VALUES 'XXX_1234_YYYY') t(dummy_data)
);