ad12114
Hola a todos,
Estoy buscando escribir un fragmento de DAX o hacer algo dentro de la función PBi Edit Query que transformaría algo como el primer ejemplo a continuación en algo como el segundo. ¿Alguien tiene alguna sugerencia?
Muchas gracias.
Anónimo
En respuesta a ad12114
Sí, debería funcionar. He incluido algunas capturas de pantalla que muestran tanto. También he incluido el código de Power Query si desea replicar el ejemplo. Simplemente cree una consulta en blanco y luego péguela en el editor avanzado dentro del editor de consultas y replicará la tabla y todos los pasos.
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("VY89C8IwEIb/S+ZAkkvSj7HaYAd1aAWH0kGhQ1FoQf8/vhfTQocH7k3y5O76XlRCCgMu83N6jyi0Udoq0ibnkCldcCgRumBkFwhY4IAXg+zFAXcEzo/lOy9sOaU9WxkHSv8VCE1Fsqk8yKN6xJndqV7pclMxilnVcM2iUqN2u4HRgPiVSwqtfnsq5K0to8Z7elCPn9e/lTVpyjyFbcrujkUjVgzDDw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Company = _t, ID = _t, Product = _t, Start = _t, End = _t, Location = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Company", type text}, {"ID", Int64.Type}, {"Product", type text}, {"Start", type date}, {"End", type date}, {"Location", type text}}), #"Split Column by Delimiter" = Table.SplitColumn(#"Changed Type", "Location", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Location.1", "Location.2", "Location.3", "Location.4", "Location.5"}), #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Location.1", type text}, {"Location.2", type text}, {"Location.3", type text}, {"Location.4", type text}, {"Location.5", type text}}), #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type1", {"Company", "ID", "Product", "Start", "End"}, "Attribute", "Value"), #"Removed Columns" = Table.RemoveColumns(#"Unpivoted Columns",{"Attribute"}) in #"Removed Columns"
msschmidt
También puede hacer esto sin tener que escribir ningún código. Simplemente seleccione la columna con los datos que desea dividir (Ubicaciones, en su ejemplo), luego vaya a la pestaña Transformar, haga clic en la flecha desplegable en el botón Dividir columna. Seleccione la opción para Dividir columna por delimitador, luego seleccione su delimitador, haga clic en la flecha para expandir las «Opciones avanzadas» y luego seleccione Filas.
Anónimo
La forma más fácil es probablemente hacerlo en el editor de consultas dividir la coma de ubicación usando una coma como delimitador y luego desvincular la tabla en las columnas de ubicación múltiple. Es posible que deba filtrar los valores nulos ya que tiene una cantidad variable de ubicaciones.
En cuanto a hacer esto en dax, no estoy seguro de cuál es la mejor manera de hacerlo y puede ser imposible. Podría ser posible con algo como resumir columnas.
ad12114
En respuesta a Anónimo
Gracias Thomas, ¿funcionaría esto si el mismo valor de ubicación (por ejemplo, SE2) ocurriera en más de una fila?
Anónimo
En respuesta a ad12114
Sí, debería funcionar. He incluido algunas capturas de pantalla que muestran tanto. También he incluido el código de Power Query si desea replicar el ejemplo. Simplemente cree una consulta en blanco y luego péguela en el editor avanzado dentro del editor de consultas y replicará la tabla y todos los pasos.
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("VY89C8IwEIb/S+ZAkkvSj7HaYAd1aAWH0kGhQ1FoQf8/vhfTQocH7k3y5O76XlRCCgMu83N6jyi0Udoq0ibnkCldcCgRumBkFwhY4IAXg+zFAXcEzo/lOy9sOaU9WxkHSv8VCE1Fsqk8yKN6xJndqV7pclMxilnVcM2iUqN2u4HRgPiVSwqtfnsq5K0to8Z7elCPn9e/lTVpyjyFbcrujkUjVgzDDw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Company = _t, ID = _t, Product = _t, Start = _t, End = _t, Location = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Company", type text}, {"ID", Int64.Type}, {"Product", type text}, {"Start", type date}, {"End", type date}, {"Location", type text}}), #"Split Column by Delimiter" = Table.SplitColumn(#"Changed Type", "Location", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Location.1", "Location.2", "Location.3", "Location.4", "Location.5"}), #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Location.1", type text}, {"Location.2", type text}, {"Location.3", type text}, {"Location.4", type text}, {"Location.5", type text}}), #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type1", {"Company", "ID", "Product", "Start", "End"}, "Attribute", "Value"), #"Removed Columns" = Table.RemoveColumns(#"Unpivoted Columns",{"Attribute"}) in #"Removed Columns"
ad12114
En respuesta a Anónimo
Eso es realmente útil, gracias.