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

Quitar datos duplicados de una columna (pero mantener la fila) si se repite más de "n" número de veces

Hola a todos,

Actualmente estoy tratando de encontrar una manera de eliminar datos duplicados de una columna (manteniendo la fila) si los datos se repiten inmediatamente entre sí más de "n" número de veces.

Por ejemplo, la tabla que tengo actualmente es así

Marca de tiempo Flujo de aire (cfm)
12/1/2021 10:50 AM624

12/1/2021 11:00 AM

620
12/1/2021 11:10 AM621
12/1/2021 11:20 AM623
12/1/2021 11:30 AM623
12/1/2021 11:40 AM623
12/1/2021 11:50 AM623
12/1/2021 12:00 PM623
12/1/2021 12:10 PM 621
12/1/2021 12:20 PM620
12/1/2021 12:30 PM619
12/1/2021 12:40 PM623
12/1/2021 12:50 PM623
12/1/2021 13:00626

Como puede ver, a las 1/12/2021 a las 11:20 AM el sensor que se utiliza para medir el flujo de aire comienza a enviar datos incorrectos a la fuente de datos, repitiendo el mismo valor hasta el 12/1/2021 a las 12:00 PM.

Por lo tanto, quiero crear una consulta para eliminar datos incorrectos como este y devolver celdas en blanco después del primer valor hasta que se devuelva un nuevo valor.

Sin embargo, quiero que esto solo suceda si las 3 repeticiones o más ocurren seguidas y no quiero eliminar otras recurrencias del número repetido (ya que 613 cfm todavía es posiblemente leyendo).

Así que tendría una mesa como esta

Marca de tiempo Flujo de aire (cfm)
12/1/2021 10:50 AM624

12/1/2021 11:00 AM

620
12/1/2021 11:10 AM621
12/1/2021 11:20 AM623
12/1/2021 11:30 AM
12/1/2021 11:40 AM
12/1/2021 11:50 AM
12/1/2021 12:00 PM
12/1/2021 12:10 PM621
12/1/2021 12:20 PM620
12/1/2021 12:30 PM619
12/1/2021 12:40 PM623
12/1/2021 12:50 PM623
12/1/2021 13:10626

Estoy intentando esto en power query editor para que se realice automáticamente en todos los nuevos datos entrantes.

¿Podría alguien ayudarme con esto, gracias de antemano por su ayuda?

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

