Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Administrator
1 year ago

Comando If

Hola

Quiero definir que no. de semanas para dos casos en la tabla 'Geschäftskunden', pero obtengo un error:

Número de semanas =

VAR_Fecha de inicio = SELECTEDVALUE('Clientes comerciales'[Fecha de inicio])

VAR_Fecha de finalización = SELECTEDVALUE('Clientes comerciales'[Fecha de finalización])

DEVOLUCIÓN

SI (_FechaFin = ISBLANK,

DATEDIFF(_Fecha de inicio, Hoy(), SEMANA)

)

,

SI (_FechaFin = NO ISBLANK,

DATEDIFF(_Fecha de inicio, _Fecha de finalización, SEMANA)

)

7 Replies

  • @SAL_69

    El error proviene de una sintaxis incorrecta de ISBLANK y un IF adicional. En DAX, debe llamar a ISBLANK() como una función, y IF toma tres argumentos (condición, valor-si-TRUE, valor-si-FALSE). Una sola expresión hace el trabajo:

    Anzahl Woche =
    VAR _StartDate = SELECTEDVALUE ( 'Geschäftskunden'[Startdatum] )
    VAR _EndDate = SELECTEDVALUE ( 'Geschäftskunden'[Enddatum] )
    RETURN
    IF (
    ISBLANK ( _EndDate ),
    DATEDIFF ( _StartDate, TODAY(), WEEK ),
    DATEDIFF ( _StartDate, _EndDate, WEEK )
    )

    Cosas que hay que comprobar dos veces

    Ambas columnas son del tipo de datos Date.

    Si _StartDate también puede estar en blanco, envuélvalo en ISBLANK o use COALESCE.

    Para una solución de problemas más profunda, es mejor compartir una PBIX de muestra o al menos algunos datos simulados, cargarlos en una unidad pública (OneDrive, Google Drive, etc.) y publicar el enlace.

    Si esta publicación ayuda, considere aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente

  • @SAL_69 , Intente usar

    DAX
    Número de semanas =
    VAR _StartDate = SELECTEDVALUE('Clientes comerciales'[Fecha de inicio])
    VAR _EndDate = SELECTEDVALUE('Clientes comerciales'[Fecha de finalización])
    DEVOLUCIÓN
    SI (
    ISBLANK(_EndDate),
    DATEDIFF(_StartDate, TODAY(), SEMANA),
    DATEDIFF(_StartDate, _EndDate, SEMANA)
    )

  • Hola @SAL_69,
    Gracias por ponerse en contacto con la comunidad de Microsoft Fabric Forum.

    He reproducido el escenario en Power BI Desktop con datos de ejemplo y puedo confirmar que el cálculo funciona según lo esperado.

    Resumen de lo que hice:

    • Se ha creado una tabla de ejemplo Geschäftskunden con valores Enddatum rellenados y en blanco.
    • Se usó la siguiente fórmula DAX en una columna calculada para controlar ambos casos correctamente:
    Anzahl Woche =
    
    VAR _StartDate = 'Geschäftskunden'[Startdatum]
    
    VAR _EndDate = 'Geschäftskunden'[Enddatum]
    
    RETURN
    
    IF(
    
        ISBLANK(_EndDate),
    
        DATEDIFF(_StartDate, TODAY(), WEEK),
    
        DATEDIFF(_StartDate, _EndDate, WEEK)
    
    )

    Resultado:
    La columna Anzahl Woche muestra ahora el número esperado de semanas:

    • Cuando Enddatum está en blanco, usa Today().
    • Cuando Enddatum está presente, utiliza Enddatum.

    Adjunto el archivo .pbix de muestra aquí para su referencia para que pueda revisarlo y adaptarlo a su propio conjunto de datos.

    Gracias, @bhanu_gautam y @Ritaf1983 por compartir información valiosa.

    Si esta información es útil, por favor "Aceptar como solución" y da un "felicito" para ayudar a otros miembros de la comunidad a resolver problemas similares de manera más eficiente.
    Gracias.