COMBINEVALUES
Dotyczy: Obliczanie kolumny obliczeniowej tabeli Obliczeniowej Obliczenie wizualizacji
Łączy co najmniej dwa ciągi tekstowe 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 |
---|---|
Ogranicznik | Separator do użycia podczas łączenia. Musi być wartością stałą. |
wyrażenie | Wyrażenie języka DAX, którego wartość zostanie połączona z pojedynczym ciągiem tekstowym. |
Wartość zwracana
Połączony ciąg.
Uwagi
Funkcja COMBINEVALUES zakłada, ale nie sprawdza poprawności, że gdy wartości wejściowe są różne, ciągi wyjściowe również są różne. Na podstawie tego założenia, gdy funkcja COMBINEVALUES służy do tworzenia kolumn obliczeniowych w celu utworzenia relacji łączącej wiele kolumn z dwóch tabel DirectQuery, w czasie zapytania jest generowany zoptymalizowany warunek sprzężenia. Jeśli na przykład użytkownicy chcą utworzyć relację między tabelami Table1(Column1, Column2) i Table2(Column1, Column2), mogą utworzyć dwie kolumny obliczeniowe, jedną w każdej tabeli jako:
Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
oraz
Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
Następnie utwórz relację między
Table1[CalcColumn]
iTable2[CalcColumn]
. W przeciwieństwie do innych funkcji i operatorów języka DAX, które są tłumaczone dosłownie na odpowiednie operatory i funkcje SQL, powyższa relacja generuje predykat sprzężenia SQL jako:(Table1.Column1 = Table2.Column1 OR Table1.Column1 IS NULL AND Table2.Column1 IS NULL)
oraz
(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 i funkcje SQL.
Funkcja COMBINEVALUES opiera się na użytkownikach, aby wybrać odpowiedni ogranicznik, aby upewnić się, że unikatowe kombinacje wartości wejściowych generują odrębne ciągi wyjściowe, ale nie sprawdza, czy założenie jest prawdziwe. Jeśli na przykład użytkownicy wybiorą
"| "
jako ogranicznik, ale jeden wiersz w tabeli Table1 maTable1[Column1] = "| "
wartość iTable2 [Column2] = " "
, a jeden wiersz w tabeli Table2Table2[Column1] = " "
iTable2[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 nie są łączone razem, jeśli obie tabele pochodzą z tego samego źródła zapytania bezpośredniego, chociaż są one łączone razem, jeśli obie tabele są importowane.
Przykład
Następujące zapytanie języka DAX:
EVALUATE
DISTINCT (
SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)
Zwraca następującą tabelę z jedną kolumną:
[Miesiąc] |
---|
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. |