【发布时间】:2019-05-08 11:12:26
【问题描述】:
抱歉,如果这是一个基本问题,但我刚刚开始使用 SQL 和 BigQuery。
我有一个表,其中包含 2 个用于不同事件的特定唯一标识符,如下所示:
+--------+----------+--------+
| Type | Instance | Userid |
+--------+----------+--------+
| event1 | abc123 | user1 |
| event1 | abc123 | user1 |
| event2 | abc123 | null |
| event2 | def456 | null |
| event1 | def456 | user2 |
+--------+----------+--------+
记录的信息取决于事件类型,事件 1 记录两种类型的标识,事件 2 只记录 1 种类型(以节省空间)。如何使用为两种事件类型记录的实例标识符作为查找以用相应的用户值替换 userid 中的空值:即我们知道实例“abc123”是 user1 的产品,因此任何事件(例如 event2),实例为“abc123”且用户 ID 为空值,应将空值替换为“user1”。结果是这样的:
+--------+----------+--------+
| Type | Instance | Userid |
+--------+----------+--------+
| event1 | abc123 | user1 |
| event1 | abc123 | user1 |
| event2 | abc123 | user1 |
| event2 | def456 | user2 |
| event1 | def456 | user2 |
+--------+----------+--------+
我研究过 COALESCE 和 IFNULL 之类的函数,但我不确定我的 BigQuery 版本是否支持它们,并且 JOIN 的所有不同风格似乎都假设不同的表(我只在一个孤立的环境中使用它)。
【问题讨论】:
-
编辑您的问题并显示您想要的结果。如果同一个用户有多行,你想要什么?
-
如果你想发布一个固定宽度的代码示例块,在它的每一行前面加上四个空格` `。这将由 Markdown 自动显示为黑色代码,如果可用,可以选择应用语法着色。
标签: sql google-cloud-platform google-bigquery