Как преобразовать массив столбцов в строки в Bigquery - PullRequest
0 голосов
/ 29 августа 2018

У меня есть колонка, как показано ниже на скриншоте в моем Google BigQuery

enter image description here

Мне нужно преобразовать этот столбец в строки, как показано ниже в Bigquery:

70042 70055 70044 70046 70042 70055 70044 70046

Пожалуйста, предложите мне, как я могу получить строки, как указано выше.

1 Ответ

0 голосов
/ 29 августа 2018

Ниже приведены примеры для BigQuery Standard SQL
Первый применяется, если ваш столбец представляет собой массив строк, а второй - в случае, если это строка, которая выглядит как массив: o)

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 1 id, ['70042', '70055', '70044', '70046'] dspid UNION ALL
  SELECT 2 id, ['70042', '70055', '70044', '70046'] dspid 
)
SELECT id, dspid
FROM `project.dataset.table`,
UNNEST(dspid) dspid   


#standardSQL
WITH `project.dataset.table` AS (
  SELECT 1 id, '["70042","70055","70044","70046"]' dspid UNION ALL
  SELECT 2 id, '["70042","70055","70044","70046"]' dspid 
)
SELECT id, dspid
FROM `project.dataset.table`,
UNNEST(SPLIT(REGEXP_REPLACE(dspid, r'[\[\]"]', ''))) dspid   

Оба результата ниже результата

Row id  dspid    
1   1   70042    
2   1   70055    
3   1   70044    
4   1   70046    
5   2   70042    
6   2   70055    
7   2   70044    
8   2   70046      

Примечание: приведенный ниже фрагмент используется только для того, чтобы имитировать ваши реальные данные / таблицу и просто для тестирования / игры. На самом деле, вы можете удалить его и использовать свой конкретный project.dataset.table

WITH `project.dataset.table` AS (
  ..............
)

В следующий раз, когда вы зададите вопрос о SO, пожалуйста, предоставьте более подробную информацию о вашем деле и покажите, что вы пробовали, даже если это не помогло вам - это обычно помогает нам лучше понять ваше дело и, следовательно, лучше помочь вам

Обновление

Так, например, если ваша таблица veuhub-185502.AdtechAnalytics.tag_request, вы должны использовать ниже

#standardSQL
SELECT id, dspid
FROM `veuhub-185502.AdtechAnalytics.tag_request`,
UNNEST(dspid) dspid 

или ниже для (на основе ваших комментариев)

#standardSQL
SELECT 
  DSPID, 
  adtype, 
  adtypeWithDevice, 
  EXTRACT(year FROM request_timestamp) AS year, 
  EXTRACT(month FROM request_timestamp) AS month, 
  EXTRACT(day FROM request_timestamp) AS day, 
  EXTRACT(hour FROM request_timestamp) AS hour, 
  SUM(1) AS requestcount 
FROM `veuhub-185502.AdtechAnalytics.tag_request`, 
UNNEST(dspid) dspid 
GROUP BY adtype,adTypeWithDevice,DSPID,year,month,day,hour
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...