MERGE INTO - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

MERGE INTO

Mise à jour, suppression ou insertion conditionnelle de lignes dans une table  Apache Iceberg. Une seule instruction peut combiner des actions de mise à jour, de suppression et d'insertion.

Note

MERGE INTO est transactionnel et n'est pris en charge que pour les tables Apache Iceberg dans la version 3 du moteur Athena.

Résumé

Pour mettre à jour, supprimer ou insérer de manière conditionnelle des lignes d'une table Iceberg, utilisez la syntaxe suivante.

MERGE INTO target_table [ [ AS ] target_alias ] USING { source_table | query } [ [ AS ] source_alias ] ON search_condition when_clause [...]

La clause when_clause est l'une des suivantes :

WHEN MATCHED [ AND condition ] THEN DELETE
WHEN MATCHED [ AND condition ] THEN UPDATE SET ( column = expression [, ...] )
WHEN NOT MATCHED [ AND condition ] THEN INSERT (column_name[, column_name ...]) VALUES (expression, ...)

MERGE prend en charge un nombre arbitraire de clauses WHEN avec des conditions MATCHED différentes. Les clauses de condition exécutent l'opération DELETE, UPDATE ou INSERT dans la première clause WHEN sélectionnée par l'état MATCHED et la condition de correspondance.

Pour chaque ligne source, les clauses WHEN sont traitées dans l'ordre. Seule la première clause WHEN correspondante est exécutée. Les clauses suivantes sont ignorées. Une erreur utilisateur est signalée lorsqu'une seule ligne de la table cible correspond à plus d'une ligne source.

Si une ligne source ne correspond à aucune clause WHEN et qu'il n'y a pas de clause WHEN NOT MATCHED, la ligne source est ignorée.

Dans les clauses WHEN qui comportent des opérations UPDATE, les expressions de valeur de colonne peuvent renvoyer à n'importe quel champ de la cible ou de la source. Dans le cas de NOT MATCHED, les expressions INSERT peuvent renvoyer à n'importe quel champ de la source.

Exemple

L'exemple suivant fusionne les lignes de la deuxième table dans la première table si elles n'existent pas dans la première table. Notez que les colonnes répertoriées dans la clause VALUES doivent être préfixées par l'alias de la table source. Les colonnes cibles répertoriées dans la clause INSERT ne doivent pas être préfixées.

MERGE INTO iceberg_table_sample as ice1 USING iceberg2_table_sample as ice2 ON ice1.col1 = ice2.col1 WHEN NOT MATCHED THEN INSERT (col1) VALUES (ice2.col1)

Pour obtenir plus d'exemples MERGE INTO, consultez Mettre à jour les données de la table Iceberg.