Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

We've captured the moments from FabCon & SQLCon that everyone is talking about, and we are bringing them to the community, live and on-demand. Starts on April 14th. Register now

Reply
Syndicate_Admin
Administrator
Administrator

Número de veces que hay una "coincidencia perfecta" de varias variables para un número de identificación determinado

Hola a todos,

En primer lugar, aquí están los datos de muestra para usar para esta pregunta en particular: https://docs.google.com/spreadsheets/d/1b7wHvmb_8t6voY8Fri0PVG38qB3s33vA_mRtBDg4-AM/edit?gid=0#gid=0

Aquí tenemos un conjunto de datos compuesto por tres páginas: la primera página contiene los datos en sí, mientras que las otras dos contienen una tabla de coincidencias para las fechas y una clave para la columna "Atributo" en la primera página. (Tengo una tabla de fechas, pero no la incluí en la muestra).

La columna ID de mcs_clientinsession puede tener 1 o más ID de SCORE asociados. Esa puntuación se compone de una serie de "atributos" que a su vez están asociados a un determinado "tipo de atributo" (que se encuentra en la página de claves). A partir de esto tenemos que responder a las siguientes preguntas (que supongo que se harían en una medida, o en una serie de medidas):

1. Cuántos ID de mcs_clientinsession tienen 2 o más ID de SCORE con atributos *que coinciden perfectamente* dentro de uno o más 'tipos de atributos'. (Por ejemplo, si un ID de ClientInSession determinado tiene 2 SCORES, y uno de esos SCORES tiene "Mcs_Skills" y "mcs_familyfunctioning", solo se consideraría una "coincidencia perfecta" si el segundo SCORE para ese ID de ClientinSession tuviera los *exactamente mismos* atributos asociados asociados).

2. Para cada 'tipo de atributo', ¿cuántos ID de mcs_clientinsession tienen 2 o más ID de SCORE con atributos *que coinciden perfectamente*

3. ¿Cuántos ID de mcs_clientinsession tienen 2 o más ID DE PUNTUACIÓN sin atributos *que coincidan perfectamente* dentro de uno o más 'tipos de atributos'.

4. Para cada 'tipo de atributo', ¿cuántos ID de mcs_clientinsession tienen 2 o más ID DE PUNTUACIÓN sin atributos *que coincidan perfectamente*

5. ¿Cuántos mcs_clientinsession tener 1 o más ID de SCORE con al menos un atributo del tipo "Satisfacción".

¡Espero que todo esto haya tenido sentido! He probado algunas cosas ahora y obtuve los números que esperaríamos ver: estoy feliz de tomar cualquier orientación disponible y puedo proporcionar aclaraciones sobre cualquier punto a pedido.

Saludos cordiales,
Defecto

7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

Hola @Flawn ,

Respondo a su primera pregunta temporalmente. Si te he entendido mal, por favor corrígeme.

Use la siguiente expresión DAX para crear columnas.

AttributeType = RELATED('Attribute Key'[Attribute Type])
isPerfectlyMatching =
VAR _clientinsession = [mcs_clientinsession]
VAR _score = [Score]
VAR _table1 =
    SELECTCOLUMNS (
        FILTER (
            VALUES ( 'Data' ),
            'Data'[mcs_clientinsession] = _clientinsession
                && 'Data'[Score] = _score
        ),
        "AttributeType", [AttributeType]
    )
VAR _table2 =
    SELECTCOLUMNS (
        FILTER (
            VALUES ( 'Data' ),
            'Data'[mcs_clientinsession] = _clientinsession
                && 'Data'[Score] <> _score
        ),
        "AttributeType", [AttributeType]
    )
RETURN
    IF (
        ISEMPTY ( EXCEPT ( _table1, _table2 ) )
            && ISEMPTY ( EXCEPT ( _table2, _table1 ) ),
        TRUE (),
        FALSE ()
    )

vzhouwenmsft_1-1722417112725.png

Resultado final

vzhouwenmsft_0-1722417070794.png

Saludos
Wenbin Zhou

Hola Wenbin Zhou,

Este es un muy buen comienzo, pero no es precisamente lo que necesitamos. Cuando ejecuté esta fórmula, parecía producir resultados que requerían que un ID de clientinsession determinado tuviera una "coincidencia perfecta" en los 3 tipos de atributos simultáneamente. Para la primera pregunta, un ID de clientinsession debe contarse como verdadero siempre que haya una coincidencia perfecta en cualquiera de los tres tipos de atributos.

Capture.PNG


Gracias por su ayuda hasta ahora, esto ya está mucho más cerca de lo que queríamos obtener de lo que mis propios esfuerzos pudieron producir. ¡Espero que puedas ayudarme a llevar esto hasta la línea de meta!

Saludos cordiales,
Defecto

Hola @Flawn ,

¿Quiere decir que si un tipo tiene el mismo 'ID de puntuación', cuenta como una coincidencia perfecta? ¿O tres veces?

