hiveql - 失败:ClassCastException primitive.WritableConstantStringObjectInspector 无法转换为primitive.BooleanObjectInspector
问题描述
在我的配置单元查询中,我使用第一种方法得到了正确的输出,但是第二种语法失败了,不确定我到底错过了什么,但它一定是一些次要的东西。
方法 - 1
SELECT FLAG
CASE WHEN flag = 'A' THEN 'Active'
WHEN flag = 'B' THEN 'Inactive'
WHEN flag = 'C' THEN 'Inactive'
WHEN flag = 'D' THEN 'Inactive'
WHEN flag = 'E' THEN 'Inactive'
WHEN flag = 'F' THEN 'Inactive'
WHEN flag = 'G' THEN 'Inactive'
WHEN flag = 'H' THEN 'Inactive'
WHEN flag = 'I' THEN 'Inactive'
WHEN flag = 'J' THEN 'Inactive'
WHEN flag = 'K' THEN 'Inactive'
WHEN flag = 'L' THEN 'Inactive'
ELSE ''
END AS FINAL_FLAG,
NAME,
PHONE_NUMBER
FROM TEST_WORKER_TABLE;
+-------+--------------+------------+---------------+
| FLAG | FINAL_FLAG | NAME | PHONE_NUMBER |
+-------+--------------+------------+---------------+
| A | Active | MARK K | 123-456-7890 |
| B | Inactive | Raj V | 123-456-7890 |
| C | Inactive | Nick B | 123-456-7890 |
| L | Inactive | Elainee L | 123-456-7890 |
| K | Inactive | Kim K | 123-456-7890 |
+-------+--------------+------------+---------------+
方法 - 2
SELECT FLAG
CASE WHEN flag = 'A' THEN 'Active'
WHEN flag = 'B' OR 'C' OR 'D' OR 'E' OR 'F' OR 'G' OR 'H' OR 'I' OR 'J' OR 'K' OR 'L' THEN 'Inactive'
ELSE ''
END AS FINAL_FLAG,
NAME,
PHONE_NUMBER
FROM TEST_WORKER_TABLE;
Error: Error while compiling statement: FAILED: ClassCastException org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableConstantStringObjectInspector cannot be cast to org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector (state=42000,code=40000)
有什么建议么 ?
解决方案
使用 IN 子句而不是 OR 子句。
SELECT FLAG
CASE WHEN flag = 'A' THEN 'Active'
WHEN flag IN ('B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L') THEN 'Inactive'
ELSE ''
END AS FINAL_FLAG,
NAME,
PHONE_NUMBER
FROM TEST_WORKER_TABLE;
推荐阅读
- visual-studio-2022 - Visual Studio 2022 - 进程外加载和评估
- kotlin - 在 onMTUChange(247) 之后,与外围设备断开连接
- powerbi - Power BI:来自文件夹 500 万 + 数据刷新时间过长
- c# - 在 C# 中显示带有月历的整数
- excel - 使用vba查找和替换excel中的值 - 查找表被覆盖
- python - 我收到无法识别“行为”的错误,但我安装了它(BDD)
- r - 使用R从字符串中提取字符和数字
- firebase - 如何在与 Firestore 的实时群聊中处理数千条消息?
- telegram-bot - 电报警报操作的 Splunk 问题:无法配置操作
- airflow - Airflow 被许多用户使用,很可能其他人也有类似的问题,您可以轻松找到解决问题的方法