在所有用户中寻找相同的序列

时间:2019-06-05 06:54:09

标签: sql google-bigquery

我想获得所有用户的相同路径(带有计数)

大家好, 希望简短地回答这个问题,希望我已经清楚了。 我在BigQuery中有一张桌子。那里我有以下专栏

- UserID
- Timestamp
- Domain
- some other columns (but I guess they are unimportant)

我完全不知道该如何解决!

因此,我想在所有用户中寻找相同的路径,并计算有多少用户具有相同的域顺序。

问题:我们正在谈论的是129 000个用户和大约5 TB的数据。我想我必须限制路径长度或其他限制。

我对SQL很熟悉,但是我需要一些帮助/意见以保持较低的成本。每次查询都要花钱,我的想法是在花费数千美元之前先问问社区。 感谢您的输入!

编辑: 我尝试通过以下方法对域的访问进行排名:

SELECT
    guid,
    domain AS channel,
    timestamp,
    RANK() OVER (PARTITION BY guid ORDER BY timestamp ASC ) AS rank
  FROM
data.all

现在的问题是:在合并客户旅程中的每个“步骤”之后,如何匹配相同的路径?

1 个答案:

答案 0 :(得分:0)

这可能有助于或至少帮助您入门:

select domains, count(*)
from (select userid, string_agg(domain order by timestamp, ',') as domains
      from t
      group by userid
     ) u
group by domains;

我更愿意使用数组来存储路径本身,但是BigQuery尚不支持将数组作为GROUP BY键。