COMBINEVALUES
Dotyczy:kolumna obliczeniowatabela obliczeniowaMeasureobliczenia wizualne
Łączy dwa or więcej ciągów tekstowych w jeden ciąg tekstowy. Podstawową funkcją jest obsługa relacji wielokolumnach w modelach DirectQuery. Aby uzyskać szczegółowe informacje, zobacz uwagi.
Składnia
COMBINEVALUES(<delimiter>, <expression>, <expression>[, <expression>]…)
Parametry
Termin | Definicja |
---|---|
delimiter |
Separator do użycia podczas łączenia. Musi być stałą value. |
expression |
Wyrażenie DAX, którego value zostanie połączone w jeden ciąg tekstowy. |
Zwracanie value
Połączony ciąg.
Uwagi
Funkcja COMBINEVALUES zakłada, ale sprawdza, czy not zweryfikować, że gdy values wejściowe są różne, ciągi wyjściowe są również różne. Na podstawie tego założenia, gdy COMBINEVALUES jest używana do tworzenia kolumn obliczeniowych w celu utworzenia relacji łączącej wiele kolumn z dwóch tabel Trybu DirectQuery, w zapytaniu timejest generowany zoptymalizowany warunek sprzężenia. Na przykład if użytkownicy chcą utworzyć relację między tabelą Table1(Column1, Column2) and Table2(Column1, Column2), mogą utworzyć dwie kolumny obliczeniowe, jedną na każdej tabeli jako:
Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
and
Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
And następnie utworzyć relację między
Table1[CalcColumn]
andTable2[CalcColumn]
. W przeciwieństwie do innych funkcji DAXand operatorów, które są tłumaczone dosłownie na odpowiednie operatory SQL and funkcji, powyższa relacja generuje predykat sprzężenia SQL jako:(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)
Predykat sprzężenia może potencjalnie zapewnić znacznie lepszą wydajność zapytań niż taki, który obejmuje złożone operatory SQL and funkcji.
Funkcja COMBINEVALUES opiera się na użytkownikach, aby wybrać odpowiedni ogranicznik, aby upewnić się, że unikatowe kombinacje danych wejściowych values generują różne ciągi wyjściowe, ale not sprawdzić, czy założenie jest true. Na przykład if użytkownicy wybierają
"| "
jako ogranicznik, ale jeden wiersz w tabeli Table1 maTable1[Column1] = "| "
andTable2 [Column2] = " "
, podczas gdy jeden wiersz w tabeli Table2 maTable2[Column1] = " "
andTable2[Column2] = "| "
, dwa połączone dane wyjściowe będą takie same"|| "
, co wydaje się wskazywać, że dwa wiersze są zgodne w operacji sprzężenia. Dwa wiersze są not połączone ze sobą, if obie tabele pochodzą z tego samego źródła zapytania bezpośredniego, chociaż są one połączone if obie tabele są importowane.
Przykład
Następujące zapytanie DAX:
EVALUATE
DISTINCT (
SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)
Zwraca następującą tabelę z jedną kolumną:
[Month] |
---|
Styczeń 2020 r. |
Luty 2020 r. |
Marzec 2020 r. |
Kwiecień 2020 r. |
Maj 2020 r. |
Czerwiec 2020 r. |
Lipiec 2020 r. |
Sierpień 2020 r. |
Wrzesień 2020 r. |
Październik 2020 r. |
Listopad 2020 r. |
Grudzień 2020 r. |
Styczeń 2021 r. |
Styczeń 2021 r. |
Luty 2021 r. |
Marzec 2021 r. |
Kwiecień 2021 r. |
Maj 2021 r. |
Czerwiec 2021 r. |
Lipiec 2021 r. |
Sierpień 2021 r. |
Wrzesień 2021 r. |
Październik 2021 r. |
Listopad 2021 r. |
Grudzień 2021 r. |