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

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
Syndicate_Admin
Administrator
Administrator

Unpivot en Power Query

Hola a todos,

Soy bastante nuevo en Power Query y mis datos están en un formato que hace que sea muy difícil de usar. Quiero despivotarlo, pero no puedo entender cómo hacer lo que necesito hacer. Los datos están en el siguiente formato. Tengo un número de países de lanzamiento que van de izquierda a derecha y luego los datos asociados con el país están en su propia columna (por lo que el país de lanzamiento 1 es ee. UU. y todos los datos con un 1 en el encabezado están asociados con los EE. UU., Mientras que todos los datos con 2 en el encabezado están asociados con Canadá). Algunos de los datos (como los números del proyecto, el nombre del proyecto y la fecha de revisión) no son específicos del país, sino específicos del proyecto.

Número de proyectoNombre del proyectoModificadoLaunchCountryCode1Fecha de lanzamiento1LaunchCountryCode2Fecha de lanzamiento2LaunchCountryCode3Fecha de lanzamiento3LaunchCountryCode4LaunchDate4PrelanzamientoDate1Fecha de prelanzamiento2PrelanzamientoDate3PrelanzamientoDate4PlantoLaunch1PlantoLaunch2PlantoLaunch3PlantoLaunch4Fecha de revisión
1Proyecto A1/1/2021NOS1/1/2021Canadá1/1/2021México1/1/2021Israel1/1/20211/1/20211/1/20211/1/20211/1/2021 VERDADEROFALSOVERDADEROFALSO1/1/2021
2Proyecto B2/1/2021NOS2/1/2021Canadá2/1/2021México2/1/2021Israel2/1/20212/1/20212/1/20212/1/20212/1/2021 VERDADEROFALSOVERDADEROFALSO1/1/2021
3Proyecto C3/1/2021NOS3/1/2021Canadá3/1/2021México3/1/2021Israel3/1/20213/1/20213/1/20213/1/20213/1/2021 VERDADEROFALSOVERDADEROFALSO1/1/2021
4Proyecto D4/1/2021NOS4/1/2021Canadá4/1/2021México4/1/2021Israel4/1/20214/1/20214/1/20214/1/20214/1/2021 VERDADEROFALSOFALSOVERDADERO1/1/2021
5Proyecto E5/1/2021NOS5/1/2021Canadá5/1/2021México5/1/2021Israel5/1/20215/1/20215/1/20215/1/20215/1/2021 VERDADEROFALSOFALSOVERDADERO1/1/2021

Quiero poner todas las fechas de lanzamiento en una columna y simplemente repetir los datos que no son específicos del país junto a ella, como la siguiente tabla reformateada:

Número de proyectoNombre del proyectoModificadoPaís de lanzamientoFecha de lanzamientoFecha de prelanzamiento¿Planea lanzar?Fecha de revisión
1Proyecto A1/1/2020NOS1/1/20211/1/2021VERDADERO1/1/2021
2Proyecto B2/1/2020NOS2/1/20212/1/2021VERDADERO1/1/2021
3Proyecto C3/1/2020NOS3/1/20213/1/2021VERDADERO1/1/2021
4Proyecto D4/1/2020NOS4/1/20214/1/2021VERDADERO1/1/2021
5Proyecto E5/1/2020NOS5/1/20215/1/2021VERDADERO1/1/2021
1Proyecto A1/1/2020Canadá1/1/20211/1/2021FALSO1/1/2021
2Proyecto B2/1/2020Canadá2/1/20212/1/2021FALSO1/1/2021
3Proyecto C3/1/2020Canadá3/1/20213/1/2021FALSO1/1/2021
4Proyecto D4/1/2020Canadá4/1/20214/1/2021FALSO1/1/2021
5Proyecto E5/1/2020Canadá5/1/20215/1/2021FALSO1/1/2021
1Proyecto A1/1/2020México1/1/20211/1/2021VERDADERO1/1/2021
2Proyecto B2/1/2020México2/1/20212/1/2021VERDADERO1/1/2021
3Proyecto C3/1/2020México3/1/20213/1/2021VERDADERO1/1/2021
4Proyecto D4/1/2020México4/1/20214/1/2021FALSO1/1/2021
5Proyecto E5/1/2020México5/1/20215/1/2021FALSO1/1/2021
1Proyecto A1/1/2020Israel1/1/20211/1/2021FALSO1/1/2021
2Proyecto B2/1/2020Israel2/1/20212/1/2021FALSO1/1/2021
3Proyecto C3/1/2020Israel3/1/20213/1/2021FALSO1/1/2021
4Proyecto D4/1/2020Israel4/1/20214/1/2021VERDADERO1/1/2021
5Proyecto E5/1/2020Israel5/1/20215/1/2021VERDADERO1/1/2021