@fadile aquí está el script PQ, inicie una nueva consulta en blanco -> haga clic en editor avanzado y pegue el siguiente código

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("fc87CsAgEIThq8jWAXfWB8QuBwjYi/e/RpAESdis9VfMP60RxMMLCxy4JHbHSRtlidS3D6LwRNaIidAoE4PGsMK4wmSjjNpqIh50P7kycqtxVEbujdg1xtVosvFVm6n3Cw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Time Stamp " = _t, #"Air Flow (cfm)" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Time Stamp ", type datetime}, {"Air Flow (cfm)", Int64.Type}}),
    #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type),
    #"Added Previous Row Air Flow Value" = Table.AddColumn(#"Added Index", "Previous Air Flow", each try #"Added Index" [#"Air Flow (cfm)"] {[Index] - 1} otherwise null),
    #"Added Group" = Table.AddColumn(#"Added Previous Row Air Flow Value", "Group", each if [#"Air Flow (cfm)"] <> [Previous Air Flow] then [Index] else null),
    #"Filled Down" = Table.FillDown(#"Added Group",{"Group"}),
    #"Removed Columns" = Table.RemoveColumns(#"Filled Down",{"Index", "Previous Air Flow"}),
    #"Grouped Rows" = Table.Group(#"Removed Columns", {"Group"}, {{"Count", each Table.RowCount(_), Int64.Type},{"Rank", each Table.AddIndexColumn(_, "Rank", 1)} }),
    #"Expanded Rank" = Table.ExpandTableColumn(#"Grouped Rows", "Rank", {"Time Stamp ", "Air Flow (cfm)", "Rank"}, {"Time Stamp ", "Air Flow (cfm)", "Rank"}),
    #"Added Custom2" = Table.AddColumn(#"Expanded Rank", "New Air Flow (cfm)", each if [Rank] <> 1 and [Count] > 3 then null else [#"Air Flow (cfm)"]),
    #"Removed Other Columns" = Table.SelectColumns(#"Added Custom2",{"Time Stamp ", "New Air Flow (cfm)"})
in
    #"Removed Other Columns"

y el resultado de la consulta anterior en función de los datos de ejemplo:

parry2k_0-1640363427506.png

Síguenos en LinkedIn (en inglés)

Más información sobre el formato condicional en Microsoft Reactor

Mi última entrada de blog El poder de usar grupos de cálculo con relaciones inactivas (Parte 1) (perytus.com) Yo lo haría Elogios si mi solución ayudó. 👉 Si puede dedicar tiempo a publicar la pregunta, también puede hacer esfuerzos para felicitar a quien ayudó a resolver su problema. ¡Es una muestra de agradecimiento!

Visítenos en https://perytus.com, su ventanilla única para proyectos/formación/consultoría relacionados con Power BI.

View solution in original post

1 REPLY 1
Syndicate_Admin
Administrator
Administrator

@fadile aquí está el script PQ, inicie una nueva consulta en blanco -> haga clic en editor avanzado y pegue el siguiente código

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("fc87CsAgEIThq8jWAXfWB8QuBwjYi/e/RpAESdis9VfMP60RxMMLCxy4JHbHSRtlidS3D6LwRNaIidAoE4PGsMK4wmSjjNpqIh50P7kycqtxVEbujdg1xtVosvFVm6n3Cw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Time Stamp " = _t, #"Air Flow (cfm)" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Time Stamp ", type datetime}, {"Air Flow (cfm)", Int64.Type}}),
    #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type),
    #"Added Previous Row Air Flow Value" = Table.AddColumn(#"Added Index", "Previous Air Flow", each try #"Added Index" [#"Air Flow (cfm)"] {[Index] - 1} otherwise null),
    #"Added Group" = Table.AddColumn(#"Added Previous Row Air Flow Value", "Group", each if [#"Air Flow (cfm)"] <> [Previous Air Flow] then [Index] else null),
    #"Filled Down" = Table.FillDown(#"Added Group",{"Group"}),
    #"Removed Columns" = Table.RemoveColumns(#"Filled Down",{"Index", "Previous Air Flow"}),
    #"Grouped Rows" = Table.Group(#"Removed Columns", {"Group"}, {{"Count", each Table.RowCount(_), Int64.Type},{"Rank", each Table.AddIndexColumn(_, "Rank", 1)} }),
    #"Expanded Rank" = Table.ExpandTableColumn(#"Grouped Rows", "Rank", {"Time Stamp ", "Air Flow (cfm)", "Rank"}, {"Time Stamp ", "Air Flow (cfm)", "Rank"}),
    #"Added Custom2" = Table.AddColumn(#"Expanded Rank", "New Air Flow (cfm)", each if [Rank] <> 1 and [Count] > 3 then null else [#"Air Flow (cfm)"]),
    #"Removed Other Columns" = Table.SelectColumns(#"Added Custom2",{"Time Stamp ", "New Air Flow (cfm)"})
in
    #"Removed Other Columns"

y el resultado de la consulta anterior en función de los datos de ejemplo:

parry2k_0-1640363427506.png

Síguenos en LinkedIn (en inglés)

Más información sobre el formato condicional en Microsoft Reactor

Mi última entrada de blog El poder de usar grupos de cálculo con relaciones inactivas (Parte 1) (perytus.com) Yo lo haría Elogios si mi solución ayudó. 👉 Si puede dedicar tiempo a publicar la pregunta, también puede hacer esfuerzos para felicitar a quien ayudó a resolver su problema. ¡Es una muestra de agradecimiento!

Visítenos en https://perytus.com, su ventanilla única para proyectos/formación/consultoría relacionados con Power BI.

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.