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

Get inspired! Check out the entries from the Power BI DataViz World Championships preliminary rounds and give kudos to your favorites. View the vizzies.

Reply
Anonymous
Not applicable

La eliminación de las ocurrencias se basa en el número de veces que ocurrió

Hola a todos

Tengo un problema con uno de mis conjuntos de datos que intento resolver.

En mi conjunto de datos tengo los datos de identificación de cliente de todos los clientes a los que me he puesto en contacto. Desafortunadamente, en mi conjunto de datos parece que algunos iDE de cliente se muestran 3 veces. Pero sólo quiero mostrar las dos primeras ocurrencias de un ID de cliente específico (basado en la fecha). ¿Cómo consigo esto?

Por ejemplo. Mi conjunto de datos tiene este aspecto.

IdFecha del correo
A

10-03-2020

B10-03-2020
C10-03-2020
A11-03-2020
B11-03-2020
C11-03-2020
A12-03-2020
B12-03-2020

En esta tabla, me gustaría eliminar los últimos A y B, ya que es la tercera vez que estos ides de cliente se producen en mi tabla. ¿Alguien sabe cómo hacer que esto suceda?

Mejor
Jeroen

1 ACCEPTED SOLUTION

Hola @jeroen_adelmund ,

Para la solución dax, simplificamos la fórmula, ¿podría intentar usar la siguiente?

Filtered Table = 
FILTER (
    'Table',
    VAR i = [ID]
    VAR d = [Date of mail]
    RETURN
        CALCULATE ( DISTINCTCOUNT ( 'Table'[Condition] ), 'Table', 'Table'[ID] = i ) = 1
        && CALCULATE ( COUNTROWS ( 'Table' ), 'Table', 'Table'[ID] = i, 'Table'[Date of mail] <= d ) <= 2
)

Si sigue sin funcionar, ¿podría intentar verificar cuánto tiempo tomará si crea una columna calculada en la tabla de origen?

Calculated Column = 
VAR i = [ID]
    VAR d = [Date of mail]
    RETURN
        CALCULATE ( DISTINCTCOUNT ( 'Table'[Condition] ), 'Table', 'Table'[ID] = i ) = 1
        && CALCULATE ( COUNTROWS ( 'Table' ), 'Table', 'Table'[ID] = i, 'Table'[Date of mail] <= d ) <= 2

Para la solución de power query, ¿qué significa "cambio deconsulta ya es de hasta 6 GB"? Si quiere decir que el tamaño de los datos es de 6 GB, al aplicar el filtro en la tabla de origen, reducirá el tamaño de los mismos. Pero cuando se aplica una solución dax, la tabla de origen mantendrá 6 GB y generará una nueva tabla calculada con algunos datos, por ejemplo 2 GB si hay 4 GB filtrados por dax, el tamaño final del conjunto de datos será de 6 +2 x 8 GB si se usa la solución dax.

Saludos

Community Support Team _ Dong Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

11 REPLIES 11
v-lid-msft
Community Support
Community Support

Hola @jeroen_adelmund ,

Podemos intentar usar la función Table.SelectRows en Power Query Editor para satisfacer sus requisitos:

Table.SelectRows(#"Changed Type",each let i = [ID],t = Table.Buffer(Table.SelectRows(#"Changed Type",each [ID] = i)),minDateList =  Table.MinN(t,"Date of mail",2)
in Table.RowCount(Table.Distinct(Table.SelectColumns(t,{"Condition"})))=1 and Table.Contains(minDateList,_))

por favor, cambie "Tipo modificado" por el nombre del último paso de su consulta

