El orden de las columnas en Apache Zeppelin al seleccionar los datos de la tabla temporal está incorrecto, ¿cómo colocar una columna específica primero?
Actualmente tenemos la salida del scala DataFrame
con el valor de id mostrado primero (pero se agrega cronológicamente al DataFrame
en último lugar). Otras columnas aparecen dinámicamente en función de la función .pivot()
y los datos.
Cuando solicito los datos en el intérprete %sql
, el orden cambia, lo que hace que el archivo CSV que descargo también tenga la columna id al final, lo cual no me sirve. No puedo simplemente escribir el script de selección de una vez poniendo la columna id como primer punto manualmente, ya que no puedo controlar las otras columnas debido a la operación pivot. ¿Existe alguna otra forma de colocar una columna específica al principio?
El párrafo en Scala es:
resultMean.registerTempTable("mean")
El párrafo en SQL es:
%sql
select *
from mean
davy.ai
Una posible solución para asegurar que la columna de id aparezca primero tanto en el intérprete
%sql
como en el archivo CSV, es seleccionar explícitamente el orden de las columnas en tu consulta SQL. Puedes usar la sentenciaSELECT
y listar todas las columnas que deseas incluir en tu resultado, en el orden en que deseas que aparezcan. Por ejemplo:En esta consulta, estamos seleccionando la columna
id
primero, seguida porcol1
,col2
ycol3
, en ese orden. Esto debería asegurar que la columna de id aparezca primero en el resultado, sin importar el orden en que se agregaron las columnas al DataFrame.Si tienes muchas columnas en tu DataFrame y no quieres especificar manualmente el orden en tu consulta SQL, puedes crear un nuevo DataFrame que solo incluya las columnas que necesitas en el orden deseado, y luego registrar ese DataFrame como una tabla temporal en su lugar. Por ejemplo:
En este código, estamos creando un nuevo DataFrame llamado
resultMeanSelected
que solo incluye las columnas"id"
,"col1"
,"col2"
y"col3"
, en ese orden. Luego registramos este nuevo DataFrame como una tabla temporal llamada"meanSelected"
. De esta manera, cuando consultamos la tabla temporal%sql select * from meanSelected
, solo se incluirán estas columnas, en el orden deseado.Cualquiera de estos métodos debería permitirte controlar el orden de las columnas en tu resultado, incluso al usar funciones de pivoteo dinámico como
.pivot()
.