先頭/末尾からn行選択
データの先頭または末尾から、指定した行数だけを取り出します。上位 10 件を見る、グループごとに最新の 1 件を残す、といった使い方をします。
行の並べ替えだけが目的なら行の並べ替えを使ってください。 こちらは並べ替えたうえで行を減らすノードです。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | データ |
列は変わりません。変わるのは行数と、場合によっては行の順番です。
Spark エンジンでも動きます。
設定項目
- 方向を選択
- 先頭からか末尾から。既定は先頭からです。
- 選択する行数を入力必須
- 取り出す行数。整数で入れます。既定は
5。 - 特定の列で並べ替えてから処理する
- on にすると並べ替えの設定が出ます。並べ替えてから数えるので、「売上の大きい順に 10 件」が 1 つのノードでできます。
- 対象列を選択 / 並べ替えタイプを選択
- 並べ替えに使う列と、昇順(既定)か降順か。組は複数作れます。上に置いた組から順に効きます。
- グループごとに処理する
- 列を選ぶと、グループごとに n 行ずつ取り出します。「店舗ごとに売上上位 3 件」のような使い方です。空のままなら全体で 1 回だけ数えます。
- 選択行を削除する
- on にすると、取り出した行の方を捨てて、残りを出力します。「上位 10 件を除いた残り」が作れます。
並べ替えとの関係
並べ替えを使わないときは、入力の行順をそのまま使います。 順番が決まっていないデータで「先頭から 10 行」を取ると、意味のない 10 行になります。
| やりたいこと | 設定 |
|---|---|
| 入力の順のまま先頭 10 行 | 並べ替えを使わない |
| 売上の大きい順に 10 行 | 「特定の列で並べ替えてから処理する」を on にして 売上 を降順 |
| 前のノードで並べ替え済み | 並べ替えを使わない |
行の並べ替えを前につないでも同じことができます。1 つのノードにまとめたいときにこのオプションを使ってください。
空欄(欠損値)の行は並べ替えで最後に回ります。 昇順でも降順でも変わりません(行の並べ替えと同じ決まりです)。そのため「先頭から n 行」には空欄の行が入りにくく、「末尾から n 行」には入りやすくなります。
並べ替えのキーが同じ値の行は、入力の順のまま並びます。 同点が n 行目をまたぐときは、入力で先にあった行が選ばれます。どの行が選ばれるかを決めたいなら、並べ替えの組を 2 つ目まで作って順番を一意にしてください。
グループごとに取り出す
「グループごとに処理する」に列を選ぶと、その列の値ごとに n 行ずつ取り出します。
| 選択する行数 | グループ | 結果 |
|---|---|---|
| 3 | 店舗 | 店舗ごとに 3 行、合計で(店舗数 × 3)行 |
| 1 | 顧客ID | 顧客ごとに 1 行 |
グループ内の順番も、並べ替えの設定に従います。「店舗ごとに売上上位 3 件」なら、グループに 店舗、並べ替えに 売上 降順を設定します。
選択行を削除する
on にすると、取り出した行と残りが入れ替わります。
| 設定 | 出力 |
|---|---|
| off(既定) | 選んだ n 行 |
| on | 選んだ n 行を除いた残り |
「売上の下位 5 件を除く」「最初の 1 行を捨てる」といった使い方ができます。
行数の決まり
行数に特別な値を入れたときの動き
| 行数 | 選択行を削除する: off | 選択行を削除する: on |
|---|---|---|
| 入力の行数より大きい数 | 全行が出る(エラーにはなりません) | 0 行になる |
0 | 0 行になる | 0 行になる(全行ではありません) |
負の数(-3 など) | 反対の端から 3 行を除いた残りが出る | 反対の端から 3 行だけが出る |
負の数は - を付けるだけで入ります。 「末尾の 3 行を除いた全部」が、方向「先頭から」・行数 -3 の 1 設定で書けます。
「グループごとに処理する」を使っていて「選択行を削除する」が off のときは例外です。 0 以下の行数はすべて 0 行になり、負の数の意味は効きません。
入力が 0 行のときは、どの設定でも列だけの 0 行が出ます。
エラーと対処
行数が整数でない
小数や文字を入れたとき、フォームに出ます。
整数で入力してください。
直し方 — 10 のような整数を入れてください。
対象列が決まらない
並べ替えの対象列を選んでいないとき、または選んだ列が入力にないときに出ます。
対象の列が選択されていません。
直し方 — 並べ替えの組ごとに対象列を選び直してください。使わない組は削除します。「特定の列で並べ替えてから処理する」を off にしても、作ってある組は検査されます。
グループの列が見つからない
「グループごとに処理する」に指定した列が入力にないとき、または条件に当てはまる列が 1 つもないときに出ます。
対象の列が存在しません。
直し方 — グループの列を選び直すか、指定を空にして全体で数えてください。
よく使う例
1. 売上上位 10 件を見る
お題 — 売上の大きい取引を 10 件だけ見たい
入力 — 1 行 1 取引の明細。売上 列がある
設定 — 方向「先頭から」、行数 10、「特定の列で並べ替えてから処理する」を on にして 売上 降順
出力 — 売上の大きい 10 行
2. 店舗ごとの売上トップ 3
お題 — 店舗ごとに、売上の大きい取引を 3 件ずつ
入力 — 店舗 と 売上 を持つ明細
設定 — 行数 3、並べ替え 売上 降順、グループごとに処理する 店舗
出力 — 店舗ごとに 3 行。合計で(店舗数 × 3)行
3. 顧客ごとの最新の 1 件を残す
お題 — 顧客ごとに、いちばん新しい注文だけを残したい
入力 — 顧客ID と 注文日(日付型)を持つ注文履歴
設定 — 行数 1、並べ替え 注文日 降順、グループごとに処理する 顧客ID
出力 — 顧客 1 人につき 1 行。注文日が同じ行が 2 つあるときは、入力で先にあった方が残る
4. 上位を除いた残りを見る
お題 — 売上上位 5 件は分かっているので、それ以外を見たい
入力 — 売上 を持つ明細
設定 — 行数 5、並べ替え 売上 降順、「選択行を削除する」を on
出力 — 上位 5 件を除いた全行
5. データの様子を確かめる
お題 — 重い処理の前に、少ない行で動きを見たい
入力 — 行数の多いデータ
設定 — 行数 100、並べ替えなし
出力 — 先頭 100 行。試し終わったらこのノードを外す
6. 重複を消しつつ、他の列も残す
お題 — 会員 ID ごとに 1 行にしたいが、氏名や住所の列も残したい
入力 — 会員ID が重複している名簿
設定 — 行数 1、グループごとに処理する 会員ID
出力 — 会員ごとに 1 行、全列が残る。重複行の処理の「重複行を削除」で列を限定すると選ばなかった列が消えるので、列を残したいときはこちらを使います