COMBINEVALUES
применимо:вычисляемый столбецвычисляемой таблицеMeasureвизуального вычисления
Объединяет две or больше текстовых строк в одну текстовую строку. Основной целью этой функции является поддержка связей с несколькими столбцами в моделях DirectQuery. Дополнительные сведения см. в примечаниях.
Синтаксис
COMBINEVALUES(<delimiter>, <expression>, <expression>[, <expression>]…)
Параметры
Срок | Определение |
---|---|
delimiter |
Разделитель, используемый во время объединения. Должен быть константой value. |
expression |
Выражение DAX, value которого будет присоединено к одной текстовой строке. |
Возврат value
Сцепленная строка.
Замечания
Функция COMBINEVALUES предполагает, но not проверяет, что, если входные values отличаются, выходные строки также отличаются. Исходя из этого предположения, когда COMBINEVALUES используется для создания вычисляемых столбцов для создания связи, которая объединяет несколько столбцов из двух таблиц DirectQuery, оптимизированное условие соединения создается при запросе time. Например, if пользователи хотят создать связь между Table1(Column1, Column2) and Table2(Column1, Column2), они могут создавать два вычисляемых столбца, по одному в каждой таблице, как:
Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
and
Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
And затем создайте связь между
Table1[CalcColumn]
andTable2[CalcColumn]
. В отличие от других DAX функций and операторов, которые переводятся буквально в соответствующие операторы SQL and функции, приведенные выше связи создают предикат соединения SQL следующим образом:(Table1.Column1 = Table2.Column1 OR Table1.Column1 IS NULL AND Table2.Column1 IS NULL)
and
(Table1.Column2 = Table2.Column2 OR Table1.Column2 IS NULL AND Table2.Column2 IS NULL)
Предикат соединения может обеспечить гораздо лучшую производительность запросов, чем один из них, включающий сложные операторы SQL and функции.
Функция COMBINEVALUES зависит от пользователей, чтобы выбрать соответствующий разделитель, чтобы гарантировать, что уникальные сочетания входных values создают различные выходные строки, но not проверяет, что предположение true. Например, if пользователи выбирают
"| "
в качестве разделителя, но одна строка в Table1 имеетTable1[Column1] = "| "
andTable2 [Column2] = " "
, а одна строка в Table2 имеетTable2[Column1] = " "
andTable2[Column2] = "| "
, два объединенных выходных данных будут одинаковыми"|| "
, которые, как представляется, указывают на то, что две строки совпадают в операции соединения. Две строки not объединяются вместе if обе таблицы находятся из одного источника DirectQuery, хотя они объединяются вместе if импортируются обе таблицы.
Пример
Следующий запрос DAX:
EVALUATE
DISTINCT (
SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)
Возвращает следующую таблицу одного столбца:
[Month] |
---|
Январь 2020 г. |
Февраль 2020 г. |
Март 2020 г. |
Апрель 2020 г. |
Май 2020 г. |
Июнь 2020 г. |
Июль 2020 г. |
Август 2020 г. |
Сентябрь 2020 г. |
Октябрь 2020 г. |
Ноябрь 2020 г. |
Декабрь 2020 г. |
Январь 2021 г. |
Январь 2021 г. |
Февраль 2021 г. |
Март 2021 г. |
Апрель 2021 г. |
Май 2021 г. |
Июнь 2021 г. |
Июль 2021 г. |
Август 2021 г. |
Сентябрь 2021 г. |
Октябрь 2021 г. |
Ноябрь 2021 г. |
Декабрь 2021 г. |