コンテンツにスキップ

先頭/末尾から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 行になる
00 行になる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 行、全列が残る。重複行の処理の「重複行を削除」で列を限定すると選ばなかった列が消えるので、列を残したいときはこちらを使います

関連