如何使用带平台的 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 语句在 ANDOR 运算符的优先级方面存在一些问题。

你拥有的是:

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.

Source

查询好像没问题,只需要考虑一个问题:

  • 使用通配符时要小心 Table.events_* 包括 Table.events_intraday_*,如果它们在 BigQuery 中的同一数据集中。这可能会导致您的查询中出现重复数据,并导致您的计数不匹配。

除此之外,我建议您按照以下步骤操作,问题不在于查询:

  • 确认您查询的每一天的表都存在于 BigQuery 中。较小的计数似乎来自一天而不是较大的数量。
  • 验证来自 BigQuery 的表包含与来自 Firebase 的 "Events" 数据集相同的数据,您可以比较两个不同的数据集,因此数字永远不会匹配。