将不同的ID拼接成一个唯一的ID

时间:2019-02-06 12:59:06

标签: sql google-bigquery

我拥有此类数据,其中包含访问者设备和用户的时间顺序日志。在这里,您可以看到同一个人使用了设备“ abc”和“ def”,并且具有两个不同的用户ID“ 123”和“ 456”。我们可以说是同一个人,因为他们在1台设备上至少有2个用户(或者看您如何看待2台设备上有1个用户)。据我们所知,用户“ 789”本身就是另一个人

+-------+------------+---------+
| date  | device ID  | user ID |
+-------+------------+---------+
| 2 Feb | abc        | 123     |
+-------+------------+---------+
| 3 Feb | abc        | 456     |
+-------+------------+---------+
| 4 Feb | def        | 456     |
+-------+------------+---------+
| 4 Feb | ghj        | 789     |
+-------+------------+---------+

我正在尝试通过分配此人的第一个(按时间顺序)用户ID来缝补他们。

我要实现的目标是:

+-------------+------------+------------+
| stitched ID | devices    | users      |
+-------------+------------+------------+
| 123         | [abc, def] | [123, 456] |
+-------------+------------+------------+
| 789         | [ghj]      | [789]      |
+-------------+------------+------------+

如何构建查询?

1 个答案:

答案 0 :(得分:0)

我不知道bigquery,但在关系“样式”中,您应该:

1>按“常用”属性分组,

2>将ID的“最小值”作为“唯一ID”,

3>我还将添加一个新视图,在其中为每个“唯一”键添加“重复”键,因为在查询时将它们存储为字符串可能会很繁琐。

很抱歉非代码答案,但这应该向您显示方法。