咨询一下Flink 如果我一个表标签存的是用户id 标签code 标签值,我想把他变成 大宽表的形式 用户id 标签a 标签b 标签c 用flinksql 应该怎么实现啊?
以下为热心网友提供的参考意见
多加三个if判断的结果的取max然后聚合,你业务主键设置的不合理 ,此回答整理自钉群“实时计算Flink产品交流群”
以下为热心网友提供的参考意见
你可以使用Flink SQL的lateral view
和explode
函数来实现这个需求。假设你的表名为user_tags
,结构如下:
user_id | tag_code | tag_value |
---|---|---|
1 | a | value1 |
1 | b | value2 |
1 | c | value3 |
2 | a | value4 |
2 | b | value5 |
你可以使用以下Flink SQL查询将表转换为大宽表形式:
SELECT user_id,
MAX(CASE WHEN tag_code = 'a' THEN tag_value END) AS tag_a,
MAX(CASE WHEN tag_code = 'b' THEN tag_value END) AS tag_b,
MAX(CASE WHEN tag_code = 'c' THEN tag_value END) AS tag_c
FROM user_tags
GROUP BY user_id;
这个查询首先使用CASE
语句为每个标签创建一个新列,然后使用MAX
函数获取每个用户对应的最大标签值。最后,使用GROUP BY
子句按用户ID分组结果。
本文来自投稿,不代表新手站长_郑州云淘科技有限公司立场,如若转载,请注明出处:https://www.cnzhanzhang.com/19530.html