この記事では、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形式を指定できます。 テーブル レベルでは、*"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 値が正しく解析されないか、解析エラーが発生する
最も一般的なデータ型の不一致は、日付フィールドに正しい日付フォーマットが設定されていない場合に発生します。 この不一致は、正しくない形式のソース データまたは不適切な localeが原因で発生する可能性があります。
ロケール設定の誤りによる問題の症状:
使用されているロケールでソース データを解析できない場合は、インジェスト エラーが発生します。 たとえば、"29/08/2023" が "MM/DD/YYYY" で解析された場合、月 29 を解析できないため、インジェストは失敗します。
正しくないロケールを使用してソース データが正常に解析されると、datetime 値が正しくありません。 たとえば、ソース データは "MM/DD/YYYY" として書式設定されますが、インジェスト中にデータを解析するために使用される既定のロケールでは "DD/MM/YYYY" が使用されます。その結果、"2023 年 12 月 8 日" は "2023 年 8 月 12 日" として取り込まれます。
解決方法
正しくない形式を修正するには、ソース データを更新して再取り込みします。
正しくないロケールを修正するには、Power Query 変換で Change type>Using locale を使用して、すべての datetime フィールドの型を正しいロケールを使用するように変更します。 例:
詳細については、「 Document またはプロジェクトロケールを参照してください。