Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
¡Hola! Estoy intentando usar Power Query para obtener datos de nuestro origen de datos no tradicional. Aquí hay un problema al que me enfrento:
Actualizaron los datos de una manera diferente:
y necesito transformar los datos de esta manera:
Planeo duplicar la columna, luego usar el método de relleno, pero eso solo llena la última persona hasta la celda nula de esta manera:
¿Crees que hay alguna manera de que tal vez pueda agregar una columna personalizada que muestre su número de habitación a cada persona? ¡Cualquier ayuda será apreciada!
Si está SEGURO de que el nombre de la habitación siempre tiene la misma longitud o el mismo regex, entonces sí, puede hacerlo. Mis soluciones también funcionan para el nombre de la habitación como "Habitación muy hermosa" o algo así. 😄 Con la lógica del nombre de la habitación sería más fácil resolver esto, pero no sabía si los nombres en los datos de muestra son los nombres que está utilizando en su modelo de datos real.
La solución de@bolfri es perfecta, y también puede consultar la siguiente solución.
1.Elimine las filas en blanco y, a continuación, cree una columna condicional
= Table.AddColumn(#"Removed Blank Rows", "Custom", each if Text.Contains([Column1],"Room") then [Column1] else null)
2.Rellene la nueva columna, luego filtre la columna original para excluir la fila que contiene "Habitación"
= Table.SelectRows(#"Filled Down", each not Text.Contains([Column1], "Room"))
Salida
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("dZDNCoNADITfZc/bQ3+eQNsiFUUU9CAeggYtTTfFn8L69LVx6aG0l2UmYb4MW5YqZb5vtqrSpSqgb/RFZA5T24HRoTifwI5sdCzuyIafy64Q5/Vc31zq6xH0TmTCRG+6Ly5m+rA9INKpyID5gb2OXNjq81/qfuW0k0Xj0iHh1eiT6AiGpW4mOgNTdzg7WA6EZp6QwK1/0Q9rM+zbpY63zhEHdJcyIBjcpQRGJPcxAdhmqZOrqnoB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}),
#"Removed Blank Rows" = Table.SelectRows(#"Changed Type", each not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"", null}))),
#"Added Custom" = Table.AddColumn(#"Removed Blank Rows", "Custom", each if Text.Contains([Column1],"Room") then [Column1] else null),
#"Filled Down" = Table.FillDown(#"Added Custom",{"Custom"}),
#"Filtered Rows" = Table.SelectRows(#"Filled Down", each not Text.Contains([Column1], "Room")),
#"Reordered Columns" = Table.ReorderColumns(#"Filtered Rows",{"Custom", "Column1"})
in
#"Reordered Columns"
¡Saludos!
Yolo Zhu
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
¡Gracias otra vez! ¡Funciona!
Paso 1. Agregar columna de índice
Paso 2. Agregar columna de marcador para buscar nombres de habitaciones
Paso 3. Agregar nueva columna: Habitación
Paso 4. Rellénalo
Paso 5. Deje solo unas pocas columnas con filtro en el marcador = false y ColumnValue <> ""
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("bZDNCoNADITfZc/bQ3+eQNsiFUUU9CAeggYtTTfFn8L69LVxaS9elpmE+TJsWaqU+bnbq0qXqoC+0TeROUxtB0aH4nwCO7LRsbgzG34vu0Kc13P9cKn/I9SDyISJvmBfXMz0w3pApFORAfMLex25sNXXLeBxRbSTReOCIeHd6IvoCIalZCY6A1N3ODtODoRmnpDArbfop7UU9u3SxFvniAO6SxkQDO5SAiOS+44AbLPUyVVVfQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ColumnValue = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"ColumnValue", type text}}),
#"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type),
#"Added Marker" = Table.AddColumn(#"Added Index", "Marker", each let
currentIndex = [Index], currentValue = [ColumnValue],
previousValue = List.First(Table.SelectRows(#"Added Index", each [Index] = currentIndex - 1)[ColumnValue]),
marker = if (previousValue = "" or previousValue = null) and currentValue <> previousValue then true else false
in marker),
#"Added Room" = Table.AddColumn(#"Added Marker", "Room", each if [Marker] then [ColumnValue] else null),
#"Filled Down Room" = Table.FillDown(#"Added Room",{"Room"}),
Result = Table.SelectColumns(Table.SelectRows(#"Filled Down Room",each [Marker] = false and [ColumnValue] <> ""),{"Room","ColumnValue"})
in
Result
Estos son los datos en caso de:
Sala-1
Barrio, J
Vaughan,K
Clayton,N
Donovan,W
Brock, J
Sala-2
Pollard,C
Nolan,K
Pelota,R
Hooper,M
Roy,F
Sala-3
Nguyen,R
Klein,E
Albañil,S
Sánchez,F
Valenzuela,S
Sala-4
Berger,B
Reese,R
Habitaciones,E
Patel,N
Hayden,V
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
1 | |
1 |