Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 配置单元-配置单元子查询无法处理带有IN子句的case when语句_Sql_Hive - Fatal编程技术网

Sql 配置单元-配置单元子查询无法处理带有IN子句的case when语句

Sql 配置单元-配置单元子查询无法处理带有IN子句的case when语句,sql,hive,Sql,Hive,我正在尝试将数据从mysql迁移到配置单元。当语句带有IN子句时,我无法编写子查询大小写。这是我的查询。在这方面你能帮忙吗。我没有遵循正确的语法 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

我正在尝试将数据从mysql迁移到配置单元。当语句带有IN子句时,我无法编写子查询大小写。这是我的查询。在这方面你能帮忙吗。我没有遵循正确的语法

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 
根据“配置单元仅在
FROM
子句中支持子查询”

当是
SELECT
子句的一部分,但它包含一个子查询时,您的
大小写。这似乎不受支持,因此您的语法不正确(在配置单元中)

也许您可以使用现有的查询将数据暂存到MySQL中,然后使用一个简单的
选择
将其加载到Hive中,而不使用
大小写,当
时请参见。
上面说

假设 我们计划通过以下假设和限制限制范围

子查询只能是SELECT中的顶级表达式。也就是说,目前不支持复杂表达式、聚合、UDF等中的子查询


根据配置单元手册,WHERE和FROM子句中都支持子查询,但SELECT子句中绝对不支持子查询。