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 函式依賴使用者選擇適當的分隔符,以確保輸入值的唯一組合會產生不同的輸出字串,但不會驗證假設是否成立。 例如,如果使用者選擇
"| "
做為分隔符,但 Table1 中的一個數據列有Table1[Column1] = "| "
和Table2 [Column2] = " "
,而 Table2 中的一個數據列Table2[Column1] = " "
和Table2[Column2] = "| "
,則兩個串連輸出會是相同的"|| "
,這似乎表示兩個數據列在聯結作業中相符。 如果兩個數據表都來自相同的 DirectQuery 來源,則兩個數據列不會聯結在一起,但如果兩個數據表都匯入,它們會聯結在一起。
例
下列 DAX 查詢:
EVALUATE
DISTINCT (
SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)
傳回下列單一資料列資料表:
[Month] |
---|
2020 年 1 月 |
2020 年 2 月 |
2020 年 3 月 |
2020 年 4 月 |
2020 年 5 月 |
2020 年 6 月 |
2020 年 7 月 |
2020 年 8 月 |
2020 年 9 月 |
2020 年 10 月 |
2020 年 11 月 |
2020 年 12 月 |
2021 年 1 月 |
2021 年 1 月 |
2021年2月 |
2021 年 3 月 |
2021年4月 |
2021 年 5 月 |
2021年6月 |
2021年7月 |
2021 年 8 月 |
2021年9月 |
2021年10月 |
2021年11月 |
2021年12月 |