咨询一下Flink 如果我一个表标签存的是用户id 标签code 标签值,应该怎么实现啊?-[阿里云_云淘科技]

咨询一下Flink 如果我一个表标签存的是用户id 标签code 标签值,我想把他变成 大宽表的形式 用户id 标签a 标签b 标签c 用flinksql 应该怎么实现啊?

以下为热心网友提供的参考意见

多加三个if判断的结果的取max然后聚合,你业务主键设置的不合理 ,此回答整理自钉群“实时计算Flink产品交流群”

以下为热心网友提供的参考意见

你可以使用Flink SQL的lateral viewexplode函数来实现这个需求。假设你的表名为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

(0)
匿名
上一篇 2024年1月4日 下午2:37
下一篇 2024年1月4日

相关推荐

新手站长从“心”出发,感谢16年您始终不离不弃。