Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Chimsie
Helper III
Helper III

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.

Great, thank you very much!🤗

Chimsie
Helper III
Helper III

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


Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors