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.
Buenos días a todos,
Gracias de antemano por la ayuda. Tengo una duda desde hace tiempo y no se como resolverla. Trabajo con una tabla que simulo aquí abajo.
Quiero saber como contar los clientes para unas fechas que yo marque en el calendario, siempre y cuando no hayan comprado antes. Ejem: Si yo marco en el calendario las fechas del 21/11 al 24/11, el número de clientes distintos es 5. Ahora, si yo marcho solo el día 23/11, entonces son 2. Lo que yo quiero conseguir, es que si marco el día 24/11 en vez de contar 5, solo me cuente 2 (cliente 3 y 5), ya que los clientes 1,2 y 4 han comprado en fechas anteriores.
Espero no haberme liado mucho.
Gracias nuevamente por vuestra ayuda.
Un saludo
Solved! Go to Solution.
¿Puede explicar por qué espera el resultado 2 al seleccionar 11/23?
En su mesa el 23/11 el cliente 4 y 1 compraron algo. Pero el cliente ya compró el 21/11. Entonces, según tengo entendido, ¿los resultados serían 1 y no dos?
Como usted lo describe, la fórmula debe hacer lo siguiente.
1) Revise los clientes que han comprado en el período de tiempo seleccionado
2) Mira si los clientes seleccionados han comprado algo antes
3) Si es así, ignórelos, si no, tómelos en cuenta
Si este es el requisito, entonces la fórmula debería verse así:
Number of customers not bought before =
VAR var_MinDate =
FIRSTDATE ( DateTable[Date] )
RETURN
SUMX (
VALUES ( FactTable[Clientes] ),
VAR var_NumberOfSalesBeforeMinDate =
CALCULATE (
COUNTROWS ( FactTable ),
ALL ( FactTable ),
FactTable[Fecha compra] < var_MinDate
)
RETURN
IF(var_NumberOfSalesBeforeMinDate > 0, 0, 1)
)
Saludos
Miguel
-----------------------------------------------------
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente. ¡Aprecio su pulgar hacia arriba!
@me en las respuestas o perderé tu hilo.
-----------------------------------------------------
Por favor, intente:
Measure2 =
VAR _a =
MIN ( 'calendar'[Date] )
VAR _b =
SUMMARIZE (
'Table',
'Table'[Clientes],
"Flag",
IF (
CALCULATE (
COUNT ( 'Table'[Clientes] ),
FILTER (
ALL ( 'Table' ),
[Clientes] = EARLIER ( 'Table'[Clientes] )
&& [Fecha compra] < _a
)
) > 0,
0,
1
)
)
RETURN
SUMX ( _b, [Flag] )
Resultado final:
Saludos
Jianbo Li
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Por favor, intente:
Measure2 =
VAR _a =
MIN ( 'calendar'[Date] )
VAR _b =
SUMMARIZE (
'Table',
'Table'[Clientes],
"Flag",
IF (
CALCULATE (
COUNT ( 'Table'[Clientes] ),
FILTER (
ALL ( 'Table' ),
[Clientes] = EARLIER ( 'Table'[Clientes] )
&& [Fecha compra] < _a
)
) > 0,
0,
1
)
)
RETURN
SUMX ( _b, [Flag] )
Resultado final:
Saludos
Jianbo Li
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Fantástico! muchas gracias por la solución!!!
De acuerdo con su descripción, si selecciono 2022-11-22 a 2022-11-24, el recuento de clientes parece ser 2.
¿Entendí mal?
Si no he entendido mal, por favor intente:
Measure =
VAR _a =
SUMMARIZE (
'Table',
[Clientes],
"Flag",
IF (
CALCULATE (
COUNT ( 'Table'[Clientes] ),
FILTER (
ALL ( 'Table' ),
[Clientes] = EARLIER ( 'Table'[Clientes] )
&& [Fecha compra] <= MAX ( 'calendar'[Date] )
)
) > 1,
0,
1
)
)
VAR _b =
SUMMARIZE (
'Table',
[Clientes],
"Flag",
IF (
CALCULATE (
COUNT ( 'Table'[Clientes] ),
FILTER (
'Table',
[Clientes] = EARLIER ( 'Table'[Clientes] )
&& [Fecha compra] <= MAX ( 'calendar'[Date] )
)
) > 1,
0,
1
)
)
VAR _c =
COUNTX ( SELECTCOLUMNS ( 'calendar', "Sliered", [Date] ), [Sliered] )
RETURN
IF ( _c = 1, SUMX ( _a, [Flag] ), SUMX ( _b, [Flag] ) )
Salida:
Saludos
Jianbo Li
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Buenos días,
Te pido disculpas, creo que no expliqué bien el problema.
Si selecciono del 2022-11-22 a 2022-11-24, el recuento de clientes correcto debería ser 4, ya que el único cliente que ha comprado antes de esa fecha es el cliente 1. (Compra de 35 unidades el 21/11). Ver imagen marcada en rojo.
A diferencia de tu resultado, si hay que dar por buenos el cliente 2 y 4, ya que todas las compras las han hecho dentro del periodo que tenemos marcado del 22/11 al 24/11. No importa que haya comprado en varios días siempre que sea dentro del periodo que marquemos. Si por ejemplo marcasemos del 23/11 al 24/11, entonces el cliente 2 quedaría fuera porque ha hecho una compra el 22/11.
Espero haberlo explicado ahora bien.
Gracias, es muy importante para mi este cálculo
Por favor, intente:
Measure =
var _a = SUMMARIZE('Table',[Clientes],"Flag",IF(CALCULATE(COUNT('Table'[Clientes]),FILTER(ALL('Table'),[Clientes]=EARLIER('Table'[Clientes])&&[Fecha compra]<=MAX('calendar'[Date])))>1,0,1))
return SUMX(_a,[Flag])
Resultado final:
Saludos
Jianbo Li
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Buenas tardes,
Antes de nada, gracias por su respuesta. La medida creada me resuelve a medias el problema. Creo que no expliqué bien mi casuistica.
Si selecciono un solo día, la medida funciona perfectamente, pero si filtro juntando varios días, entonces no me hace bien el cálculo bien. Yo necesito que si tomo varios días, me cuente los clientes distintos de esos días que no hayan comprado los días anteriores.
Como podrás ver en tu ejemplo, si selecciono 3 días, el computo total de clientes que han comprado en esos 3 días, y no lo habían hecho antes, segun la medida es 2.
Esto es erroneo, debería ser 4 porque el cliente 1 ya había comprado el día 21.
Espero que sirva de ayuda esta explicación a ver si puedes resolverlo.
gracias!
¿Puede explicar por qué espera el resultado 2 al seleccionar 11/23?
En su mesa el 23/11 el cliente 4 y 1 compraron algo. Pero el cliente ya compró el 21/11. Entonces, según tengo entendido, ¿los resultados serían 1 y no dos?
Como usted lo describe, la fórmula debe hacer lo siguiente.
1) Revise los clientes que han comprado en el período de tiempo seleccionado
2) Mira si los clientes seleccionados han comprado algo antes
3) Si es así, ignórelos, si no, tómelos en cuenta
Si este es el requisito, entonces la fórmula debería verse así:
Number of customers not bought before =
VAR var_MinDate =
FIRSTDATE ( DateTable[Date] )
RETURN
SUMX (
VALUES ( FactTable[Clientes] ),
VAR var_NumberOfSalesBeforeMinDate =
CALCULATE (
COUNTROWS ( FactTable ),
ALL ( FactTable ),
FactTable[Fecha compra] < var_MinDate
)
RETURN
IF(var_NumberOfSalesBeforeMinDate > 0, 0, 1)
)
Saludos
Miguel
-----------------------------------------------------
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente. ¡Aprecio su pulgar hacia arriba!
@me en las respuestas o perderé tu hilo.
-----------------------------------------------------
Buenas tardes,
He probado la fórmula y me da el mismo resultado sin filtrar los clientes que ya hubiesen comprado.
Buenos días Miguel,
Tienes toda la razón!! me equivoque, era 1 el resultado esperado para el 23/11
Un millón de gracias por la solución!!!
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |