Создание запроса, который показывает параметры в виде столбцов - BigQuery - PullRequest
0 голосов
/ 28 января 2019

Я использую Firebase и BigQuery.То, что я пытаюсь сделать, это создать запрос, который показывает мне среднее количество «заказов» и «SoftCurrency» для каждого «уровня», но я понятия не имею, как это сделать.

Это упрощенный файл JSONпример события в моей базе данных.Такие события отправляются каждый раз, когда игрок достигает следующего уровня.

[
  {
    "event_name": "LevelUp",
    "event_params": [
      {
        "key": "Level",
        "value": {
          "string_value": null,
          "int_value": "12"
        }
      },
      {
        "key": "SoftCurrrency",
        "value": {
          "string_value": null,
          "int_value": "623"
        }
      },
      {
        "key": "Orders",
        "value": {
          "string_value": null,
          "int_value": "24"
        }
      }
    ]
  }
]

1 Ответ

0 голосов
/ 29 января 2019

Вот как я это сделал:

SELECT ANY_VALUE(Level) as Lvl, FLOOR(AVG(SoftCurrency)) as average_Coins, FLOOR(AVG(Orders)) as average_Orders
FROM  (
  SELECT MAX(if(param.key = "SoftCurrency", param.value.int_value, NULL)) AS SoftCurrency,
    MAX(if(param.key = "Level", param.value.int_value, NULL)) AS Level,
    MAX(if(param.key = "Orders", param.value.int_value, NULL)) AS Orders
  FROM (
    SELECT user_pseudo_id, event_timestamp, param
    FROM `analytics`,
    UNNEST(event_params) AS param
    WHERE event_name = "LevelUp"
    AND (param.key = "SoftCurrency" OR param.key = "Level" OR param.key = "Orders")
  )
  GROUP BY user_pseudo_id, event_timestamp
) 
GROUP BY Level
ORDER BY Lvl
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...