Simplemente no puedo entender los pasos para esto, si alguien puede ayudar, ¡sería muy apreciado!

2 ACCEPTED SOLUTIONS
Syndicate_Admin
Administrator
Administrator

Mueva la columna Fecha de revisión a la izquierda (en 2ª posición).

Seleccione las 1ª cuatro columnas y Unpivot Other Columns.

Divida la columna Atributo (de no dígito a dígito).

Seleccione la columna Atributo1 y Pivote (con valor en Valores) y No agregar desde Avanzado.

--

Déjame saber cómo va

View solution in original post

Syndicate_Admin
Administrator
Administrator

Despivote cada columna que termine en un dígito, divida el dígito del extremo (Inicio > Transformar > columna Escupir > Por no dígito a dígito) y, a continuación, vuelva a pivotar.

Después de pivotar y dividir:

AlexisOlson_0-1636673173781.png

Código completo que puedes pegar en el Editor Avanzado:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("lc+xCsIwEMbxVymZCzWX5AFqVRAUxNopdAg1gyIWqoOPb7LI5bjBm/LP1w6/eK+0qtVpme9xeldtat3oBlaQ56Ev7114hmsot2P83Ka53PavJcRHuUmyupyHbTp37aHPJ7n+/hxrrwDx16mB8IHhA8MHho82SUr4BvG71IbwDcM3DN8wfLRJUsK3iL9JbQnfMnzL8C3DR5skKZ88o+A7xM8fHeE7hu8YvmP4aJPk3/zxCw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Project Number" = _t, ProjectName = _t, Modified = _t, LaunchCountryCode1 = _t, LaunchDate1 = _t, LaunchCountryCode2 = _t, LaunchDate2 = _t, LaunchCountryCode3 = _t, LaunchDate3 = _t, LaunchCountryCode4 = _t, LaunchDate4 = _t, PrelaunchDate1 = _t, PrelaunchDate2 = _t, PrelaunchDate3 = _t, PrelaunchDate4 = _t, PlantoLaunch1 = _t, PlantoLaunch2 = _t, PlantoLaunch3 = _t, PlantoLaunch4 = _t, #"Review Date" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Project Number", Int64.Type}, {"ProjectName", type text}, {"Modified", type date}, {"LaunchCountryCode1", type text}, {"LaunchDate1", type date}, {"LaunchCountryCode2", type text}, {"LaunchDate2", type date}, {"LaunchCountryCode3", type text}, {"LaunchDate3", type date}, {"LaunchCountryCode4", type text}, {"LaunchDate4", type date}, {"PrelaunchDate1", type date}, {"PrelaunchDate2", type date}, {"PrelaunchDate3", type date}, {"PrelaunchDate4", type date}, {"PlantoLaunch1", type logical}, {"PlantoLaunch2", type logical}, {"PlantoLaunch3", type logical}, {"PlantoLaunch4", type logical}, {"Review Date", type date}}),
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Project Number", "ProjectName", "Modified", "Review Date"}, "Attribute", "Value"),
    #"Split Column by Character Transition" = Table.SplitColumn(#"Unpivoted Columns", "Attribute", Splitter.SplitTextByCharacterTransition((c) => not List.Contains({"0".."9"}, c), {"0".."9"}), {"Attribute", "Index"}),
    #"Pivoted Column" = Table.Pivot(#"Split Column by Character Transition", List.Distinct(#"Split Column by Character Transition"[Attribute]), "Attribute", "Value"),
    #"Changed Type1" = Table.TransformColumnTypes(#"Pivoted Column",{{"LaunchCountryCode", type text}, {"LaunchDate", type date}, {"PrelaunchDate", type date}, {"PlantoLaunch", type logical}})
in
    #"Changed Type1"

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

@Stev_data bienvenidos al foro.

Le sugiero que publique esta pregunta como una nueva publicación (en lugar de etiquetar esta publicación resuelta existente).

Por favor, publique los datos como texto y muestre el resultado deseado. Además, no está claro qué resultado desea de la columna Valor, así que muestre un ejemplo

Syndicate_Admin
Administrator
Administrator

Hola, chicos

Recientemente he comenzado a usar Powerquery y he logrado filtrar los datos a continuación hasta cierto punto. Estoy tratando de mostrar solo un encabezado de columna para los encabezados de fila repetidos 'Número de archivo, Cliente, Cantidad de defectos cct, etc. (es decir, de la columna 4-15).

Para la columna etiquetada 'Valor', necesito que el 'Defecto:..' se muestre en una columna separada, defectos etiquetados y el 'W/O No.' sea el encabezado de columna principal para los encabezados de fila repetidos. Cualquier idea de cómo puedo abordarlo, ya que tengo una gran cantidad de datos y no puedo cortarlos y pegarlos físicamente para obtener el resultado deseado. También he adjuntado el archivo de Excel para ayudar a entender lo que estoy tratando de hacer.

Si pudiera encontrar una manera de rellenar automáticamente el 'Defecto:...' en una nueva columna, creo que podría dividir fácilmente la columna usando el delimitador de dos puntos

Stev_data_1-1643735313175.png

Syndicate_Admin
Administrator
Administrator

@AlexisOlson , @HotChilli : ¡Muchas gracias a ambos! Esto es maravilloso y muy útil y funcionó a las mil maravillas. He estado luchando con estos datos durante un año en su formato horrendo y apenas utilizable y sus ideas solucionaron mi problema en solo minutos. Es tan apreciado, que ambos rockean.

Syndicate_Admin
Administrator
Administrator

Despivote cada columna que termine en un dígito, divida el dígito del extremo (Inicio > Transformar > columna Escupir > Por no dígito a dígito) y, a continuación, vuelva a pivotar.

Después de pivotar y dividir:

AlexisOlson_0-1636673173781.png

Código completo que puedes pegar en el Editor Avanzado:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("lc+xCsIwEMbxVymZCzWX5AFqVRAUxNopdAg1gyIWqoOPb7LI5bjBm/LP1w6/eK+0qtVpme9xeldtat3oBlaQ56Ev7114hmsot2P83Ka53PavJcRHuUmyupyHbTp37aHPJ7n+/hxrrwDx16mB8IHhA8MHho82SUr4BvG71IbwDcM3DN8wfLRJUsK3iL9JbQnfMnzL8C3DR5skKZ88o+A7xM8fHeE7hu8YvmP4aJPk3/zxCw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Project Number" = _t, ProjectName = _t, Modified = _t, LaunchCountryCode1 = _t, LaunchDate1 = _t, LaunchCountryCode2 = _t, LaunchDate2 = _t, LaunchCountryCode3 = _t, LaunchDate3 = _t, LaunchCountryCode4 = _t, LaunchDate4 = _t, PrelaunchDate1 = _t, PrelaunchDate2 = _t, PrelaunchDate3 = _t, PrelaunchDate4 = _t, PlantoLaunch1 = _t, PlantoLaunch2 = _t, PlantoLaunch3 = _t, PlantoLaunch4 = _t, #"Review Date" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Project Number", Int64.Type}, {"ProjectName", type text}, {"Modified", type date}, {"LaunchCountryCode1", type text}, {"LaunchDate1", type date}, {"LaunchCountryCode2", type text}, {"LaunchDate2", type date}, {"LaunchCountryCode3", type text}, {"LaunchDate3", type date}, {"LaunchCountryCode4", type text}, {"LaunchDate4", type date}, {"PrelaunchDate1", type date}, {"PrelaunchDate2", type date}, {"PrelaunchDate3", type date}, {"PrelaunchDate4", type date}, {"PlantoLaunch1", type logical}, {"PlantoLaunch2", type logical}, {"PlantoLaunch3", type logical}, {"PlantoLaunch4", type logical}, {"Review Date", type date}}),
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Project Number", "ProjectName", "Modified", "Review Date"}, "Attribute", "Value"),
    #"Split Column by Character Transition" = Table.SplitColumn(#"Unpivoted Columns", "Attribute", Splitter.SplitTextByCharacterTransition((c) => not List.Contains({"0".."9"}, c), {"0".."9"}), {"Attribute", "Index"}),
    #"Pivoted Column" = Table.Pivot(#"Split Column by Character Transition", List.Distinct(#"Split Column by Character Transition"[Attribute]), "Attribute", "Value"),
    #"Changed Type1" = Table.TransformColumnTypes(#"Pivoted Column",{{"LaunchCountryCode", type text}, {"LaunchDate", type date}, {"PrelaunchDate", type date}, {"PlantoLaunch", type logical}})
in
    #"Changed Type1"
Syndicate_Admin
Administrator
Administrator

Mueva la columna Fecha de revisión a la izquierda (en 2ª posición).

Seleccione las 1ª cuatro columnas y Unpivot Other Columns.

Divida la columna Atributo (de no dígito a dígito).

Seleccione la columna Atributo1 y Pivote (con valor en Valores) y No agregar desde Avanzado.

--

Déjame saber cómo va

Helpful resources

Announcements
July 2024 Power BI Update

Power BI Monthly Update - July 2024

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

PBI_Carousel_NL_June

Fabric Community Update - June 2024

Get the latest Fabric updates from Build 2024, key Skills Challenge voucher deadlines, top blogs, forum posts, and product ideas.

Top Solution Authors