行フィルタ条件による分割
条件を決めて、当てはまる行と当てはまらない行の 2 つにデータを分けます。「東京の行」と「それ以外」を別々に処理したいときに使います。
条件で行をフィルタとの違いは、捨てずに両方残ることだけです。条件の作り方はまったく同じです。値を見ずにランダムに分けたいときはランダムにデータを分割を使ってください。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 条件一致 | 条件に当てはまる行 |
| 条件不一致 | 当てはまらない行 |
2 つの出力を足すと、必ず入力の行数になります。行が消えることも重なることもありません。列も並び順も入力のままです。
Spark エンジンでも動きます。
設定項目
比較タイプに「範囲指定」を選ぶと、「範囲指定の設定」という見出しが出ます。 不等号と始点・終点はその下に並びます。
- 条件
- 対象列・比較タイプ・条件値の組。複数作れます。中身は選んだ列の型によって変わります(次の節)。
- 条件の接続方法を選択
- 条件を 2 つ以上作ると出ます。
AND(すべてを満たす)かOR(どれかを満たす)。既定はANDです。
条件の作り方
条件 1 つは次の項目でできています。選んだ列の型によって、出る項目が変わります。
- 対象列を選択必須
- 条件をかける列。
- 日付要素を選択 / 日付時間要素を選択 / 時間要素を選択必須
- 日付・日付時間・時間の列のときに出ます。年・月・日・曜日などのどこを見るかを選びます。既定は、日付が
年-月-日、日付時間が年-月-日 時:分:秒、時間が時です。 - 比較タイプを選択必須
- どう比べるか。候補は列の型と、上で選んだ要素によって変わります。
- 既存列を条件値にする / 既存列を始点にする / 既存列を終点にする
- 入力した値の代わりに、同じデータの別の列と比べます。
- 条件値を設定 / 条件値を入力 / 正規表現を入力 / 曜日を選択必須
- 比べる相手の値。比較タイプによって、1 つだけ入れるものと、カンマ区切りで複数入れられるものがあります。日付の要素に
曜日を選んだときは、プルダウンから曜日を選びます。 - 不等号選択 / 始点値を入力 / 終点値を入力必須
範囲指定のときに出ます。「不等号選択」で端を含むかどうかを次の 4 通りから選び、始点と終点を入れます。始点値 < 対象値 < 終点値/始点値 ≦ 対象値 < 終点値/始点値 < 対象値 ≦ 終点値/始点値 ≦ 対象値 ≦ 終点値(既定)
選べる比較タイプの一覧は条件で行をフィルタにまとめてあります。 2 つの機能はまったく同じ仕組みを使っているので、片方だけ挙動が変わることはありません。
行の並び方
どちらの出力も、入力の並び順のままです。並べ替えはされません。
空欄の行はどちらに入るか
対象列が空欄(欠損値)の行がどちらの出力に入るかは、比較タイプで変わります。
「〜でない」を意味する比較タイプでは、空欄の行が条件一致に入ります。 空欄は「何とも等しくない」として扱われるためです。一致側に入るのは等しくない(!=)・いずれとも等しくない(not in)・文字を含まない(ungrep)・欠損値を含むの 4 つで、ほかは条件不一致に入ります。
比較タイプごとの一覧
| 比較タイプ | 空欄の行が入る側 |
|---|---|
| 等しい(=) | 条件不一致 |
| 等しくない(!=) | 条件一致 |
| より小さい(<) / 以下(<=) / より大きい(>) / 以上(>=) | 条件不一致 |
| 範囲指定 | 条件不一致 |
| いずれかに等しい(in) | 条件不一致 |
| いずれとも等しくない(not in) | 条件一致 |
| 文字を含む(grep) | 条件不一致 |
| 文字を含まない(ungrep) | 条件一致 |
| [条件値]から始まる(starts_with) / [条件値]で終わる(ends_with) | 条件不一致 |
| 正規表現にマッチ | 条件不一致 |
| 欠損値を含まない | 条件不一致 |
| 欠損値を含む | 条件一致 |
日付・日付時間・時間の列も、要素で切り出したあとは同じ決まりになります。
「数値が 100 未満の行」を条件にすると、空欄の行は条件不一致に回ります。いっぽう「地域が東京でない行」を条件にすると、地域が空欄の行も条件一致に入ります。空欄を一致側に入れたくないときは、条件を 2 つ作り、「欠損値を含まない」と AND でつないでください。
エラーと対処
条件の作り方が同じなので、出るエラーも条件で行をフィルタと同じです。どのエラーも、入力データを 1 つ前のノードで開いて、条件に使っている列が残っているかを見るところから始めてください。
条件を作っていない
条件を 1 つも作らずに実行したとき。条件値の欄を空のままにしたときも同じです。
フィルタ条件を設定してください。
直し方 — 条件を 1 つ以上作り、条件値まで埋めてください。
比較タイプを選んでいない
条件の行を足したあと、比較タイプを選ばずに実行したとき。
比較タイプを設定してください。
直し方 — 条件ごとに比較タイプを選んでください。使わない条件の行は削除します。
範囲の不等号を選んでいない
範囲指定 を選んだのに、不等号を選んでいないとき。
範囲指定の不等号を設定してください。
直し方 — 「不等号選択」で、端を含むかどうかを選んでください。
日付のどこを見るかを選んでいない
日付・日付時間・時間の列で、要素を選んでいないとき。
日付要素を設定してください。
直し方 — 「日付要素を選択」などで、年・月・日・曜日のどれで比べるかを選んでください。
対象列が決まらない
対象列を選んでいないとき、または選んだ列が入力にないときに出ます。前の処理で列名が変わった・列が消えた場合も同じです。「欠損値を含む」「欠損値を含まない」で列が見つからないときもこちらになります。
対象の列が選択されていません。
直し方 — 対象列を選び直してください。
列の型が変わった
条件を作ったあとで、前の処理で列の型を変えたとき。
{{target_col}}列の型が条件設定時の型と異なります。条件の再設定をしてください。
直し方 — 条件を作り直してください。比較タイプの候補は列の型で決まるので、型が変わると前の設定が使えません。
条件値が読めない
条件値が、列の型として読めない形のとき。日付の列に日付でない文字を入れたときなどです。
条件値が不正です。データ型が異なる値が入力されている可能性があります。
直し方 — 列の型に合う形で入れ直してください。
条件値が数値や文字として読めない
数値の列に、数値として読めない値を入れたとき。
入力した値:
{{value}}が{{dtype_msg}}として読み込めませんでした。
直し方 — メッセージに出ている値を直してください。カンマ区切りで複数入れるときは、1 つずつ確かめます。
正規表現が不正
正規表現にマッチ で、書き方が正しくないとき。
正規表現
{{regexp_text}}が不正です。参考:https://docs.python.org/ja/3/howto/regex.html
直し方 — かっこの対応やエスケープを確かめてください。
よく使う例
1. 特定の地域とそれ以外に分ける
お題 — 東京の行だけ別の処理をしたい。残りもあとで使う
入力
| 地域 | 金額 |
|---|---|
| 東京 | 120000 |
| 大阪 | 98000 |
| 東京 | 50000 |
設定 — 対象列を選択 地域、比較タイプを選択 等しい(=)、条件値 東京
出力(条件一致)
| 地域 | 金額 |
|---|---|
| 東京 | 120000 |
| 東京 | 50000 |
出力(条件不一致)
| 地域 | 金額 |
|---|---|
| 大阪 | 98000 |
2. 金額の大きい取引を切り出す
お題 — 10 万円以上の取引を別で見たい
入力
| 取引ID | 金額 |
|---|---|
| T1 | 120000 |
| T2 | 50000 |
| T3 |
設定 — 対象列を選択 金額、比較タイプを選択 以上(>=)、条件値 100000
出力(条件一致) — T1 の 1 行
出力(条件不一致) — T2 と T3。金額が空欄の T3 は条件不一致に入ります
3. 期間で分ける
お題 — 今年のデータと去年以前のデータを分けたい
入力
| 日付 | 売上 |
|---|---|
| 2024-03-10 | 120000 |
| 2023-11-02 | 98000 |
設定 — 対象列を選択 日付、日付要素を選択 年、比較タイプを選択 以上(>=)、条件値 2024
出力(条件一致) — 2024-03-10 の行
出力(条件不一致) — 2023-11-02 の行
4. 空欄のある行を切り分ける
お題 — 住所が入っていない行を取り置いて、あとで補完したい
入力
| 氏名 | 住所 |
|---|---|
| 田中 | 東京 |
| 鈴木 |
設定 — 対象列を選択 住所、比較タイプを選択 欠損値を含む
出力(条件一致) — 鈴木 の行
出力(条件不一致) — 田中 の行
5. 2 つの条件を満たす行を取り出す
お題 — 東京で、かつ 10 万円以上の取引
入力
| 地域 | 金額 |
|---|---|
| 東京 | 120000 |
| 東京 | 50000 |
| 大阪 | 300000 |
設定 — 条件を 2 つ作り(地域 等しい(=) 東京、金額 以上(>=) 100000)、条件の接続方法を選択 AND
出力(条件一致) — 東京で 12 万円の 1 行
出力(条件不一致) — 残りの 2 行
6. 分けたあとで別々に処理して、また 1 つにする
お題 — 空欄のある行だけ補完して、残りと合わせたい
入力
| 氏名 | 住所 |
|---|---|
| 田中 | 東京 |
| 鈴木 |
設定
出力 — 住所が埋まった 2 行。縦結合では左入力の行が先に来るので、元の行の順番は変わります