Todas las consultas están aquí:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTI00DUw1jUyMDIAcZRidaKVnLALO2MXBhtiiN0QTGFndGEjhCFG2A1BE44FAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [ID = _t, #"Date of mail" = _t, Condition = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", type text}, {"Date of mail", type date}, {"Condition", Int64.Type}}),
    FilterTable = Table.SelectRows(#"Changed Type",each let i = [ID],t = Table.Buffer(Table.SelectRows(#"Changed Type",each [ID] = i)),minDateList =  Table.MinN(t,"Date of mail",2)
in Table.RowCount(Table.Distinct(Table.SelectColumns(t,{"Condition"})))=1 and Table.Contains(minDateList,_))
in
    FilterTable

4.jpg5.jpg


Saludos

Community Support Team _ Dong Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Anonymous
Not applicable

@v-lid-msft gracias por la solución. Debido al tamaño de las diferentes tablas, prefiero corregir esto en DAX que en PowerQuery. ¿Sabes cómo arreglar esto con DAX también?

Mejor

Jeroen

Hola @jeroen_adelmund ,

También podemos crear una tabla calculada utilizando el siguiente dax para satisfacer sus requisitos, el segundo parámetro también se puede utilizar para crear una columna calculada en la tabla de origen.

Filtered Table =
FILTER (
    'Table',
    CALCULATE (
        DISTINCTCOUNT ( 'Table'[Condition] ),
        FILTER ( 'Table', 'Table'[ID] = EARLIER ( 'Table'[ID] ) )
    ) = 1
        && CALCULATE (
            COUNTROWS ( 'Table' ),
            FILTER (
                'Table',
                'Table'[ID] = EARLIER ( 'Table'[ID] )
                    && 'Table'[Date of mail] <= EARLIER ( 'Table'[Date of mail] )
            )
        ) <= 2
)

27.jpg


Saludos

Community Support Team _ Dong Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Anonymous
Not applicable

Hola @v miembro-msft ,

Gracias por tu ayuda. Me estoy acercando. Sin embargo, no quiero filtrar por "condición 1", pero quiero filtrar a los clientes donde las condiciones no son iguales para los dos errores.

¿Sabes cómo puedo cambiar esto?

Mejor
Jeroen

Hola @jeroen_adelmund ,

El "1" en la fórmula no significa condición igual a 1, significa que sólo hay un valor único en la condición para cada id. ¿El siguiente ejemplo cumple sus requisitos?

1.jpg2.jpg


Saludos

Community Support Team _ Dong Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Anonymous
Not applicable

Hola @v miembro-msft ,

Ya veo. Es mi culpa. Gracias por tu ayuda una vez más.

Traté de usar la fórmula DAX, pero después de varias horas todavía vi la pantalla que decía "Trabajando en ella". Por lo tanto, ahora estoy intentando hacer esto en PowerQuery, pero ahora mi cambio de consulta ya es de hasta 6 GB.

¿Algún consejo sobre esta parte?

Mejor

Jeroen

Hola @jeroen_adelmund ,

Para la solución dax, simplificamos la fórmula, ¿podría intentar usar la siguiente?

Filtered Table = 
FILTER (
    'Table',
    VAR i = [ID]
    VAR d = [Date of mail]
    RETURN
        CALCULATE ( DISTINCTCOUNT ( 'Table'[Condition] ), 'Table', 'Table'[ID] = i ) = 1
        && CALCULATE ( COUNTROWS ( 'Table' ), 'Table', 'Table'[ID] = i, 'Table'[Date of mail] <= d ) <= 2
)

Si sigue sin funcionar, ¿podría intentar verificar cuánto tiempo tomará si crea una columna calculada en la tabla de origen?

Calculated Column = 
VAR i = [ID]
    VAR d = [Date of mail]
    RETURN
        CALCULATE ( DISTINCTCOUNT ( 'Table'[Condition] ), 'Table', 'Table'[ID] = i ) = 1
        && CALCULATE ( COUNTROWS ( 'Table' ), 'Table', 'Table'[ID] = i, 'Table'[Date of mail] <= d ) <= 2

Para la solución de power query, ¿qué significa "cambio deconsulta ya es de hasta 6 GB"? Si quiere decir que el tamaño de los datos es de 6 GB, al aplicar el filtro en la tabla de origen, reducirá el tamaño de los mismos. Pero cuando se aplica una solución dax, la tabla de origen mantendrá 6 GB y generará una nueva tabla calculada con algunos datos, por ejemplo 2 GB si hay 4 GB filtrados por dax, el tamaño final del conjunto de datos será de 6 +2 x 8 GB si se usa la solución dax.

Saludos

Community Support Team _ Dong Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Anonymous
Not applicable

Hola @v miembro-msft ,

Me las arreglé para que funcionara. Gracias por tu ayuda.

Con respecto al comentario "el cambio de consulta ya es de hasta 6 GB"; después de editar la consulta con las instrucciones PowerQuery, mi consulta resultó ser muy grande a partir del tamaño de los datos. Normalmente, si cambio esta consulta, se tarda hasta 1 GB y, a continuación, se realizan los cambios. Pero después de las declaraciones que proporcionó, tomó hasta un mínimo de 40 GB (y luego cancelé los cambios).

Pero de todos modos, al final logré que funcionara gracias a tu ayuda. Gracias una vez más.

Mejor

Jeroen

Hola @jeroen_adelmund ,


Me alegra saber que ha resuelto su problema. Si no contiene ninguna información confidencial, ¿podría compartir por favor el código mejorado que utilizó para filtrar la tabla para que pueda beneficiar a más usuarios?

Si tiene alguna otra pregunta sobre este escenario, por favor pregunte aquí y trataremos de resolverlo.


Saludos

Community Support Team _ Dong Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Greg_Deckler
Super User
Super User

Bueno, podrías crear una columna como esta:

CountROWS(FILTER('Table',[ID] ? EARLIER([ID]) && [Fecha de correo] <-EARLIER([Fecha de correo]))

A continuación, puede crear una nueva tabla y FILTER cualquier cosa sobre 2 en Count.



Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Power BI Cookbook Third Edition (Color)

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

@Greg_Deckler ¡Funcionó! ¡Muchas gracias!

Tengo una pregunta posterior con la que espero que me pueda ayudar también. Mi conjunto de datos tiene otro error. Todos ocurren dos veces ahora, pero cada uno debe tener la misma condición para ambas ocurrencias (ya sea 1 o 2). Sin embargo, este no es el caso. Mis datos se ven así ahora:

IdFecha del correoCondición
A10-03-20201
B10-03-20201
C10-03-20201
A11-03-20201
B11-03-20201
C11-03-20202

En este caso, me gustaría eliminar C porque la condición no es la misma para ambos occurences. Quiero queme con A y B.

¿Sabe cómo hacer que esto funcione en la misma tabla que la que he creado con su solución anterior?

Espero que puedas ayudar.

Mejor

Jeroen

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

Check out the February 2025 Power BI update to learn about new features.

March2025 Carousel

Fabric Community Update - March 2025

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

Top Solution Authors
Top Kudoed Authors