【Salesforce】外部IDが想定と違う時のレポート条件と項目設定の直し方

【Salesforce】外部IDが想定と違う時のレポート条件と項目設定の直し方
🛡️ 超解決

Salesforceで外部ID(External ID)を利用していると、レポートの条件指定で期待した結果が得られないことがあります。外部IDはユニークキーとして外部システムと連携するために使われる項目ですが、データ型や値の形式が想定と異なると、フィルタが正しく動作しません。本記事では、外部IDが想定通りに動かない原因を切り分け、レポート条件と項目設定を修正する具体的な手順を解説します。

【要点】この記事で確認すること

  • 最初に見る場所: 外部ID項目のデータ型(テキストか数値か)と、レポートフィルタで指定している値の型が一致しているか確認します。
  • 切り分けの軸: データ型の不一致、外部IDの重複やNULL値の有無、レポートフィルタの設定ミス、ユーザ権限による項目参照の可否をチェックします。
  • 注意点: 外部IDのデータ型を変更すると、外部システムとの連携やデータインポートに影響を与える可能性があります。変更前に必ずシステム管理者へ相談してください。

ADVERTISEMENT

外部IDが想定と違う原因を切り分ける

外部IDがレポートで正しく扱えない原因は大きく分けて3つあります。まずは、どの原因に該当するのかを切り分けましょう。

データ型の不一致

外部IDは「テキスト」型か「数値」型のいずれかで作成されます。レポートのフィルタ条件で、例えば「12345」という数字を指定する場合、データ型がテキストなら「12345」と入力し、数値なら引用符なしで12345と入力します。もし型が合っていないと、条件が無視されたり、正しく抽出されません。標準の外部IDはテキスト型ですが、カスタム外部IDを作成するときに数値型を選ぶこともできます。また、API連携で数値として扱われている場合も注意が必要です。

外部IDの重複やNULL値

外部IDは一意であるべきですが、重複が存在するとレポートで意図しない行がヒットすることがあります。また、外部IDが空(NULL)のレコードは、フィルタ条件「等しい」で指定しても抽出されません。NULL値を含むレコードを対象とする場合は、条件を「空である」や「空でない」に変更する必要があります。

レポートフィルタの設定ミス

フィルタ演算子(等しい、次を含む、より大きいなど)の選択ミスや、フィルタが複数ある場合のAND/ORの組み合わせで結果が変わります。また、レポートタイプによって参照できる項目が制限されている場合もあるため、対象のオブジェクトに外部ID項目が含まれているか確認しましょう。

外部IDのデータ型を確認し修正する手順

データ型が原因である場合、設定を変更する必要があります。ただし、データ型の変更は影響が大きいため、必ずSandboxなどでテストしてから本番環境に適用してください。

項目設定画面を開く

  1. [設定](歯車アイコン)→ [オブジェクトマネージャ] をクリックします。
  2. 対象のオブジェクト(例:取引先、顧客)を選択し、[項目] をクリックします。
  3. 外部IDとして設定されている項目を見つけ、項目名をクリックします。
  4. [データ型] の欄に現在の型(テキスト/数値)が表示されます。ここで型を確認します。
  5. もし型を変更したい場合は、[編集] をクリックし、新しいデータ型を選択します。ただし、Salesforceでは一度作成した項目のデータ型を変更できない場合があります(標準項目は不可、カスタム項目は特定の型間のみ可能)。

データ型の変更ができない場合は、新しいカスタム項目を作成して外部IDとして再設定する方法を検討します。その際、既存の外部IDの値を新しい項目に移行する必要があります。

外部IDとしての設定を変更する

外部IDフラグのオン/オフも項目編集画面で可能です。[外部ID] チェックボックスをオンにすると、その項目が外部IDとして扱われます。もし外部IDとして認識されていない項目をレポートで使いたい場合は、このチェックを入れます。ただし、一度外部IDを設定すると、重複ルールが適用されるため、既存データに重複があると保存できなくなります。

レポートで外部IDを正しく条件指定する方法

データ型に合わせたフィルタの書き方を押さえておきましょう。

テキスト型の場合

外部IDがテキスト型なら、フィルタ条件で値を引用符なしでそのまま入力します。たとえば「外部ID 次と等しい ABC-123」のように指定します。前方一致や部分一致を使う場合は「次で始まる」「次を含む」演算子を使います。

数値型の場合

外部IDが数値型なら、フィルタ条件で値を数値として入力します(引用符不要)。比較演算子(より大きい、以上など)も使用可能です。ただし、数値型の外部IDは先頭のゼロが保持されないため、ゼロ埋めされたコード(例:00123)は123として扱われます。そのような場合はテキスト型に変更するか、数式項目でテキスト変換してから使用します。

数式項目を使う回避策

データ型を変更できない場合、数式項目を使って外部IDを文字列として整形し、レポートでその数式項目をフィルタに使う方法があります。たとえば、数値型の外部IDを TEXT(External_ID__c) でテキストに変換します。ただし、数式項目はインデックスが効かないため、大量データではパフォーマンスに注意してください。

失敗パターンとその対処法

実際によくある失敗例を表にまとめました。

状況 原因 対処法
「外部ID = 12345」で検索しても結果が0件 データ型がテキストなのに数値として指定している 引用符なしの12345を「12345」と引用符付きで入力する(テキスト型の場合)
外部IDが重複していてレポートに複数行表示される 重複レコードが存在する 重複ルールを設定し、データクレンジングを行う。外部IDの一意制約を有効にする
外部IDが空白のレコードがレポートに含まれない フィルタ条件「等しい」ではNULLは抽出されない 条件を「空である」に変更する。またはNULL値を特定の値で埋める
API連携で外部IDが数値として送られてくるが、項目はテキスト型 データ型の不一致 API側で文字列に変換するか、項目のデータ型を数値に変更する(可能な場合)

管理者へ伝えるべき設定情報

外部IDの設定変更はシステム全体に影響するため、管理者と連携することが重要です。以下の情報を伝えてください。

  • 外部IDの使用目的: どの外部システムとの連携に使っているか、API名やデータフローを明確にします。
  • データ型変更の影響範囲: データローダやインテグレーションで値の形式が変わる可能性を共有します。
  • 重複ルールの現状: 現在の重複ルールが有効かどうか、外部IDの一意制約がかかっているかを確認します。
  • テスト環境の有無: Sandbox環境で変更を試してから本番適用するスケジュールを相談します。

よくある質問(FAQ)

外部IDを数値としてレポートで使うにはどうすればよいですか?

外部ID項目のデータ型を数値に変更するか、数値型のカスタム項目を新たに作成して外部IDフラグをオンにします。レポートでは数値としてフィルタ条件を記述できます。

外部IDの値が途中で変わってしまいました。原因は?

データインポートやAPI更新で値が上書きされた可能性があります。監査証跡やバックアップから変更履歴を確認し、必要に応じてロールバックしてください。

レポートのフィルタで外部IDを選択できないのはなぜですか?

レポートタイプにその外部ID項目が含まれていない可能性があります。カスタムレポートタイプを作成して項目を追加するか、標準レポートタイプで利用可能な項目か確認してください。

まとめ

外部IDが想定と違う動作をする場合、まずはデータ型とレポートフィルタの設定を確認することが基本です。データ型の不一致や重複、NULL値の扱いを切り分けて、適切な修正を行いましょう。外部IDの設定変更はシステム連携に影響するため、必ず管理者と相談しながら進めてください。また、数式項目を使った回避策も有効ですが、パフォーマンスへの影響を考慮する必要があります。本記事を参考に、Salesforceの外部IDを正しく扱えるようにしていただければ幸いです。


この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。