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


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 г.