Я хочу отобразить каждое из этих повторяющихся полей в отдельный столбец.
Концептуально выполнимое направление поворота параметров в столбцы, но (по моему сильному мнению) в большинстве практических случаев является «тупиком»
Здесь много постов, показывающих, как поворачивать /транспонировать строки в столбцы и шаблоны: 1) вы просто жестко закодируете все возможные ключи в своем запросе) и, очевидно, никому это не нравится) или 2) вы создаете служебный запрос, который извлекает все ключи для вас и запрашивает необходимый вам контракт, который затем вынужно выполнить - так что либо вы делаете это вручную в два этапа, либо вы используете клиент по своему выбору, чтобы написать сценарий для этих шагов, чтобы они выполнялись в автоматическом режиме
Как я уже упоминал - здесь достаточно примеров на SO
Я хочу написать запросы в указанном выше наборе данных, например, найти разницу между minIso и maxIso
Если все, что вам нужно, это сделать некоторые математические операции с несколькими параметрами в записи - см. Пример ниже
Пример фиктивного : для каждого app_instance_idtween
найдите разность между coins_awarded
и xp_awarded
#standardSQL
SELECT user_dim.app_info.app_instance_id, ARRAY(
SELECT AS STRUCT name,
(SELECT value.int_value FROM UNNEST(dim.params) param WHERE key = 'coins_awarded') -
(SELECT value.int_value FROM UNNEST(dim.params) param WHERE key = 'xp_awarded') diff_awarded
FROM UNNEST(event_dim) dim
WHERE dim.name = 'round_completed'
) AS event_dim
FROM `firebase-analytics-sample-data.ios_dataset.app_events_20160607`
WHERE 'round_completed' IN (SELECT name FROM UNNEST(event_dim))
с результатом как
Row app_instance_id event_dim.name event_dim.diff_awarded
1 02B6879DF2639C9E2244AD0783924CFC round_completed 226
2 02B6879DF2639C9E2244AD0783924CFC round_completed 171
3 0DE9DCDF2C407377AE3E779FB05864E7 round_completed 25
...
Пустой пример : оставить целым user_dim без изменений, но заменить event_dim только что вычисленными значениями
#standardSQL
SELECT * REPLACE(ARRAY(
SELECT AS STRUCT name,
(SELECT value.int_value FROM UNNEST(dim.params) param WHERE key = 'coins_awarded') -
(SELECT value.int_value FROM UNNEST(dim.params) param WHERE key = 'xp_awarded') diff_awarded
FROM UNNEST(event_dim) dim
WHERE dim.name = 'round_completed'
) AS event_dim)
FROM `firebase-analytics-sample-data.ios_dataset.app_events_20160607`
WHERE 'round_completed' IN (SELECT name FROM UNNEST(event_dim))
Это оказывается сложным, так как некоторые поля, такие как event_params, являются повторяющимися записями.Я хочу отобразить каждое из этих повторяющихся полей в отдельный столбец.
Надеюсь, из приведенных выше примеров вы можете увидеть, насколько просто работать с повторяющимися полями.Я действительно рекомендую вам научиться / практиковать работу с массивами , чтобы получить долгосрочные выгоды, а не искать то, что [ошибочно] выглядит как ярлык