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
bamba98
Helper I
Helper I

Eliminar duplicados sin cambiar los valores en la columna calculada

Tengo un poco de una situación complicada y no soy capaz de averiguar cómo resolverlo. Así que tengo un enorme conjunto de datos (millones de filas) y muchos ID duplicados. Los ID duplicados están dentro de la tabla porque muestra los resultados a lo largo de diferentes años. Sin los duplicados debería tener alrededor de 100 000 filas. Sin embargo, he agregado algunas columnas calculadas a la tabla que suman los valores de un identificador a lo largo de todos los años combinados.

¿Hay alguna manera de eliminar los ID duplicados sin cambiar el resultado de las columnas calculadas?

7 REPLIES 7
az38
Community Champion
Community Champion

@bamba98

si creó nuevas columnas con expresiones DAX - no, el conjunto de datos no se eliminará correctamente en ningún caso


do not hesitate to give a kudo to useful posts and mark solutions as solution
LinkedIn

No entiendo tu respuesta. Tal vez mi problema no estaba muy claro. Permítame elaborarlo.

Veamos el siguiente ejemplo con un solo ID:

bamba98_0-1594581393648.png

donde tot se calcula de la siguiente manera: Tot - calculate(sum(val), allexcept(ID)).

Quiero eliminar los ID duplicados y simplemente mantener un ID sin la columna Tot para cambiar. Ahora, si elimino las filas de ID duplicadas dentro de la consulta de edición, obtengo ese Tot-10, pero quiero que el resultado final se vea así:

bamba98_1-1594581589472.png

az38
Community Champion
Community Champion

@bamba98

¿cuál es la regla para la definición de duplicados? ¿por qué eliminar exactamente 2019, 2018 y 2017 filas y no 2020?


do not hesitate to give a kudo to useful posts and mark solutions as solution
LinkedIn

@az38 Porque quiero mantener el último período en el que estaba activo un ID.

Hola @bamba98 ,

En Power Query Editor, quite las filas de ID duplicadas, por lo que no existen. No se puede obtener el Tot 45, porque los datos reales se han ido.

Debe obtener el Tot en Power Query Editor y puede consultar los pasos siguientes.

1. Agrupar por ID.

R1.jpg

2. Agregue una columna personalizada para obtener el período máximo.

R2.jpg

3. Expanda la columna personalizada.

R3.jpg

4. Por último, elimine la columna Tabla.

R4.jpg

R5.jpg

La consulta M completa es la siguiente:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUTIyMDIAUoYGSrE6MBFDSyBliixgAVKCImKOEDFCGIMsgGSKEZIpBsgiMFNiAQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, Period = _t, Val = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"Period", Int64.Type}, {"Val", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"ID"}, {{"Table", each _, type table [ID=nullable number, Period=nullable number, Val=nullable number]}, {"New Tot", each List.Sum([Val]), type nullable number}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom.1", each Table.Max([Table],"Period")),
    #"Expanded Custom.1" = Table.ExpandRecordColumn(#"Added Custom", "Custom.1", {"Period"}, {"Custom.1.Period"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Custom.1",{"Table"})
in
    #"Removed Columns"

BTW, pbix como adjunto.

Saludos

Equipo de apoyo a la comunidad _ zhenbw

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Me las arreglé para resolver esto cargando de nuevo el mismo conjunto de datos con un nombre diferente. He eliminado los duplicados en el segundo conjunto de datos y he utilizado la función FIRSTNONBLANK para agregar la columna Tot calculada del primer conjunto de datos al segundo conjunto de datos. Un poco de un enfoque poco convencional diría que, pero hace el truco!

az38
Community Champion
Community Champion

@bamba98

tratar de crear una nueva tabla calculada como

Table 2 = 
ADDCOLUMNS(
SUMMARIZE('Table', 'Table'[ID], "Period", MAX('Table'[Period])),
"Val", CALCULATE(SUM('Table'[Val]), FILTER('Table', 'Table'[ID] = EARLIER([ID]) && 'Table'[Period] = EARLIER([Period]))),
"Tot", CALCULATE(SUM('Table'[Tot]), FILTER('Table', 'Table'[ID] = EARLIER([ID]) && 'Table'[Period] = EARLIER([Period])))

)

do not hesitate to give a kudo to useful posts and mark solutions as solution
LinkedIn

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.

Top Kudoed Authors