如何处理蜂巢组中的硬编码值

How to handle hard coded values in hive group by

我 运行 遇到了这样的问题,但遇到了错误。我是否必须在单独的查询中创建该字段,以便我可以调用该字段而不是硬编码值,或者是否有另一种方法可以解决这个问题而不需要额外的步骤?

SELECT FIELD_A
, 'NA' AS FIELD_B
, 'NA' AS FIELD_C
, MAX(PRICE) AS MAX_PRICE 
from table_xyz  
GROUP BY field_a
, 'NA'    
, 'NA'
;

错误:

OK FAILED: SemanticException [Error 10021]: Line 74:2 Repeated key in GROUP BY ''NA''

您可以使用 common table expression 来执行此操作。

with t1 as 
(SELECT FIELD_A
, 'NA' AS FIELD_B
, 'NA' AS FIELD_C
, PRICE
from table_xyz)
select field_a, field_b, field_c, max(price) from t1
group by field_a, field_b, field_c

或者你可以简单地做

SELECT FIELD_A
, 'NA' AS FIELD_B
, 'NA' AS FIELD_C
, MAX(PRICE) AS MAX_PRICE 
from table_xyz  
GROUP BY field_a, 'NA'    

因为 field_bfield_c 都是 NA

您可以从组中删除 'NA' 是多余的。

    SELECT FIELD_A
       , 'NA' AS FIELD_B
       , 'NA' AS FIELD_C
       , MAX(PRICE) AS MAX_PRICE 
    from table_xyz  
    GROUP BY field_a