Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Greg_Deckler
Super User
Super User

Power Query Convierte filas repetidas en columnas

@ImkeF - O quienquiera que quiera hacer la campana. Tengo datos que para cada entrada consiste en un conjunto repetido de 11 filas en una sola columna. Así que, piensa:

Columna1

Empresa

Título

Descripción

Descripción2

Descripción3

Data1

Ubicación

Hora

Data2

Data3

Data4

Empresa

Título

Descripción

Descripción2

Descripción3

Data1

Ubicación

Hora

Data2

Data3

Data4

Por lo tanto, agregué una columna Index a partir de 1 y una columna Custom, Number.Mod([Index],11). Mi pensamiento es que entonces podría pivotar en esta columna personalizada y no agregar y terminar con:

1 2 3 4 5

Descripción del título de la empresa Descripción2 Descripción3

Descripción del título de la empresa Descripción2 Descripción3

Entiendes la idea. Desafortunadamente obtengo errores "Había demasiados elementos en la enumeración para completar la operación".

Tristeza. ¿Alguna forma de lograr esto?


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
1 ACCEPTED SOLUTION
ImkeF
Super User
Super User

En lugar de eliminar la columna de índice, debe ejecutar un entero-divide (por 11) sobre ella para generar un identificador de fila. Siempre debe haber 1 columna de la tabla original:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wcs7PLUjMq1SK1YlWCsksyUkFs1xSi5OLMgtKMvPz0PlG6ALGEIHEkkRDMMsnPzkRrjEkMzcVLm8EZyH0mIBZg8AVsQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}),
    #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1),
    #"Inserted Modulo" = Table.AddColumn(#"Added Index", "Modulo", each Number.Mod([Index], 11), type number),
    #"Integer-Divided Column" = Table.TransformColumns(#"Inserted Modulo", {{"Index", each Number.IntegerDivide(_, 11), Int64.Type}}),
    #"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Integer-Divided Column", {{"Modulo", type text}}, "en-GB"), List.Distinct(Table.TransformColumnTypes(#"Integer-Divided Column", {{"Modulo", type text}}, "en-GB")[Modulo]), "Modulo", "Column1")
in
    #"Pivoted Column"

Si tiene problemas de rendimiento, puede usar este enfoque en su lugar:

let
    Source á Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wcs7PLUjMq1SK1YlWCsksyUkFs1xSi5OLMgtKMvPz0PlG6ALGEIHEKKRDMnPzkRrjEkmzvLm8EZyH0mIBZg8AVsQA", BinaryEncoding.Base64), Compression.Deflate)), let _t ?((texto de tipo) meta [Serialized.Text ? true]) en la tabla de tipos [Column1 ? _t]),
    "Tipo cambiado" - Table.TransformColumnTypes(Source,'Column1", escriba text'),
    ''Added Index' 'Table.AddIndexColumn(''Changed Type"", 0, 1),
    "Columna dividida en enteros" - Table.TransformColumns('Added Index', ''Index',' cada Number.IntegerDivide(_, 11), Int64.Type,
    "Filas agrupadas" , Tabla.grupo ("Columna dividida por enteros", "índice", "Todo", cada _[Columna1], tipo tabla, GroupKind.Local),
    Personalizado1 a Tabla.FromRows(-"Filas agrupadas"[Todos])
en
    Custom1)

Imke Feldmann (The BIccountant)

If you liked my solution, please give it a thumbs up. And if I did answer your question, please mark this post as a solution. Thanks!

How to integrate M-code into your solution -- How to get your questions answered quickly -- How to provide sample data -- Check out more PBI- learning resources here -- Performance Tipps for M-queries

View solution in original post

3 REPLIES 3
ImkeF
Super User
Super User

En lugar de eliminar la columna de índice, debe ejecutar un entero-divide (por 11) sobre ella para generar un identificador de fila. Siempre debe haber 1 columna de la tabla original:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wcs7PLUjMq1SK1YlWCsksyUkFs1xSi5OLMgtKMvPz0PlG6ALGEIHEkkRDMMsnPzkRrjEkMzcVLm8EZyH0mIBZg8AVsQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}),
    #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1),
    #"Inserted Modulo" = Table.AddColumn(#"Added Index", "Modulo", each Number.Mod([Index], 11), type number),
    #"Integer-Divided Column" = Table.TransformColumns(#"Inserted Modulo", {{"Index", each Number.IntegerDivide(_, 11), Int64.Type}}),
    #"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Integer-Divided Column", {{"Modulo", type text}}, "en-GB"), List.Distinct(Table.TransformColumnTypes(#"Integer-Divided Column", {{"Modulo", type text}}, "en-GB")[Modulo]), "Modulo", "Column1")
in
    #"Pivoted Column"

Si tiene problemas de rendimiento, puede usar este enfoque en su lugar:

let
    Source á Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wcs7PLUjMq1SK1YlWCsksyUkFs1xSi5OLMgtKMvPz0PlG6ALGEIHEKKRDMnPzkRrjEkmzvLm8EZyH0mIBZg8AVsQA", BinaryEncoding.Base64), Compression.Deflate)), let _t ?((texto de tipo) meta [Serialized.Text ? true]) en la tabla de tipos [Column1 ? _t]),
    "Tipo cambiado" - Table.TransformColumnTypes(Source,'Column1", escriba text'),
    ''Added Index' 'Table.AddIndexColumn(''Changed Type"", 0, 1),
    "Columna dividida en enteros" - Table.TransformColumns('Added Index', ''Index',' cada Number.IntegerDivide(_, 11), Int64.Type,
    "Filas agrupadas" , Tabla.grupo ("Columna dividida por enteros", "índice", "Todo", cada _[Columna1], tipo tabla, GroupKind.Local),
    Personalizado1 a Tabla.FromRows(-"Filas agrupadas"[Todos])
en
    Custom1)

Imke Feldmann (The BIccountant)

If you liked my solution, please give it a thumbs up. And if I did answer your question, please mark this post as a solution. Thanks!

How to integrate M-code into your solution -- How to get your questions answered quickly -- How to provide sample data -- Check out more PBI- learning resources here -- Performance Tipps for M-queries

@ImkeF - Hooray!!! Gracias, funcionó como un campeón. Sabía que te había visto resolver este tipo de cosas antes, pero no podía por la vida de mí encontrarlo o recordar cómo lo hiciste!. ¡Gracias!

Otra pregunta si tienes tiempo. ¿Qué pasa si no tiene 11 filas cada vez pero tiene 11 filas, 10 filas, 9 filas pero siempre una fila "fin". Así, por ejemplo, la fila final que termina un registro siempre es sólo "X". Pero cada registro puede tener 9, 10 u 11 filas.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

Gran tema, aún mayor respuesta. Gracias chicos.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.