我正在将一个脚本迁移到spark-sql,它会组装一些case并将这些case的结果重用于其他操作,但我不能在脚本中使用reference列。
例如:
SELECT order,
case when total > 70
then 1
end order_total,
coalesce(order_total,total) as total
FROM SALES
当运行脚本时,我得到以下消息:
无法解析给定输入列的“order_total
”:...
上面的查询只是一个例子,我的脚本有几个类似的操作,我知道使用cte或subquerys工作,但我想知道是否可以在spark中使用上面的表单。
上面的查询只是一个例子,我的脚本有几个类似的操作,我知道使用cte或subquerys工作,但我想知道是否可以在spark中使用上面的表单。
2条答案
按热度按时间z9ju0rcb1#
你不能在一个选择中使用别名,同时,当你想一次完成它时,你需要重复它
cxfofazt2#
我们的代码之前在Spark版本2.4.5上工作,但目前它在Spark版本3.3.3上不工作。我们从hbase,phoenix 5.1.3获取数据。Phoenix本身正常查询此SQL代码。但spark引发错误
org.apache.spark.sql.AnalysisException:列“num”不存在。是否为下列之一?[USS_ID_TYPE,SPARK_GEN_SUBQ_354.NUM,SPARK_GEN_SUBQ_354.ADM_UNIT];