BigQuery 中同一个 table 上的多个 SELECT 语句?

Multiple SELECT statements on the same table in BigQuery?

考虑以下示例table:

+-----------+--------------+----------+
| device_id | execution_id | severity |
+-----------+--------------+----------+
|       id1 | 86g8g5t3tz4e |     INFO |
|           | 86g8g5t3tz4e |     INFO |
|           | 86g8g5t3tz4e |    ERROR |
|       id2 | 86g8t0gk9t8k |     INFO |
|           | 86g8t0gk9t8k |     INFO |
|           | 86g8t0gk9t8k |     INFO |
|       id3 | ox1fl5e4gpxa |     INFO |
|           | ox1fl5e4gpxa |     INFO |
|           | ox1fl5e4gpxa |    ERROR |
+-----------+--------------+----------+

我有来自内部系统的日志。 deviceId 保证在每次执行的开头找到。

我想获取所有 device_idexecution_idERROR 结尾。我可以得到所有这样的 execution_ids:

SELECT execution_id as id FROM `my_table` WHERE severity = "ERROR" LIMIT 1000

如何将它与 deviceId 相关联?我在寻找多个 SELECT 吗?一个GROUP BYJOIN?

谢谢

您的问题是错误行缺少设备 ID,因此您必须使用执行 ID 在 table 中找到它们。

可能最简单的方法是聚合:

select execution_id, max(device_id)
from mytable
group by execution_id
having max(case when severity = 'ERROR' then 1 else 0 end) = 1;