vzhouwenmsft_0-1722492595201.png

Hola @v-zhouwen-msft

Perdón por cualquier confusión que haya causado mi resaltado. Lo hice para identificar que, si bien el tipo de evaluación "Satisfacción" no tiene coincidencias perfectas (solo hay un conjunto para cada uno de sus tipos de evaluación), hay coincidencias perfectas para las categorías Objetivos y Circunstancias, por lo que este ejemplo de clientID en particular debería haberse marcado como "Verdadero" para la coincidencia perfecta.

Hola @Flawn ,

Debería entender lo que necesitas, aquí está el ID de ejemplo que encontré.

vzhouwenmsft_0-1722497048479.png

Pruebe esto.

isPerfectlyMatching =
VAR _clientinsession = [mcs_clientinsession]
VAR _score = [Score]
VAR _table1 =
    DISTINCT (
        SELECTCOLUMNS (
            FILTER (
                VALUES ( 'Data' ),
                'Data'[mcs_clientinsession] = _clientinsession
                    && 'Data'[Score] = _score
            ),
            "AttributeType", [AttributeType]
        )
    )
VAR _table2 =
    DISTINCT (
        SELECTCOLUMNS (
            FILTER (
                VALUES ( 'Data' ),
                'Data'[mcs_clientinsession] = _clientinsession
                    && 'Data'[Score] <> _score
            ),
            "AttributeType", [AttributeType]
        )
    )
VAR _table3 =
    ADDCOLUMNS (
        _table1,
        "isMatch",
            IF (
                [AttributeType] IN SELECTCOLUMNS ( _table2, "AttributeType", [AttributeType] ),
                "YES",
                "NO"
            )
    )
RETURN
    IF (
        COUNTROWS ( FILTER ( _table3, [isMatch] = "YES" ) ) > 0,
        TRUE (),
        FALSE ()
    )

vzhouwenmsft_1-1722497092781.png

Saludos
Wenbin Zhou

¡Esto se ve perfecto! Bien hecho @v-zhouwen-msft.

¿Alguna idea para las otras preguntas?

Hola @Flawn ,

Con respecto a su segunda pregunta, en este caso, ¿el ID pertenece a 'Objetivos' o 'circunstancia' o a ambos?

vzhouwenmsft_0-1722586059082.png

Con respecto a la tercera pregunta, el resultado debe ser el opuesto al de la primera pregunta.

Pruebe esto

noPerfectlyMatching = 
VAR _clientinsession = [mcs_clientinsession]
VAR _score = [Score]
VAR _table1 =
    DISTINCT (
        SELECTCOLUMNS (
            FILTER (
                VALUES ( 'Data' ),
                'Data'[mcs_clientinsession] = _clientinsession
                    && 'Data'[Score] = _score
            ),
            "AttributeType", [AttributeType]
        )
    )
VAR _table2 =
    DISTINCT (
        SELECTCOLUMNS (
            FILTER (
                VALUES ( 'Data' ),
                'Data'[mcs_clientinsession] = _clientinsession
                    && 'Data'[Score] <> _score
            ),
            "AttributeType", [AttributeType]
        )
    )
VAR _table3 =
    ADDCOLUMNS (
        _table1,
        "isMatch",
            IF (
                [AttributeType] IN SELECTCOLUMNS ( _table2, "AttributeType", [AttributeType] ),
                "YES",
                "NO"
            )
    )
RETURN
    IF (
        COUNTROWS ( FILTER ( _table3, [isMatch] = "YES" ) ) = 0,
        TRUE (),
        FALSE ()
    )

En cuanto a la cuarta pregunta, es la misma que la segunda.

Con respecto a su quinta pregunta, intente esto.

hasOneSatisfaction =
VAR _clientinsession = [mcs_clientinsession]
VAR _score = [Score]
VAR _table =
    SUMMARIZE (
        FILTER ( 'Data', [mcs_clientinsession] = _clientinsession ),
        [mcs_clientinsession],
        [Score]
    )
VAR _ScoreCount =
    COUNTROWS ( _table )
VAR _table2 =
    ADDCOLUMNS (
        FILTER ( 'Data', [mcs_clientinsession] = _clientinsession && [Score] = _score ),
        "haveCircumstances", IF ( [AttributeType] = "Circumstances", 1, 0 )
    )
RETURN
    IF (
        _ScoreCount >= 2
            && MAXX ( _table2, [haveCircumstances] ) = 1,
        TRUE (),
        FALSE ()
    )

Saludos
Wenbin Zhou

Helpful resources

Announcements
New to Fabric survey Carousel

New to Fabric Survey

If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.

Join our Fabric User Panel

Join our Fabric User Panel

Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.

March Power BI Update Carousel

Power BI Community Update - March 2026

Check out the March 2026 Power BI update to learn about new features.

Top Kudoed Authors