Forum Discussion
Modelado de datos de Power BI
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"
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
En Power Query,
Seleccione 'Usar primera fila como encabezados'.
Agregue una columna que copie los subtítulos y ponga null para los detalles. Puede utilizar la interfaz y el código será similar a:
#"Added Conditional Column" = Table.AddColumn(#"Changed Type", "Custom", each if [ColC] = "Blank" then null else if [ColC] = "Good" then null else if [ColC] = "Bad" then null else [ColC], type text),A continuación, seleccione la nueva columna y haga un "Relleno hacia abajo".
A continuación, desde el encabezado de la columna más adecuada, filtre los datos para mostrar solo filas de Good, en blanco y cualquier otra cosa que no sea un 'subpartida'.
Buena suerte
- Syndicate_Admin5 years ago
Administrator
No @selimovd
Gracias por su ayuda!!
Sin embargo, he encontrado la solución para controlar el escenario cuando el número de filas contra cada cabeza no es el mismo.
Por favor, consulte el blog a continuación para obtener más información
https://fascinatingsql.blogspot.com/2021/04/power-bi-split-table-into-multiple.html
gracias
Amit Srivastava
- 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.