sql - hive sql中的600多个案例语句缓慢
问题描述
我的 hive sql 中的多个列上有 600 多个 case 语句。
case when A.column1 = 'Y' then case when B.id_1 = 'XY' and B.response_1 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_2 = 'XY' and B.response_2 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_3 = 'XY' and B.response_3 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_4 = 'XY' and B.response_4 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_5 = 'XY' and B.response_5 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_6 = 'XY' and B.response_6 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_7 = 'XY' and B.response_7 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_8 = 'XY' and B.response_8 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_9 = 'XY' and B.response_9 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_10 = 'XY' and B.response_10 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_11 = 'XY' and B.response_11 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_12 = 'XY' and B.response_12 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_13 = 'XY' and B.response_13 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_14 = 'XY' and B.response_14 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_15 = 'XY' and B.response_15 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_16 = 'XY' and B.response_16 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_17 = 'XY' and B.response_17 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_18 = 'XY' and B.response_18 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_19 = 'XY' and B.response_19 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_20 = 'XY' and B.response_20 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
when A.column1 = 'Y' then case when B.id_21 = 'XY' and B.response_21 = 'Y' then concat(C.data,'S','S') else concat(C.data,'S','U') end
else concat('CGT',C.data) end as final_type
请帮助我使用替代方法来替换 hive 中的多个 case 语句
注意:我曾尝试使用 UNION ALL,但似乎它会影响性能。
解决方案
推荐阅读
- python - 如何为许多 FastAPI 端点设置多个默认值
- sql - Oracle SQL 周年日期查询
- macos - 使用 curl 下载文件后返回文件名
- c# - HttpClient 401 在生产中但在 ID 中运行时没有
- amazon-s3 - Kafka-s3-connect 启动后立即终止
- python - 默认情况下如何使用预览笔记本编辑器打开jupyter
- paypal - 通过 PayPal API 获取用户的公司名称和国家/地区
- android - 通过 USB 发送 http 请求的 Android 应用
- plot - 如何使用 draw.io 创建高频图?
- node.js - 当响应为 HTTP 400 时 SuperTest 超时