Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
5 years ago
Solved

rango con condiciones

Hola

Quiero clasificar el Customer_ID en función de la columna de fecha con la condición de que si la fecha es más de 61 días atrás, el rango comenzará a partir de 1 de nuevo como se ve en la siguiente tabla:

Customer_ID Fecha rango
Aaa2020/2/1 1
Aaa2020/2/1 1
Aaa2020/2/3 2
Aaa2020/3/1 3
Aaa2020/7/1 1
Aaa2020/7/1 1
Aaa2020/7/2 2

He creado dos columnas calculadas, la última fecha y la fecha entre las fechas:

Customer_ID Fecha última fecha tiempo entre
Aaa2020/2/1 0
Aaa2020/2/1 0
Aaa2020/2/3 2020/2/1 2
Aaa2020/3/1 2020/2/3 25
Aaa2020/7/1 2020/3/1 122
Aaa2020/7/1 2020/3/1 122
Aaa2020/7/2 2020/7/1

1

¿Cómo puedo calcular el rango?

Lo intenté

rango ?

SI(
[tiempo entre] á 0o [tiempo entre] > 61, 1,
RANKX (
FILTRO (
'mesa'
,'table'[Customer_ID] - EARLIER ( [Customer_ID] )
&& [shop_id] - ANTERIOR([shop_id])
&& [fecha] < EARLIER([date])
)
,'mesa'[fecha]
,
Asc
Denso
)
Pero esto no me da el resultado correcto. Por favor, aconseje

  • Anonymous's avatar
    Anonymous
    5 years ago
    Pude resolver este problema añadiendo la siguiente condición:
    [fecha] > EARLIER([fecha]) -61
    frecuencia : RANKX (
    FILTRO (
    'mesa'
    ,'table'[Customer_ID] - EARLIER ( [Customer_ID] )
    && [fecha] > EARLIER([fecha]) -61
    ), [fecha],
    Asc
    Denso
    )

7 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Utilice el siguiente RANKX

    RANKX(
    'Mesa',
    'Tabla'[tiempo entre]

    ,

    Asc

    )

  • @nabe , Todas las columnas nuevas

    Puede tener pocos de ellos como var en una columna si es necesario

    last date- maxx(filter(Table,[customer] á earlier([customer])),[date])

    Diff - datediff([fecha],[última fecha],día)
    61 Bandera á cociente([Diff],61)

    Rango - RANKX (
    FILTRO (
    'mesa'
    ,'table'[Customer_ID] - EARLIER ( [Customer_ID] )
    && [shop_id] - EARLIER([shop_id]) && [61 Flag] - EARLIER([61 Flag])
    ), [fecha],asc, denso)

    • Anonymous's avatar
      Anonymous
      Not applicable

      @amitchandak gracias por su respuesta.

      su función DAX me da el mismo resultado que el que intenté antes.

      condición: [el tiempo entre] es mayor que 61, luego comienza el rango de 1 y la fecha siguiente 2 y así sucesivamente.

      En esta fecha de ejemplo: 2020/7/2 debe clasificarse como 2 y 4

      キャプチャ.PNG

      • amitchandak's avatar
        amitchandak
        Super User

        @nabe , Puede quitar el identificador de la tienda y probar. Acabo de añadir como eso estaba allí en su guión

        Rango - RANKX (
        FILTRO (
        'mesa'
        ,'table'[Customer_ID] - EARLIER ( [Customer_ID] )
        && [61 Bandera] - ANTERIOR([61 Bandera])
        ), [fecha],asc, denso)

        ¿Puede compartir datos de ejemplo y salida de ejemplo en formato de tabla? O una muestra de pbix después de eliminar datos confidenciales.