En este tutorial, aprenderá una técnica de optimización de DAX mediante la función UNION. Este tutorial comparará el rendimiento de la función UNION frente a Power Query y otras técnicas para combinar tablas.
La función combina dos tablas en una sola tabla combinando sus filas y eliminando las filas duplicadas.
El ejemplo de este tutorial es una tabla de Ventas que se ha dividido en tres tablas para cada año (2007, 2008, 2009).
Tabla de contenido
La función UNION en DAX
Abra DAX Studio e inicie Server Timings and Query Plan.

El siguiente código DAX se utiliza como ejemplo:

Después de ejecutar el código, vaya a la pestaña Tiempos del servidor . Puede ver que el código tarda un total de 5,4 segundos en ejecutarse. La mayor parte del tiempo de ejecución se gastó en el motor de almacenamiento . Cada una de estas tres consultas contiene la misma operación, pero los años son diferentes.

Después de que el motor de almacenamiento devuelve estas tres consultas, el motor de fórmula realiza una UNIÓN, que se puede ver en el plan de consulta lógica. El Plan de consulta también realiza un para calcular las Ventas totales.

En el Plan de consulta física, puede ver los tres cachés de datos que contienen las operaciones realizadas para cada año en la tabla Ventas.

Comparación del rendimiento de DAX
Para construir la comparación, creemos una medida para Ventas totales utilizando la tabla Ventas original.

Si ejecuta este código y va a la pestaña Tiempos del servidor , puede ver que esto es significativamente más eficiente que la función UNION.
La función UNION consume 97,9 kilobytes, mientras que la nueva medida solo consume 1 KB.

Cuando usa UNION, el motor DAX devuelve una gran cantidad de caché de datos al motor Formula. Esto ejerce mucha presión sobre la memoria RAM.
Entonces, si está tratando con un modelo de datos que contiene más de un millón de filas, no se recomienda usar la función UNION.
Alternativas de la función UNION DAX
En lugar de usar UNION, puede usar tres funciones SUMX para este ejemplo. Es decir, una función SUMX para cada año.

Cuando ejecuta este código y va a la pestaña Tiempos del servidor, puede ver que el tiempo de ejecución es significativamente menor. Pasó de 5400 ms a 33 ms mientras aún ejecutaba tres consultas diferentes.

Otra forma es agregar la tabla del modelo de datos en Power Query o en la propia fuente de datos.
Pero la mejor opción es crear una tabla calculada que realice la unión de esas tres tablas. Pero esta opción tiene sus pros y sus contras.
El uso de una tabla calculada le permite ahorrar el tiempo de procesamiento general en lugar de realizar una adición en Power Query. Sin embargo, esto hará que aumente el tamaño de la base de datos en VertiPaq.
Cuando usa una tabla calculada, está creando una nueva tabla que combina las tres tablas. Pero estas tres tablas divididas seguirán estando en la base de datos.

En este ejemplo, las tres tablas consumen un total de 25 MB. Si crea una tabla calculada, consumirá otros 25 MB en su RAM.
Para casos delicados como estos, debe tomar una decisión informada sobre cuál sería el mejor curso de acción a tomar.
Conclusión
La función UNION en DAX combina dos tablas en una, lo que facilita el análisis de datos. Funciona tomando dos tablas como entrada y devolviendo una nueva tabla que contiene todas las filas de ambas tablas de entrada. Sin embargo, esta función tiene sus propias limitaciones.
La función UNION puede ser más lenta que otros métodos de combinación de datos, especialmente si las tablas de entrada son grandes. También puede consumir más espacio en el almacenamiento en comparación con otras alternativas.
Siempre que una situación requiera combinar tablas, es importante sopesar primero los pros y los contras antes de decidir usar la función UNION. Sus alternativas incluyen la función SUMX, una tabla de modelo de datos o una tabla calculada.
Mis mejores deseos,