MERGE INTO - Amazon Athena

MERGE INTO

Actualiza, elimina o inserta filas de forma condicional en una tabla de Apache Iceberg. Una sola instrucción puede combinar acciones de actualización, eliminación e inserción.

nota

MERGE INTO es transaccional y solo es compatible con las tablas de Apache Iceberg en la versión 3 del motor Athena.

Sinopsis

Para actualizar, eliminar o insertar filas de forma condicional de una tabla de Iceberg, use la siguiente sintaxis.

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

La cláusula when_clause es una de las siguientes:

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 admite un número arbitrario de cláusulas WHEN con diferentes condiciones MATCHED. Las cláusulas de condición ejecutan la operación DELETE, UPDATE o INSERT de la primera cláusula WHEN seleccionada por el estado MATCHED y la condición de coincidencia.

Para cada fila de origen, las cláusulas WHEN se procesan en orden. Solo se ejecuta la primera cláusula WHEN coincidente. Las demás cláusulas se ignoran. Se produce un error de usuario cuando una sola fila de la tabla de destino coincide con más de una fila de origen.

Si una fila de origen no coincide con ninguna cláusula WHEN y no hay ninguna cláusula WHEN NOT MATCHED, se ignora la fila de origen.

En las cláusulas WHEN que tienen operaciones UPDATE, las expresiones de valores de la columna pueden hacer referencia a cualquier campo del destino o del origen. En el caso de NOT MATCHED, las expresiones INSERT pueden referirse a cualquier campo del origen.

Ejemplo

En el siguiente ejemplo, se combinan filas de la segunda tabla en la primera tabla si las filas no existen en la primera tabla. Tenga en cuenta que las columnas que aparecen en la cláusula VALUES deben ir precedidas del alias de la tabla de origen. Las columnas de destino enumeradas en la cláusula INSERT no deben tener ese prefijo.

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)

Para obtener más ejemplos de MERGE INTO, consulte Actualización de los datos de las tablas de Iceberg.