sql - HIVE - hive 子查询不适用于带有 IN 子句的 case when 语句

标签 sql hive

我正在尝试将数据从 mysql 迁移到 hive。我无法使用 IN 子句编写子查询 case when 语句。这是我的查询。您能在这方面提供帮助吗?我没有遵循正确的语法。

CREATE TABLE HIVE_TPCE_TEMP.TMP_CDMA_CD AS 
SELECT A.DRI,C.BOUND_ID,A.CT_ID,A.CD_ID,A.CID,
 A.TID,A.TASK_SEQ_ID,A.DIV_ID,C.BLOCK_GROUP_ID,C.ZIP_CODE,C.ROAD_CATEGORY_ID,A.RXPOWER,"${hiveconf:C_CDMA_DEVICE_ONLINE_RXPOWER_METRIC_ID}" METRIC_ID,
CASE WHEN 
     ((A.DRI,A.DIV_ID,A.RFID) in (SELECT DRI,DIV_ID,HOME_RFID FROM       HIVE_TPCE_TEMP.TMP_HOME_NETWORKS)) THEN 
    CASE WHEN MODE IN ('A','N') THEN "${hiveconf:HAD}" ELSE "${hiveconf:HD}" END
    WHEN (COALESCE(A.RFID,0) = 0) AND ((A.DRI,A.DIV_ID,D.FR,D.SUBBAND) IN (SELECT DRI,DIV_ID,HOME_FR,
          HOME_SUBBAND FROM   HIVE_TPCE_TEMP.TMP_HOME_NETWORKS))
    THEN CASE WHEN MODE IN ('A','N') THEN "${hiveconf:HAD}" ELSE "${hiveconf:HD}"  END
         ELSE CASE WHEN MODE IN ('A','N') THEN "${hiveconf:PAI}" ELSE "${hiveconf:PDI}" END END HPDA_ID
FROM HIVE_TPCE.VW_CDMA_CD A INNER JOIN HIVE_TPCE.STG_CURRENT_FILES B
     ON A.DRI = B.DRI AND A.SOURCE_FILE_ID   = B.SOURCE_FILE_ID
                 INNER JOIN
           HIVE_TPCE.WRK_LOCATION C 
     ON A.DRI = C.DRI AND A.LOCATION_ID = C.LOCATION_ID
                   INNER JOIN 
             HIVE_TPCE.LU_RADIO D
ON A.RADIO_ID = D.RADIO_ID  WHERE A.CID > 0  AND D.MODE IN ('A','N') AND A.RXPOWER IS NOT NULL   AND A.CALL_RESULT_ID BETWEEN 1 AND 16;  

我的错误签名是

FAILED: ParseException line 10:42 mismatched input ',' expecting ) near 'DRI' in expression specification 

最佳答案

根据Hive Language Manual :“Hive 仅在 FROM 子句中支持子查询”。

您的 CASE WHENSELECT 子句的一部分,但它包含一个 SELECT 子查询。似乎不支持这一点,因此您的语法不正确(在 Hive 中)。

也许您可以使用您拥有的查询将数据暂存到 MySQL 中,然后使用简单的 SELECT(无需使用 CASE WHEN)将其加载到 Hive 中?

关于sql - HIVE - hive 子查询不适用于带有 IN 子句的 case when 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16588622/

相关文章:

hadoop - 在Hive的存储桶表中增量加载数据?

hadoop - 带参数的 Hive UDF

sql - Grails 中的非平凡数据查询

mysql - 如何在从数据库获取数据时删除mysql中的换行列

mysql - 如何在 Group By 后获得总计

sql - PostgreSQL JSON 列的正确用法是什么?

Hadoop - 在查询中声明变量时出现错误消息

sql - MS Access : How can i count distinct value using access query?

hadoop - 如何将外部创建的 ORC 文件加载到存储为 ORC 的 HIVE 表中?

hadoop - MapReduce 现实生活中的用途