🐡

Data Cloud データ取り込み時のエラー確認

2024/12/03に公開

TL;DR

Salesforce Data Cloud にクラウドストレージとAPIからデータを取り込む際、エラーが発生した場合、問題レコード (Problem Record) として DLO が自動生成され、当該レコード内でエラーの詳細が確認できるようになりました。

問題レコードDLO

エラーが発生するケースは様々ありますが、下記の4種別でエラーの内容が DLO 出力されるようになりました。データストリームを作成する場合、自動的に PR_[DLOの名前] というDLOが作成されます。

エラーコード 説明
NOT_NULL_CONSTRAINT_VIOLATION 必須項目の null 値のため、レコードが削除されます。たとえば、主キーの値が null であるとします。
TRANSFORM_EVALUATION_ERROR 一部が却下されたレコード。項目の変換プロセス中にエラーが発生した。1つのレコードで複数の項目を処理する場合、1つのエラーが複数存在する可能性があります。
UNHANDLED_ERROR 行の処理中にエラーが発生したため、レコードが削除される。
DUPLICATE_ROW 同じプライマリキーを持つ複数のレコードがバッチに含まれるため、レコードは削除されます。

実際の画面を見ていきましょう。例えば、物件情報を持つダミーレコードをS3コネクタで取り込みます。Data Stream名は「Property Data」とします。

すると、自動的に下記のDLOが生成されました。

問題レコードデータ

ここで同じ主キーを含むレコードをS3から取り込んでみます。すると、問題レコードDLOに下記レコードが生成されました。

項目名 内容
DataSourceObject__c s3://dc-folder-03/Property_Data.csv
DataSource__c AwsS3_AWS_S3
InternalOrganization__c -
KQ_id__c -
cdp_sys_PartitionDate__c 2024-11-25T00:00:00.000Z
cdp_sys_SourceVersion__c -
detailed_error__c {"errorMessage":"Duplicate values in room_id__c","additionalInfo":null}
error_code__c DUPLICATE_ROW
error_context__c {"dataStreamJobId":"69ff781a-b3a8-4f78-afea-a87ba72c5984","sourceFile":"Property_Data.csv"}
error_fields__c {"Building_ID__c":"B022","Number_of_Parking_Spaces__c":47.0,"Occupancy_Rate__c":99.0,"Room_Type__c":"1LDK","Room_Size__c":93.0,"Solar_Power_Generation_Capacity_kW__c":94.0,"Building_Name__c":"上サンフォレストハウス","Insulation_Type__c":"超高効率","Address__c":"埼玉県川越市3-15-16","Building_Age__c":3.0,"Construction_Year__c":2021.0,"Number_of_Elevators__c":4.0,"Energy_Efficiency_Rating__c":"C","Barrier_Free_Accessibility__c":"一部","Annual_Maintenance_Cost__c":0.95,"Monthly_Rent__c":214854.0,"Main_Building_Material__c":"木造","Last_Renovation_Year__c":2023.0,"DataSourceObject__c":"s3://dc-folder-03/Property_Data.csv","Total_Size__c":659.0,"Pet_Policy__c":"不可","Floor__c":3.0,"Room_Number__c":"03C","Distance_to_Nearest_Station_m__c":114.0,"DataSource__c":"AwsS3_AWS_S3","Number_of_Floors__c":4.0,"Heating_System__c":"セントラル","Seismic_Performance__c":"Is値1.06","room_id__c":"B022_03C"}
error_row__c -
error_timestamp__c 2024-11-25T14:50:27.649Z
id__c ff500efd-0b51-455a-ad60-86d18f30082a

例として、detailed_error__cerror_row__c を整形してデータを見やすくしてみたいと思います。

detailed_error__c

主キーが重複しているレコードが存在しているというエラー

{
   "errorMessage":"Duplicate values in room_id__c",
   "additionalInfo":null
}

error_row__c

エラー対象のレコード

{
   "Building_ID__c":"B022",
   "Number_of_Parking_Spaces__c":47.0,
   "Occupancy_Rate__c":99.0,
   "Room_Type__c":"1LDK",
   "Room_Size__c":93.0,
   "Solar_Power_Generation_Capacity_kW__c":94.0,
   "Building_Name__c":"上サンフォレストハウス",
   "Insulation_Type__c":"超高効率",
   "Address__c":"埼玉県川越市3-15-16",
   "Building_Age__c":3.0,
   "Construction_Year__c":2021.0,
   "Number_of_Elevators__c":4.0,
   "Energy_Efficiency_Rating__c":"C",
   "Barrier_Free_Accessibility__c":"一部",
   "Annual_Maintenance_Cost__c":0.95,
   "Monthly_Rent__c":214854.0,
   "Main_Building_Material__c":"木造",
   "Last_Renovation_Year__c":2023.0,
   "DataSourceObject__c":"s3://dc-folder-03/Property_Data.csv",
   "Total_Size__c":659.0,
   "Pet_Policy__c":"不可",
   "Floor__c":3.0,
   "Room_Number__c":"03C",
   "Distance_to_Nearest_Station_m__c":114.0,
   "DataSource__c":"AwsS3_AWS_S3",
   "Number_of_Floors__c":4.0,
   "Heating_System__c":"セントラル",
   "Seismic_Performance__c":"Is値1.06",
   "room_id__c":"B022_03C"
}

各項目の説明は下記となりますが、最新の内容はHelpページ をご参照ください。

項目名 項目 API 参照名 項目の型 説明
Id id__c テキスト 主キーに使用される自動生成された一意の ID。
エラーのコンテキスト error_context__c テキスト JSON 文字列およびジョブ ID。
エラーコード error_code__c テキスト レコードが削除された理由を説明するエラーコード文字列。
エラータイムスタンプ error_timestamp__c DateTime Data Cloud でエラーレコードが取り込まれた時期のタイムスタンプ。
詳細なエラー detailed_error__c テキスト レコードエラーに関する追加の詳細。
エラー行 error_row__c テキスト 問題レコードのコンテンツを表示します。
エラー項目 error_fields__c テキスト レコードの却下に関するすべてのエラー項目の連結された文字列を表示します。error_code =TRANSFORM_EVALUATION_ERROR の項目にのみ適用されます。

使い方

1. データ取り込み時のエラー特定

これまではデータ取り込み時のエラーログの取得が難しかったのですが、本機能を利用することで原因特定が容易になりそうです。

2. エラー検知

Data Cloud トリガーフローを使うことで、エラー発生時にSlack等に連携・通知することも可能となります。

留意点となりますが、問題レコードが対応しているコネクターは下記となっております (2024年12月現在)。

  • AmazonS3
  • Google Cloud Storage
  • Microsoft Azure Storage
  • 取り込み API

本機能は地味な機能アップデートではありますが、Data Cloudでは運用時のUXについても、日々改善されております。

※本記事は、私が所属する会社とは一切関係のない事柄です。

Discussion