如何透过这一数据并重新组织一行中的所有内容?

时间:2017-05-17 09:16:07

标签: google-bigquery

我是BigQuery的新手,但我正在尝试几乎所有内容来整理我的数据。我在每个游戏关卡中跟踪结果,这样我就可以了解人们是否陷入任何级别。考虑我使用Unity3D和这行代码来跟踪我的事件:

FirebaseAnalytics.LogEvent("Levels", "Level_" + LevelInt.ToString(), trophyInt);

其中(级别)是事件, (Level_ + number_of_level)是参数 和(trophyInt)是

我运行这样的查询:

SELECT COUNT(event_dim.name) as Levels,
event_dim.params.key as level,
event_dim.params.value.int_value as value,
FROM
TABLE_DATE_RANGE(mytable_ANDROID.app_events_, TIMESTAMP('2017-05-10'), TIMESTAMP('2017-05-14'))
WHERE event_dim.name = 'Levels' 
  AND event_dim.params.key = 'Level_2' 
  AND user_dim.app_info.app_version = '1.9.3a' 
GROUP BY level, value
ORDER BY value desc

结果如下:

This table

好吧,我想把桌子放在一排,只有:

Level_number | Trophies0 |奖杯1 |奖杯2 | Trophies3

我一直在尝试使用stackoverflow中的许多示例,但这些都不适用于我。

此外,我想知道是否可以同时查询所有级别的所有数据。我的意思是,在上面的查询中我设置了event_dim.params.key ='Level_2',但想象我想同时看到我的100个等级,这可能吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

  

如何透过此数据...

#legacySQL
SELECT
  level AS Level_number,
  MAX((value = 0) * Levels) AS Trophies0, 
  MAX((value = 1) * Levels) AS Trophies1, 
  MAX((value = 2) * Levels) AS Trophies2, 
  MAX((value = 3) * Levels) AS Trophies3
FROM (
  SELECT 
    COUNT(event_dim.name) AS Levels,
    event_dim.params.key AS level,
    event_dim.params.value.int_value AS value,
  FROM TABLE_DATE_RANGE(mytable_ANDROID.app_events_, TIMESTAMP('2017-05-10'), TIMESTAMP('2017-05-14'))
  WHERE event_dim.name = 'Levels' 
    AND event_dim.params.key = 'Level_2' 
    AND user_dim.app_info.app_version = '1.9.3a' 
  GROUP BY level, value
)
GROUP BY Level_number   
  

我希望同时看到我的100级,是否可能?

只需在查询下方的注释

    AND event_dim.params.key = 'Level_2' 

或者,如果您还有除Level_NNN之外的其他键,那么您希望将查询限制为那些 - 只需将此行更改为

    AND event_dim.params.key LIKE 'Level_%'