|
sql如下:
select
(case when act_name is not null then act_name else 'default_value' end) as act_name,
(case when fst_plat is not null then fst_plat else 'default_value' end) as fst_plat,
sum(amount) as saleN
from hive.temp_dw.view_trad_order_goods_source_act_last_value
group by grouping sets((act_name),(act_name,fst_plat)
而hive.temp_dw.view_trad_order_goods_source_act_last_value 是一个 view,view的结构如下:
Flink SQL> desc hive.temp_dw.view_trad_order_goods_source_act_last_value
|-- act_name: STRING
|-- fst_plat: STRING NOT NULL
......
其中fst_plat 数据类型为:STRING NOT NULL ,在grouping sets的(act_name)条件分支时,fst_plat不参与group,
实际测下来发现 (case when fst_plat is not null then fst_plat else 'default_value' end) as fst_plat 输出的结果都没走到 else的default_value
感觉 fst_plat is not null 不生效。 感觉是和fst_plat: STRING NOT NULL 这个条件有关系。有这个条件限制时,就破坏了NOT NULL的语义。
|