コンテンツにスキップ

グループごとの結合

キーごとに、複数行の値を 1 つの文字列にまとめます。顧客ごとに買った商品名を並べる、注文ごとにタグをまとめる、といった使い方をします。

数値を合計したいならデータ集計を使ってください。こちらは文字をつなぐものです。同じ行の中で別々の列をつなぐだけなら文字列同士の結合です。

入出力

ポート内容
入力データデータ
出力データキーごとに 1 行にまとめたデータ

Spark エンジンでも動きます。

設定項目

結果の挿入先を設定
新規列に挿入(既定)か既存列に上書き。選んだ方で、次に出る項目が変わります。
新規列名を入力必須
「新規列に挿入」のときに出ます。つないだ結果を入れる列の名前。
キー列を選択必須
まとめる単位。複数選べます。
処理対象列を選択必須
つなぐ値が入っている列。1 列だけです。「既存列に上書き」のときは、この 1 項目が対象列と結果の列名を兼ねます(列名が元のまま残ります)。
区切り文字を入力必須
オプションの中にあります。値と値の間に入れる文字。既定は ,。
値の重複を削除して結合する
オプションの中にあります。既定は on。同じ値が複数あっても 1 回だけつなぎます。

出力の形

キーごとに 1 行になります。残るのはキー列とつないだ列だけで、他の列は消えます。つないだ列は文字列になります。

他の列も残したいなら、まとめたあとにキー列を指定する結合で元のデータに戻してください。

並び順と、値がない行

処理対象列が空欄の行
つなぐ前に取り除かれます。あるキーの行がすべて空欄なら、そのキーの行は出力に出ません。
キー列が空欄の行
残ります。空欄どうしが 1 つのグループにまとまり、出力でも空欄のままです。
つながる順番
「値の重複を削除して結合する」が on のときは値の昇順、off のときは元の行の順です。

エラーと対処

同じ列をキーと対象の両方に指定した

列: {{invalid_col}} が 「処理対象列」と「キー列」の両方に設定されています。

直し方 — どちらかを別の列にしてください。同じ値をキーにも結果にも残したいなら、先に文字列同士の結合などで列を複製しておきます。

列を選ばずに実行した

「キー列を選択」や「処理対象列を選択」が空のまま実行したときに出ます。

対象の列が選択されていません。

直し方 — 列を選び直してください。

選んだ列が見つからない

「キー列を選択」で指定した列が入力データにないとき。前の処理で列名が変わった場合にも出ます。

対象の列が存在しません。

直し方 — キー列を選び直してください。列名が変わりうるデータでは、名前に頼らない選び方(型で選ぶ・前方一致)に変えると壊れにくくなります。

よく使う例

1. 顧客ごとに買った商品を並べる

お題 — 顧客ごとに商品名を 1 行にまとめたい

入力 — 顧客ID 商品名 が明細で 1 行ずつ並んでいる(C1 / りんご、C1 / みかん)

設定 — 新規列名 購入商品、キー列 顧客ID、処理対象列 商品名、区切り文字 ,

出力 — C1 の 1 行だけになり、購入商品 に みかん,りんご

2. 同じ商品を 2 回買っていても 1 回にする

お題 — 買った商品の種類だけ知りたい

入力 — C1 / りんご、C1 / りんご、C1 / みかん

設定 — 「値の重複を削除して結合する」を on(既定)

出力 — みかん,りんご

3. 買った回数も見えるようにする

お題 — 同じ商品を複数回買ったことを残したい

入力 — 例 2 と同じ

設定 — 「値の重複を削除して結合する」を off

出力 — りんご,りんご,みかん(元の行の順のまま)

4. 他の列も残す

お題 — 顧客名や地域も一緒に見たい

入力 — 顧客ID 顧客名 地域 商品名

設定 — キー列に 顧客ID、処理対象列に 商品名

手順 — このノードで 顧客ID ごとにまとめたあと、キー列を指定する結合で 顧客ID をキーに元のデータとつなぐ

出力 — 顧客ID 購入商品 に 顧客名 地域 が戻る

5. 区切り文字を変える

お題 — あとで分割するときに困らないよう、値に出てこない文字で区切りたい

入力 — 例 1 と同じ

設定 — 区切り文字に |

出力 — みかん|りんご

注意 — 区切り文字の欄は 1 行の入力欄です。改行は入れられません

6. 2 つの列でまとめる

お題 — 顧客と月の組み合わせごとに並べたい

入力 — 顧客ID 対象月 商品名

設定 — キー列に 顧客ID と 対象月 の 2 列

出力 — 顧客ID と 対象月 の組み合わせごとに 1 行

関連