Bigquery: добавить к вложенной записи - PullRequest
0 голосов
/ 10 октября 2018

В настоящее время я проверяю Bigquery и хочу знать, возможно ли добавить новые данные во вложенную таблицу.

Например, если у меня есть такая таблица:

[
    {
        "name": "name",
        "type": "STRING"
    },
    {
        "name": "phone",
        "type": "RECORD",
        "mode": "REPEATED",
        "fields": [
            {
                "name": "number",
                "type": "STRING"
            },
            {
                "name": "type",
                "type": "STRING"
            }
        ]
    }
]

А затем я вставляю номер телефона для контакта Джона Доу.

INSERT into socialdata.phones_examples (name, phone) VALUES("Jonh Doe", [("555555", "Home")]);

Есть ли возможность позже добавить еще один номер для контакта?Чтобы получить что-то вроде этого:

Append example

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

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

если вам нужно обновить несколько записей для некоторых пользователей - вы можете использовать ниже

#standardSQL
UPDATE `socialdata.phones_examples` t
SET phone = ARRAY_CONCAT(phone, [new_phone]) 
FROM (
  SELECT 'John Doe' name, STRUCT<number STRING, type STRING>('123-456-7892', 'work') new_phone UNION ALL
  SELECT 'Abc Xyz' , STRUCT('123-456-7893', 'work') new_phone 
) u
WHERE t.name = u.name   

или если эти обновления доступны в некоторой таблице (например, socialdata.phones_updates):

#standardSQL
UPDATE `socialdata.phones_examples` t
SET phone = ARRAY_CONCAT(phone, [new_phone]) 
FROM `socialdata.phones_updates` u
WHERE t.name = u.name   
0 голосов
/ 10 октября 2018

Когда вы вставляете данные в BigQuery, гранулярность - это уровень строк, а не элементы массивов, содержащихся в строках.Вы хотели бы использовать такой запрос, где вы обновляете соответствующую строку и добавляете в массив:

UPDATE socialdata.phones_examples
SET phone = ARRAY_CONCAT(phone, [("555555", "Home")])
WHERE name = "Jonh Doe"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...