Don't miss your chance to take the Fabric Data Engineer (DP-700) exam on us!
Learn moreWe'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
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
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 ()
)
Resultado final
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.
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?
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é.
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 ()
)
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?
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
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.
Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.