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
j_w
Helper IV
Helper IV

DAX cómo contar condicionalmente

image.png

Notas:

1. El campo TestPeriod es el tipo de número y aumenta para el siguiente nuevo período de prueba

Pregunta:

¿Cómo escribir DAX para calcular el número de TestUser único que nunca pasó en las pruebas anteriores (no incluir el período de prueba seleccionado actual) durante un período de prueba seleccionado?

Por ejemplo:

Para TestPeriod 2003, se cuentan los 4 usuarios de prueba, porque no hay ninguna prueba previa

Para TestPeriod 2004, se cuentan 3 usuarios C, D, E:

- El usuario A tiene un registro de apaso en el TestPeriod 2003 anterior, no contado

- El usuario B tiene un registro de apaso en el TestPeriod 2003 anterior, no contado

- El usuario C, D, E no tiene registro de pase en períodos de prueba anteriores, contado (nota: el usuario D se unió a dos pruebas en el mismo período de prueba 2004, pero debe contarse como un usuario en el DAX)

Para TestPeriod 2005, se cuentan 2 usuarios D y F

1 ACCEPTED SOLUTION
mahoneypat
Employee
Employee

Pruebe esta medida en una tabla con el Período de prueba (No resumir). Devuelve los resultados esperados. Nota: Creo que el resultado para 2005 debería ser 3 como BDF como fallido en el período anterior. Si no es 3, por favor explique más.

Usuarios nuevos o con errores anteriores, var currentlist, VALUES('Table'[TestUser])
var currentperiod á SELECTEDVALUE('Table'[TestPeriod])
var prevperiodpassing á CALCULATETABLE(VALUES('Table'[TestUser]), ALL('Table'), 'Table'[TestPeriod]'currentperiod-1, 'Table'[TestResult]'"Pass")
var excepttable á EXCEPT(currentlist, prevperiodpassing)
devolver COUNTROWS(excepttable)
Si esto funciona para usted, por favor márquelo como la solución. Los felicitaciones también son apreciados. Por favor, avísame si no.
saludos
palmadita




Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


View solution in original post

5 REPLIES 5
MFelix
Super User
Super User

Hola @j_w ,

Pruebe la siguiente medida:

Measure =
VAR Current_Period =
    SELECTEDVALUE ( Tests[TestPeriod] )
VAR temp_table_previous =
    SUMMARIZE (
        FILTER (
            ALL ( Tests[TestPeriod]; Tests[TestResult]; Tests[TestUser] );
            Tests[TestPeriod] < Current_Period
                && Tests[TestResult] = "PASS"
        );
        Tests[TestUser]
    )
VAR temp_table_current =
    SUMMARIZE (
        FILTER ( ALL ( Tests ); Tests[TestPeriod] = Current_Period );
        Tests[TestUser]
    )
VAR count_new_user =
    FILTER (
        ADDCOLUMNS (
            SUMMARIZE ( Tests; Tests[TestUser]; Tests[TestPeriod] );
            "TTT"; CALCULATE ( COUNT ( Tests[TestUser] ); Tests[TestPeriod] < Current_Period )
        );
        [TTT] = BLANK ()
    )
RETURN
    COUNTROWS ( count_new_user )
        + COUNTROWS ( INTERSECT ( temp_table_previous; temp_table_current ) )

Esto me está dando el resultado correcto sin embargo, con un número tan pequeño de puntos de datos puede haber un error.


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



Hola @MFelix

Gracias por su respuesta, funciona muy bien, tengo que reemplazar todo el punto y coma a coma, de lo contrario hubo error de sintaxis DAX para mí.

Hola @j_w ,

Eso tiene que ver con la configuración regional en mi ordenador utilizo el ; como separador de sintaxis.

Me alegro de que haya funcionado.


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



mahoneypat
Employee
Employee

Pruebe esta medida en una tabla con el Período de prueba (No resumir). Devuelve los resultados esperados. Nota: Creo que el resultado para 2005 debería ser 3 como BDF como fallido en el período anterior. Si no es 3, por favor explique más.

Usuarios nuevos o con errores anteriores, var currentlist, VALUES('Table'[TestUser])
var currentperiod á SELECTEDVALUE('Table'[TestPeriod])
var prevperiodpassing á CALCULATETABLE(VALUES('Table'[TestUser]), ALL('Table'), 'Table'[TestPeriod]'currentperiod-1, 'Table'[TestResult]'"Pass")
var excepttable á EXCEPT(currentlist, prevperiodpassing)
devolver COUNTROWS(excepttable)
Si esto funciona para usted, por favor márquelo como la solución. Los felicitaciones también son apreciados. Por favor, avísame si no.
saludos
palmadita




Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Greg_Deckler
Super User
Super User

No estoy captando tu lógica para a quién contar y quién no contar. Pero vea mi artículo sobre el tiempo medio entre el fracaso (MTBF) que utiliza EARLIER: http://community.powerbi.com/t5/Community-Blog/Mean-Time-Between-Failure-MTBF-and-Power-BI/ba-p/3395...

Tendrás que usar EARLIER o alguna construcción como él para hacer lo que quieras.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

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.

Top Solution Authors