cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Chimsie
Helper II
Helper II

LASTNONBLANK durante un máximo de 3 días


Tengo una tabla que recopila datos de fuentes en tiempo real, a veces sucede que las colecciones fallan por alguna razón en algunos activos, para los valores que faltan que utilizo debajo de DAX (LASTNONBLANK) para llenar los espacios en blanco con el valor más reciente en ese momento en el tiempo.

valor de cálculo á 
    var assetid á [AssetID]
    var curDate á [Fecha]
    var priorMaxDate ? CALCULATE(MAX('Table1'[Fecha]), FILTER('Table1', 'Table1'[AssetID] ? assetid && [Date] < curDate && 'Table1'[Value] <> BLANK()))
devuelve 
   if([Value] á blank(), CALCULATE(max('Table1'[Value]), FILTER('Table1', [AssetID] á assetid && [Date] á priorMaxDate)), 'Table1'[Valor])

Ahora quiero ampliar la fórmula con lo siguiente,

Cuando no puede recopilar datos de un origen (assetID) durante 3 días consecutivos, la columna calculada cambiará a cero para ese assetID. (esto no tiene que ser retroactivo.)

¿Alguien puede ayudar?

1 ACCEPTED SOLUTION

Hola, @Chimsie

He modificado los datos para reproducir su escenario. El archivo pbix se adjunta al final.

Mesa:

a1.png

Puede crear una columna calculada como se muestra a continuación.

Result = 
COALESCE(
    [Value],
    var _id=[AssetID]
    var _date=[Date]
    var lastnoblankdate = 
    CALCULATE(
               MAX('Table'[Date]),
               FILTER(
                   ALL('Table'),
                   'Table'[AssetID]=_id&&
                   'Table'[Date]<_date&&
                   'Table'[Value]<>BLANK()
               )
    )
    var val=
    CALCULATE(
       SUM('Table'[Value]),
       FILTER(
           ALL('Table'),
           'Table'[AssetID]=_id&&
           'Table'[Date]=lastnoblankdate
       )
    )
    return
    IF(
        [Date]-lastnoblankdate<=3,
        val,
        0
    )
)

Resultado:

a2.png

Saludos

Allan

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

5 REPLIES 5
v-alq-msft
Community Support
Community Support

Hola, @Chimsie

Según su descripción, creé datos para reproducir su escenario. El archivo pbix se adjunta al final.

Mesa:

a1.png

Puede crear una columna calculada como se muestra a continuación.

Result = 
var _asserid=[AssetID]
var _date=[Date]
var tab=
CALCULATETABLE(
    DISTINCT('Table'[Date]),
    TOPN(
        3,
        FILTER(
        'Table',
        'Table'[AssetID]=_asserid&&
        'Table'[Date]<_date&&
        'Table'[Value]<>BLANK()
        ),
        'Table'[Date]
    )
)
return
IF(
    MAXX(
        tab,
        [Date]
    )<[Date]-3,
    0,
    CALCULATE(
        MAX('Table'[Value]),
        FILTER(
            'Table',
            'Table'[AssetID]=_asserid&&
            'Table'[Date] in tab
        )
    )
)

Resultado:

a2.png

Saludos

Allan

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

Hola @v-alq-msft


No creo que estuviera completamente claro.

Cuando para un AssetID el valor es 0/blank el resultado debe ser el LASTNONBLANK, cuando el valor de un AssetID es 0/en blanco durante 3 días seguidos, el resultado debe ser 0 a partir del cuarto día.

Vea el ejemplo siguiente:

Capture.PNG

Hola, @Chimsie

He modificado los datos para reproducir su escenario. El archivo pbix se adjunta al final.

Mesa:

a1.png

Puede crear una columna calculada como se muestra a continuación.

Result = 
COALESCE(
    [Value],
    var _id=[AssetID]
    var _date=[Date]
    var lastnoblankdate = 
    CALCULATE(
               MAX('Table'[Date]),
               FILTER(
                   ALL('Table'),
                   'Table'[AssetID]=_id&&
                   'Table'[Date]<_date&&
                   'Table'[Value]<>BLANK()
               )
    )
    var val=
    CALCULATE(
       SUM('Table'[Value]),
       FILTER(
           ALL('Table'),
           'Table'[AssetID]=_id&&
           'Table'[Date]=lastnoblankdate
       )
    )
    return
    IF(
        [Date]-lastnoblankdate<=3,
        val,
        0
    )
)

Resultado:

a2.png

Saludos

Allan

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

Great, thank you very much!🤗

Chimsie
Helper II
Helper II

Nadie que pueda ayudarme con el desafío anterior, ¿es posible en absoluto?


Helpful resources

Announcements
PBI User Groups

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group

March Update

Check it Out!

Click here to read more about the March 2021 Updates!

secondImage

The largest Power BI virtual conference

100+ sessions, 100+ speakers, Product managers, MVPs, and experts. All about Power BI. Attend online or watch the recordings.

secondImage

Experience what’s next for Power BI

See the latest Power BI innovations, updates, and demos from the Microsoft Business Applications Launch Event.