es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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()

Tags:  , , ,

Answer

  1. Avatar for 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 y current.id_product = update.id_product, para hacer coincidir los registros. Puedes agregar más condiciones según sea necesario utilizando los operadores lógicos AND o OR. Por ejemplo:

    tabela_spec.alias("current") \
    .merge(dfrn.alias("update"), 
          [
              "current.id_client = update.id_client", 
              "current.id_product = update.id_product", 
              "current.status = 'active'"
          ]
    ) \
    .whenMatchedUpdateAll().whenNotMatchedInsertAll() \
    .execute()
    

    Este código solo actualizará o insertará registros donde coincida el ID_CLIENT y el ID_PRODUCT Y el STATUS 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”.

Comments are closed.