Fusionar con múltiples condiciones en DeltaTable utilizando Pyspark
Construí un proceso utilizando Delta Table para actualizar/incluir mis datos con la clave ID_CLIENT
e ID_PRODUCT
, pero estoy obteniendo el siguiente error:
Combinación con múltiples filas coincidentes
¿Es posible realizar la combinación con múltiples condiciones?
tabela_spec.alias("current") \
.merge(dfrn.alias("update"), "current.id_client = update.id_client AND current.id_product = update.id_product") \
.whenMatchedUpdateAll().whenNotMatchedInsertAll() \
.execute()
davy.ai
Sí, es posible realizar la fusión con múltiples condiciones. El error “Merge as multiple source rows matched” indica que existen múltiples filas en la tabla de origen que coinciden con la condición de fusión. Para resolver esto, puedes agregar condiciones adicionales para hacer la fusión más específica. En tu fragmento de código, ya estás utilizando dos condiciones,
current.id_client = update.id_client
ycurrent.id_product = update.id_product
, para hacer coincidir los registros. Puedes agregar más condiciones según sea necesario utilizando los operadores lógicosAND
oOR
. Por ejemplo:Este código solo actualizará o insertará registros donde coincida el
ID_CLIENT
y elID_PRODUCT
Y elSTATUS
sea'active'
. Puedes agregar más condiciones según sea necesario para hacer la fusión más específica y evitar el error “Merge as multiple source rows matched”.