【发布时间】:2021-06-23 02:26:11
【问题描述】:
有以下数据:
| id | field | eventTime |
|---|---|---|
| 1 | A | 1 |
| 1 | A | 2 |
| 1 | B | 3 |
| 1 | A | 4 |
| 1 | B | 5 |
| 1 | B | 6 |
| 1 | B | 7 |
出于可视化目的,我想把它变成下面的样子。相同field 值的连续出现本质上会聚合为一个。
| id | field | eventTime |
|---|---|---|
| 1 | Ax2 | 1 |
| 1 | B | 3 |
| 1 | A | 4 |
| 1 | Bx3 | 5 |
然后我将使用STRING_AGG() 将其转换为"Ax2 > B > A > Bx3"。
我已经尝试使用ROW_NUMBER()来计算重复实例,计划是使用最高行号来修改field中的字符串,但是如果我在eventTime上进行分区,则没有连续的“重复”,如果我不对它进行分区,那么所有具有相同 field 值的行都会被计算在内 - 而不仅仅是连续的。
我虽然将之前的field 和LAG() 引入比较以重置行数,但这仅适用于从一个field 值到另一个值的转换,如果相同的@987654333 是一个问题@ 连续重复。
我一直在努力解决这个问题,以至于我正在考虑编写一个脚本,使 CASE WHENs 达到合理的连续点击次数,但我看到它在给定的情况下高达 17一天,真的不想那样做!
我的另一种选择是强制使用最大数量的 field 值来帮助控制这一点,但现在我已经开始了这个问题,如果可能的话,我很想在没有它的情况下解决它。
谢谢!
【问题讨论】:
标签: sql google-bigquery