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


COMBINEVALUES

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

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

Синтаксис

COMBINEVALUES(<delimiter>, <expression>, <expression>[, <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 зависит от пользователей, чтобы выбрать соответствующий разделитель, чтобы гарантировать, что уникальные сочетания входных значений создают отдельные выходные строки, но не проверяют, является ли предположение истинным. Например, если пользователь выбирает "| " в качестве разделителя, но одна строка в Table1 содержит 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 г.