Microsoft Fabric Community Conference 2025, March 31 - April 2, Las Vegas, Nevada. Use code FABINSIDER for a $400 discount.
Register nowGet inspired! Check out the entries from the Power BI DataViz World Championships preliminary rounds and give kudos to your favorites. View the vizzies.
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.
Id | Fecha del correo |
A | 10-03-2020 |
B | 10-03-2020 |
C | 10-03-2020 |
A | 11-03-2020 |
B | 11-03-2020 |
C | 11-03-2020 |
A | 12-03-2020 |
B | 12-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
Solved! Go to 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
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
Saludos
@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
)
Saludos
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?
Saludos
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
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
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.
@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:
Id | Fecha del correo | Condición |
A | 10-03-2020 | 1 |
B | 10-03-2020 | 1 |
C | 10-03-2020 | 1 |
A | 11-03-2020 | 1 |
B | 11-03-2020 | 1 |
C | 11-03-2020 | 2 |
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
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Check out the February 2025 Power BI update to learn about new features.