Hive 语句执行报错:列无法解析及 GROUP BY 问题解决
{"title":"Hive 语句执行报错:列无法解析及 GROUP BY 问题解决","description":"本文介绍了在 Hive 环境下执行 CREATE TABLE 语句时遇到的错误:列无法解析和列未出现在 GROUP BY 子句中。文章详细分析了错误原因,并给出了修改后的语句,成功解决问题。","keywords":"Hive, CREATE TABLE, 语句报错, 列无法解析, GROUP BY, 错误解决","content":"报错信息说明了在语句中存在一些列无法解析的问题,以及一些列在GROUP BY子句中未出现的问题。\n\n首先,报错信息中提到了列"b.contractContractCode"无法解析。根据语句中的逻辑,应该是"b.contractBatchCode",可能是拼写错误导致的。需要将"b.contractContractCode"改为"b.contractBatchCode"。\n\n其次,报错信息中提到了列"start_date"和"end_date"无法解析。这是因为在主查询中引用了子查询中的列,但是在子查询中并没有包含这两个列。需要在子查询中添加"start_date"和"end_date"列的选择。\n\n另外,报错信息中还提到了"t.contractBatchCode"和"t.orderId"需要在GROUP BY子句中出现。这是因为在主查询中使用了GROUP BY子句,但是在GROUP BY子句中没有包含这两个列。需要将"t.contractBatchCode"和"t.orderId"添加到GROUP BY子句中。\n\n修改后的语句如下:\n\n\ncreate table DM_M_YX_HTGL_li as \nselect \n contract_no,\n contract_name,\n bus_number,\n contractBatchCode,\n orderId,\n date_format(start_date, 'yyyy-MM-dd') as start_date,\n date_format(end_date, 'yyyy-MM-dd') as end_date\nfrom(\n select a.*, b.contractBatchCode, b.orderId, c.start_date, c.end_date from DM_M_YX_HTGL_YXD_1 a\n left join(\n select contractBatchCode, orderId, serialNumber from ZQ_DWA.DWA_M_EVT_DD_ORDER_INFO\n where month_id = '202307'\n ) b\n on a.contract_no = b.contractContractCode and a.bus_number = b.serialNumber\n left join (\n SELECT arrair_no, start_date, end_date from ZQ_DWD.DWD_D_ACC_ICT_CONTRACT_INFO\n where month_id = '202307'\n ) c\n on a.contract_no = c.arrair_no\n)t\ngroup by contract_no, contract_name, bus_number, contractBatchCode, orderId;\n\n\n修改后的语句中已经包含了所有需要的列,并且在GROUP BY子句中包含了"contractBatchCode"和"orderId"列。"}
原文地址: https://www.cveoy.top/t/topic/qAct 著作权归作者所有。请勿转载和采集!