我们最近在其中一个游戏中实施了Firebase,并在每个事件中为每个事件配置了多个自定义事件和参数 . 事件的结构与Firebase BigQuery DB中定义/共享的内容相同(Link)
目前,我使用以下查询来取出数据:
SELECT
user_dim.app_info.app_instance_id AS id,
(
SELECT
param.value.int_value
FROM
UNNEST(event_dim.params) AS param
WHERE
param.key = 'x') AS x,
(
SELECT
param.value.int_value
FROM
UNNEST(event_dim.params) AS param
WHERE
param.key = 'y') AS y,
(
SELECT
param.value.string_value
FROM
UNNEST(event_dim.params) AS param
WHERE
param.key = 'z') AS z
FROM
`firebase_dataset`
CROSS JOIN
UNNEST(event_dim) AS event_dim
WHERE
event_dim.name = 'event_name';
这给出了所述事件中参数的所有数据的列表 . 例如,
id x y z
1 100 1000 abc
1 200 1500 def
1 300 2000 ghi
1 400 2500 klm
2 100 1000 abc
2 200 1500 def
3 100 1000 abc
4 100 1000 abc
4 200 1500 def
4 300 2000 ghi
然后,我们取CSV,然后分别取出x,y和z的计数或x,y或z出现的“id”的唯一计数 .
例如,
X Count of id
100 4
200 3
300 2
400 1
我知道可以通过查询直接获得唯一的计数/超过计数值,但我无法弄清楚bigquery中多个参数的使用方式 .
我假设一个更好的查询将有助于减少运行所花费的时间,但不会更改被查询的数据,因为数据集以获得最终结果不会有太大变化 .
任何有关如何直接在BigQuery上获得结果的帮助都将受到高度赞赏 .
谢谢!
此致,Tejas
1 回答
以下是BigQuery Standard SQL
您可以使用您在问题中引用的公共数据集来测试/播放它,如下所示