グループごとの結合
キーごとに、複数行の値を 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 行