欠損値処理
空欄(欠損値)を補完・抽出・削除します。補完は COALESCE、抽出と削除は WHERE の IS NULL / IS NOT NULL を組み立てます。
分析プロジェクトとの違い
| 見るところ | SQLビルダー | 分析プロジェクト |
|---|---|---|
| 処理 | 補完 / 抽出 / 削除 の 3 つ | 削除 / 補完 / 抽出 / 欠損値を含む行にフラグ立て の 4 つ |
| 処理方向 | 行だけ | 行 / 列 |
| 補完の方法 | 指定した値だけ | 平均値 / 中央値 / 最頻値 / 指定した値 / 直前の値 / 直後の値 |
| 既定の処理 | 欠損値を補完する | 欠損値を削除 |
平均値や中央値での補完は SQLビルダーではできません。 必要ならデータソース化するで nehan に取り込んでから、分析プロジェクトの欠損値処理を使ってください。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | データ |
設定項目
- 処理タイプ選択必須
- 欠損値を補完する(既定)/ 欠損値を抽出する / 欠損値を削除する。
- 補完設定
- 「欠損値を補完する」のときに出ます。対象列と入れる値の組を足していきます。複数作れます。
- 列を選択必須
- 補完設定の中の項目。複数選べます。同じ値で埋める列をまとめて指定します。
- 補完する値を入力必須
- 空欄に入れる値。列の型に合わせて書きます。数値列なら数字、文字列の列なら文字、日付の列なら日付の形です。
- 対象列必須
- 「欠損値を抽出する」「欠損値を削除する」のときに出ます。複数選べます。
- 処理方法を選択必須
- 抽出のときは欠損値が一つでも含まれる行を抽出(既定)か全てが欠損値である行を抽出。削除のときは欠損値が一つでも含まれる行を削除(既定)か全てが欠損値である行を削除。
3 つの処理
| 処理タイプ | 何が起きるか | 行数 | 列 |
|---|---|---|---|
| 欠損値を補完する | 対象列の空欄に値が入る | 変わらない | 変わらない |
| 欠損値を抽出する | 空欄のある行だけが残る | 減る | 変わらない |
| 欠損値を削除する | 空欄のある行が消える | 減る | 変わらない |
まず「欠損値を抽出する」でどれくらい空欄があるか見てから、補完か削除かを決めると安全です。
「一つでも含まれる」と「全てが欠損値である」は、対象列を 1 つしか選んでいないときは同じ結果になります。
生成される SQL
PostgreSQL につないだ場合です。
欠損値を補完する
SELECT "店舗", COALESCE("売上", 0) AS "売上", COALESCE("担当", '未設定') AS "担当"FROM "orders"対象列と同じ名前で上書きされるので、列は増えません。
欠損値が一つでも含まれる行を抽出する
SELECT "店舗", "売上", "担当"FROM "orders"WHERE ("売上" IS NULL OR "担当" IS NULL)「全てが欠損値である行を抽出」は OR が AND に変わります。
欠損値が一つでも含まれる行を削除する
SELECT "店舗", "売上", "担当"FROM "orders"WHERE ("売上" IS NOT NULL AND "担当" IS NOT NULL)「全てが欠損値である行を削除」は AND が OR に変わります。
エラーと対処
どのエラーも、設定を直してノードを実行し直せば消えます。
上流にない列が選ばれている
前のノードで列が消えたあとに実行すると出ます。
存在しない列が選択されています
直し方 — 対象列を選び直してください。
入力がつながっていない
前のノードがつながっていないと出ます。
カラムが選択されていません。条件を確認してください
直し方 — 入力にノードをつないでください。
補完する値が列の型に合っていない
数値列に文字を入れる、日付列に日付でない文字を入れる、といった場合です。文言はつなぎ先のデータベースが返したものがそのまま出ます。
直し方 — 列の型に合う値を入れてください。型そのものを変えたいときは列の型変更を先に置きます。
よく使う例
1. 売上の空欄を 0 にする
お題 — 空欄があると合計が出せない
入力 — 店舗 売上(空欄あり)
設定 — 欠損値を補完する → 列 売上、補完する値 0
出力 — 空欄が 0 になり、データ集計で合計できます
2. 文字列の空欄を「未設定」にする
お題 — 担当者が空欄の行をグラフで区別したい
入力 — 担当(空欄あり)
設定 — 欠損値を補完する → 列 担当、補完する値 未設定
出力 — 空欄が 未設定 になります
3. 複数の列を同じ値で埋める
お題 — 売上 と 数量 の空欄をまとめて 0 にしたい
入力 — 売上 数量(どちらも空欄あり)
設定 — 補完設定を 1 組作り、列に 売上 と 数量 の 2 つ、値に 0
出力 — 2 列とも 0 で埋まります
4. 列ごとに違う値で埋める
お題 — 数値列は 0、文字列の列は「未設定」にしたい
入力 — 売上(数値)担当(文字列)
設定 — 補完設定を 2 組作る
出力 — 列ごとに別の値が入ります
5. 空欄のある行を先に確かめる
お題 — どれくらい欠けているかを数えたい
入力 — 顧客ID 売上 担当
設定 — 欠損値を抽出する → 対象列を指定 → あとにSQLの件数を確認するをつなぐ
出力 — 空欄を含む行の件数
6. 必須項目が欠けた行を落とす
お題 — 顧客ID がない行は分析に使えない
入力 — 顧客ID(空欄あり)売上
設定 — 欠損値を削除する → 対象列 顧客ID、欠損値が一つでも含まれる行を削除
出力 — 顧客ID が入っている行だけ