Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
4 years ago
Solved

Filtrado

Hola expertos,

A través de la siguiente tabla, estoy buscando 3 tablas por DAX.

1- Una tabla que muestra todos los usuarios que tienen 3 certificaciones A, B, C (certificación completa)

2 Una tabla que muestra los usuarios y sus certificaciones y certificaciones perdidas

3- Una tabla que muestra los usuarios que no tienen ninguna certificación.

koorosh_0-1647672898217.png

  • @koorosh

    Aquí están los códigos de tabla

    EVALUATE 
    FILTER (
        VALUES ( Table1[User] ),
        COUNTROWS (
            INTERSECT (
                CALCULATETABLE ( VALUES ( Table1[Certification] ) ),
                { "Cert A", "Cert B", "Cert C" }
            )
        ) = 3
    )
    
    EVALUATE
    ADDCOLUMNS (
        CROSSJOIN (
            VALUES ( Table1[user] ),
            SELECTCOLUMNS ( { "Cert A", "Cert B", "Cert C" }, "Cert", [Value] )
        ),
        "Status",
            VAR _cert = [Cert]
            RETURN
                IF (
                    CALCULATE ( ISEMPTY ( FILTER ( table1, table1[Certification] = _cert ) ) ),
                    "Missing",
                    "Certified"
                )
    )
    
    EVALUATE 
    FILTER (
        VALUES ( Table1[User] ),
        COUNTROWS (
            INTERSECT (
                CALCULATETABLE ( VALUES ( Table1[Certification] ) ),
                { "Cert A", "Cert B", "Cert C" }
            )
        ) = 0
    )


    Verifique el archivo adjunto debajo de mi firma

6 Replies

  • @koorosh

    Aquí están los códigos de tabla

    EVALUATE 
    FILTER (
        VALUES ( Table1[User] ),
        COUNTROWS (
            INTERSECT (
                CALCULATETABLE ( VALUES ( Table1[Certification] ) ),
                { "Cert A", "Cert B", "Cert C" }
            )
        ) = 3
    )
    
    EVALUATE
    ADDCOLUMNS (
        CROSSJOIN (
            VALUES ( Table1[user] ),
            SELECTCOLUMNS ( { "Cert A", "Cert B", "Cert C" }, "Cert", [Value] )
        ),
        "Status",
            VAR _cert = [Cert]
            RETURN
                IF (
                    CALCULATE ( ISEMPTY ( FILTER ( table1, table1[Certification] = _cert ) ) ),
                    "Missing",
                    "Certified"
                )
    )
    
    EVALUATE 
    FILTER (
        VALUES ( Table1[User] ),
        COUNTROWS (
            INTERSECT (
                CALCULATETABLE ( VALUES ( Table1[Certification] ) ),
                { "Cert A", "Cert B", "Cert C" }
            )
        ) = 0
    )


    Verifique el archivo adjunto debajo de mi firma

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Gracias Mohammed, si la fuente de datos de Excel tiene más columnas y quiero incluirlas en la T1 y T2, en la que Dax para T1 y T2, ¿debería traerlas? Por ejemplo nombre de la empresa de cada usuario y la fecha de cada certificación.

  • @koorosh ,

    Aquí la tercera:

    tomfox_3-1647679840340.png

    Table3 = 
    FILTER ( 
        SUMMARIZE (
            'Table',
            Table[User],
            "NumberOfDistinctCertifications", 
            CALCULATE ( 
                DISTINCTCOUNT ( Table[Certification] ), Table[Certification] in {"Cert A", "Cert B", "Cert C"} ),
            "NumberOfDistinctCourses", 
            CALCULATE ( 
                DISTINCTCOUNT ( Table[Certification] ), Table[Certification] in {"course"} )       
        ),
        [NumberOfDistinctCourses] > 0 && [NumberOfDistinctCertifications] < 1
    )

    ¿Esto ayuda? 🙂

    /Tom
    https://www.tackytech.blog/
    https://www.instagram.com/tackytechtom/