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