sql >> Base de Datos >  >> NoSQL >> MongoDB

MERGE REPLACE atómico a nivel de fila en BigQuery

INSERT es compatible con BigQuery DML

por ejemplo

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   

entonces, deberías estar listo para usar tu ETL

Ok, ya veo, creo que en este caso MERGE no se aplicará ya que INSERT se puede hacer SOLO para la cláusula NOT MATCH. Alguien podría descubrir cómo engañar a MERGE para que funcione en este caso, pero mientras tanto, la solución a continuación hace lo que quiere lograr, creo que sí: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`)