Cómo transformar una tabla en Power Query

Un usuario Pregunto ✅

Guión:

En muchos casos, el modelo de tabla que importamos no se puede visualizar directamente en PowerBI Desktop porque las características de los atributos se agregan al registro de la tabla en forma de filas. Primero necesitamos convertir el modelo de tabla en Power Query.

El modelo de tabla inicialmente importado es el siguiente:

1.png

Resultado Esperado

2.png

La idea básica:

En PowerBI, las características de campo de un determinado atributo se muestran en forma de columnas y el tipo de datos de cada valor de fila agregado es el mismo.

Pasos detallados

1. Analice los atributos de valor de fila en la tabla inicial y separe los valores del mismo tipo en Power Query.

3.png

2. Cambie el campo al tipo de datos correcto:

4.png

3. Elimine el valor de la suma que corresponde a la fila de agrupación en el atributo, porque el campo de la columna se puede agregar automáticamente en PowerBI Desktop y verá lo siguiente:

5.png

Adjunto: «Text.Contains»

6.png

Su función es Detecta si el texto texto contiene el texto subcadena. Devuelve verdadero si se encuentra el texto. La fórmula anterior significa eliminar las filas que contienen «TOTAL».

4. Utilice «Agregar columna de condición» para crear una nueva columna para separar el campo de atributo.

7.png

8.png

5. Obtenga la agrupación de atributos del resultado que necesitamos en la primera columna y use la función «rellenar» para completar los valores de la fila en el mismo grupo. Finalmente elimine la fila correspondiente en la tabla original y verá lo siguiente:

9.png

Adjunto: «Table.FillUp»

10.png

Su función es devolver un tabla de la tabla especificada donde el valor de la siguiente celda se propaga a las celdas con valores nulos de arriba en el columnas especificado. Llene las filas en blanco con los campos seleccionados en la fórmula anterior.

6. La misma lógica de operación, averigüe la agrupación del campo de la segunda columna en el gráfico de resultados y use «Agregar columna de condición» para crear una nueva columna:

11.png

7. Utilice la función «llenar» y elimine la fila correspondiente en la tabla original y verá lo siguiente:

12.png

13.png

8. En este punto, hemos obtenido básicamente el resultado deseado. Si necesitamos filtrar o calcular el campo «Envío de ventas» más tarde, podemos usar la función «Extraer» para filtrar la parte numérica del valor. Convierta el tipo de texto en tipo de número y verá lo siguiente:

14.png15.png

Adjunto: «Table.TransformColumns:

16.png

Su función es devolver una tabla desde la entrada tabla aplicando la operación de transformación a la columna especificada en el parámetro transformOperations. Si la columna no existe, se lanza una excepción a menos que el parámetro opcional defaultTransformation especifica una alternativa. Mantenga los últimos tres valores en cada línea de texto en la fórmula anterior.

9. Por fin, obtuvimos con éxito un modelo de tabla que satisface la operación de visualización y cálculo en PowerBI Desktop. Verá lo siguiente:

17.png

A través de los pasos anteriores, podemos realizar una serie de modificaciones al modelo de datos irregulares importados en Power Query y, finalmente, construir un modelo de datos que se puede utilizar para operaciones de visualización o cálculos posteriores en PowerBI Desktop. Espero que este artículo ayude a todos con preguntas similares aquí.

El código para las operaciones relacionadas se proporciona aquí:

let

    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("fVA9C8IwEP0rR+YKySWnrsVJqEZoFykdOhQUWhXs/8crNfXQmIwv795XXStnNT8DK9j5wyk/nsGoTKkmq5XfF0Baw9AzYpi1oBt6oxjQ6j62PZRt3z2hvFwfQ3cbgXWZY+XlJDOfUkyP0nL4N4gV4JIZBYj0KZKysExZB4qv8gLCQnIfFyjzJ4r5MDof2/9GsekobhqEIr1MdFBMq5E0FMW+s28nx+YF", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Description = _t, Euro = _t]),

    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Description", type text}, {"Euro", Int64.Type}}),

    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each not Text.Contains([Description], "TOTAL")),

    #"Added Conditional Column" = Table.AddColumn(#"Filtered Rows", "Customer", each if Text.Contains([Description], "COMPANY") then [Description] else null),

    #"Filled Down" = Table.FillDown(#"Added Conditional Column",{"Customer"}),

    #"Filtered Rows1" = Table.SelectRows(#"Filled Down", each not Text.Contains([Description], "COMPANY")),

    #"Added Conditional Column1" = Table.AddColumn(#"Filtered Rows1", "Sales Shipment", each if Text.Contains([Description], "Sales Shipment") then [Description] else null),

    #"Filled Up" = Table.FillUp(#"Added Conditional Column1",{"Sales Shipment"}),

    #"Filtered Rows2" = Table.SelectRows(#"Filled Up", each not Text.Contains([Description], "Total Sales")),

    #"Extracted Last Characters" = Table.TransformColumns(#"Filtered Rows2", {{"Sales Shipment", each Text.End(_, 3), type text}}),

    #"Reordered Columns" = Table.ReorderColumns(#"Extracted Last Characters",{"Customer", "Sales Shipment", "Description", "Euro"})

in

#"Reordered Columns"

Autor: Henry

Crítico: Ula Huang, Kerry Wang

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *