为存储在 Google BigQuery 中的 Firebase 事件在一行中选择多个事件参数 [英] Select several event params in a single row for Firebase events stored in Google BigQuery

查看:26
本文介绍了为存储在 Google BigQuery 中的 Firebase 事件在一行中选择多个事件参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试对存储在 Google BigQuery 中的 Firebase 事件执行一个非常简单的查询,但我找不到方法.

I'm trying to perform a very simple query for Firebase events stored in Google BigQuery but I´m not able to find a way to do it.

在 Android 应用中,我正在记录这样的事件:

In the Android app, I´m logging an event like this:

Bundle params = new Bundle();
params.putInt("productID", productId);
params.putInt(FirebaseAnalytics.Param.VALUE, value);
firebaseAnalytics.logEvent("productEvent", params);

所以,在 BigQuery 中,我有这样的事情:

So, in BigQuery I have something like this:

 ___________________ _______________________ ____________________________ 
| event_dim.name    | event_dim.params.key  | event_dim.params.int_value | 
|___________________|_______________________|____________________________|
| productEvent      | productID             | 25                         | 
|                   |_______________________|____________________________| 
|                   | value                 | 1253                       |
|___________________|_______________________|____________________________| 

当我从这个表中获取数据时,我得到两行:

When I get the data from this table I get two rows:

 ___________________ _______________________ ____________________________
|event_dim.name     | event_dim.params.key  | event_dim.params.int_value |
|___________________|_______________________|____________________________|
| productEvent      | productID             | 25                         |
| productEvent      | value                 | 12353                      |

但我真正需要的是从该表中使用 SELECT 子句来获取如下数据:

But what I really need is a SELECT clause from this table to get the data as below:

 ___________________ _____________ _________
|   name            | productID   | value   |
|___________________|_____________|_________|
| productEvent      | 25          | 12353   |

有什么想法或建议吗?

推荐答案

您可以像这样将值透视到列中

You can pivot the values into columns like this

SELECT 
  event_dim.name as name,
  MAX(IF(event_dim.params.key = "productID", event_dim.params.int_value, NULL)) WITHIN RECORD productID,
  MAX(IF(event_dim.params.key = "value", event_dim.params.int_value, NULL)) WITHIN RECORD value,
FROM [events] 

如果您想使用 SQL 生成此命令,请参阅此解决方案:Pivot RepeatedBigQuery 中的字段

In case you want to generate this command using SQL, see this solution: Pivot Repeated fields in BigQuery

这篇关于为存储在 Google BigQuery 中的 Firebase 事件在一行中选择多个事件参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