Compartir por


Funciones de transformación en Power Query para la limpieza y transformación de datos

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. ¡Obtenga más información sobre cómo iniciar una nueva evaluación gratuita!

La limpieza y transformación de datos en Azure Data Factory permite la ágil preparación, y limpieza y transformación de datos sin código a escala de nube mediante la traducción de scripts M de Power Query al script de Data Flow. ADF se integra en Power Query online y pone las funciones M de Power Query a disposición para la limpieza y transformación de datos a través de la ejecución de Spark con la infraestructura de Spark de flujo de datos.

Actualmente no se admiten todas las funciones de Power Query M para la limpieza y transformación de datos, a pesar de estar disponibles durante la creación. Al compilar las recopilaciones, aparecerá el siguiente mensaje de error si no se admite una función:

UserQuery : Expression.Error: The transformation logic is not supported as it requires dynamic access to rows of data, which cannot be scaled out.

A continuación se muestra una lista de funciones admitidas de Power Query M.

Administración de columnas

Filtrado de filas

Use la función de M Table.SelectRows para filtrar según las siguientes condiciones:

Adición y transformación de columnas

Las siguientes funciones de M agregan o transforman columnas: Table.AddColumn, Table.TransformColumns, Table.ReplaceValue, Table.DuplicateColumn. A continuación se muestran las funciones de transformación admitidas.

Combinar o unir tablas

  • Power Query generará una combinación anidada (Table.NestedJoin; los usuarios también pueden escribir manualmente Table.AddJoinColumn). Los usuarios deben expandir la columna de combinación anidada en una combinación no anidada (Table.ExpandTableColumn no se admite en ningún otro contexto).
  • Aunque la función de M Table.join puede escribirse directamente para no tener que realizar un paso adicional de expansión, el usuario debe asegurarse de que no haya nombres de columna duplicados entre las tablas combinadas.
  • Tipos de combinación admitidos: Inner, LeftOuter, RightOuter y FullOuter.
  • Se admiten Value.Equals y Value.NullableEquals como comparadores de igualdad de claves.

Agrupar por

Utilice Table.Group para agregar valores.

Ordenación

Use Table.Sort para ordenar los valores.

Reducir filas

Mantener y quitar la parte superior, mantener el rango (funciones M correspondientes, solo se admiten recuentos, no condiciones: Table.FirstN, Table.Skip, Table.RemoveFirstN, Table.Range, Table.MinN, Table.MaxN)

Funciones conocidas no admitidas

Función Estado
Table.PromoteHeaders No compatible. Se puede lograr el mismo resultado si se establece "Primera fila como encabezado" en el conjunto de resultados.
Table.CombineColumns Se trata de un escenario habitual que no se admite directamente, pero se puede realizar si se agrega una nueva columna que concatene dos columnas concretas. Por ejemplo, Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " " & [LastName])
Table.TransformColumnTypes Esto se admite en la mayoría de los casos. No se admiten los siguientes escenarios: transformar una cadena al tipo de moneda, transformar una cadena al tipo de hora, transformar una cadena al tipo de porcentaje y la transformación regional.
Table.NestedJoin Si realiza una combinación, se producirá un error de validación. Las columnas deben expandirse para que funcione.
Table.RemoveLastN No se admite la eliminación de las filas inferiores.
Table.RowCount No se admite, pero se puede lograr agregando una columna personalizada que contenga el valor 1 y sumando después esa columna con List.Sum. Se admite Table.Group.
Control de errores de nivel de fila El control de errores de nivel de fila no se admite actualmente. Por ejemplo, para filtrar los valores no numéricos de una columna, una opción sería transformar la columna de texto en números. Cada celda que no se pueda transformar tendrá un estado de error y deberá filtrarse. Este escenario no es posible en M con escalabilidad horizontal.
Table.Transpose No compatible

Soluciones alternativas de script M

SplitColumn

A continuación se muestra una alternativa para dividir por longitud y por posición.

  • Table.AddColumn(Source, "Primeros caracteres", each Text.Start([Email], 7), type text)
  • Table.AddColumn(#"Primeros caracteres insertados", "Rango de texto", each Text.Middle([Email], 4, 9), type text)

Se puede acceder a esta opción desde "Extraer" en la cinta de opciones.

Power Query Add Column

Table.CombineColumns

  • Table.AddColumn(RemoveEmailColumn, "Nombre", each [FirstName] & " " & [LastName])

Elementos dinámicos

  • Seleccione la transformación dinámica en el editor de PQ y seleccione la columna dinámica.

Power Query Pivot Common

  • A continuación, seleccione la columna de valor y la función de agregado.

Power Query Pivot Selector

  • Al hacer clic en Aceptar, verá los datos en el editor actualizados con los valores dinamizados.
  • También verá un mensaje de advertencia que indica que la transformación puede no ser compatible.
  • Para corregir esta advertencia, expanda la lista dinámica manualmente mediante el editor de PQ.
  • Seleccione la opción Editor avanzado en la cinta de opciones.
  • Expansión manual de la lista de valores dinamizados
  • Reemplace List.Distinct() por la lista de valores como este:
#"Pivoted column" = Table.Pivot(Table.TransformColumnTypes(#"Changed column type 1", {{"genres", type text}}), {"Drama", "Horror", "Comedy", "Musical", "Documentary"}, "genres", "Rating", List.Average)
in
  #"Pivoted column"

Formato de columnas de fecha y hora

Para establecer el formato de fecha y hora al usar Power Query ADF, siga estos pasos para establecer el formato.

Power Query Change Type

  1. Seleccione la columna en la interfaz de usuario de Power Query y elija Tipo de cambio > Fecha y hora.
  2. Verá un mensaje de advertencia.
  3. Abra el Editor avanzado y cambie TransformColumnTypes a TransformColumns. Especifique el formato y la referencia cultural en función de los datos de entrada.

Power Query Editor

#"Changed column type 1" = Table.TransformColumns(#"Duplicated column", {{"start - Copy", each DateTime.FromText(_, [Format = "yyyy-MM-dd HH:mm:ss", Culture = "en-us"]), type datetime}})

Obtenga información sobre cómo crear una consulta de Power Query de limpieza y transformación de datos en ADF.