Forum Discussion
Cómo transformar los datos
Hola a todos
Tengo algunos datos antiguos en este formato, ¿hay alguna manera de transformar los datos?
Lo intenté, pero parece que no puedo transformarlo para mostrar que de enero a abril pertenece al próximo año, 2014.
Gracias a todos de antemano.
3 Replies
- Syndicate_Admin
Administrator
Puede hacer 2 copias de referencia de la tabla, eligiendo las columnas de 1 año en 1 y del segundo año en el otro. Anule la dinamización de las columnas y obtenga el año adecuado de la columna Período y, a continuación, vuelva a anexar las consultas. Ver el adjunto.
- Syndicate_Admin
Administrator
@mofu1401 Pruebe esto, transformado en una sola tabla:
let Source = Excel.Workbook(File.Contents("C:\Users\gdeck\Downloads\7March.xlsx"), null, true), Sheet1_Sheet = Source{[Item="Sheet1",Kind="Sheet"]}[Data], #"Promoted Headers" = Table.PromoteHeaders(Sheet1_Sheet, [PromoteAllScalars=true]), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Period", type text}, {"May", Int64.Type}, {"Jun", Int64.Type}, {"Jul", Int64.Type}, {"Aug", Int64.Type}, {"Sep", Int64.Type}, {"Oct", Int64.Type}, {"Nov", Int64.Type}, {"Dec", Int64.Type}, {"Jan", Int64.Type}, {"Feb", Int64.Type}, {"Mar", Int64.Type}, {"Apr", Int64.Type}, {"Total", Int64.Type}}), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Period"}, "Attribute", "Value"), #"Duplicated Column" = Table.DuplicateColumn(#"Unpivoted Other Columns", "Period", "Period - Copy"), #"Split Column by Delimiter" = Table.SplitColumn(#"Duplicated Column", "Period - Copy", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Period - Copy.1", "Period - Copy.2", "Period - Copy.3", "Period - Copy.4", "Period - Copy.5"}), #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Period - Copy.1", type text}, {"Period - Copy.2", Int64.Type}, {"Period - Copy.3", type text}, {"Period - Copy.4", type text}, {"Period - Copy.5", Int64.Type}}), #"Removed Columns" = Table.RemoveColumns(#"Changed Type1",{"Period - Copy.1", "Period - Copy.3", "Period - Copy.4"}), #"Added Custom" = Table.AddColumn(#"Removed Columns", "Year", each if [Attribute] = "Jan" or [Attribute] = "Feb" or [Attribute] = "Mar" or [Attribute] = "Apr" then [#"Period - Copy.5"] else [#"Period - Copy.2"]), #"Removed Columns1" = Table.RemoveColumns(#"Added Custom",{"Period - Copy.2", "Period - Copy.5"}), #"Renamed Columns" = Table.RenameColumns(#"Removed Columns1",{{"Attribute", "Month"}}) in #"Renamed Columns" - Syndicate_Admin
Administrator
Hola @mofu1401
Puede utilizar el código M después de importar su tabla:
dejar
Origen = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("XZAxDsMgDEWvgjxniA0BMvYAPUHE0BM0irr09uX/yCnKwJex8bM/2ybP1zfYrDF83uGxH4iTTMIzdzFIRpA9FbWLMrfiSomQxGqVNl3gNICXXq7oJQU3kKKBpC4M/qnoY8zSyF0GLlfBbNVLki9K/OovMN4KxOs3bh64xduzb5I9c1olFj7oHq7Yc35cLdLaDw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) en la tabla de tipos [Period = _t, May = _t, Jun = _t, Jul = _t, Aug = _t, Sep = _t, Oct = _t, Nov = _t, Dec = _t, Jan = _t, Feb = _t, Mar = _t, Abr = _t, Total = _t]),
#"Tipo cambiado" = Table.TransformColumnTypes(Fuente,{{"Punto", texto de tipo}, {"Mayo", Int64.Tipo}, {"Jun", Int64.Tipo}, {"Jul", Int64.Tipo}, {"Agosto", Int64.Tipo}, {"Sep", Int64.Tipo}, {"Oct", Int64.Tipo}, {"Nov", Int64.Tipo}, {"Dec", Int64.Tipo}, {"Jan", Int64.Tipo}, {"Febrero", Int64.Tipo}, {"Mar", Int64.Tipo}, {"Apr", Int64.Tipo}, {"Total", Int64.Tipo}}),
#"Otras columnas sin dinamizar" = Table.UnpivotOtherColumns(#"Tipo cambiado", {"punto"}, "Atributo", "Valor"),
#"Columnas renombradas" = Tabla.RenameColumns(#"Otras columnas sin dinamizar",{{"Atributo", "Mes"}}),
#"Dividir columna por delimitador" = Table.SplitColumn(#"Columnas renombradas", "Punto", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Punto.1", "Punto.2", "Punto.3", "Punto.4", "Punto.5"}),
#"Tipo cambiado1" = Tabla.TransformColumnTypes(#"Dividir columna por delimitador",{{"Period.1", escriba texto}, {"Período.2", Int64.Tipo}, {"Período.3", escriba texto}, {"Período.4", escriba texto}, {"Período.5", Int64.Tipo}}),
#"Columnas eliminadas" = Tabla.RemoveColumns(#"Tipo cambiado1",{"Punto.1", "Período.3", "Período.4"}),
#"Columnas renombradas1" = Tabla.RenameColumns(#"Columnas eliminadas",{{"Período.2", "Año mínimo"}, {"Período.5", "Año máximo"}}),
#"Filas filtradas" = Tabla.SelectRows(#"Columnas renombradas1", cada una ([Mes] <> "Total")),
#"Columna condicional agregada" = Table.AddColumn(#"Filas filtradas", "Personalizadas", cada una si [Mes] = "Mayo" luego 5 más si [Mes] = "Junio" luego 6 más si [Mes] = "Julio" luego 7 más si [Mes] = "Agosto" luego 8 else si [Mes] = "Sep" luego 9 else si [Mes] = "Octubre" luego 10 más si [Mes] = "Noviembre" luego 11 más si [Mes] = "Diciembre" luego 12 más si [Mes] = "Enero" luego 1 más si [Mes] = "Febrero" luego 2 si [Mes] = "Marzo" luego 3 si [ Mes] = "Abr" luego 4 else null, escriba número),
#"Columnas renombradas2" = Tabla.RenameColumns(#"Columna condicional agregada",{{"Personalizado", "Número de mes"}}),
#"Personalizado agregado" = Tabla.AddColumn(#"Columnas renombradas2", "Año", cada una si [Número de mes]>=5 y [Número de mes]<=12 entonces [Año mínimo]
más
[Año máx.]),
#"Tipo cambiado2" = Table.TransformColumnTypes(#"Personalizado agregado",{{"Año", int64.Tipo}}),
#"Columna personalizada agregada" = Table.AddColumn(#"Tipo cambiado2", "Personalizado", cada Text.Combine({Text.Middle(Text.From([Año], "en-GB"), 1, 2), "/", Text.PadStart(Text.From([Número de mes], "en-GB"), 2, "0"), "/", Text.From([Año], "en-GB")}), escriba texto),
#"Fecha analizada insertada" = Table.AddColumn(#"Columna personalizada agregada", "Analizar", cada Date.From(DateTimeZone.From([Personalizado])), escriba fecha),
#"Columnas eliminadas1" = Tabla.RemoveColumns(#"Fecha analizada insertada",{"Personalizada"}),
#"Columnas renombradas3" = Tabla.RenameColumns(#"Columnas eliminadas1",{{"Parse", "Date"}}),
#"Columnas eliminadas2" = Tabla.RemoveColumns(#"Columnas renombradas3",{"Año mínimo", "Año máximo"})
en
#"Columnas eliminadas2"O siga mis pasos desde la interfaz de usuario de PQ:
Pbix está conectado
Si esta publicación ayuda, considere aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente