Запрос Google Biq и SQL

#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