Reckonerには「名寄せ」という名前の専用タスクはありませんが、複数のタスクを組み合わせることで名寄せを実現できます。
同一データと判定するためのキー(顧客ID、メールアドレスなど)や、表記を揃えるルールが明確な場合に有効です。
この記事で扱う「名寄せ」
氏名・会社名・住所・顧客IDなどを手がかりに、同じ人物や企業のデータの表記を揃え、重複をまとめる処理を指します。データクレンジング、重複削除、マスタとの突合とも呼ばれます。
基本の流れ
1. 表記ゆれの統一 → 2. 重複の排除・集約 → 3. マスタとの照合
1. 表記ゆれを統一する
重複の判定や結合の前に、キーとなるフィールドの表記を揃えます。
| タスク | 用途の例 |
|---|---|
| 置換 | 「株式会社」と「(株)」を揃える(正規表現にも対応) |
| 全角半角変換 | カナ・英数字・記号・スペースの全角/半角を揃える |
| 大文字小文字変換 | メールアドレスの大文字/小文字を揃える |
| 特殊文字除外 | 不要な記号を取り除く |
2. 重複データを排除・集約する
目的に合わせてタスクを選びます。
| やりたいこと | 使うタスク |
|---|---|
| 指定したフィールドの重複を取り除くだけでよい | 除外(Distinct) |
| 重複をまとめつつ、ほかのフィールドの値も残したい | BigQuery SQL(第2世代) |
・ 除外(Distinct):指定したフィールドだけを、重複のない状態で出力します。指定していないフィールドは出力されません。
・ BigQuery SQL(第2世代):GROUP BY でキーごとにまとめ、残したい値を関数で選びます。
- MAX / MIN:最新日時など、最大値・最小値を残す
- ANY_VALUE:任意の1件の値を残す
- STRING_AGG:複数の値を区切り文字でつないで残す(数値型のフィールドは CAST で文字列型に変換してから使用します)
📌BigQuery SQL(第2世代)タスクの設定例:顧客IDごとに1行にまとめる
入力データ(前のタスク名:「顧客データ」)
| customer_id | name | phone | updated_at |
|---|---|---|---|
| C001 | 山田太郎 | 03-1111-1111 | 2026-04-01 |
| C001 | 山田 太郎 | 090-2222-2222 | 2026-09-15 |
| C002 | 佐藤花子 | 06-3333-3333 | 2026-05-10 |
クエリ
SELECT
customer_id,
ANY_VALUE(name) AS name,
STRING_AGG(phone, ' / ') AS phones,
MAX(updated_at) AS last_updated_at
FROM _reckoner("顧客データ")
GROUP BY customer_id
出力結果
| customer_id | name | phones | last_updated_at |
|---|---|---|---|
| C001 | 山田太郎 | 03-1111-1111 / 090-2222-2222 | 2026-09-15 |
| C002 | 佐藤花子 | 06-3333-3333 | 2026-05-10 |
・ _reckoner("顧客データ"):前のタスク「顧客データ」の出力を参照します。実際のタスク名に置き換えてください。
・ GROUP BY customer_id:顧客IDごとに1行にまとめます。
・ ANY_VALUE(name):氏名をグループ内のどれか1件から取ります。どの行の値になるかは決まっていません。
・ STRING_AGG(phone, ' / '):電話番号を「 / 」区切りでつなげます。
・ MAX(updated_at):いちばん新しい更新日を取ります。
3. マスタデータと照合する
顧客IDなどをキーにマスタデータと突き合わせる場合は、結合(Join)を使います。
マスタ側でキーが重複していると、結合後にレコードが増えてしまいます。次の順でタスクをつなぐと防げます。
マスタデータ → 投影(キーと必要な項目に絞る)→ 除外(Distinct)→ 結合(Join)
ご注意
次のようなケースは、標準タスクだけでは対応が難しい場合があります。
・ 「○○ビル3F」「○○ビル 3階」「○○ビル」のように、表記のパターンが多くてルール化しにくい
・ 氏名・会社名・住所などを組み合わせて、同一人物や同一企業を推定したい
この場合は、BigQuery SQL(第2世代)で独自の判定処理を組むか、生成AIなどの外部サービスとの連携をご検討ください。
実現できるか判断が難しい場合は、次の情報を添えてサポートまでお問い合わせください。
・ 名寄せの対象となるフィールド
・ 同一データと判定する条件
・ 重複した場合に残したい値
・ 入力データと期待する出力結果のサンプル