Data Cloud データ取り込み時のエラー確認
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__c
と error_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