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.
Quiero calcular las diferencias entre dos fechas. Una es la última fecha de compra y la otra es la última fecha de compra que es anterior a la última fecha de compra.
Cliente | Fecha de compra | Fabricante | Producto |
123123 | 12/2/2018 | manzana | T23 |
123123 | 10/15/2018 | Plátano | K35 |
123123 | 5/30/2018 | Plátano | T23 |
123123 | 3/4/2018 | manzana | T27 |
123123 | 2/16/2017 | manzana | T56 |
123123 | 6/22/2017 | Plátano | T56 |
Para esta situación, quiero obtener las fechas de compras de la compañía Apple y las diferencias entre 3/4/2018 amd 2/16/2017. 12/2 y 2/16 no necesitan porque 3/4/2018 puede darme un recuento de días más pequeño.
Además, si el cliente compró el producto de Banana por primera vez, entonces debe devolver 0 daycount.
El resultado no me da lo que quería.
¿Alguien puede ayudarme en esto?
Solved! Go to Solution.
Hola @dndrms2105
Nueva columna de índice:
Index =
RANKX (
FILTER (
'DATA',
'DATA'[Manufacturer] = EARLIER ( 'DATA'[Manufacturer] )
&& 'DATA'[Customer] = EARLIER ( 'DATA'[Customer] )
),
'DATA'[Purchased date],
,
ASC
)
Nueva medida:
DayDiff =
VAR _A =
MAX ( DATA[Purchased date] )
VAR _B =
CALCULATE (
MAX ( DATA[Purchased date] ),
FILTER (
ALLEXCEPT ( DATA, DATA[Manufacturer], DATA[Customer] ),
DATA[Index]
= SUM ( DATA[Index] ) - 1
)
)
VAR _DATEDIFF =
DATEDIFF ( _B, _A, DAY )
RETURN
_DATEDIFF
MAXDayDiff =
VAR _MAXDATEDIFF =
MAXX ( ALLEXCEPT ( DATA, DATA[Customer], DATA[Manufacturer] ), [DayDiff] )
VAR _IndexforMaxDatediff =
CALCULATE (
SUM ( DATA[Index] ),
FILTER (
ALLEXCEPT ( DATA, DATA[Customer], DATA[Manufacturer] ),
[DayDiff] = _MAXDATEDIFF
)
)
VAR _MAXINDEX =
MAXX (
FILTER (
ALL ( DATA ),
DATA[Customer] = MAX ( DATA[Customer] )
&& DATA[Manufacturer] = MAX ( DATA[Manufacturer] )
),
DATA[Index]
)
RETURN
IF (
_MAXINDEX = 1,
0,
IF (
SUM ( DATA[Index] ) = _IndexforMaxDatediff
|| SUM ( DATA[Index] ) = _IndexforMaxDatediff - 1,
_MAXDATEDIFF,
0
)
)
Resultado:
Por maxDaydiff medida, puede obtener el resultado de que el día más grande en daydiffs.
ex:Cliente 109527 Fabricante Apple: 2014/3/4 y 2017/3/4(daydiff 1096), 2017/3/4 y 2017/7/6(daydiff 124),
así que mostramos 1096 en 2014/3/4 y 2017/3/4, y mostramos 0 en 2017/7/6.
Puede descargar el archivo pbix desde este enlace: Cómo calcular la diferencia de fecha entre las últimas compras
Saludos
Rico Zhou
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola @dndrms2105
Aquí construyo una mesa como la tuya para hacerme una prueba.
Agregue una columna de índice ordenada por Fecha de compra para cada fabricante y cada cliente.
Index =
RANKX (
FILTER (
'Table',
'Table'[Manufacturer] = EARLIER ( 'Table'[Manufacturer] )
&& 'Table'[Customer] = EARLIER ( 'Table'[Customer] )
),
'Table'[Purchased date],
,
DESC
)
Resultado:
A continuación, construir una medida para lograr su objetivo.
DayDiff =
VAR _TheLatestDate =
MAXX (
FILTER (
ALL ( DATA ),
DATA[Customer] = MAX ( DATA[Customer] )
&& DATA[Manufacturer] = MAX ( DATA[Manufacturer] )
),
DATA[Purchased date]
)
VAR _TheLatestDatebefore =
CALCULATE (
MAX ( DATA[Purchased date] ),
FILTER (
ALL ( DATA ),
DATA[Customer] = MAX ( DATA[Customer] )
&& DATA[Manufacturer] = MAX ( DATA[Manufacturer] )
&& DATA[Index] > 1
)
)
VAR _MAXINDEX =
MAXX (
FILTER (
ALL ( DATA ),
DATA[Customer] = MAX ( DATA[Customer] )
&& DATA[Manufacturer] = MAX ( DATA[Manufacturer] )
),
DATA[Index]
)
RETURN
IF ( _MAXINDEX = 1, 0, DATEDIFF ( _TheLatestDatebefore, _TheLatestDate, DAY ) )
Resultado:
Si esta respuesta todavía no pudo ayudarle a resolver este problema, por favor proporcione más detalles.
Desde su estado de cuenta: DateA -la última fecha de compra, DateB - la última fecha de compra antes de DateA.
Pero en su ejemplo, cuando calculamos el conteo de días en Apple, DateA a 2018/12/2, DateB- 2018/3/4.
¿Por qué aquí se calcula el conteo de días por FechaA-2018/3/4,DateB a 2018/2/16? Si mi entendimiento es erróneo, por favor dígame más sobre su lógica de cálculo. O puede compartir su archivo pbix conmigo por su Onedrive for Business.
Puede descargar el archivo pbix desde este enlace: Cómo calcular la diferencia de fechas entre las últimas compras
Saludos
Rico Zhou
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
@v-rzhou-msft For the customer 109527 apple 2019/12/31 in the last picture, why is the day diff is not the difference between the 2020/6/3 and 2019/12/31? also 123123 apple2016/12/2 has 381 day diff. Is there a way that I can change it with differences between eac of the larger date in different year?
ex) 2017/03/04 and 2017/07/06 and 2014/03/04 are the purchased dates. I want the days diff on 2014/03/04 and 2017/03/04 and 0 for the 2017/07/06.
Hola @dndrms2105
Nueva columna de índice:
Index =
RANKX (
FILTER (
'DATA',
'DATA'[Manufacturer] = EARLIER ( 'DATA'[Manufacturer] )
&& 'DATA'[Customer] = EARLIER ( 'DATA'[Customer] )
),
'DATA'[Purchased date],
,
ASC
)
Nueva medida:
DayDiff =
VAR _A =
MAX ( DATA[Purchased date] )
VAR _B =
CALCULATE (
MAX ( DATA[Purchased date] ),
FILTER (
ALLEXCEPT ( DATA, DATA[Manufacturer], DATA[Customer] ),
DATA[Index]
= SUM ( DATA[Index] ) - 1
)
)
VAR _DATEDIFF =
DATEDIFF ( _B, _A, DAY )
RETURN
_DATEDIFF
MAXDayDiff =
VAR _MAXDATEDIFF =
MAXX ( ALLEXCEPT ( DATA, DATA[Customer], DATA[Manufacturer] ), [DayDiff] )
VAR _IndexforMaxDatediff =
CALCULATE (
SUM ( DATA[Index] ),
FILTER (
ALLEXCEPT ( DATA, DATA[Customer], DATA[Manufacturer] ),
[DayDiff] = _MAXDATEDIFF
)
)
VAR _MAXINDEX =
MAXX (
FILTER (
ALL ( DATA ),
DATA[Customer] = MAX ( DATA[Customer] )
&& DATA[Manufacturer] = MAX ( DATA[Manufacturer] )
),
DATA[Index]
)
RETURN
IF (
_MAXINDEX = 1,
0,
IF (
SUM ( DATA[Index] ) = _IndexforMaxDatediff
|| SUM ( DATA[Index] ) = _IndexforMaxDatediff - 1,
_MAXDATEDIFF,
0
)
)
Resultado:
Por maxDaydiff medida, puede obtener el resultado de que el día más grande en daydiffs.
ex:Cliente 109527 Fabricante Apple: 2014/3/4 y 2017/3/4(daydiff 1096), 2017/3/4 y 2017/7/6(daydiff 124),
así que mostramos 1096 en 2014/3/4 y 2017/3/4, y mostramos 0 en 2017/7/6.
Puede descargar el archivo pbix desde este enlace: Cómo calcular la diferencia de fecha entre las últimas compras
Saludos
Rico Zhou
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
@v-rzhou-msft Why 123123 on 2016/ 12/2 shows 0? and Is there a way to filter one specific manufacturer? like only for manufacturer Apple.
Hola @dndrms2105
Creo que necesitas el daydiff más grande entre 123123 manzana.
ex entre 2016/12/2 y 2017/2/16 daydiff 76, entre 2017/2/16 y2018/3/4 daydiff 381.
Así que el resultado es 381 y aparece detrás de 2017/2/16 y 2018/3/4, y 2016/12/2 show 0.
Como el ejemplo que me diste.
Si desea filtrar un fabricante específico, puede probar filtros o segmentación de datos.
Filtros:
Cortar:
Puede descargar el archivo pbix desde este enlace: Cómo calcular la diferencia de fecha entre las últimas compras
Saludos
Rico Zhou
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
@dndrms2105 - Así que básicamente desea hacer un cálculo entre dos filas. Vea mi artículo sobre el tiempo medio entre fallas (MTBF) que utiliza ANTES: http://community.powerbi.com/t5/Community-Blog/Mean-Time-Between-Failure-MTBF-and-Power-BI/ba-p/3395...
Esto es el resultado, pero no me da lo que quería.
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 |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |