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.

¿Cómo cambiar los nombres entre columnas en una tabla Delta en Databricks?

¿Cómo intercambiar de manera efectiva los nombres entre 2 columnas en Delta Lake? Supongamos que tengo las siguientes columnas:

Dirección | Nombre

Y me gustaría intercambiar los nombres para tener:

Nombre | Dirección

Primero renombré dos columnas:

spark.read.table(“table”) \
.withColumnRenamed(“address”, “name1”) \
.withColumnRenamed(“name”, “address1”) \
.write \
.format(“delta”) \
.mode(“overwrite”) \
.option(“overwriteSchema”, “true”) \
.saveAsTable(“table”)

Luego renombré las columnas ya renombradas en la final:

spark.read.table(“table”) \
.withColumnRenamed(“name1”, “name”) \
.withColumnRenamed(“address1”, “address”) \
.write \
.format(“delta”) \
.mode(“overwrite”) \
.option(“overwriteSchema”, “true”) \
.saveAsTable(“table”)

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una manera alternativa y más efectiva de intercambiar nombres de columna en Delta Lake es usar la función select con alias de columnas. Aquí está el código:

    spark.read.table("tabla") \
      .select("nombre", "direccion") \
      .withColumnRenamed("nombre", "direccion") \
      .withColumnRenamed("direccion", "nombre") \
      .write \
      .format("delta") \
      .mode("overwrite") \
      .option("overwriteSchema", "true") \
      .saveAsTable("tabla")
    

    En este código, seleccionamos las dos columnas por sus nombres y luego usamos la función withColumnRenamed para intercambiar sus nombres. Al usar alias de columna, evitamos la necesidad de crear nombres de columna temporales y realizar dos escrituras separadas. La tabla resultante tendrá las columnas intercambiadas correctamente.

Comments are closed.