объединить два массива вместе в Google Big Query - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь взять два массива и объединить их вместе. Я имел хороший успех на предыдущих итерациях моих данных, если данные поступали из записи, но эти два разных массива доставляют мне проблемы.

У меня есть JSON в этой структуре: {"actor": "Tim Curry", "title" : ["Rocky Horror Picture Show", "Mighty Max", "Spamalot"], "result":["Nominated for Award","Nominated for Award", "Won Whatsonstage.com Award"]}

и, следовательно, таблица BQ, которая выглядит следующим образом

enter image description here

Я пытаюсь объединить два массива вместе, сопоставляя позицию индекса из одного массива с индексом другого, в конечном итоге получая

enter image description here

Я считаю, что мне понадобится выражение, похожее на это SELECT actor, ARRAY_TO_STRING(movie_and_award, ', ') movie_and_award FROM t, но я просто не могу понять, как я собираюсь генерировать массив movie_and_award, который передается в ARRAY_TO_STRING.

1 Ответ

2 голосов
/ 31 марта 2020

Ниже для BigQuery Standard SQL

#standardSQL
SELECT actor, 
  ARRAY_TO_STRING(ARRAY(
    SELECT x || ' : ' || y 
    FROM UNNEST(t.title) x WITH OFFSET
    JOIN UNNEST(t.result) y WITH OFFSET
    USING(OFFSET)
  ), ', ') movie_and_award
FROM `project.dataset.table` t

Если применить к образцу данных из вашего вопроса - вывод

Row actor       movie_and_award  
1   Tim Curry   Rocky Horror Picture Show : Nominated for Award, Mighty Max : Nominated for Award, Spamalot : Won Whatsonstage.com Award    
...