A-kitaev
Hola,
Necesito eliminar filas en una tabla que tienen valores duplicados y necesito mantener la última. Power BI de forma predeterminada mantiene el primero independientemente del orden de clasificación. Intenté usar la tabla almacenada en búfer en el editor avanzado, esto no ayudó. ¿Alguna idea de cómo lograr esto?
v-sihou-msft
@ A-kitaev
En este escenario, si desea mantener los últimos registros asociados con cada columna de grupo. Puede crear una tabla calculada agregando valores con clasificación máxima dentro de cada grupo.
Supongo que tienes una tabla como la siguiente:
Luego puede crear una tabla calculada como la siguiente:
Table = SUMMARIZE( Table3,Table3[Name], "Last Value", CALCULATE(SUM(Table3[Value]), FILTER(Table3,Table3[Sort]=MAX(Table3[Sort])) ) )
Saludos,
flex99
¡El truco de RichieRich es un enfoque directo muy elegante que proporcionó una solución simple para mi problema de duplicados aún más complejo! ¡Muchas gracias!
v-sihou-msft
@ A-kitaev
En este escenario, si desea mantener los últimos registros asociados con cada columna de grupo. Puede crear una tabla calculada agregando valores con clasificación máxima dentro de cada grupo.
Supongo que tienes una tabla como la siguiente:
Luego puede crear una tabla calculada como la siguiente:
Table = SUMMARIZE( Table3,Table3[Name], "Last Value", CALCULATE(SUM(Table3[Value]), FILTER(Table3,Table3[Sort]=MAX(Table3[Sort])) ) )
Saludos,
hmenco
En respuesta a v-sihou-msft
¡Hola! ¿Me pueden ayudar a agregar una columna personalizada que cuente el número de entradas? El resultado será el mismo que el de la columna CLASIFICACIÓN utilizada aquí. ¡Gracias!
Ashish_Mathur
En respuesta a hmenco
Hola,
Comparta algunos datos, describa la pregunta y muestre el resultado esperado.
hmenco
En respuesta a Ashish_Mathur
Necesito un editor de PQ de columna personalizada adicional que CUENTA el número de entradas de OrderNumber.
El objetivo es eliminar los duplicados y obtener la última entrada basada en RunDate.
He probado Table.Buffer pero parece no ser aplicable porque ralentiza el rendimiento / proceso. En su lugar, pensé en esta solución …
Ashish_Mathur
En respuesta a hmenco
Hola,
¿Esta consulta M funciona más rápido? Si no es así, házmelo saber. Compartiré contigo una fórmula de columna calculada en DAX.
let
Source = Excel.CurrentWorkbook(){[Name="Data"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"OrderNumber", Int64.Type}, {"RunDate", type date}}),
#"Sorted Rows" = Table.Sort(#"Changed Type",{{"OrderNumber", Order.Ascending}, {"RunDate", Order.Ascending}}),
Partition = Table.Group(#"Sorted Rows", {"OrderNumber"}, {{"Partition", each Table.AddIndexColumn(_, "Index",1,1), type table}}),
#"Expanded Partition" = Table.ExpandTableColumn(Partition, "Partition", {"RunDate", "Index"}, {"RunDate", "Index"})
in
#"Expanded Partition"
hmenco
En respuesta a Ashish_Mathur
Tratando de averiguar cosas … ¿Qué pasa si hay otras columnas para mostrar? La consulta M también funcionó. Pero tal vez la use en los datos más pequeños.
¿Cómo podemos mostrar otras columnas que estaban ocultas en la partición?
Ashish_Mathur
En respuesta a hmenco
Hola,
Ayer compartí una solución calculada de DAX alternativa. Prueba ese.
hmenco
En respuesta a Ashish_Mathur
He probado tanto la consulta M como la columna calculada de DAX. ¡Ambas soluciones funcionaron increíblemente!
Primero observaré el rendimiento de la consulta M en datos GRANDES … Si realmente no es aplicable, usaré su solución de columna calculada de DAX …
¡¡Muchas gracias por tomarse el tiempo !!
Ashish_Mathur
En respuesta a hmenco
Seguro. Según lo que funcione mejor en sus datos en vivo, marque esa respuesta relevante como Respuesta.
hmenco
En respuesta a Ashish_Mathur
Hola @Ashish_Mathur, gracias, pero ¿tienes otra solución? La consulta M requiere tiempo para procesar macrodatos.
Ashish_Mathur
En respuesta a hmenco
Tengo una alternativa de columna calculada por DAX (no una alternativa de consulta M). ¿Estás interesado en eso?
hmenco
En respuesta a Ashish_Mathur
¡Está bien con DAX, si funcionará más rápido que la consulta M y siempre que cumpla con el resultado deseado también! ¡Muchas gracias!
Ashish_Mathur
En respuesta a hmenco
Hola,
Prueba esta fórmula de columna calculada
= calcular (países (datos), filtrar (datos, datos[OrderNumber]= anterior (datos[OrderNumber])&&datos[RunDate]<= anterior (datos[RunDate])))
Espero que esto ayude.
A-kitaev
En respuesta a v-sihou-msft
¡Gracias! No es tan elegante como esperaba, pero funciona
RichieRich
En respuesta a A-kitaev
Aquí hay un método más elegante que acabo de usar con Table.Buffer. https://www.youtube.com/watch?v=rqDdnNxSgHQ
La parte crucial en el video es después de la marca de 4 minutos …..
El comando Table.Buffer guarda la clasificación antes de eliminar los duplicados, lo que garantiza que obtenga la última versión.
El Table.Buffer debe agregarse manualmente en el editor avanzado
Aquí hay un ejemplo que hice donde «Registro» es el grupo en el que estoy eliminando duplicados y manteniendo el último registro (primero de la fecha para cada grupo, fecha descendente)
dejar
Fuente = # «IVMS – Vista publicada – Consulta maestra no estructurada»,
# «Sorted Rows» = Table.Sort (Source, {{«Calendar Year / Month.Calendar Year / Month Level 01», Order.Descending}}),
# «Tabla de búfer» = Table.Buffer (# «Filas ordenadas»),
# «Duplicados eliminados» = Table.Distinct (# «Tabla de búfer», {«Registro»})
en
# «Duplicados eliminados»
soebjx
En respuesta a RichieRich
¡Esto funcionó muy bien! Gracias.