Azure Data Factory を使用して Azure Files との間でデータをコピーする

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。

この記事では、Azure Files をコピー先またはコピー元としてデータをコピーする方法について説明します。 Azure Data Factory については、入門記事でをご覧ください。

サポートされる機能

この Azure Files コネクタは、次の機能でサポートされます。

サポートされる機能 IR マネージド プライベート エンドポイント
Copy アクティビティ (ソース/シンク) ① ② ✓ ストレージ アカウント V1 を除く
Lookup アクティビティ ① ② ✓ ストレージ アカウント V1 を除く
GetMetadata アクティビティ ① ② ✓ ストレージ アカウント V1 を除く
アクティビティを削除する ① ② ✓ ストレージ アカウント V1 を除く

① Azure 統合ランタイム ② セルフホステッド統合ランタイム

Azure Files から、サポートされる任意のシンク データ ストアにデータをコピーしたり、サポートされる任意のソース データ ストアから Azure Files にデータをコピーしたりできます。 コピー アクティビティでソースおよびシンクとしてサポートされているデータ ストアの一覧については、「サポートされるデータ ストアと形式」を参照してください。

具体的には、この Azure Files コネクタは、以下をサポートします。

作業の開始

パイプラインでコピー アクティビティを実行するには、次のいずれかのツールまたは SDK を使用します。

UI を使用して Azure Files のリンク サービスを作成する

次の手順を使用して、Azure portal UI で Azure Files のリンク サービスを作成します。

  1. Azure Data Factory または Synapse ワークスペースの [管理] タブに移動し、[リンク サービス] を選択して、[新規] をクリックします。

  2. ファイルを検索し、Azure File Storage と表示される Azure Files のコネクタを選択します。

    Azure File Storage コネクタのスクリーンショット。

  3. サービスの詳細を構成し、接続をテストして、新しいリンク サービスを作成します。

    Azure File Storage のリンク サービスの構成のスクリーンショット。

コネクタの構成の詳細

以下のセクションでは、Azure Files に固有のエンティティの定義に使用されるプロパティについて詳しく説明します。

リンクされたサービスのプロパティ

Azure Files コネクタでは、次の認証の種類がサポートされています。 詳細については、対応するセクションをご覧ください。

Note

Azure Files のリンクされたサービスを レガシ モデルで使用していて、ADF 作成 UI 上に "基本認証" として表示されている場合は、引き続きそのままサポートされますが、今後は新しいモデルを使用することをお勧めします。 レガシ モデルではサーバー メッセージ ブロック (SMB) を介してストレージとの間でデータを転送しますが、新しいモデルでは、スループットが向上したストレージ SDK が利用されます。 アップグレードするには、リンクされたサービスを編集して認証方法を "アカウント キー" または "SAS URI" に切り替えます。データセットとコピー アクティビティの変更は不要です。

アカウント キー認証

Data Factory では、Azure Files アカウント キー認証用に次のプロパティがサポートされています。

プロパティ 内容 必須
type type プロパティは、次のように設定する必要があります:AzureFileStorage はい
connectionString Azure Files に接続するために必要な情報を指定します。
アカウント キーを Azure Key Vault に格納して、接続文字列から accountKey 構成をプルすることもできます。 詳細については、下記の例と、「Azure Key Vault への資格情報の格納」の記事を参照してください。
はい
fileShare ファイル共有を指定します。 はい
スナップショット スナップショットからコピーする場合は、 ファイル共有スナップショットの日付を指定します。 いいえ
connectVia データ ストアに接続するために使用される統合ランタイム。 Azure 統合ランタイムまたは自己ホスト型統合ランタイム (データ ストアがプライベート ネットワークにある場合) を使用できます。 指定されていない場合は、既定の Azure 統合ランタイムが使用されます。 いいえ

例:

{
    "name": "AzureFileStorageLinkedService",
    "properties": {
        "type": "AzureFileStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>;EndpointSuffix=core.windows.net;",
            "fileShare": "<file share name>"
        },
        "connectVia": {
          "referenceName": "<name of Integration Runtime>",
          "type": "IntegrationRuntimeReference"
        }
    }
}

例: アカウント キーを Azure Key Vault に格納する

{
    "name": "AzureFileStorageLinkedService",
    "properties": {
        "type": "AzureFileStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;",
            "fileShare": "<file share name>",
            "accountKey": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }            
    }
}

Shared Access Signature 認証

Shared Access Signature を使用すると、ストレージ アカウント内のリソースへの委任アクセスが可能になります。 Shared Access Signature を使用して、ストレージ アカウントのオブジェクトへの制限付きアクセス許可を、期間を指定してクライアントに付与できます。 Shared Access Signature について詳しくは、Shared Access Signature のモデルの概要に関するページをご覧ください。

サービスでは、Shared Access Signature 認証を使用するための次のプロパティがサポートされています。

プロパティ 内容 必須
type type プロパティは、次のように設定する必要があります:AzureFileStorage はい
sasUri リソースへの Shared Access Signature URI を指定します。
安全に保存するには、このフィールドを SecureString としてマークします。 自動ローテーションを使用してトークン部分を削除するために、SAS トークンを Azure Key Vault に配置することもできます。 詳細については、下記の例と、「Azure Key Vault への資格情報の格納」を参照してください。
はい
fileShare ファイル共有を指定します。 はい
スナップショット スナップショットからコピーする場合は、 ファイル共有スナップショットの日付を指定します。 いいえ
connectVia データ ストアに接続するために使用される統合ランタイム。 Azure 統合ランタイムまたは自己ホスト型統合ランタイム (データ ストアがプライベート ネットワークにある場合) を使用できます。 指定されていない場合は、既定の Azure 統合ランタイムが使用されます。 いいえ

例:

{
    "name": "AzureFileStorageLinkedService",
    "properties": {
        "type": "AzureFileStorage",
        "typeProperties": {
            "sasUri": {
                "type": "SecureString",
                "value": "<SAS URI of the resource e.g. https://<accountname>.file.core.windows.net/?sv=<storage version>&st=<start time>&se=<expire time>&sr=<resource>&sp=<permissions>&sip=<ip range>&spr=<protocol>&sig=<signature>>"
            },
            "fileShare": "<file share name>",
            "snapshot": "<snapshot version>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

例: SAS トークンを Azure Key Vault に格納する

{
    "name": "AzureFileStorageLinkedService",
    "properties": {
        "type": "AzureFileStorage",
        "typeProperties": {
            "sasUri": {
                "type": "SecureString",
                "value": "<SAS URI of the Azure Storage resource without token e.g. https://<accountname>.file.core.windows.net/>"
            },
            "sasToken": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName with value of SAS token e.g. ?sv=<storage version>&st=<start time>&se=<expire time>&sr=<resource>&sp=<permissions>&sip=<ip range>&spr=<protocol>&sig=<signature>>" 
            },
            "fileShare": "<file share name>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

システム割り当てマネージド ID 認証

データ ファクトリや Synapse パイプラインは、Azure リソースのシステム割り当てマネージド ID に関連付けできます。これは、他の Azure サービスに対する認証のためのリソースを表します。 このシステム割り当てマネージド ID を Azure Files 認証に使用できます。 Azure リソース用マネージド ID の詳細については、Azure リソース用マネージド ID に関するページを参照してください。

システム割り当てマネージド ID 認証を使用するには、次の手順に従います。

  1. ファクトリまたは Synapse ワークスペースと共に生成されたシステム割り当てマネージド ID のオブジェクト ID の値をコピーして、システム割り当てマネージド ID 情報を取得します。

  2. Azure Files でマネージド ID にアクセス許可を付与します。 ロールの詳細については、こちらの記事を参照してください。

    • ソースとしてアクセス制御 (IAM) 内で、少なくともストレージ ファイル データ特権を持つ閲覧者のロールを許可します。
    • シンクとしてアクセス制御 (IAM) 内で、少なくともストレージ ファイル データ特権を持つ共同作成者のロールを許可します。

Azure Files のリンクされたサービスでは、次のプロパティがサポートされます。

プロパティ 内容 必須
type type プロパティを AzureFileStorage に設定する必要があります。 はい
serviceEndpoint https://<accountName>.file.core.windows.net/ のパターンで、Azure Files サービス エンドポイントを指定します。 はい
fileShare ファイル共有を指定します。 はい
スナップショット スナップショットからコピーする場合は、 ファイル共有スナップショットの日付を指定します。 いいえ
connectVia データ ストアに接続するために使用される統合ランタイム。 Azure Integration Runtime を使用できます。 指定されていない場合は、既定の Azure 統合ランタイムが使用されます。 いいえ

Note

システム割り当てマネージド ID 認証は、Azure 統合ランタイムでのみサポートされます。

例:

{
    "name": "AzureFileStorageLinkedService",
    "properties": {
        "type": "AzureFileStorage",
        "typeProperties": {            
            "serviceEndpoint": "https://<accountName>.file.core.windows.net/",
            "fileShare": "<file share name>",
            "snapshot": "<snapshot version>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

ユーザー割り当てマネージド ID 認証

データ ファクトリは、1 つ以上のユーザー割り当てマネージド ID に割り当てることができます。 このユーザー割り当てマネージド ID を Azure Files 認証に使用できます。これにより、Azure Files にアクセスしてそこに (またはそこから) データをコピーできます。 Azure リソース用マネージド ID の詳細については、Azure リソース用マネージド ID に関するページを参照してください。

ユーザー割り当てマネージド ID 認証を使用するには、次の手順に従います。

  1. 1 つ以上のユーザー割り当てマネージド ID を作成して、Azure Files でアクセス許可を付与します。 ロールの詳細については、こちらの記事を参照してください。

    • ソースとしてアクセス制御 (IAM) 内で、少なくともストレージ ファイル データ特権を持つ閲覧者のロールを許可します。
    • シンクとしてアクセス制御 (IAM) 内で、少なくともストレージ ファイル データ特権を持つ共同作成者のロールを許可します。
  2. 1 つ以上のユーザー割り当てマネージド ID をデータ ファクトリに割り当てて、ユーザー割り当てマネージド ID ごとに資格情報を作成します。

Azure Files のリンクされたサービスでは、次のプロパティがサポートされます。

プロパティ 内容 必須
type type プロパティを AzureFileStorage に設定する必要があります。 はい
serviceEndpoint https://<accountName>.file.core.windows.net/ のパターンで、Azure Files サービス エンドポイントを指定します。 はい
資格情報 ユーザー割り当てマネージド ID を資格情報オブジェクトとして指定します。 はい
fileShare ファイル共有を指定します。 はい
スナップショット スナップショットからコピーする場合は、 ファイル共有スナップショットの日付を指定します。 いいえ
connectVia データ ストアに接続するために使用される統合ランタイム。 Azure 統合ランタイムまたは自己ホスト型統合ランタイム (データ ストアがプライベート ネットワークにある場合) を使用できます。 指定されていない場合は、既定の Azure 統合ランタイムが使用されます。 いいえ

例:

{
    "name": "AzureFileStorageLinkedService",
    "properties": {
        "type": "AzureFileStorage",
        "typeProperties": {            
            "serviceEndpoint": "https://<accountName>.file.core.windows.net/",
            "credential": {
                "referenceName": "credential1",
                "type": "CredentialReference"
            },
            "fileShare": "<file share name>",
            "snapshot": "<snapshot version>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

レガシ モデル

プロパティ 内容 必須
type type プロパティは、次のように設定する必要があります:AzureFileStorage はい
host Azure Files のエンドポイントを次のように指定します。
\- UI を使用する場合: \\<storage name>.file.core.windows.net\<file service name> を指定します
- JSON を使用する場合: "host": "\\\\<storage name>.file.core.windows.net\\<file service name>"
はい
userid Azure Files にアクセスするユーザーを次のように指定します。
\- UI を使用する場合: AZURE\<storage name> を指定します
\- JSON を使用する場合: "userid": "AZURE\\<storage name>"
はい
password ストレージ アクセス キーを指定します。 このフィールドを SecureString としてマークして Data Factory に安全に保管するか、Azure Key Vault に格納されているシークレットを参照します。 はい
connectVia データ ストアに接続するために使用される統合ランタイム。 Azure 統合ランタイムまたは自己ホスト型統合ランタイム (データ ストアがプライベート ネットワークにある場合) を使用できます。 指定されていない場合は、既定の Azure 統合ランタイムが使用されます。 ソースの場合はいいえ、シンクの場合ははい

例:

{
    "name": "AzureFileStorageLinkedService",
    "properties": {
        "type": "AzureFileStorage",
        "typeProperties": {
            "host": "\\\\<storage name>.file.core.windows.net\\<file service name>",
            "userid": "AZURE\\<storage name>",
            "password": {
                "type": "SecureString",
                "value": "<storage access key>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

データセットのプロパティ

データセットを定義するために使用できるセクションとプロパティの完全な一覧については、データセットに関する記事をご覧ください。

Azure Data Factory では次のファイル形式がサポートされます。 形式ベースの設定については、各記事を参照してください。

Azure Files では、形式ベースのデータセットの location 設定において、次のプロパティがサポートされています。

プロパティ 内容 必須
type データセットの location の type プロパティは、AzureFileStorageLocation に設定する必要があります。 はい
folderPath フォルダーのパス。 フォルダーをフィルター処理するためにワイルドカードを使用する場合は、この設定をスキップし、アクティビティのソースの設定で指定します。 いいえ
fileName 特定の folderPath の下のファイル名。 ファイルをフィルター処理するためにワイルドカードを使用する場合は、この設定をスキップし、アクティビティのソースの設定で指定します。 いいえ

例:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<Azure File Storage linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "AzureFileStorageLocation",
                "folderPath": "root/folder/subfolder"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

コピー アクティビティのプロパティ

アクティビティの定義に利用できるセクションとプロパティの完全な一覧については、パイプラインに関する記事を参照してください。 このセクションでは、Azure Files のソースとシンクでサポートされるプロパティの一覧を示します。

Azure Files をソースとして

Azure Data Factory では次のファイル形式がサポートされます。 形式ベースの設定については、各記事を参照してください。

Azure Files では、形式ベースのコピー ソースの storeSettings 設定において、次のプロパティがサポートされています。

プロパティ 内容 必須
type storeSettings の type プロパティは AzureFileStorageReadSettings に設定する必要があります。 はい
コピーするファイルを特定する:
オプション 1: 静的パス
データセットに指定されている所定のフォルダーまたはファイル パスからコピーします。 フォルダーからすべてのファイルをコピーする場合は、さらに * として wildcardFileName を指定します。
オプション 2: ファイルのプレフィックス
- prefix
ソース ファイルをフィルター処理するために、データセットで構成されている、指定されたファイル共有にあるファイル名のプレフィックス。 fileshare_in_linked_service/this_prefix で始まる名前のファイルが選択されます。 ワイルドカード フィルターより優れたパフォーマンスを提供する、Azure Files 用のサービス側フィルターを利用します。 レガシのリンクされたサービス モデルを使用する場合、この機能はサポートされません。 いいえ
オプション 3: ワイルドカード
- wildcardFolderPath
ソース フォルダーをフィルター処理するための、ワイルドカード文字を含むフォルダー パス。
使用できるワイルドカーは、* (ゼロ文字以上の文字に一致) と ? (ゼロ文字または 1 文字に一致) です。実際のフォルダー名にワイルドカードまたはこのエスケープ文字が含まれている場合は、^ を使用してエスケープします。
フォルダーとファイル フィルターの例」の他の例をご覧ください。
いいえ
オプション 3: ワイルドカード
- wildcardFileName
ソース ファイルをフィルター処理するための、特定の folderPath/wildcardFolderPath の下のワイルドカード文字を含むファイル名。
使用できるワイルドカーは、* (ゼロ文字以上の文字に一致) と ? (ゼロ文字または 1 文字に一致) です。実際のファイル名にワイルドカードまたはこのエスケープ文字が含まれている場合は、^ を使用してエスケープします。 「フォルダーとファイル フィルターの例」の他の例をご覧ください。
はい
オプション 4: ファイルの一覧
- fileListPath
指定されたファイル セットをコピーすることを示します。 コピーするファイルの一覧を含むテキスト ファイルをポイントします。データセットで構成されているパスへの相対パスであるファイルを 1 行につき 1 つずつ指定します。
このオプションを使用する場合は、データ セットにファイル名を指定しないでください。 その他の例については、ファイル リストの例を参照してください。
いいえ
追加の設定:
recursive データをサブフォルダーから再帰的に読み取るか、指定したフォルダーからのみ読み取るかを指定します。 recursive が true に設定されていて、シンクがファイル ベースのストアである場合、空のフォルダーまたはサブフォルダーはシンクでコピーも作成もされません。
使用可能な値: true (既定値) および false
fileListPath を構成する場合、このプロパティは適用されません。
いいえ
deleteFilesAfterCompletion 宛先ストアに正常に移動した後、バイナリ ファイルをソース ストアから削除するかどうかを示します。 ファイルの削除はファイルごとに行われるので、コピー操作が失敗した場合、一部のファイルが既に宛先にコピーされソースからは削除されているが、他のファイルはまだソース ストアに残っていることがわかります。
このプロパティは、バイナリ ファイルのコピー シナリオでのみ有効です。 既定値: false。
いいえ
modifiedDatetimeStart ファイルはフィルター処理され、元になる属性は最終更新時刻です。
ファイルは、最終変更日時が modifiedDatetimeStart と同じかそれよりも後であり、modifiedDatetimeEnd よりも前である場合に選択されます。 時刻は "2018-12-01T05:00:00Z" の形式で UTC タイム ゾーンに適用されます。
プロパティは、ファイル属性フィルターをデータセットに適用しないことを意味する NULL にすることができます。 modifiedDatetimeStart に datetime 値を設定し、modifiedDatetimeEnd を NULL にした場合は、最終更新時刻属性が datetime 値以上であるファイルが選択されることを意味します。 modifiedDatetimeEnd に datetime 値を設定し、modifiedDatetimeStart を NULL にした場合は、最終更新時刻属性が datetime 値以下であるファイルが選択されることを意味します。
fileListPath を構成する場合、このプロパティは適用されません。
いいえ
modifiedDatetimeEnd 上記と同じです。 いいえ
enablePartitionDiscovery パーティション分割されているファイルの場合は、ファイル パスのパーティションを解析し、それを追加のソース列として追加するかどうかを指定します。
指定できる値は false (既定値) と true です。
いいえ
partitionRootPath パーティション検出が有効になっている場合は、パーティション分割されたフォルダーをデータ列として読み取るための絶対ルート パスを指定します。

これが指定されていない場合は、既定で次のようになります。
- ソース上のデータセットまたはファイルの一覧内のファイル パスを使用する場合、パーティションのルート パスはそのデータセットで構成されているパスです。
- ワイルドカード フォルダー フィルターを使用する場合、パーティションのルート パスは最初のワイルドカードの前のサブパスです。

たとえば、データセット内のパスを "root/folder/year=2020/month=08/day=27" として構成するとします。
- パーティションのルート パスを "root/folder/year=2020" として指定した場合は、コピー アクティビティによって、ファイル内の列とは別に、それぞれ "08" と "27" の値を持つ monthday という 2 つの追加の列が生成されます。
- パーティションのルート パスが指定されない場合、追加の列は生成されません。
いいえ
maxConcurrentConnections アクティビティの実行中にデータ ストアに対して確立されたコンカレント接続数の上限。 コンカレント接続を制限する場合にのみ、値を指定します。 いいえ

例:

"activities":[
    {
        "name": "CopyFromAzureFileStorage",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Delimited text input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "formatSettings":{
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 10
                },
                "storeSettings":{
                    "type": "AzureFileStorageReadSettings",
                    "recursive": true,
                    "wildcardFolderPath": "myfolder*A",
                    "wildcardFileName": "*.csv"
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Azure Files をシンクとして

Azure Data Factory では次のファイル形式がサポートされます。 形式ベースの設定については、各記事を参照してください。

Azure Files では、形式ベースのコピー リンクの storeSettings 設定において、次のプロパティがサポートされています。

プロパティ 内容 必須
type storeSettings の type プロパティは AzureFileStorageWriteSettings に設定する必要があります。 はい
copyBehavior ソースがファイル ベースのデータ ストアのファイルの場合は、コピー動作を定義します。

使用できる値は、以下のとおりです。
- PreserveHierarchy (既定値):ターゲット フォルダー内でファイル階層を保持します。 ソース フォルダーに対するソース ファイルの相対パスと、ターゲット フォルダーに対するターゲット ファイルの相対パスが一致します。
- FlattenHierarchy:ソース フォルダーのすべてのファイルをターゲット フォルダーの第一レベルに配置します。 ターゲット ファイルは、自動生成された名前になります。
- MergeFiles:ソース フォルダーのすべてのファイルを 1 つのファイルにマージします。 ファイル名を指定した場合、マージされたファイル名は指定した名前になります。 それ以外は自動生成されたファイル名になります。
いいえ
maxConcurrentConnections アクティビティの実行中にデータ ストアに対して確立されたコンカレント接続数の上限。 コンカレント接続を制限する場合にのみ、値を指定します。 いいえ

例:

"activities":[
    {
        "name": "CopyToAzureFileStorage",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Parquet output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "ParquetSink",
                "storeSettings":{
                    "type": "AzureFileStorageWriteSettings",
                    "copyBehavior": "PreserveHierarchy"
                }
            }
        }
    }
]

フォルダーとファイル フィルターの例

このセクションでは、ワイルドカード フィルターを使用した結果のフォルダーのパスとファイル名の動作について説明します。

folderPath fileName recursive ソースのフォルダー構造とフィルターの結果 (太字のファイルが取得されます)
Folder* (空、既定値を使用) false FolderA
    File1.csv
    File2.json
    Subfolder1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* (空、既定値を使用) true FolderA
    File1.csv
    File2.json
    Subfolder1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* *.csv false FolderA
    File1.csv
    File2.json
    Subfolder1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* *.csv true FolderA
    File1.csv
    File2.json
    Subfolder1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv

ファイル リストの例

このセクションでは、コピー アクティビティのソースでファイル リスト パスを使用した結果の動作について説明します。

次のソース フォルダー構造があり、太字のファイルをコピーするとします。

サンプルのソース構造 FileListToCopy.txt のコンテンツ 構成
root
    FolderA
        File1.csv
        File2.json
        Subfolder1
            File3.csv
            File4.json
            File5.csv
    メタデータ
        FileListToCopy.txt
File1.csv
Subfolder1/File3.csv
Subfolder1/File5.csv
データセット内:
- フォルダー パス: root/FolderA

コピー アクティビティ ソース内:
- ファイル リストのパス: root/Metadata/FileListToCopy.txt

ファイル リストのパスは、コピーするファイルの一覧を含む同じデータ ストア内のテキスト ファイルをポイントします。データセットで構成されているパスへの相対パスで 1 行につき 1 つのファイルを指定します。

recursive と copyBehavior の例

このセクションでは、recursive 値と copyBhavior 値の組み合わせごとに、Copy 操作で行われる動作について説明します。

recursive copyBehavior ソースのフォルダー構造 ターゲットの結果
true preserveHierarchy Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5
ターゲット フォルダー Folder1 は、ソースと同じ構造で作成されます。

Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5.
true flattenHierarchy Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5
ターゲットの Folder1 は、次の構造で作成されます。

Folder1
    File1 の自動生成された名前
    File2 の自動生成された名前
    File3 の自動生成された名前
    File4 の自動生成された名前
    File5 の自動生成された名前
true mergeFiles Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5
ターゲットの Folder1 は、次の構造で作成されます。

Folder1
    File1、File2、File3、File4、File5 の内容は、自動生成されたファイル名を持つ 1 つのファイルにマージされます
false preserveHierarchy Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5
ターゲット フォルダー Folder1 は、次の構造で作成されます。

Folder1
    File1
    File2

Subfolder1 と File3、File4、File5 は取得されません。
false flattenHierarchy Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5
ターゲット フォルダー Folder1 は、次の構造で作成されます。

Folder1
    File1 の自動生成された名前
    File2 の自動生成された名前

Subfolder1 と File3、File4、File5 は取得されません。
false mergeFiles Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5
ターゲット フォルダー Folder1 は、次の構造で作成されます。

Folder1
    File1、File2 の内容は 1 つのファイルにマージされ、自動生成されたファイル名が付けられます。 File1 の自動生成された名前

Subfolder1 と File3、File4、File5 は取得されません。

Lookup アクティビティのプロパティ

プロパティの詳細については、Lookup アクティビティに関するページを参照してください。

GetMetadata アクティビティのプロパティ

プロパティの詳細については、GetMetadata アクティビティに関するページを参照してください。

Delete アクティビティのプロパティ

プロパティの詳細については、Delete アクティビティに関するページを参照してください。

レガシ モデル

注意

次のモデルは、下位互換性のために引き続きそのままサポートされます。 今後は、上記のセクションで説明した新しいモデルを使用することをお勧めします。作成 UI は、新しいモデルを生成するように切り替えられています。

レガシ データセット モデル

プロパティ 内容 必須
type データセットの type プロパティは、次のように設定する必要があります:FileShare はい
folderPath フォルダーへのパス。

ワイルドカード フィルターがサポートされています。使用できるワイルドカードは、* (ゼロ文字以上の文字に一致) と ? (ゼロ文字または 1 文字に一致) です。実際のフォルダー名にワイルドカードまたはこのエスケープ文字が含まれている場合は、^ を使用してエスケープします。

例: ルートフォルダー/サブフォルダー。「フォルダーとファイル フィルターの例」の例を参照してください。
はい
fileName 指定された "folderPath" の下にあるファイルの名前またはワイルドカード フィルター。 このプロパティの値を指定しない場合、データセットはフォルダー内のすべてのファイルをポイントします。

フィルターに使用できるワイルドカードは、* (ゼロ文字以上の文字に一致) と ? (ゼロ文字または 1 文字に一致) です。
- 例 1: "fileName": "*.csv"
- 例 2: "fileName": "???20180427.txt"
実際のファイル名にワイルドカードまたはこのエスケープ文字が含まれている場合は、^ を使用してエスケープします。

出力データセットに fileName の指定がなく、アクティビティ シンクに preserveHierarchy の指定がない場合、コピー アクティビティは、"Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txt.gz" のように "Data.[アクティビティ実行 ID GUID].[FlattenHierarchy の場合は GUID].[構成されている場合は形式].[構成されている場合は圧縮] " のパターンでファイル名を自動生成します。クエリの代わりにテーブル名を使用して表形式のソースからコピーする場合、名前のパターンは "MyTable.csv" のように " [テーブル名].[形式].[構成されている場合は圧縮] " になります。
いいえ
modifiedDatetimeStart ファイルはフィルター処理され、元になる属性は最終更新時刻です。 ファイルは、最終変更日時が modifiedDatetimeStart と同じかそれよりも後であり、modifiedDatetimeEnd よりも前である場合に選択されます。 時刻は "2018-12-01T05:00:00Z" の形式で UTC タイム ゾーンに適用されます。

多数のファイルにファイル フィルターを実行する場合は、この設定を有効にすることで、データ移動の全体的なパフォーマンスが影響を受けることに注意してください。

プロパティは、ファイル属性フィルターをデータセットに適用しないことを意味する NULL にすることができます。 modifiedDatetimeStart に datetime 値を設定し、modifiedDatetimeEnd を NULL にした場合は、最終更新時刻属性が datetime 値以上であるファイルが選択されることを意味します。 modifiedDatetimeEnd に datetime 値を設定し、modifiedDatetimeStart を NULL にした場合は、最終更新時刻属性が datetime 値以下であるファイルが選択されることを意味します。
いいえ
modifiedDatetimeEnd ファイルはフィルター処理され、元になる属性は最終更新時刻です。 ファイルは、最終変更日時が modifiedDatetimeStart と同じかそれよりも後であり、modifiedDatetimeEnd よりも前である場合に選択されます。 時刻は "2018-12-01T05:00:00Z" の形式で UTC タイム ゾーンに適用されます。

多数のファイルにファイル フィルターを実行する場合は、この設定を有効にすることで、データ移動の全体的なパフォーマンスが影響を受けることに注意してください。

プロパティは、ファイル属性フィルターをデータセットに適用しないことを意味する NULL にすることができます。 modifiedDatetimeStart に datetime 値を設定し、modifiedDatetimeEnd を NULL にした場合は、最終更新時刻属性が datetime 値以上であるファイルが選択されることを意味します。 modifiedDatetimeEnd に datetime 値を設定し、modifiedDatetimeStart を NULL にした場合は、最終更新時刻属性が datetime 値以下であるファイルが選択されることを意味します。
いいえ
format ファイルベースのストア間でファイルをそのままコピー (バイナリ コピー) する場合は、入力と出力の両方のデータセット定義で format セクションをスキップします。

特定の形式のファイルを解析または生成する場合、サポートされるファイル形式の種類は、TextFormatJsonFormatAvroFormatOrcFormatParquetFormat です。 形式の type プロパティをいずれかの値に設定します。 詳細については、Text FormatJson FormatAvro FormatOrc FormatParquet Format の各セクションを参照してください。
いいえ (バイナリ コピー シナリオのみ)
compression データの圧縮の種類とレベルを指定します。 詳細については、サポートされるファイル形式と圧縮コーデックに関する記事を参照してください。
サポートされる種類は、GZipDeflateBZip2ZipDeflate です。
サポートされるレベルは、OptimalFastest です。
いいえ

ヒント

フォルダーの下のすべてのファイルをコピーするには、folderPath のみを指定します。
特定の名前の単一のファイルをコピーするには、フォルダー部分で folderPath、ファイル名で fileName を指定します。
フォルダーの下のファイルのサブセットをコピーするには、フォルダー部分で folderPath、ワイルドカード フィルターで fileName を指定します。

注意

ファイル フィルターで "fileFilter" プロパティを使用していた場合は、そのまま引き続きサポートされますが、今後は "fileName" に追加された新しいフィルター機能を使用することをお勧めします。

例:

{
    "name": "AzureFileStorageDataset",
    "properties": {
        "type": "FileShare",
        "linkedServiceName":{
            "referenceName": "<Azure File Storage linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "folderPath": "folder/subfolder/",
            "fileName": "*",
            "modifiedDatetimeStart": "2018-12-01T05:00:00Z",
            "modifiedDatetimeEnd": "2018-12-01T06:00:00Z",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ",",
                "rowDelimiter": "\n"
            },
            "compression": {
                "type": "GZip",
                "level": "Optimal"
            }
        }
    }
}

レガシ コピー アクティビティ ソース モデル

プロパティ 内容 必須
type コピー アクティビティのソースの type プロパティは、次のように設定する必要があります:FileSystemSource はい
recursive データをサブ フォルダーから再帰的に読み取るか、指定したフォルダーからのみ読み取るかを指定します。 recursive が true に設定され、シンクがファイル ベースのストアである場合、空のフォルダー/サブフォルダーはシンクでコピー/作成されないことに注意してください。
使用可能な値: true (既定値)、false
いいえ
maxConcurrentConnections アクティビティの実行中にデータ ストアに対して確立されたコンカレント接続数の上限。 コンカレント接続を制限する場合にのみ、値を指定します。 いいえ

例:

"activities":[
    {
        "name": "CopyFromAzureFileStorage",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure File Storage input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "FileSystemSource",
                "recursive": true
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

レガシ コピー アクティビティ シンク モデル

プロパティ 内容 必須
type コピー アクティビティのシンクの type プロパティは、次のように設定する必要があります: FileSystemSink はい
copyBehavior ソースがファイル ベースのデータ ストアのファイルの場合は、コピー動作を定義します。

使用できる値は、以下のとおりです。
PreserveHierarchy (既定値): ファイル階層をターゲット フォルダー内で保持します。 ソース フォルダーに対するソース ファイルの相対パスと、ターゲット フォルダーに対するターゲット ファイルの相対パスが一致します。
FlattenHierarchy: ソース フォルダーのすべてのファイルがターゲット フォルダーの第一レベルに配置されます。 ターゲット ファイルは、自動生成された名前になります。
MergeFiles: ソース フォルダーのすべてのファイルを 1 つのファイルにマージします。 ファイル名を指定した場合、マージされたファイル名は指定した名前になります。それ以外の場合は、自動生成されたファイル名になります。
いいえ
maxConcurrentConnections アクティビティの実行中にデータ ストアに対して確立されたコンカレント接続数の上限。 コンカレント接続を制限する場合にのみ、値を指定します。 いいえ

例:

"activities":[
    {
        "name": "CopyToAzureFileStorage",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Azure File Storage output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "FileSystemSink",
                "copyBehavior": "PreserveHierarchy"
            }
        }
    }
]

Copy アクティビティでソースおよびシンクとしてサポートされるデータ ストアの一覧については、サポートされるデータ ストアに関するセクションを参照してください。