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_id
的 execution_id
以 ERROR
结尾。我可以得到所有这样的 execution_id
s:
SELECT execution_id as id FROM `my_table` WHERE severity = "ERROR" LIMIT 1000
如何将它与 deviceId
相关联?我在寻找多个 SELECT
吗?一个GROUP BY
? JOIN
?
谢谢
您的问题是错误行缺少设备 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;
考虑以下示例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_id
的 execution_id
以 ERROR
结尾。我可以得到所有这样的 execution_id
s:
SELECT execution_id as id FROM `my_table` WHERE severity = "ERROR" LIMIT 1000
如何将它与 deviceId
相关联?我在寻找多个 SELECT
吗?一个GROUP BY
? JOIN
?
谢谢
您的问题是错误行缺少设备 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;