Forum Discussion

youconnect's avatar
youconnect
Icon for Helper I rankHelper I
6 years ago
Solved

Countrows última fecha

Tengo esta mesa

IdEstadoFecha
1Activo01/01/2020
1Reservados05/01/2020
1Suspendido08/01/2020
1Vendido15/01/2020
2Activo02/01/2020
2Suspendido03/01/2020
2Activo05/01/2020
3Activo05/01/2020
4Activo06/01/2020
4Vendido08/01/2020

Quiero contar filas de iDes distintos donde la última fecha sea igual a "activo"

El resultado esperado es: 2 (la última fecha de estos 2 iDs tienen el estado "activo".
¿Me puedes ayudar?

Gracias

  • Hola @youconnect ,

    Estoy entendiendo su lógica y he hecho el siguiente cálculo:

    count_active_id = 
    var last_active_date = CALCULATE(MAX(Sheet2[date]),FILTER(ALLEXCEPT(Sheet2,Sheet2[id],Sheet2[date]),Sheet2[state]="active"))
    var last_date = CALCULATE(MAX(Sheet2[date]),ALLEXCEPT(Sheet2,Sheet2[id]))
    return CALCULATE(COUNTROWS(FILTER(Sheet2,last_active_date=last_date)))

    test_count-active-id.PNG

    Saludos
    Liang
    Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

6 Replies

  • edhans's avatar
    edhans
    Icon for Community Champion rankCommunity Champion

    Esto hará lo que usted describe, pero es 1, no 2.

    Latest Record Count = 
    VAR LatestDate = 
    CALCULATE(
        LASTDATE('Sample Data'[Date]),
        'Sample Data'[state] = "active"
    )
    VAR ActiveIDCount = 
    CALCULATE(
        DISTINCTCOUNT('Sample Data'[id]),
        FILTER(
            'Sample Data',
            'Sample Data'[Date] = LatestDate
        )
    )
    RETURN
    COALESCE(ActiveIDCount,0)

    la última fecha de un elemento activo es el 6 de enero de 2020, y solo un ID tiene esa fecha.

    ¿Cómo vas a conseguir 2?

    • youconnect's avatar
      youconnect
      Icon for Helper I rankHelper I

      @edhans

      No.
      la última fecha para el id 1 es 15/01/2020 y el estado no está activo, no cuenta

      última fecha para el id 2 es 05/01/2020 y el estado está activo, contar

      última fecha para el id 3 es 05/01/2020 y el estado está activo, contar

      la última fecha para el id 4 es 08/01/2020 y el estado no está activo, no cuenta.

      Así que contar es 2

      • edhans's avatar
        edhans
        Icon for Community Champion rankCommunity Champion

        Sospecho que hay una manera más limpia de hacer esto, pero esto hace el truco.

        Counting Measure = 
        VAR FirstTable =
            ADDCOLUMNS (
                SUMMARIZECOLUMNS ( 'Sample Data'[id] ),
                "Date2", LASTDATE ( 'Sample Data'[Date] )
            )
        VAR CombinedTable =
            NATURALINNERJOIN (
                'Sample Data',
                firsttable
            )
        VAR RowCount =
            COUNTROWS (
                FILTER (
                    FILTER (
                        CombinedTable,
                        [Date] = [Date2]
                    ),
                    [state] = "active"
                )
            )
        RETURN
        COALESCE( RowCount, 0)