DAX para comparar columnas de tablas diferentes

Un usuario Pregunto ✅

DevinB4

Hola

Quiero comparar el recuento de una columna de una tabla con el valor de una columna de otra tabla. En el ejemplo siguiente, hay una columna [Count of SequenceNumber] en ‘TableA’ y una columna [COUNT_TOTAL] en ‘TablaB’. Estas tablas tienen una relación en sus números de secuencia y la cardinalidad es de muchos a muchos.

DevinB4_0-1604539618134.png

Quiero poder ejecutar una instrucción IF para comprobar si estos valores coinciden. El siguiente seria el ejemplo de lo que esperaria:

DevinB4_1-1604539699486.png

Cuando intente el ejemplo:

¿Partido? • SI(‘TablaB'[COUNT_TOTAL] – CONTAR(TablaA[SequenceNumber]),»SÍ NO»)
Solo recibo «NO» en mi nueva columna [MATCH?], que no es lo que quiero. Siento que similarmente perdí éxito estoy algunos conocimientos fundamentales de DAX, pero he probado soluciones usando RELATED (dado que es una relación de muchos a muchos) y no he tenido. ¡Esperando que alguien pueda aclarar mi problema, gracias!

Hola @DevinB4,

¿Podría decirme si su problema ha sido resuelto? Si es así, acédi es la solución. Más gente se beneficiará de ello. O todavía está confundido al respecto, por favor proporcione más detalles sobre su tabla y su problema.
Saludos
Yuna

Hola @DevinB4,

En función de su descripción, puede crear una columna calculada de la siguiente manera.

mis tablas de prueba:

v-yuaj-msft_0-1606897941513.png

Columna: IF(ISBLANK(LOOKUPVALUE('B'[COUNT_TOTAL],'B'[COUNT_TOTAL],'A'[Count of Sequence Number])),"no","yes")
Resultado:

v-yuaj-msft_1-1606897956639.png

Espero que eso sea lo que estaba buscando.

Saludos

Yuna

Si esta publicación ayuda,entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Ashish_Mathur

Hola

Intente utilizar la función LOOKUPVALUE().

DevinB4

En respuesta a Ashish_Mathur

Hola @Ashish_Mathur,

He intentado LOOKUPVALUE() aquí en una iteración anterior, pero sin éxito. Mi problema es que cuando intente comparar valores de una tabla con otra, DAX permitirá que la función se ejecute, pero no será el equipo. Trató de calcular la diferencia entre una medida del recuento del número de secuencia menos COUNT_TOTAL y obtuvo resultados inesperados. Además, al intentar ejecutar una instrucción IF solo se producirán todas las respuestas «YES» o «NO».

La solución aquí debe ser simple. debería ser capaz de comparar una medida en una tabla con una columna en otra, pero hay algún problema subyacente.

Ashish_Mathur

En respuesta a DevinB4

Hola

Comparte el enlace desde donde puedo descargar tu archivo PBI.

DevinB4

En respuesta a Ashish_Mathur

Hola Ashish,

Este informe de PBI utiliza dos de mis conexiones de SQL Server y no podría compartir. ¡Agradezco tu intento de ayudar!

mejor

Devin

amichandak

@DevinB4 , Crear un número de secuencia de tabla común/puente y unir a ambas tablas con la secuencia no de esta nueva tabla y ahora usando la secuencia no de esta nueva tabla analizar los datos juntos

Como crear la tabla de puentes :https://www.youtube.com/watch?v=Bkf35Roman8

DevinB4

En respuesta a amichandak

Hola Amit y gracias por la respuesta,

Probó una conexión de puente como se da en el video y creó dos de uno a muchas relaciones en lugar de muchos a muchos.

Con este cambio mi [COUNT_TOTAL] no puede calcularse correctamente. Este valor predeterminado es «sum» (y resume todas las filas de esa columna) y cuando intente cambiar a «no resumir» los errores visuales de la tabla.

Todavía intenté ejecutar mi instrucción IF compartida anteriormente después de crear el puente. Esto produjo los mismos resultados.

Para proporcionar más contexto a la procedencia de estos datos, cada tabla de Power BI ejecuta una consulta en una tabla de SQL Server en bases de datos independientes. Esperemos que esto ayude a determinar una solución potencial.

Solo estoy buscando la carga de valores distintos desde el servidor SQL Server ‘TableB’ para establecer una relación de uno a muchos. Intentaré esto e informaré sobre mis conclusiones.

Deja un comentario

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