La función COMBINEVALUES une dos o más cadenas de texto en un único string añadiendo un separador entre ellas.
COMBINEVALUES(
delimiter,
expression,
expression
[, expression]...
)
- delimiter: Separador a usar entre las expresiones. Debe ser un valor constante.
- expression: Expresiones DAX cuyos valores serán concatenados en un único string.
La función COMBINEVALUES devuelve una cadena de texto.
El principal objetivo de esta función es dar soporte a las relaciones multi columna en modelos DirectQuery. Así, por ejemplo, si se desea crear una relación entre las columnas c1 y c2 de la tabla1 y las columnas c1 y c2 de la tabla2, se pueden crear dos columnas calculadas, una en cada tabla, de la siguiente manera:
tabla1[columna-calculada] = COMBINEVALUES(",", tabla1[c1], tabla1[c2])
tabla2[columna-calculada] = COMBINEVALUES(",", tabla2[c1], tabla2[c2])
...y crear una relación entre tabla1[columna-calculada] y tabla2[columna-calculada].
La función COMBINEVALUES asume -aunque no lo valida- que si los valores de entrada (los valores de las columnas c1 y c2 de las tablas 1 y 2 en el ejemplo anterior) son diferentes, también lo serán los valores de salida. De esta forma, si las columnas c1 y c2 de una fila de la tabla 1 contienen los valores "|" y "" (una cadena de texto vacía), por ejemplo, y las columnas c1 y c2 de una fila de la tabla 2 contiene los valores "" y "|", si se escoge como delimitador el carácter "|" la concatenación de ambas columnas sería "||" en ambas tablas, lo que llevaría a DAX a asumir que ambas filas deben combinarse juntas, cuando no es así. Es responsabilidad del usuario escoger los delimitadores correctos para asegurar que esta combinación se produce de la manera esperada.
Si partimos de una tabla Geography conteniendo información sobre localizaciones geográficas, información que incluye el país y el código postal en los campos Country y PostalCode respectivamente, podemos crear una columna calculada Country PostalCode que concatene ambos campos con una coma como separador con la siguiente medida: