インジェスト エラーまたは破損したデータのトラブルシューティング
注:
2023 年 9 月 1 日に、Dynamics 365 Marketing と Dynamics 365 Customer Insights をマージして名前を変更しました。 Dynamics 365 Marketing は、Dynamics 365 Customer Insights - Journeys と呼ばれるようになりました。 Dynamics 365 Customer Insights は、Dynamics 365 Customer Insights - Data と呼ばれるようになりました。 詳細については、「 Dynamics 365 Customer Insights の FAQ」を参照してください。
この記事では、Microsoft Dynamics 365 Customer Insights - Data で Azure Data Lake Storage または Power Query を使用する場合に、データ インジェスト エラーやデータが破損する一般的な理由について説明します。
Azure Data Lake Storage を使用したインジェスト エラーまたは破損したデータ
データ インジェスト中に、レコードが破損していると見なされる最も一般的な理由の一部を次に示します。
- データ型とフィールド値がソース ファイルとスキーマの間で一致しません。
- ソース ファイル内の列の数がスキーマと一致しません。
- フィールドには、予想されるスキーマと比較して列がスキューする文字が含まれています。 たとえば、正しく書式設定されていない引用符、エスケープされていない引用符、改行文字、タブ付き文字などです。
- パーティション ファイルがありません。
-
datetime
、date
、またはdatetimeoffset
フィールドは標準形式に従いません。
スキーマまたはデータ型の不一致
データがスキーマに準拠していない場合、インジェスト プロセスはエラーで完了します。
この問題を解決するには、ソース データまたはスキーマを修正し、データを再取り込みします。
パーティション ファイルがありません
レコードが破損せずにインジェスト プロセスが成功したが、データが表示されない場合は、 model.json または manifest.json ファイルを編集して、パーティションが指定されていることを確認します。 次 に、データ ソースを更新します。
自動スケジュール更新中にデータ ソースが更新されるのと同時にデータ インジェストが発生した場合、パーティション ファイルが空であるか、システム プロセスで使用できない可能性があります。 アップストリームの更新スケジュールに合わせて、データ ソースの システム更新スケジュール または更新スケジュールを変更します。 更新がすべて一度に発生しないようにタイミングを調整します。
Datetime フィールドの形式が正しくありません
テーブル内のフィールドは datetime
、ISO 8601 または en-US
形式ではありません。 Dynamics 365 Customer Insights - Data の既定 datetime
の形式は です en-US
。 テーブル内 datetime
のすべてのフィールドは、同じ形式にする必要があります。 Customer Insights では、提供される他の形式の注釈または特性が、モデルまたは manifest.jsonのソースレベルまたはテーブル レベルで作成されます。 例:
Model.json
"annotations": [
{
"name": "ci:CustomTimestampFormat",
"value": "yyyy-MM-dd'T'HH:mm:ss:SSS"
},
{
"name": "ci:CustomDateFormat",
"value": "yyyy-MM-dd"
}
]
manifest.json ファイルでは、datetime
テーブル レベルまたは属性レベルで形式を指定できます。 テーブル レベルで、*.manifest.cdm.json のテーブルで を使用"exhibitsTraits"
して形式を定義します。datetime
属性レベルで、tablename.cdm.json の 属性で を使用"appliedTraits"
します。
テーブル レベルでのManifest.json
"exhibitsTraits": [
{
"traitReference": "is.formatted.dateTime",
"arguments": [
{
"name": "format",
"value": "yyyy-MM-dd'T'HH:mm:ss"
}
]
},
{
"traitReference": "is.formatted.date",
"arguments": [
{
"name": "format",
"value": "yyyy-MM-dd"
}
]
}
]
属性レベルでのtable.json
{
"name": "PurchasedOn",
"appliedTraits": [
{
"traitReference": "is.formatted.date",
"arguments" : [
{
"name": "format",
"value": "yyyy-MM-dd"
}
]
},
{
"traitReference": "is.formatted.dateTime",
"arguments" : [
{
"name": "format",
"value": "yyyy-MM-ddTHH:mm:ss"
}
]
}
],
"attributeContext": "POSPurchases/attributeContext/POSPurchases/PurchasedOn",
"dataFormat": "DateTime"
}
Power Query を使用したインジェスト エラーまたは破損したデータ
Datetime 値が正しく解析されないか、解析エラーが発生する
最も一般的なデータ型の不一致は、日付フィールドが正しい日付形式に設定されていない場合に発生します。 この不一致は、誤った形式のソース データまたは正しくない ロケールが原因で発生する可能性があります。
ロケールの問題が正しくない場合の症状:
使用されているロケールによってソース データを解析できない場合、インジェスト エラーが発生します。 たとえば、"29/08/2023" が "MM/DD/YYYY" で解析された場合、月 29 を解析できないため、インジェストは失敗します。
ソース データが正しくないロケールを使用して正常に解析されると、datetime 値が正しくありません。 たとえば、ソース データの形式は "MM/DD/YYYY" ですが、インジェスト中にデータを解析するために使用される既定のロケールでは "DD/MM/YYYY" が使用されます。その結果、"2023 年 12 月 8 日" は "2023 年 8 月 12 日" として取り込まれます。
解決方法
正しくない形式を修正するには、ソース データを更新して再取り込みを行います。
正しくないロケールを修正するには、Power Query 変換でロケールを使用する変更の種類を使用して、すべての datetime フィールドの型>を正しいロケールを使用するように変更します。 例:
詳細については、「 ドキュメントまたはプロジェクトのロケール」を参照してください。