Error con COUNTROWS () al no encontrar el texto FIND () correcto en una tabla.

Un usuario Pregunto ✅

Anónimo

Hola a todos,

Estoy tratando de encontrar la cantidad de veces que aparece un texto en una tabla. Tengo una columna = «Volumen» de una tabla ‘Tabla’. Quiero ver si el volumen es mayor o menor que su desviación estándar de 62 días. Si es así, cree una columna llamada ‘Alerta’ con una frase, si el volumen no está fuera de estos límites, la celda estará en blanco. Al igual que:

notes_1.PNG

Entonces tengo una alerta:

Alert_V% = 
    IF(
        [% Share Volume] > [YMax V%], "Share Volume: > 1.5 Std Dev", 
    IF(
        [% Share Volume] < [YMin V%], "Share Volume: < 1.5 Std Dev", BLANK()
    ))

y quiero esencialmente tomar esta tabla y contar el número de veces que aparece «Share Volume» y contar esas filas.

Alert Sum_V% = 
Var _session_date = MAXX(
    ALL('Verizon Call Reason'),'Verizon Call Reason'[session_date])
var _alert_table = SUMMARIZE(
    FILTER(ALL('Verizon Call Reason'),'Verizon Call Reason'[session_date]),
    'Verizon Call Reason'[call_reason_derived],"Measure",[Alert_V%]
    )
Return
COUNTROWS(FILTER(_alert_table,FIND("Share Volume: < 1.5 Std Dev",[Measure],,0)>0))

En lo anterior, estoy haciendo una tabla basada en la categoría, tome la fecha más reciente como una variable _session_date. Luego, cree otra variable que filtre la tabla en función de la medida. Entonces quiero contar esas filas con la frase en la declaración.

Debería obtener 7 (como en la tabla anterior con las alertas que se muestran), pero en su lugar obtener EN BLANCO (). ¿Por qué? He adjuntado la fuente en este enlace: PBIX Link

@dedelman_clng ha sido de gran ayuda y quería recuperar esto.

AntrikshSharma

@Anónimo Así:?

1.PNG

Alert Sum_V% =
VAR _session_date =
    CALCULATE (
        MAX ( 'Verizon Call Reason'[session_date] ),
        ALL ( 'Verizon Call Reason' )
    )
VAR _alert_table =
    CALCULATETABLE (
        ADDCOLUMNS (
            SUMMARIZE ( 'Verizon Call Reason', 'Verizon Call Reason'[call_reason_derived] ),
            "@Alert", [Alert_V%]
        ),
        ALL ()
    )
VAR Result =
    FILTER (
        _alert_table,
        CONTAINSSTRING ( [@Alert], "Share Volume: > 1.5 Std Dev" )
    )
RETURN
    Result

Para medir, simplemente envuelva el resultado dentro de COUNTROWS ()

1.PNG

1.PNG

AntrikshSharma

@Anónimo Así:?

1.PNG

Alert Sum_V% =
VAR _session_date =
    CALCULATE (
        MAX ( 'Verizon Call Reason'[session_date] ),
        ALL ( 'Verizon Call Reason' )
    )
VAR _alert_table =
    CALCULATETABLE (
        ADDCOLUMNS (
            SUMMARIZE ( 'Verizon Call Reason', 'Verizon Call Reason'[call_reason_derived] ),
            "@Alert", [Alert_V%]
        ),
        ALL ()
    )
VAR Result =
    FILTER (
        _alert_table,
        CONTAINSSTRING ( [@Alert], "Share Volume: > 1.5 Std Dev" )
    )
RETURN
    Result

Para medir, simplemente envuelva el resultado dentro de COUNTROWS ()

1.PNG

1.PNG

Anónimo

En respuesta a AntrikshSharma

¡Esto funciona como un sueño! Una pregunta, también quiero contar el número de std ev al revés. Te filtraste por

«Volumen compartido:> 1,5 Std Dev»

Y también quiero filtrar por

«Volumen compartido: <1,5 Std Dev"

Sera eso:

Alert Sum_V% =
VAR _session_date =
    CALCULATE (
        MAX ( 'Verizon Call Reason'[session_date] ),
        ALL ( 'Verizon Call Reason' )
    )
VAR _alert_table =
    CALCULATETABLE (
        ADDCOLUMNS (
            SUMMARIZE ( 'Verizon Call Reason', 'Verizon Call Reason'[call_reason_derived] ),
            "@Alert", [Alert_V%]
        ),
        ALL ()
    )
