如何使用带平台的 bigquery、steam_id、event_name 过滤器在 power bi 中编写查询以查找最近 28 天的 firebase 事件详细信息?
How to write query to find firebase event details in last 28days using bigquery with platform, steam_id, event_name filter in power bi?
firebase 控制台及其 first_open 输出
Firebase.console 结果 first_open 8,787- 8,575 -
我正在尝试创建一个查询以使用大查询获取事件详细信息,但它没有生成准确的结果
我的查询是
select platform, count(s.platform) from (SELECT * FROM `Table.events_*` where event_name = "first_open" and stream_id = "1757261196" or stream_id = "1759866139"
UNION ALL
SELECT * FROM `Table.events_intraday_*` where event_name = "first_open" and stream_id = "1757261196" or stream_id = "1759866139" ) s where and event_date between "20191204" and "20200101" group by s.platform
我的过滤器是
Stream_id = ["1757261196","1759866139"]
platform = ["ios","android"]
dateRanges = last 28days
event_name = first_open
BigQuery 结果:
[
{
"platform": "ANDROID",
"f0_": "428"
},
{
"platform": "IOS",
"f0_": "38"
}
]
但是 firebase 控制台输出和 bigquery 输出不同我认为这是由于查询问题,请帮助我编写正确的查询。
您的查询在 WHERE
语句中缺少一些部分。所以我什至不确定您与我们分享的那个 QUERY 是否有效。
根据我从 QUERY 中观察到的情况,您的 WHERE
语句在 AND
、OR
运算符的优先级方面存在一些问题。
你拥有的是:
SELECT * FROM my_table WHERE event_name = "first_open" AND stream_id = "1757261196" OR stream_id = "1759866139"
这将返回两组:
- 与
event_name="first_open"
和 stream_id = "1757261196"
- 第二个,
stream_id="1759866139"
这意味着没有正确应用第一个条件。
我建议您使用以下结构:
SELECT * FROM my_table WHERE event_name = "first_open" AND (stream_id = "1757261196" OR stream_id = "1759866139")
这样您就可以将 stream_id
的条件放在一起,它们是唯一应该受 OR
运算符影响的条件,并且始终应用第一个条件。
看完之后好好看看最后的WHERE
:
...) s where and event_date between "20191204" and "20200101" group by s.platform
由于该列的数据类型以及您将数据传递到 BETWEEN
的方式,这可能无法按您预期的那样工作。确保是 DATE 类型并且格式相同,如果是其他类型,您始终可以使用 DATE()
转换值。
编辑:
After you link a project to BigQuery, the first daily export of events
creates a corresponding dataset in the associated BigQuery project.
Then, each day, raw event data for each linked app populates a new
daily table in the associated dataset, and raw event data is streamed
into a separate intraday BigQuery table in real-time. Data prior to
linking to BigQuery is not available for import (except for
Performance Monitoring data). By default, all web data from your App +
Web properties in Google Analytics will be exported as well.
查询好像没问题,只需要考虑一个问题:
- 使用通配符时要小心
Table.events_*
包括 Table.events_intraday_*
,如果它们在 BigQuery 中的同一数据集中。这可能会导致您的查询中出现重复数据,并导致您的计数不匹配。
除此之外,我建议您按照以下步骤操作,问题不在于查询:
- 确认您查询的每一天的表都存在于 BigQuery 中。较小的计数似乎来自一天而不是较大的数量。
- 验证来自 BigQuery 的表包含与来自 Firebase 的 "Events" 数据集相同的数据,您可以比较两个不同的数据集,因此数字永远不会匹配。
firebase 控制台及其 first_open 输出
Firebase.console 结果 first_open 8,787- 8,575 -
我正在尝试创建一个查询以使用大查询获取事件详细信息,但它没有生成准确的结果
我的查询是
select platform, count(s.platform) from (SELECT * FROM `Table.events_*` where event_name = "first_open" and stream_id = "1757261196" or stream_id = "1759866139"
UNION ALL
SELECT * FROM `Table.events_intraday_*` where event_name = "first_open" and stream_id = "1757261196" or stream_id = "1759866139" ) s where and event_date between "20191204" and "20200101" group by s.platform
我的过滤器是
Stream_id = ["1757261196","1759866139"]
platform = ["ios","android"]
dateRanges = last 28days
event_name = first_open
BigQuery 结果:
[
{
"platform": "ANDROID",
"f0_": "428"
},
{
"platform": "IOS",
"f0_": "38"
}
]
但是 firebase 控制台输出和 bigquery 输出不同我认为这是由于查询问题,请帮助我编写正确的查询。
您的查询在 WHERE
语句中缺少一些部分。所以我什至不确定您与我们分享的那个 QUERY 是否有效。
根据我从 QUERY 中观察到的情况,您的 WHERE
语句在 AND
、OR
运算符的优先级方面存在一些问题。
你拥有的是:
SELECT * FROM my_table WHERE event_name = "first_open" AND stream_id = "1757261196" OR stream_id = "1759866139"
这将返回两组:
- 与
event_name="first_open"
和stream_id = "1757261196"
- 第二个,
stream_id="1759866139"
这意味着没有正确应用第一个条件。
我建议您使用以下结构:
SELECT * FROM my_table WHERE event_name = "first_open" AND (stream_id = "1757261196" OR stream_id = "1759866139")
这样您就可以将 stream_id
的条件放在一起,它们是唯一应该受 OR
运算符影响的条件,并且始终应用第一个条件。
看完之后好好看看最后的WHERE
:
...) s where and event_date between "20191204" and "20200101" group by s.platform
由于该列的数据类型以及您将数据传递到 BETWEEN
的方式,这可能无法按您预期的那样工作。确保是 DATE 类型并且格式相同,如果是其他类型,您始终可以使用 DATE()
转换值。
编辑:
After you link a project to BigQuery, the first daily export of events creates a corresponding dataset in the associated BigQuery project. Then, each day, raw event data for each linked app populates a new daily table in the associated dataset, and raw event data is streamed into a separate intraday BigQuery table in real-time. Data prior to linking to BigQuery is not available for import (except for Performance Monitoring data). By default, all web data from your App + Web properties in Google Analytics will be exported as well.
查询好像没问题,只需要考虑一个问题:
- 使用通配符时要小心
Table.events_*
包括Table.events_intraday_*
,如果它们在 BigQuery 中的同一数据集中。这可能会导致您的查询中出现重复数据,并导致您的计数不匹配。
除此之外,我建议您按照以下步骤操作,问题不在于查询:
- 确认您查询的每一天的表都存在于 BigQuery 中。较小的计数似乎来自一天而不是较大的数量。
- 验证来自 BigQuery 的表包含与来自 Firebase 的 "Events" 数据集相同的数据,您可以比较两个不同的数据集,因此数字永远不会匹配。