コンテンツにスキップ

条件に応じて値を列に挿入

条件に当てはまる行だけ別の値にします。上から順に条件を見て、最初に当てはまったところの値を返します。

分析プロジェクトとの違い

見るところSQLビルダー分析プロジェクト
返り値に既存列を使うできる(条件ごと・不一致時のどちらも)ない
返り値の型文字列 / 数値 / 日付 / 日付時刻同じ 4 つ
型変更に失敗したときの扱いない「型変更不可エラーを無視する」がある
比較タイプ型ごとに 10〜11 種類日付の単位・範囲指定まで細かく分かれる

入出力

ポート内容
入力データデータ
出力データデータ

設定項目

フォームの見出しの並び — 「結果の挿入先を設定」 → 「条件と返り値の設定」 → 「条件一致の場合の設定」 → 「全条件に不一致の場合の設定」。条件によって出ない見出しもあります。

結果の挿入先を設定
新規列に挿入(既定)か既存列に上書き。
新規列名を入力
「新規列に挿入」のときに出ます。
列を選択必須
「既存列に上書き」のときに出ます。
型を選択
新しく作る列の型。文字列型(既定)/ 数値型 / 日付型 / 日付時刻型。「既存列に上書き」のときは出ません。
条件
条件と返り値の組。上から順に見て、最初に当てはまった組の返り値になります。
対象列を選択必須
条件を当てる列。選んだ列の型で、次の比較タイプの顔ぶれが変わります。
比較タイプを選択必須
下の選べる比較タイプを参照。
値を入力必須
比べる相手。「いずれかに等しい」「いずれとも等しくない」のときは値を入力してエンターに変わり、複数入れられます。欠損値を見る 2 つでは出ません。
既存列の値を返り値にする
on にすると、固定の値ではなく別の列の値を返します。条件ごとと、全条件に不一致のときの両方で選べます。
返り値を入力
空欄にすると欠損になります。

選べる比較タイプ

比較タイプごとの一覧
比較タイプ文字列の列ほかの列
等しい(=) / 等しくない(!=)○○
いずれかに等しい(in) / いずれとも等しくない(not in)○○
欠損値を含まない / 欠損値を含む○○
より小さい(<) / 以下(<=) / より大きい(>) / 以上(>=)×○
文字を含む / 文字を含まない○×
[条件値]から始まる(starts_with) / [条件値]で終わる(ends_with)○×
正規表現にマッチ○×

生成される SQL

条件の数だけ WHEN が並ぶ CASE 式になります。PostgreSQL につないだ場合です。

SELECT
"売上",
"店舗",
CASE
WHEN "売上" >= 100000 THEN 'A'
WHEN "売上" >= 50000 THEN 'B'
ELSE 'C'
END AS "ランク"
FROM (SELECT "売上", "店舗" FROM "orders") AS "port_xxxxxxxx"

このノードだけは、前のノードの SELECT をいったん内側に入れた形になります。 外側で条件を書くために、入力を FROM (...) でくるみます。

新しい列はいちばん右に付きます。 「既存列に上書き」を選んだときも、その列はもとの位置から外れていちばん右に移ります。並びを決めたいときは、後ろに列の並べ替えを続けてください。

返り値を空欄にすると ELSE null になります。「既存列の値を返り値にする」を選ぶと、THEN '固定値' の代わりに、その列を返り値の型に変換した式が入ります。

エラーと対処

どのエラーも、設定を直してノードを実行し直せば消えます。

Treasure Data で日付型を選んだ

Treasure Data につないだビルダーで、型に日付型・日付時刻型を選ぶと出ます。

日付型はサポートされていません

日付時間型はサポートされていません

直し方 — 文字列型で返してください。

新規列名が空

「新規列に挿入」のまま列名を入れずに実行すると出ます。

列名を入力してください

直し方 — 新規列名を入れてください。

列が選ばれていない

条件の行で列を選んでいない、または「既存列に上書き」で上書き先を選んでいないと出ます。

列を選択してください

直し方 — 対象列・上書き先の列を選ぶか、その行を削除してください。

上流にない列が選ばれている

前のノードで列が消えたあとに実行すると出ます。

存在しない列が選択されています

直し方 — 列を選び直してください。

入力がつながっていない

前のノードがつながっていないと出ます。

カラムが選択されていません。条件を確認してください

直し方 — 入力にノードをつないでください。

よく使う例

1. 売上をランク分けする

お題 — 金額で A / B / C に分けたい

入力 — 売上 = 120000、60000、20000

設定 — 新規列 ランク、型は文字列型。条件 1「売上 以上 100000 → A」、条件 2「売上 以上 50000 → B」、不一致は C

出力 — A B C

2. 不要な値を空にする

お題 — テスト と入っている行の値を消したい

入力 — 店舗 = 渋谷、テスト

設定 — 既存列に上書き、条件「店舗 等しい テスト」、返り値は空欄、不一致は「既存列の値を返り値にする」で 店舗

出力 — テスト の行だけ空欄、ほかはそのまま

3. 欠損を既定値で埋め分ける

お題 — 担当 が空のとき 未割当 にしたい

入力 — 担当 = 山田、空欄

設定 — 条件「担当 欠損値を含む → 未割当」、不一致は既存列 担当

出力 — 空の行だけ 未割当

4. 複数の値をひとまとめにする

お題 — 東京 神奈川 千葉 を 首都圏 にしたい

入力 — 県 = 東京、大阪

設定 — 条件「県 いずれかに等しい 東京 神奈川 千葉 → 首都圏」、不一致は その他

出力 — 首都圏 / その他

5. 0 と 1 のフラグを作る

お題 — 会員かどうかを数値で持ちたい

入力 — 会員区分 = ゴールド、空欄

設定 — 新規列 会員フラグ、型は数値型。条件「会員区分 欠損値を含まない → 1」、不一致は 0

出力 — ゴールド の行が 1、空欄の行が 0

「値を入力」は空のままにできません。 「等しくない」などの比較タイプを選ぶと値の入力が必須になるので、空かどうかで分けたいときは値を要求しない「欠損値を含む」「欠損値を含まない」を使ってください

関連