sql - BigQuery - 查找所有记录中存在的数据
问题描述
我已将 firebase 导入 BigQuery。
我想要做的是,找到总是执行某些事件的特定设备(firebase 交互记录)。这意味着,每当这些设备被记录在 firebase 中时,event_dim.name 将包含至少一个该事件类型的条目。
例如,考虑以下查询,其中包含来自 ( Link ) 的样本数据:
#standardSQL
SELECT
user_dim.app_info.app_instance_id,
event_dim
FROM `firebase-analytics-sample-data.ios_dataset.app_events_20160607`
假设这有数据,如
+------------------+--------------------+
| app_instance_id | event_dim.name |
+------------------+--------------------+
| 1234 | os_update |
| | initialized_rh_api |
+------------------+--------------------+
| 1234 | os_update |
+------------------+--------------------+
| 5678 | os_update |
| | initialized_rh_api |
+------------------+--------------------+
| 5678 | other_action |
+------------------+--------------------+
我想进行查询以获取单个“app_instance_id”的列表,其中他们的 event_dim.name 包含“os_update”。根据此标准,对于上述项目,1234会匹配,但5678不会。
谢谢。可能真的很简单,但我找不到方法。我可以找到包含该条目的每条记录,但无法消除没有它的条目。
解决方案
我会使用聚合:
SELECT user_dim.app_info.app_instance_id FROM `firebase-analytics-sample-data.ios_dataset.app_events_20160607`
GROUP BY user_dim.app_info.app_instance_id
HAVING SUM(CASE WHEN event_dim.name NOT LIKE '%os_update%' THEN 1 ELSE 0 END) = 0;
该HAVING
子句计算不匹配的事件数。= 0
说没有。
推荐阅读
- android - 如何从初始屏幕中的 url 预加载图像?
- mysql - 同桌选择好友请求
- rust - rust 如何将 &i32 与 i32 相乘?
- python - 使用单独的 Xpath 获取 Web 中的第一个元素
- symfony4 - OnetoMany 不坚持
- java - 如何将黄瓜中的@Before标签与TestNG中的@Parameters标签用于相同的方法
- python - 无法在带有熊猫的元组列表中用 0 替换空值
- flutter - 在 VS 代码中过滤调试控制台输出?
- python - 在 Apache 2.4 中让子域正确路由的问题
- html - 如何自动调整图像大小以适应引导程序 4 中的容器?