Поделиться через


COMBINEVALUES

применяется:вычисляемый столбецвычисляемой таблицыизмерениевизуального вычисления

Объединяет две или несколько текстовых строк в одну текстовую строку. Основной целью этой функции является поддержка связей с несколькими столбцами в моделях DirectQuery. Дополнительные сведения см. в примечаниях.

Синтаксис

COMBINEVALUES(<delimiter>, <expression>, <expression>[, <expression>]…)

Параметры

Срок Определение
delimiter Разделитель, используемый во время объединения. Должно быть константным значением.
expression Выражение DAX, значение которого будет присоединено к одной текстовой строке.

Возвращаемое значение

Сцепленная строка.

Замечания

  • Функция COMBINEVALUES предполагает, но не проверяет, что если входные значения отличаются, выходные строки также отличаются. Исходя из этого предположения, когда COMBINEVALUES используется для создания вычисляемых столбцов для создания связи, которая объединяет несколько столбцов из двух таблиц DirectQuery, оптимизированное условие соединения создается во время запроса. Например, если пользователи хотят создать связь между Table1(Column1, Column2) и Table2(Column1, Column2), они могут создать два вычисляемых столбца, по одному в каждой таблице, как:

    Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
    

    и

    Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
    

    А затем создайте связь между Table1[CalcColumn] и Table2[CalcColumn]. В отличие от других DAX функций и операторов, которые переводятся буквально в соответствующие операторы и функции SQL, приведенные выше отношения создают предикат соединения SQL следующим образом:

    (Table1.Column1 = Table2.Column1 OR Table1.Column1 IS NULL AND Table2.Column1 IS NULL)
    

    и

    (Table1.Column2 = Table2.Column2 OR Table1.Column2 IS NULL AND Table2.Column2 IS NULL)
    
  • Предикат соединения может обеспечить гораздо лучшую производительность запросов, чем один из них, включающий сложные операторы и функции SQL.

  • Функция COMBINEVALUES зависит от пользователей, чтобы выбрать соответствующий разделитель, чтобы гарантировать, что уникальные сочетания входных значений создают отдельные выходные строки, но не проверяют, является ли предположение истинным. Например, если пользователи выбирают "| " в качестве разделителя, но одна строка в Таблице1 имеет Table1[Column1] = "| " и Table2 [Column2] = " ", а одна строка в Table2 имеет Table2[Column1] = " " и Table2[Column2] = "| ", два объединенных выходных данных будут одинаковыми "|| ", которые, как представляется, указывают на то, что две строки совпадают в операции соединения. Две строки не объединяются, если обе таблицы находятся из одного источника DirectQuery, хотя они объединяются вместе, если обе таблицы импортируются.

Пример

Следующий запрос DAX:

EVALUATE
DISTINCT (
    SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)

Возвращает следующую таблицу одного столбца:

[месяц]
Январь 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 г.