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
Anonymous
Not applicable

Cómo calcular la diferencia de fechas entre las últimas compras

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.

ClienteFecha de compraFabricanteProducto
12312312/2/2018manzanaT23
12312310/15/2018PlátanoK35
1231235/30/2018PlátanoT23
1231233/4/2018manzanaT27
1231232/16/2017manzanaT56
1231236/22/2017PlátanoT56

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.

Estas son mis fórmulas de medida.
El Lastest date- CALCULATE(MIN('DATA'[Fecha de compra]), FILTER('DATA','DATA'[Fabricante]"Apple"))
Last Laste comprado ?
CALCULATE(MIN('DATA'[Fecha de compra]),'DATA'[Fabricante]"Apple", FILTER('UCC DATA','DATA'[Fecha de compra] <MIN('DATA'[Fecha de compra])))
días desde la última compra- IF(ISBLANK([The Lastest date]),BLANK(),VALUE([Last Purchased date]-[The Lastest date]))

Screenshot (1).png

El resultado no me da lo que quería.

¿Alguien puede ayudarme en esto?

1 ACCEPTED 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:

1.png

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.

View solution in original post

7 REPLIES 7
v-rzhou-msft
Community Support
Community Support

Hola @dndrms2105

Aquí construyo una mesa como la tuya para hacerme una prueba.

1.png

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:

2.png

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:

3.png

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.

Anonymous
Not applicable

@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:

1.png

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.

Anonymous
Not applicable

@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.

1.png

Si desea filtrar un fabricante específico, puede probar filtros o segmentación de datos.

Filtros:

2.png

Cortar:3.png

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.

Greg_Deckler
Super User
Super User

@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...


@ 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!:
The Definitive Guide to Power Query (M)

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

Estas son mis fórmulas de medida.
El Lastest date- CALCULATE(MIN('DATA'[Fecha de compra]), FILTER('DATA','DATA'[Fabricante]"Apple"))
Last Laste comprado ?
CALCULATE(MIN('DATA'[Fecha de compra]),'DATA'[Fabricante]"Apple", FILTER('UCC DATA','DATA'[Fecha de compra] <MIN('DATA'[Fecha de compra])))
días desde la última compra- IF(ISBLANK([The Lastest date]),BLANK(),VALUE([Last Purchased date]-[The Lastest date]))

Screenshot (1).png

Esto es el resultado, pero no me da lo que quería.

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.