Ниже приведена схема моей таблицы BigQuery.Я выбираю предложение, хранилище и BU_model и вставляю данные в другую таблицу в BigQuery.Типы данных для новой сгенерированной таблицы являются целочисленными, повторяются и повторяются соответственно.Я хочу сгладить / развернуть повторяющиеся поля, чтобы они создавались как поля STRING во второй таблице.Как этого достичь, используя стандартный sql?
+- sentences: record (repeated)
| |- sentence_id: integer
| |- autodetected_language: string
| |- processed_language: string
| +- attributes: record
| | |- agent_rating: integer
| | |- store: string (repeated)
| +- classifications: record
| | |- BU_Model: string (repeated)
Запрос, который я использую для создания второй таблицы, выглядит следующим образом.Я хотел бы запросить BU_Model в виде столбца STRING.
SELECT sentence_id ,a.attributes.store,a.classifications.BU_Model
FROM staging_table , unnest(sentences) a
Ожидаемый результат должен выглядеть следующим образом:
Промежуточный стол:
41783851 regions Apparel
district Footwear
12864656 regions
district
Таблица конечных целей:
41783851 regions Apparel
41783851 regions Footwear
41783851 district Apparel
41783851 district Footwear
12864656 regions
12864656 district
Я попытался выполнить приведенный ниже запрос, и он, кажется, работает, как и ожидалось, но это означает, что мне нужно будет развернуть каждое ожидаемое повторяющееся поле.Моя таблица в Bigquery содержит более 50 столбцов, которые повторяются.Есть ли более простой способ обойти это?
SELECT
sentence_id,
flattened_stores,
flattened_Model
FROM `staging`
left join unnest(sentences) a
left join unnest(a.attributes.store) as flattened_stores
left join unnest(a.classifications.BU_Model) as flattened_Model