concat 関数の例

CONCAT() 関数は、CONCATENATE スクリプトのキーワードと、混同してはいけません。

最もシンプルな形では、値/ワード/選択をひとつの文字列に結合させるのに、Concat() が使用されます。しかし、異なる問題を解決するのに役立つ多数の方法で、活用することが可能です。すべての例は、下記のテーブルに基づいています:

シンプルな文字列連結

これまでに説明した通り、concat 関数は、リストされた値を連結することができます。これら値はハード・コード化されたり、選択/データによって駆動されます。

=CONCAT(MyColumn,',')

=CONCAT(DISTINCT MyColumn,',')

このシンプルなconcat ステートメントで、列MyColumn の絞込値をすべて連結します。DISTINCT キーワードを追加した方がよい場合があります。追加すれば、各値は、文字列で一度のみ表示されるようになります。

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

シンプルなconcatを使用した場合、選択した列ごとに、文字列の値を順番に並べる関数に、sort weightを追加する選択肢が増えます。下記の例では、値をソートするために、データ列が追加されています。

 

=CONCAT(MyColumn, ',', Date)

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

数式/Set ステートメント内の Concat()

Set 分析の数式に複数の動的な値を渡す

Set ステートメントに動的な値の選択を渡したい場合があります。そうするためには、CONCAT() 関数が 'JKL' や 'VWX' などを返すように、文字列にシングル クォートを追加する必要があります。しかし、シングル クォートそのままで、使用することはできません。なぜなら、Set 数式が評価されているときではなく、Concat が評価されている時に、シングル クォートが解釈されるからです。よって代わりに、下記のようにChr() 関数を使用します:

 

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

そして、このconcat ステートメントを数式内に渡すことができます:

 

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

このテクニックはほとんどの場合、データ アイランドが存在するときに使用されます。データ アイランドのテーブルがデータ モデルに連結していないので、データ モデルに何の影響を及ぼさない数式に、値が渡されます。

スクリプト内の Concat()

また、Concat は、他の集計関数と同じように、複数の行を単一の列の値にコンバートするために、スクリプト内で使用されます。

以前、使用されていたソース データを把握している場合、スクリプト側CONCAT の結果は、以下の通りです:

以下は、このスクリプト関数の結果です:

Rank() を使用して、Concat() に影響を及ぼす

concat() と併せて、その他の関数を活用し始めると、うまく結果を達成できるようになります。この例では、(値に基づき)上位3名のパフォーマーを把握し、その結果を連結させるために、Rank() が使用されています。

 

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

Result: ABC,MNO,STU