#sql #google-bigquery
# #sql #google-bigquery
Вопрос:
Я привык работать с базами данных SQL Server, и теперь мне нужно запросить данные из BigQuery.
Какой лучший способ запрашивать данные из таблицы подобным образом?
Где один столбец включает в себя несколько столбцов…
Комментарии:
1. В чем именно заключается ваш вопрос? Пожалуйста, приведите фактический пример выборки данных и желаемых результатов в виде табличного текста.
2. Привет, мне это нужно как обычная таблица со столбцами Идентификатор ПОЛЬЗОВАТЕЛЯ, ВОЗРАСТ, пол…..
Ответ №1:
BigQuery поддерживает unnest()
преобразование элементов массива в строки. Итак, вы можете преобразовать все это в строки как:
select t.user_id, t.user_pseudo_id, up.*
from t cross join
unnest(user_properties) up;
Вам нужно поле для каждого свойства. Это можно сделать несколькими способами. Если вам нужно ровно одно значение в строке, вы можете использовать подзапрос и агрегирование:
select t.user_id, t.user_pseudo_id, p.*
from t cross join
(select max(case when up.key = 'age' then up.string_value end) as age,
max(case when up.key = 'gender' then up.string_value end) as gender
from unnest(user_properties) up
) p
Ответ №2:
Обычно подзапросы используются как:
SELECT
user_id,
user_pseudo_id,
(SELECT value.string_value FROM user_properties WHERE key = "age") AS age,
(SELECT value.string_value FROM user_properties WHERE key = "gender") AS gender,
FROM dataset.table