sql - 根据 Hive SQL 中的选择查询设置 if 条件值
问题描述
我想根据IF
选择查询中的值的条件设置一个新列。例如,
SELECT
request_id,
charge_click_cnt,
IF(
uuid IN (
SELECT
deviceid
from
t1
where
dt between '20210908'
and '20210915'
),
'shop_user',
'non_shop_user'
) as shop_user
FROM
t2
但似乎有些错误如下。
org.apache.spark.sql.catalyst.analysis.CheckAnalysis$class#failAnalysis:41 org.apache.spark.sql.catalyst.analysis.Analyzer#failAnalysis:91 org.apache.spark.sql.catalyst.analysis.CheckAnalysis$ $anonfun$checkAnalysis$1#apply:316
所以我想知道是否有更好的方法可以像之前的代码一样设置条件值。
提前感谢。
解决方案
如果 spark 允许带有 exists 子句的 case 语句,则以下内容应该可以工作。
SELECT request_id,
charge_click_cnt,
CASE WHEN EXISTS(SELECT 1
FROM t1
WHERE dt between '20210908'AND '20210915'
AND uuid=deviceid) THEN 'shop_user'
ELSE 'non_shop_user'
END
FROM t2;
推荐阅读
- arrays - 如何使列表视图表每 4 次压缩一次
- r - 使用 getSymbols("JOSJFSODFJSODfJ", src = "FRED") 时更改列的名称
- node-red - 如何在 mosquitto 中更改自动生成的 ID?
- android - rabbitmq 连接被拒绝
- ios - 如何在 Swift 中让多个 ViewController 上的多个“菜单”按钮导航到同一个 VC?
- flutter - POST请求后如何使用响应?
- forms - 在 VueJS 中,如何允许在特定时间长度内输入表单
- c# - 如何向 CRM WebAPI 中的实体添加方列表字段?
- oop - 如何根据对象属性创建内部表?
- c# - 请告诉我我的代码有什么问题。尝试用 C# 连接 .mdf 数据库