MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MERGE REPLACE atomique au niveau de la ligne dans BigQuery

INSERT est pris en charge par BigQuery DML

par exemple

MERGE dataset.Inventory T
USING dataset.NewArrivals S
ON FALSE
WHEN NOT MATCHED AND product LIKE '%washer%' THEN
  INSERT (product, quantity) VALUES(product, quantity)
WHEN NOT MATCHED BY SOURCE AND product LIKE '%washer%' THEN
  DELETE   

donc, vous devriez être prêt à partir avec votre ETL

Ok, je vois - je pense que dans ce cas, MERGE ne s'appliquera pas car INSERT peut être fait UNIQUEMENT pour la clause NOT MATCH. Quelqu'un pourrait comprendre comment tromper MERGE pour qu'il fonctionne dans ce cas, mais en attendant, la solution ci-dessous fait ce que vous voulez réaliser - je pense que oui :o)

CREATE OR REPLACE TABLE `project.dataset.user_q` (user_id INT64, q STRING) AS
SELECT * FROM `project.dataset.user_q`
WHERE NOT user_id IN (SELECT DISTINCT user_id FROM `project.dataset.user_q_incoming`)
UNION ALL
SELECT * FROM `project.dataset.user_q_incoming`
WHERE user_id IN (SELECT DISTINCT user_id FROM `project.dataset.user_q`)