Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
5 years ago
Solved

SI STATMENT SHANIGANS

Hola, cartel de la primera vez, espero que alguien pueda decirme lo que está pasando aquí.

Ok así que en mi proyecto estoy usando unmensurment con este código

========================================

var TestResultCount á COUNTROWS(TestConducted)
var FailRowCount (COUNTROWS(aTable))
devolución

IF(TestResultCount >0,if(FailRowCount < 1,"Yes","No"),"NA")
========================================
por lo que la salida im esperando es
Si hay pruebas, devuelva sí, o No si la prueba se realizó correctamente. O devolver NA si no hay pruebas.

En el conjunto de datos específico que estoy usando no hay casos de error, y 50% de éxito y 50% NA

el problema que tengo es la lógica anterior se ejecuta sin error devolver 100% NA

Sin embargo, si la línea se cambia a
IF(TestResultCount >0,if(True()< 1,"Yes","No"),"NA")
obtengo mis resultados esperados con el 50% de los resultados que devuelven "Sí" y 50% regresando "NA"

Creo que esto se debe a que aTable está en blanco, sin embargo, usando Isblank(aTable )
Eg. IF(TestResultCount >0,if(Isblank(aTable ),"Yes","No"),"NA")
Tampoco funciona. con todos los resultados que siguen devolviendo NA.

Creo que cuando el resultado del éxito de la primera declaración if golpea un error, en lugar de detenerse simplemente va a NA.

Por favor, hágamelo saber sus pensamientos y opiniones sobre por qué esto está sucediendo.
A continuación se muestra el código completo
=======================================================

Test_Flow estado menos por debajo del nivel máximo de la red de control

var TestConducted - FILTER('Datos de Telem por hora',
AND('Hourly Telem Data'[Estado de flujo menos Por debajo del nivel máximo] <> "",
'Datos de telem por hora'[SiteRef] á [SiteRef]
))

var aTable - FILTER(TestConducted,
AND('Datos de Telem por hora'[Estado de flujo menos por debajo del nivel máximo] - "Fallo",
'Datos de telem por hora'[SiteRef] á [SiteRef]
))

var TestResultCount á COUNTROWS(TestConducted)
fue FailRowCount - COUNTROWS(aTable)

devolución
si (TestResultCount >0,
if(FailRowCount < 1,"Yes","No"
),"NA")

========================================================

  • Anonymous's avatar
    Anonymous
    5 years ago

    Ok el problema está resuelto.

    Test_Flow estado menos por debajo del nivel máximo de la red de control

    Cambiar
    VAR aTable (VAR aTable)
    FILTRO (
    TestConducted ,
    Y (
    'Datos de Telem por hora'[Estado de flujo menos por debajo del nivel máximo] - "Fallo",
    'Datos de Telem por hora'[SiteRef] á [SiteRef]
    )
    )

    Para
    VAR aTable (VAR aTable)
    FILTRO (
    'Datos de telem por hora',
    Y (
    'Datos de Telem por hora'[Estado de flujo menos por debajo del nivel máximo] - "Fallo",
    'Datos de Telem por hora'[SiteRef] á [SiteRef]
    )
    )

    Creo que esto puede tener algo que ver con cómo funcionan las subclases de filtrado dentro de la instrucción if. Todas las variables tienen sus resultados esperados fuera de la instrucción if, pero cuando ambas se utilizan, la segunda variable se establece en blanco.

    Si tiene un problema como este en el futuro, intente no filtrar una submesa si es posible, dibuje de la tabla original.

6 Replies

    • Anonymous's avatar
      Anonymous
      Not applicable

      TestResultCount sí.

      Claro.

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

    No @HEEEEEEEEELLLLP

    ¿Se trata de una medida o una columna calculada? Si el primero, ¿cómo/dónde lo estás usando?

    ¿Qué es esto? ¿Qué intentas hacer?

    'Datos de telem por hora'[SiteRef] á [SiteRef]

    Ayudaría si muestra una muestra de las tablas relevantes

    Pruebe esto por el momento:

    Test_Flow status Minus Below peak level =
    VAR TestConducted =
        FILTER (
            'Hourly Telem Data',
            AND (
                'Hourly Telem Data'[Flow status Minus Below peak level] <> "",
                'Hourly Telem Data'[SiteRef] = EARLIER ( 'Hourly Telem Data'[SiteRef] )
            )
        )
    VAR aTable =
        FILTER (
            TestConducted,
            AND (
                'Hourly Telem Data'[Flow status Minus Below peak level] == "Fail",
                'Hourly Telem Data'[SiteRef] = EARLIER ( 'Hourly Telem Data'[SiteRef] )
            )
        )
    VAR TestResultCount =
        COUNTROWS ( TestConducted )
    VAR FailRowCount =
        COUNTROWS ( aTable )
    RETURN
        IF ( TestResultCount > 0, IF ( FailRowCount < 1, "Yes", "No" ), "NA" )
    

    Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

    Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

    Salud

    SU18_powerbi_badge

    • Anonymous's avatar
      Anonymous
      Not applicable

      el código que he construido es para una medida.

      La medida está destinada a mirar sobre el campo "Estado de flujo menos por debajo del nivel máximo" en "Datos de telem por hora" . Si el campo no está completamente en blanco, indique o no haya uno o más "Fail" en ese conjunto de datos


      La medida se establece en una tabla diferente a "Datos de telem por hora", uno que tiene un conjunto unque de SIte refs, así como todas las demás medidas de prueba que necesito.

      'Datos de Telem por hora'[SiteRef] [SiteRef]
      Esto se utiliza para conectar el conjunto de datos de Telem por hora a las tablas actuales SiteRef Key

      ya que hay una relación de uno a muchos entre la tabla actual y la tabla de datos de Telem por hora.

      Probé su solución, power bi no lo haría excepto el uso de la función Earlier indicando el tipo de paramater incorrecto.

  • @HEEEEEEEEELLLLP ,¿Puede compartir datos de ejemplo y salida de ejemplo en formato de tabla? O una muestra de pbix después de eliminar datos confidenciales.

  • Anonymous's avatar
    Anonymous
    Not applicable

    Ok el problema está resuelto.

    Test_Flow estado menos por debajo del nivel máximo de la red de control

    Cambiar
    VAR aTable (VAR aTable)
    FILTRO (
    TestConducted ,
    Y (
    'Datos de Telem por hora'[Estado de flujo menos por debajo del nivel máximo] - "Fallo",
    'Datos de Telem por hora'[SiteRef] á [SiteRef]
    )
    )

    Para
    VAR aTable (VAR aTable)
    FILTRO (
    'Datos de telem por hora',
    Y (
    'Datos de Telem por hora'[Estado de flujo menos por debajo del nivel máximo] - "Fallo",
    'Datos de Telem por hora'[SiteRef] á [SiteRef]
    )
    )

    Creo que esto puede tener algo que ver con cómo funcionan las subclases de filtrado dentro de la instrucción if. Todas las variables tienen sus resultados esperados fuera de la instrucción if, pero cuando ambas se utilizan, la segunda variable se establece en blanco.

    Si tiene un problema como este en el futuro, intente no filtrar una submesa si es posible, dibuje de la tabla original.