concat 函數的範例

CONCAT() 函數不得與 CONCATENATE 指令碼關鍵字相混淆。

簡單來說,Concat() 是用來將多個值/文字/選項串連/聯結成一個字串。不過,它可以用在許多方面,協助解決不同的問題。所有範例均依據下列表格:

簡單字串串連

上文提到,concat 函數可以串連值清單中的值。這些值可以是固定值,也可以是隨著選項/資料而變化的值。

=CONCAT(MyColumn,',')

=CONCAT(DISTINCT MyColumn,',')

這組簡單的 concat 陳述式會串連 MyColumn 資料行的所有可能值。您可能會想要新增相異 (DISTINCT) 關鍵字。這可確保各個值在字串中僅顯示一次。

ABC,DEF,GHI,JKL,MNO,PQR,STU,VWX

使用簡單的 concat 時,您可以選擇將排序加權新增到函數,以便按照您選擇的資料行排列字串值。以下範例已新增日期資料行來排序值。

 

=CONCAT(MyColumn, ',', Date)

結果:JKL,VWX,GHI,ABC,STU,PQR,MNO,DEF

運算式/set 陳述式中的 Concat()

將多個動態值傳遞到集合分析運算式

有時候您會想要將動態選取的值傳遞到 set 陳述式。若要這麼做,您需要將幾個單引號新增到字串,以便 CONCAT() 函數傳回 'JKL','VWX' 等等。但是,您無法直接使用單引號,因為評估 Concat 時會解譯單引號,而評估 set 運算式時則不會。需要改用 Chr() 函數:

 

=CONCAT(Chr(39)&MyColumn&Chr(39),',')

您可以接著將此 concat 陳述式傳遞到運算式內:

 

=Sum({<MyColumn={$(=CONCAT(Chr(39)&MyColumn&Chr(39),','))}>} Value)

在大多數情況下,可以在資料島出現時使用這項技巧。它可以讓您將值傳遞到不影響資料模型任何部份的運算式,因為資料島表格無法聯結至資料模型。

指令碼中的 Concat()

Concat 也可以在指令碼中用來將多列轉換為一個單一資料行值,就和其他任何彙總一樣。

記住先前使用的來源資料,指令碼端 CONCAT 的結果如下:

下列是此指令碼函數的結果:

使用 Rank() 影響 Concat()

開始使用其他函數來搭配 concat(),就會開始獲得明智的結果。在此範例中,Rank() 已用來擷取前三個演出者 (按照 Value) 並加以串連。

 

=CONCAT(IF(aggr(Rank(sum(Value)),MyColumn)<=3,MyColumn),',')

結果:ABC,MNO,STU