Получение выбора структур из массива структур в BQ - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть таблица, в которой один столбец определен как:

my_column ARRAY<STRUCT<key STRING, value FLOAT64, description STRING>>

Есть ли простой способ указать список параметров, которые должны быть возвращены в операторе SELECT? Например, удаление description, поэтому столбец результата будет по-прежнему массивом структур, но содержащий только key и value.

Ответы [ 3 ]

1 голос
/ 06 февраля 2020

Ниже для BigQuery Standard SQL

#standardSQL
SELECT * REPLACE(
  ARRAY(
    SELECT AS STRUCT * EXCEPT(description)
    FROM UNNEST(my_column)
  ) AS my_column)
FROM `project.dataset.table`  

Выше полностью сохраняет схему таблицы и изменяется только в поле my_column, удаляя описание

0 голосов
/ 07 февраля 2020

Я нашел этот путь:

SELECT
ARRAY(SELECT AS VALUE STRUCT(key, value) FROM a.my_column) as my_new_column
FROM my_table a

Нет необходимости присоединяться или отменять.

0 голосов
/ 06 февраля 2020

Я бы просто удалил и затем заново агрегировал выбранные вами поля.

select array_agg(struct(m.key,m.value)) as my_new_column
from table
left join unnest(my_column) m
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...