如何使用带有平台、steam_id、event_name 过滤器的 bigquery 在 power bi 中编写查询以查找过去 28 天的 firebase 事件详细信息?

Posted

技术标签:

【中文标题】如何使用带有平台、steam_id、event_name 过滤器的 bigquery 在 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? 【发布时间】:2020-01-01 12:37:50 【问题描述】:

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 输出不同,我认为这是由于查询问题,请帮助我编写正确的查询。

【问题讨论】:

这个问题似乎与 Firebase 实时数据库无关,所以请不要这样标记它。我们花在重新标记上的时间是我们无法以其他方式提供帮助的时间。 您能否指定哪个输出来自 Firebase,哪个来自 Bigquery?我猜第一个来自 Firebase,但我想确定一下。 是的,你是对的,第一个是 firebase.console,第二个是大查询结果@S.Tyr 【参考方案1】:

您的查询在WHERE 语句中缺少一些部分。所以我什至不确定您与我们分享的 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() 转换值。

编辑:

将项目链接到 BigQuery 后,每日首次导出事件 在关联的 BigQuery 项目中创建相应的数据集。 然后,每天,每个链接应用程序的原始事件数据都会填充一个新的 相关数据集中的每日表,原始事件数据流式传输 实时导入单独的日内 BigQuery 表。之前的数据 无法导入 BigQuery 的链接(除了 性能监控数据)。默认情况下,来自您的应用程序的所有网络数据 + Google Analytics 中的网络资源也将被导出。

Source

查询似乎没问题,只需要再考虑一个问题:

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

除此之外,我建议您按照以下步骤操作,并认为问题不是查询:

验证您查询的每一天的表是否存在于 BigQuery 中。较小的计数似乎来自一天而不是较大的数量。 验证 BigQuery 中的表是否包含与 Firebase 中的“事件”数据集相同的数据,您可能会比较两个不同的数据集,因此数字永远不会匹配。

【讨论】:

谢谢回复,还是计数不匹配,不知道是什么原因。@S.Tyr @KARTHIKEYAN.A 看看答案中的更新(编辑),您似乎刚刚创建了从 Firebase 到 BigQuery 的链接,而您的 BigQuery 中只有几天的数据表。当您发现自己处于这种情况时,我还添加了一些额外的注意事项。

以上是关于如何使用带有平台、steam_id、event_name 过滤器的 bigquery 在 power bi 中编写查询以查找过去 28 天的 firebase 事件详细信息?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的平台不绘制当使用带有数组列表的 for 循环(访问多个平台)时

如何在 C++ 中编写独立于平台的包装函数 [重复]

使用带有 api 平台和 symfony 的转换器时,GET 结果为空

使用带有 Web 平台安装程序 API 的 Powershell 仅在 64 位机器上获取 x86 安装程序

带有 NullReferenceException 的 Xamarin 跨平台中的 Ninject 实现

是否有一个通知平台同时支持带有 Xamarin 的移动应用程序和带有 Javascript 的 Web 浏览器