Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

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.

Reply
Syndicate_Admin
Administrator
Administrator

Rellenar la primera celda después de Nulo/en blanco

¡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:

1.jpg

y necesito transformar los datos de esta manera:

2.jpg

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:

3.jpg

¿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!

  1. Una de mis opciones es escribir una fórmula condicional que: Rellenar a partir de la celda contiene espacio hasta celda nula
  2. duplicar la columna, luego seleccionar solo la celda con nombres (pero no sé cómo escribir esta fórmula, porque la lista de nombres es enorme), luego reemplazar a Nulo, luego usar la función de relleno reemplazar el resto
5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

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.

Syndicate_Admin
Administrator
Administrator

@onefousanflee

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

vxinruzhumsft_0-1691029097480.png

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.

Syndicate_Admin
Administrator
Administrator

¡Gracias otra vez! ¡Funciona!

Syndicate_Admin
Administrator
Administrator

Paso 1. Agregar columna de índice

bolfri_0-1690935964621.png

Paso 2. Agregar columna de marcador para buscar nombres de habitaciones

bolfri_1-1690936011721.png

Paso 3. Agregar nueva columna: Habitación

bolfri_2-1690936034553.png

Paso 4. Rellénalo

bolfri_3-1690936054385.png

Paso 5. Deje solo unas pocas columnas con filtro en el marcador = false y ColumnValue <> ""

bolfri_5-1690936245011.png

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

Syndicate_Admin
Administrator
Administrator

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

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.