COMBINEVALUES
Se aplica a: Columna calculada Tabla calculada Medida Cálculo visual
combina dos o más cadenas de texto en una sola. El propósito principal de esta función es admitir relaciones de varias columnas en los modelos DirectQuery. Consulte Comentarios para obtener más detalles.
Sintaxis
COMBINEVALUES(<delimiter>, <expression>, <expression>[, <expression>]…)
Parámetros
Término | Definición |
---|---|
delimiter | Separador que se va a usar durante la concatenación. Debe ser un valor constante. |
expression | Expresión DAX cuyo valor se va a combinar en una sola cadena de texto. |
Valor devuelto
Cadena concatenada.
Notas
La función COMBINEVALUES da por hecho, aunque no valida, que si los valores de entrada son diferentes, las cadenas de salida también son diferentes. En función de esta premisa, cuando se usa COMBINEVALUES para crear columnas calculadas con el fin de generar una relación que combina varias columnas de dos tablas de DirectQuery, se genera una condición de combinación optimizada en el momento de la consulta. Por ejemplo, si los usuarios quieren crear una relación entre Table1(Column1, Column2) y Table2(Column1, Column2), pueden crear dos columnas calculadas, una en cada tabla, como:
Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
y
Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
Y luego crear una relación entre
Table1[CalcColumn]
yTable2[CalcColumn]
. A diferencia de otras funciones y operadores de DAX, que se traducen literalmente en los operadores y funciones de SQL correspondientes, la relación anterior genera un predicado de combinación de SQL como:(Table1.Column1 = Table2.Column1 OR Table1.Column1 IS NULL AND Table2.Column1 IS NULL)
y
(Table1.Column2 = Table2.Column2 OR Table1.Column2 IS NULL AND Table2.Column2 IS NULL)
El predicado de combinación puede ofrecer potencialmente un rendimiento de consulta mucho mejor que uno que implique operadores y funciones de SQL complejos.
La función COMBINEVALUES se basa en los usuarios para elegir el delimitador adecuado con el fin de asegurarse de que combinaciones únicas de valores de entrada produzcan cadenas de salida distintas, pero no valida que la premisa sea verdadera. Por ejemplo, si los usuarios eligen
"| "
como delimitador, pero una fila de Table1 tieneTable1[Column1] = "| "
yTable2 [Column2] = " "
, mientras que una fila de Table2 tieneTable2[Column1] = " "
yTable2[Column2] = "| "
, las dos salidas concatenadas generan"|| "
, lo que parece indicar que las dos filas son una coincidencia de la operación de combinación. Las dos filas no se combinan si ambas tablas proceden del mismo origen de DirectQuery, aunque sí lo hacen si ambas tablas se importan.
Ejemplo
La consulta DAX siguiente:
EVALUATE
DISTINCT (
SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)
Devuelve la tabla siguiente de una sola columna:
[Mes] |
---|
Enero de 2020 |
Febrero de 2020 |
Marzo de 2020 |
Abril de 2020 |
Mayo de 2020 |
Junio de 2020 |
Julio de 2020 |
Agosto de 2020 |
Septiembre de 2020 |
Octubre de 2020 |
Noviembre de 2020 |
Diciembre de 2020 |
Enero de 2021 |
Enero de 2021 |
Febrero de 2021 |
Marzo de 2021 |
Abril de 2021 |
Mayo de 2021 |
Junio de 2021 |
Julio de 2021 |
Agosto de 2021 |
Septiembre de 2021 |
Octubre de 2021 |
Noviembre de 2021 |
diciembre de 2021 |