Forum Discussion
Modelado de datos de Power BI
No @selimovd
Puedo entender que esto se puede hacer a través de Pivot / UnPivot sin embargo no soy capaz de avhieve esto.
¿Puede ayudarme paso a paso sobre cómo realizar por encima de la transformación !!!
Gracias
ese
Hey @amsrivas ,
necesita 2 elementos, una función para la transformación y la propia consulta.
Agregue la siguiente consulta en Power Query con el nombre "TransformTable":
(x) as table =>
let
#"Save Header Name" = {x{0}[ColA]},
#"Add New Column" = Table.AddColumn(x, "Source", each #"Save Header Name"{0} ),
#"Removed Top Rows" = Table.Skip(#"Add New Column",1),
#"Reordered Columns" = Table.ReorderColumns(#"Removed Top Rows",{"Source", "ColA", "ColB", "ColC"})
in
#"Reordered Columns"
Y luego la consulta en sí:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WckksSVTSQaFidaKVfHQNgVwjIDaG8kFsUyA2A/Odc/JLU4A8VBqi0hjItwBiSyjfBMg2BBlnaAQWcawqLUoFclFpiFqQDYZgDaZQETMQxxxEWCjFxgIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ColA = _t, ColB = _t, ColC = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"ColA", type text}, {"ColB", type text}, {"ColC", type text}}),
#"Split Tables" = Table.Split( #"Changed Type", 3 ),
#"Transform Table" = List.Transform(#"Split Tables", TransformTable),
#"Load Table" = Table.Combine( #"Transform Table" )
in
#"Load Table"
- Syndicate_Admin5 years ago
Administrator
No @selimovd,
La solución parece prometedora y funciona con los datos proporcionados.
Sin embargo, los datos que he proporcionado son ficticios y en los datos reales no es necesario que siempre tengamos dos filas entre cada cabeza, por e.. g datos podrían ser cualquier cosa como a continuación
ColA ColB ColC
Datos de datos
L-1 2 3
L-2 5 6
L-3 22 3322
L-4 231 233
Cloud Cloud Cloud
L-3 8 9
L-4 11 12
L-6 78 121
Azure Azure Azure
L-5 14 15
L-6 17 18- No es necesario que solo tengamos tres cabezas como Datos, Nube, Azure, etc., podría ser cualquier número.
- Número de columnas no se fijan tampoco se fijan, podría ser ColA, ColB, ColC, ColD, etc., de nuevo podría ser cualquier número.
- El número de filas entre dos cabezas puede ser cualquiera, no necesariamente dos, en el conjunto de datos anterior, hay 4 filas para datos, 3 filas para la nube, etc.
Por favor, sugiera!!
Gracias
ese
- Syndicate_Admin5 years ago
Administrator
Hey @amsrivas ,
entonces usted tiene que encontrar una manera de dividirlos y hacer la separación en porciones.
Si tiene un número ilimitado de columnas, debe cambiarlo a una forma que no se corrige en columnas específicas.
Si necesitas ayuda, por favor avísame.Si respondiera a su pregunta, estaría feliz si pudiera marcar mi publicación como una solución ✔️ y darle un pulgar hacia arriba 👍SaludosDenisBlog: WhatTheFact.bi- Syndicate_Admin5 years ago
Administrator
No @selimovd,
El requisito real es cargar los datos desde el origen del estado de Azure y crear un informe de Power BI basado en eso.
Cuando me estoy cargando en Power BI Dataser a través de conexión web, estoy obteniendo datos como se muestra a continuación
Por lo tanto, aquí, los datos de la fila 2 a la fila 13 pertenecen a "Calcular" y, a continuación, pertenecen a "Herramientas para desarrolladores", etc., como se muestra en la página de estado de Azure.
¿Hay otra salida para retraer el resultado?
Necesito tener un conjunto de datos de Power BI donde pueda filtrar datos basados en "Compute, Developer Tool, etc. y puedo ver el resto del detalle.
Por favor, sugiera, si hay alguna otra manera de lograr lo mismo.
Gracias
ese
- Syndicate_Admin5 years ago
Administrator
Hola
Este código M funciona
let Source = Excel.CurrentWorkbook(){[Name="Data"]}[Content], #"Added Custom" = Table.AddColumn(Source, "Custom", each if Text.Start([Column1],2)<>"L-" then [Column1] else null), #"Filled Down" = Table.FillDown(#"Added Custom",{"Custom"}), #"Added Custom1" = Table.AddColumn(#"Filled Down", "Custom.1", each if [Column1]=[Custom] then "Remove" else "keep"), #"Filtered Rows" = Table.SelectRows(#"Added Custom1", each ([Custom.1] = "keep")), #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Custom.1"}) in #"Removed Columns"Espero que esto ayude.