次の方法で共有


インジェスト エラーまたは破損データのトラブルシューティング

Note

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 のよくあるご質問 をご覧ください。

この記事では、Microsoft Dynamics 365 Customer Insights - Data で Azure Data Lake Storage または Power Query を使用する場合のデータ インジェスト エラーまたはデータの破損の一般的な理由について説明します。

Azure Data Lake Storage でのインジェスト エラーまたはデータの破損

データ取り込みの際、レコードが破損していると判断される最も一般的な理由は以下の通りです:

スキーマまたはデータ型の不一致

データがスキーマに準拠していない場合、インジェスト プロセスはエラーで完了します。

この問題を解決するには、ソース データまたはスキーマを修正し、データを再取り込みします。

パーティション ファイルがない

  • インジェスト プロセスが正常に実行され、破損したレコードがなくてもデータが表示されない場合は、 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 値が正しく解析されないか、解析エラーが発生する

最も一般的なデータ型の不一致は、日付フィールドに正しい日付フォーマットが設定されていない場合に発生します。 この不一致は、正しくない形式のソース データまたは不適切な localeが原因で発生する可能性があります。

ロケールの問題が正しくない場合の症状:

  • 使用されているロケールでソース データを解析できない場合は、インジェスト エラーが発生します。 たとえば、"29/08/2023" が "MM/DD/YYYY" で解析された場合、月 29 を解析できないため、インジェストは失敗します。

  • 正しくないロケールを使用してソース データが正常に解析されると、datetime 値が正しくありません。 たとえば、ソース データは "MM/DD/YYYY" として書式設定されますが、インジェスト中にデータを解析するために使用される既定のロケールでは "DD/MM/YYYY" が使用されます。その結果、"2023 年 12 月 8 日" は "2023 年 8 月 12 日" として取り込まれます。

    取り込み後に datetime 形式が正しくないことを示すスクリーンショット。

解決方法

  • 正しくない形式を修正するには、ソース データを更新して再取り込みします。

  • 正しくないロケールを修正するには、Power Query 変換で Change type>Using locale を使用して、すべての datetime フィールドの型を正しいロケールを使用するように変更します。 例えば次が挙げられます。

    Power Query でロケールを使用してデータ型を変更する方法を示すスクリーンショット。

    詳細については、「 Document またはプロジェクトロケールを参照してください。

詳細