Firebase BigQuery-如何按事件排序

Firebase BigQuery-如何按事件排序,firebase,google-bigquery,Firebase,Google Bigquery,最近我开始在工作中使用BigQuery。直到现在,我才设法要求得到我想要的东西,但我被卡住了。 我在我的大查询控制台上从Firebase检索数据。这些数据是我们正在测试的手机游戏中的事件 我想知道每个级别有多少玩家。我不知道怎么做。 我这样做: SELECT param.value.string_value AS Version, COUNT (DISTINCT user_pseudo_id) AS Players, param2.value.string_value AS Level F

最近我开始在工作中使用BigQuery。直到现在,我才设法要求得到我想要的东西,但我被卡住了。 我在我的大查询控制台上从Firebase检索数据。这些数据是我们正在测试的手机游戏中的事件

我想知道每个级别有多少玩家。我不知道怎么做。 我这样做:

SELECT
param.value.string_value AS Version, 
COUNT (DISTINCT user_pseudo_id) AS Players,
param2.value.string_value AS Level
  FROM
    `*Name of the dataset*`,
    UNNEST(event_params) AS param,
    UNNEST(event_params) AS param2
  WHERE
 event_name = 'Level_end'
 AND param.key = 'ABVersion'
 AND param2.key = 'Level'
GROUP BY Version,Level
我得到了这个:

我想知道每个级别的玩家数量,并提供ABV版本


谢谢你的帮助

级别是一个整数参数,而不是字符串。所以您应该使用value.int_值作为级别

对于您正在尝试做的事情,我认为这是一个更好的查询:

SELECT 
    highest_level,
    abversion,
    count(*) as players
FROM (
    SELECT
        user_pseudo_id,
        ANY_VALUE((SELECT value.string_value FROM UNNEST(params) WHERE key = 'ABVersion')) as abversion,
        MAX((SELECT value.int64_value FROM UNNEST(params) WHERE key = 'Level')) as highest_level
    FROM `*Name of the dataset*`,
    WHERE
       event_name = 'Level_end'
       AND EXISTS (SELECT 1 FROM UNNEST(params) WHERE key IN ('Level', 'ABVersion'))
    GROUP BY user_pseudo_id
)
GROUP BY 1,2
ORDER BY 1,2

您确定级别是字符串参数吗?我想试试param2.value.int_值。如果您能提供该事件的样本数据,那就更好了。除了数据,查询中还有几个优化机会。不过,我想先看看示例数据。谢谢你的快速回答:)你说得对,这是一个int_值!我不知道我为什么写字符串\ u值。非常感谢您提供的优化机会!级别是您建议的int_值。它是这样显示的:1400 2 380 3 350 1,2,3是关卡,数字是玩家的数量再次感谢你@Sabri Karagönen能否请您将其作为答案发布?谢谢非常感谢D