Mayordomo
Hola, soy bastante nuevo en Power BI y estoy tratando de hacer un informe bilingüe sin tener un montón de búsquedas.
Tengo una tabla de datos con una gran cantidad de columnas, cada medida tiene una columna de nombre en galés y una columna de nombre en inglés. ¿Cómo puedo desvincular estas columnas para que muestren el galés y el inglés en las filas y luego mantener separadas las diferentes medidas?
p. ej., he simulado un ejemplo a continuación,
Necesito fusionar estas 6 columnas en 3 columnas (nombre de la escuela, área de captación, tipo de escuela) y solo quiero 10 filas en total, una para cada «escuela» galés 1 a 5 e inglés 1 a 5, y tener otra columna que puedo usar para filtrar entre galés e inglés.
Así es como quiero que se vean los datos …
¿Estoy haciendo esto mucho más difícil de lo necesario?
v-eachen-msft
Hola @Cbutler,
Después de Unpivot columnas, puede usar Table.SplitColumn (), SelectRows (), SelectColumns () para obtener su resultado.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("LcqxCcAwDETRVYxqN5FO0xhVJhsEvH6w+M0dH95adsZj097eMza16Y++X/Nq73a0ox3taEdHd6ADHehAB1rdQgsttNBCZ3eiE53oRKdV/Q==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"W school name" = _t, #"E school name" = _t, #"W catchment" = _t, #"E catchment" = _t, #"W type" = _t, #"E type" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"W school name", type text}, {"E school name", type text}, {"W catchment", type text}, {"E catchment", type text}, {"W type", type text}, {"E type", type text}}),
#"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"W school name", "E school name", "W catchment", "E catchment"}, "Attribute", "Value"),
#"Unpivoted Columns1" = Table.UnpivotOtherColumns(#"Unpivoted Columns", {"W school name", "E school name", "Attribute", "Value"}, "Attribute.1", "Value.1"),
#"Unpivoted Columns2" = Table.UnpivotOtherColumns(#"Unpivoted Columns1", {"Attribute", "Value", "Attribute.1", "Value.1"}, "Attribute.2", "Value.2"),
#"Added Custom" = Table.AddColumn(#"Unpivoted Columns2", "Custom", each [Value.2]),
#"Split Column by Delimiter" = Table.SplitColumn(#"Added Custom", "Custom", Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.Csv, true), {"Custom.1", "Custom.2"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Custom.1", type text}, {"Custom.2", Int64.Type}}),
#"Added Custom1" = Table.AddColumn(#"Changed Type1", "Custom", each [Value]),
#"Split Column by Delimiter1" = Table.SplitColumn(#"Added Custom1", "Custom", Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.Csv, false), {"Custom.1.1", "Custom.2.1"}),
#"Changed Type2" = Table.TransformColumnTypes(#"Split Column by Delimiter1",{{"Custom.1.1", type text}, {"Custom.2.1", type text}}),
#"Added Custom2" = Table.AddColumn(#"Changed Type2", "Custom", each [Value.1]),
#"Split Column by Delimiter2" = Table.SplitColumn(#"Added Custom2", "Custom", Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.Csv, false), {"Custom.1.2", "Custom.2.2"}),
#"Changed Type3" = Table.TransformColumnTypes(#"Split Column by Delimiter2",{{"Custom.1.2", type text}, {"Custom.2.2", type text}}),
RemoveRows = Table.SelectRows(#"Changed Type3",each [Custom.1]=[Custom.1.1] and [Custom.1]=[Custom.1.2]),
SelectColumns = Table.SelectColumns(RemoveRows,{"Custom.1","Value.2","Value.1","Value"})
in
SelectColumns
Aquí está mi archivo de prueba. Puede abrir el editor avanzado y consultar mi consulta M.
Mayordomo
En respuesta a v-eachen-msft
Hola @ v-eachen-msft
Vaya gracias, esto puede ser un poco complejo cuando venga a aplicar a mi informe, tenemos 80 escuelas en total y alrededor de 15 medidas (hasta ahora) …
¿Sabe si hay una manera de escribir una medida que diga si «Inglés» está seleccionado, mostrar la columna 1,3,5,7 o si «Welsh» está seleccionado, mostrar las columnas 2,4,6,8, etc.? ¿O tal vez otra medida similar a mirar una tabla diferente, por ejemplo, si se selecciona «Inglés», mirar la tabla «A», de lo contrario, usar la tabla «B»?
De esta manera, podría usar una búsqueda en un lenguaje simple que se encontrara entre los dos. ¿Es posible algo como esto?