Как обновить существующую строку в BigQuery

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

Я не вижу примеров в репозитории клиента узла, как обновить строку вместо внедрения.

Другими словами, я хочу запросить свою таблицу, чтобы увидеть, соответствует ли поле «id» уже x. Если он существует, я хочу заменить строку, если нет, я хочу ее ввести.

Как бы я это сделал?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
95
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я нашел ответ здесь

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

Ответ принят как подходящий

Вы также можете использовать Bigqueryзапрос на слияние с NodeJs клиентом :

MERGE dataset.Inventory T
USING dataset.NewArrivals S
ON T.product = S.product
WHEN MATCHED THEN
  UPDATE SET quantity = T.quantity + S.quantity
WHEN NOT MATCHED THEN
  INSERT (product, quantity) VALUES(product, quantity)

Запросы merge позволяют обновить элемент, если он существует в Bigquery, или иным образом вставить его.

Если вам интересно, я написал статью, показывающую запрос на слияние и как удалять дубликаты в пакетных конвейерах с помощью BigQuery

Пожалуйста. Я обновил свой ответ ссылкой на статью, которую я написал ранее. Я надеюсь, что это может помочь вам. Если ответ полезен для вас, можете ли вы проголосовать? Спасибо.

Mazlum Tosun 05.12.2022 21:37

Другие вопросы по теме