VAR Result =
    CALCULATE(
       COUNTROWS(
         FILTER (
        _alert_table,
        CONTAINSSTRING ( [@Alert], "Share Volume: > 1.5 Std Dev" )
    )
FILTER (
        _alert_table,
        CONTAINSSTRING ( [@Alert], "Share Volume: < 1.5 Std Dev" )
    )
RETURN
    Result

¿Estás viendo si puedo seguir esta ruta?

AntrikshSharma

En respuesta a Anónimo

@Anónimo ¿Te refieres a 7 + filas para «Volumen compartido: <1,5 Std Dev" ? entonces puedes usar:

Alert Sum_V% = 
VAR _session_date =
    CALCULATE (
        MAX ( 'Verizon Call Reason'[session_date] ),
        ALL ( 'Verizon Call Reason' )
    )
VAR _alert_table =
    CALCULATETABLE (
        ADDCOLUMNS (
            SUMMARIZE ( 'Verizon Call Reason', 'Verizon Call Reason'[call_reason_derived] ),
            "@Alert", [Alert_V%]
        ),
        ALL ()
    )
VAR Result =
    FILTER (
        _alert_table,
        CONTAINSSTRING ( [@Alert], "Share Volume: > 1.5 Std Dev" ) 
            || CONTAINSSTRING ( [@Alert], "Share Volume: < 1.5 Std Dev" ) 
    )
RETURN
    COUNTROWS ( Result )

Si prefiere algo que sea más reutilizable, entonces

Alert Sum_V% =
VAR _session_date =
    CALCULATE (
        MAX ( 'Verizon Call Reason'[session_date] ),
        ALL ( 'Verizon Call Reason' )
    )
VAR _alert_table =
    CALCULATETABLE (
        ADDCOLUMNS (
            SUMMARIZE ( 'Verizon Call Reason', 'Verizon Call Reason'[call_reason_derived] ),
            "@Alert", [Alert_V%]
        ),
        ALL ()
    )
VAR GreaterThan15 =
    FILTER (
        _alert_table,
        CONTAINSSTRING ( [@Alert], "Share Volume: > 1.5 Std Dev" )
    )
VAR LessThan15 =
    FILTER (
        _alert_table,
        CONTAINSSTRING ( [@Alert], "Share Volume: < 1.5 Std Dev" )
    )
VAR Result =
    COUNTROWS ( GreaterThan15 ) + COUNTROWS ( LessThan15 )
RETURN
    Result

Anónimo

En respuesta a AntrikshSharma

Gracias por su ayuda, tenía una pregunta aparte: hizo una variable para la fecha máxima en la consulta:

VAR _session_date =
    CALCULATE (
        MAX ( 'Verizon Call Reason'[session_date] ),
        ALL ( 'Verizon Call Reason' )
    )

Pero esto nunca se vuelve a utilizar en el resto de la fórmula. ¿Cómo sabe PowerBI / DAX cómo usar la fecha final cuando nunca se hace referencia a ella después de hacer la variable?

@AntrikshSharma

Mejor,

John

AntrikshSharma

En respuesta a Anónimo

@Anónimo Eso fue solo para reemplazar el MAXX que tenía en su fórmula. Puede eliminarlo si no lo necesita.

dedelman_clng

Llamar a usuarios de super DAX –

El comportamiento que está causando el problema de OP es que cuando ejecuta un SUMMARIZE y / o FILTER en la tabla de hechos y agrega medidas como nuevas columnas, todo va a 1, 0 o en blanco. Mientras que si toma la tabla de hechos con las medidas y las coloca en una tabla simple visual, los valores se muestran correctamente.

He adjuntado un pbix que ha dejado el código de OP prácticamente intacto, pero creé una tabla a través de SUMMARIZE, agregando cada una de las medidas individuales que se acumulan en la medida final. En la página «SU MIRAR AQUÍ», puse las tablas una al lado de la otra: tabla de hechos con medidas y tabla de RESUMEN.

Estoy seguro de que algo está sucediendo con la fila / filtro / otro contexto y aquí es donde se vuelve confuso para mí. Se agradece cualquier ayuda.

@Greg_Deckler
@AntrikshSharma
@vanessafvg
@PaulDBrown
@ tex628
@EricHulshof
@ Tahreem24
@OwenAuger
@mahoneypat
@nandukrishnavs
@TomMartens

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *