互換性のない行をスキップすることによるコピー アクティビティへのフォールト トレランスの追加

Note

この記事は、Data Factory のバージョン 1 に適用されます。 現在のバージョンの Data Factory サービスを使用している場合は、Data Factory のコピー アクティビティでのフォールト トレランスに関するページを参照してください。

Azure Data Factory のコピー アクティビティには、ソースとシンク データ ストアの間でデータをコピーするときの互換性のない行の取り扱いについて、2 つの方法が用意されています。

  • 互換性のないデータが検出されたときに、コピー アクティビティを中止して停止させることができます (既定の動作)。
  • フォールト トレランスを追加して互換性のないデータ行をスキップすることで、すべてのデータのコピーを続行できます。 また、Azure Blob Storage 内の互換性のない行をログに記録することもできます。 そうすることで、ログを調査して失敗の原因を確認し、データ ソースの問題のあるデータを修正してから、コピー アクティビティをもう一度実行できます。

サポートされるシナリオ

コピー アクティビティでは、検出、スキップ、および互換性のないデータのログ記録の 3 つのシナリオをサポートします。

  • ソース データ型とシンク ネイティブ型の間に互換性がない

    例: 3 つの INT 型の列を含むスキーマ定義とともに、Blob ストレージ内の CSV ファイルから SQL データベースにデータをコピーします。 123,456,789 のような数値データを含む CSV ファイルの行が、シンク ストアに正常にコピーされます。 ただし、123,456,abc のような数値以外の値を含む行は、互換性のないものとして検出され、スキップされます。

  • ソースとシンクとの間で列の数が一致しない

    例: 6 つの列を含むスキーマ定義とともに、Blob Storage 内の CSV ファイルから SQL データベースにデータをコピーします。 6 つの列を含む CSV ファイルの行が、シンク ストアに正常にコピーされます。 含まれる列の数が 6 つでない CSV ファイルの行は、互換性のないものとして検出され、スキップされます。

  • SQL Server/Azure SQL Database/Azure Cosmos DB への書き込み時の主キー違反

    例: データを SQL サーバーから SQL データベースにコピーします。 シンクの SQL データベースでは主キーが定義されていますが、ソースの SQL サーバーではそのような主キーは定義されていません。 ソースに存在する重複している行は、シンクにはコピーできません。 コピー アクティビティでは、ソース データの最初の行のみがシンクにコピーされます。 それ以降のソース行に重複している主キーの値が含まれている場合、互換性のないものとして検出され、スキップされます。

Note

この機能は、コピー アクティビティが Azure Synapse Analytics の PolyBaseAmazon Redshift Unload などの外部データ読み込みメカニズムを呼び出すように構成されている場合は適用されません。 PolyBase を使用して Azure Synapse Analytics にデータを読み込むには、コピー アクティビティで "polyBaseSettings" を指定して PolyBase のネイティブ フォールト トレランス サポートを使用します。

構成

次の例では、コピー アクティビティで互換性のない行をスキップするように構成する JSON 定義について説明します。

"typeProperties": {
    "source": {
        "type": "BlobSource"
    },
    "sink": {
        "type": "SqlSink",
    },
    "enableSkipIncompatibleRow": true,
    "redirectIncompatibleRowSettings": {
        "linkedServiceName": "BlobStorage",
        "path": "redirectcontainer/erroroutput"
    }
}
プロパティ 説明 使用できる値 必須
enableSkipIncompatibleRow コピー中に互換性のない行のスキップを有効にするかどうか。 True
False (既定値)
いいえ
redirectIncompatibleRowSettings 互換性のない行をログに記録するときに指定できるプロパティのグループ。   いいえ
linkedServiceName スキップされる行が含まれたログを格納する Azure Storage のリンク サービス。 AzureStorage または AzureStorageSas リンク サービスの名前。これは、ログ ファイルの格納に使用するストレージ インスタンスです。 いいえ
path スキップした行を含むログ ファイルのパス。 互換性のないデータをログに記録する Blob Storage のパスを指定します。 パスを指定しないと、サービスによってコンテナーが作成されます。 いいえ

監視

コピー アクティビティの実行が完了すると、監視セクションでスキップされた行の数を次のように確認できます。

Monitor skipped incompatible rows

互換性のない行をログに記録するように構成した場合、ログ ファイルは https://[your-blob-account].blob.core.windows.net/[path-if-configured]/[copy-activity-run-id]/[auto-generated-GUID].csv のパスにあります。ログ ファイルでは、スキップされた行と互換性がないことの根本原因を確認できます。

ログ ファイルには元のデータと対応するエラーが記録されています。 ログ ファイルの内容の例は次のとおりです。

data1, data2, data3, UserErrorInvalidDataValue,Column 'Prop_2' contains an invalid value 'data3'. Cannot convert 'data3' to type 'DateTime'.,
data4, data5, data6, Violation of PRIMARY KEY constraint 'PK_tblintstrdatetimewithpk'. Cannot insert duplicate key in object 'dbo.tblintstrdatetimewithpk'. The duplicate key value is (data4).

次のステップ

Azure Data Factory のコピー アクティビティについて詳しくは、「コピー アクティビティを使用したデータの移動」をご覧ください。