Обновить значения в массивах структур в BigQuery - PullRequest
1 голос
/ 24 апреля 2020

Я ищу простой способ обновления значений внутри массива структур, используя SQL. Допустим, у нас есть таблица:

CREATE TABLE schema.table
(
    date DATE,
    weights ARRAY<STRUCT<animal STRING, value FLOAT64>>
)
;

insert into schema.table
select cast('2020-01-01' as date), [('dog', 10.2), ('bird', 0.7), ('dragon', 3.2)]
union all
select cast('2020-01-02' as date), [('dog', 10.3), ('bird', 0.7)]
union all
select cast('2020-01-03' as date), [('dragon', 3.3)]

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

enter image description here

Я бы как-то хотел обновить это таблицу и измените все dragon имена на cat.

1 Ответ

2 голосов
/ 24 апреля 2020

Ниже для BigQuery Standard SQL

#standardSQL
UPDATE `project.dataset.table` t
SET weights =  
  ARRAY(
    SELECT AS STRUCT IF(animal = 'dragon', 'cat', animal) animal, value
    FROM t.weights 
  ) 
WHERE TRUE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...