コンテンツにスキップ

欠損値処理

空欄(欠損値)を補完・抽出・削除します。補完は 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 が入っている行だけ

関連