Azure Data Factory または Azure Synapse Analytics を使用して、SFTP サーバーのデータをコピーして変換する

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

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

この記事では、コピー アクティビティを使用してセキュア FTP (SFTP) サーバー間でデータをコピーし、Data Flow を使用して SFTP サーバーのデータを変換する方法について説明します。 詳細については、Azure Data Factory または Azure Synapse Analytics の概要記事を参照してください。

サポートされる機能

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

サポートされる機能 IR
Copy アクティビティ (ソース/シンク) 1.1
マッピング データ フロー (ソース/シンク) 1
Lookup アクティビティ 1.1
GetMetadata アクティビティ 1.1
アクティビティを削除する 1.1

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

具体的には、SFTP コネクタでは以下がサポートされます。

前提条件

データ ストアがオンプレ ミスネットワーク、Azure 仮想ネットワーク、または Amazon Virtual Private Cloud 内にある場合は、それに接続するようセルフホステッド統合ランタイムを構成する必要があります。

データ ストアがマネージド クラウド データ サービスである場合は、Azure Integration Runtime を使用できます。 ファイアウォール規則で承認されている IP にアクセスが制限されている場合は、Azure Integration Runtime の IP を許可リストに追加できます。

また、Azure Data Factory のマネージド仮想ネットワーク統合ランタイム機能を使用すれば、セルフホステッド統合ランタイムをインストールして構成しなくても、オンプレミス ネットワークにアクセスすることができます。

Data Factory によってサポートされるネットワーク セキュリティ メカニズムやオプションの詳細については、「データ アクセス戦略」を参照してください。

はじめに

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

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

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

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

  2. SFTP を検索し、SFTP コネクタを選択します。

    Screenshot of the SFTP connector.

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

    Screenshot of configuration for an SFTP linked service.

コネクタの構成の詳細

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

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

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

プロパティ Description 必須
type type プロパティは Sftp に設定する必要があります。 はい
host SFTP サーバーの名前または IP アドレス。 はい
port SFTP サーバーがリッスンしているポート。
指定できる値は整数で、既定値は 22 です。
いいえ
skipHostKeyValidation ホスト キーの検証をスキップするかどうかを指定します。
使用できる値は truefalse (既定値) です。
いいえ
hostKeyFingerprint ホスト キーのフィンガープリントを指定します。 はい ("skipHostKeyValidation" が false に設定されている場合)。
authenticationType 認証の種類を指定します。
使用可能な値は、BasicSshPublicKeyMultiFactor です。 詳細については、「基本認証を使用する」セクションを参照してください。 JSON の例については、「SSH 公開キー認証を使用する」セクションを参照してください。
はい
connectVia データ ストアに接続するために使用される統合ランタイム。 詳細については、「前提条件」セクションを参照してください。 統合ランタイムが指定されていない場合は、サービスでは既定の Azure Integration Runtime が使用されます。 いいえ

基本認証を使用する

基本認証を使用するには、authenticationType プロパティを Basic に設定し、前のセクションで導入した一般的な SFTP コネクタ プロパティに加えて以下のプロパティを指定します。

プロパティ Description 必要
userName SFTP サーバーにアクセスできるユーザー。 はい
password ユーザー (userName) のパスワード。 このフィールドを SecureString とマークして安全に保存するか、Azure Key Vault に保存されているシークレットを参照します はい

例:

{
    "name": "SftpLinkedService",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "<sftp server>",
            "port": 22,
            "skipHostKeyValidation": false,
            "hostKeyFingerPrint": "ssh-rsa 2048 xx:00:00:00:xx:00:x0:0x:0x:0x:0x:00:00:x0:x0:00",
            "authenticationType": "Basic",
            "userName": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

SSH 公開キー認証を使用する

SSH 公開キー認証を使用するには、"authenticationType" を SshPublicKey に設定し、前のセクションで導入した一般的な SFTP コネクタ プロパティのほかに、次のプロパティを指定します。

プロパティ Description 必要
userName SFTP サーバーにアクセスできるユーザー。 はい
privateKeyPath 統合ランタイムがアクセスできる秘密キー ファイルへの絶対パスを指定します。 これは、"connectVia" でセルフホステッド型の統合ランタイムが指定されている場合にのみ適用されます。 privateKeyPath または privateKeyContent を指定します。
privateKeyContent Base64 にエンコードされた SSH 秘密キーのコンテンツ。 SSH 秘密キーは、OpenSSH 形式にする必要があります。 このフィールドを SecureString とマークして安全に保存するか、Azure Key Vault に保存されているシークレットを参照します privateKeyPath または privateKeyContent を指定します。
passPhrase キー ファイルまたはキー コンテンツがパス フレーズで保護されている場合は、パス フレーズやパスワードを指定して、秘密キーの暗号化を解除します。 このフィールドを SecureString とマークして安全に保存するか、Azure Key Vault に保存されているシークレットを参照します はい (秘密キー ファイルまたはキー コンテンツがパス フレーズで保護されている場合)。

注意

SFTP コネクタでは、RSA/DSA OpenSSH キーがサポートされます。 キー ファイルの内容が、"-----BEGIN [RSA/DSA] PRIVATE KEY-----" で始まることを確認します。 秘密キー ファイルが PPK 形式のファイルである場合は、PuTTY ツールを使用して PPK から OpenSSH 形式に変換します。

例 1: 秘密キーの filePath を使用した SshPublicKey 認証

{
    "name": "SftpLinkedService",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "<sftp server>",
            "port": 22,
            "skipHostKeyValidation": true,
            "authenticationType": "SshPublicKey",
            "userName": "xxx",
            "privateKeyPath": "D:\\privatekey_openssh",
            "passPhrase": {
                "type": "SecureString",
                "value": "<pass phrase>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

例 2: 秘密キーのコンテンツを使用した SshPublicKey 認証

{
    "name": "SftpLinkedService",
    "type": "Linkedservices",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "<sftp server>",
            "port": 22,
            "skipHostKeyValidation": true,
            "authenticationType": "SshPublicKey",
            "userName": "<username>",
            "privateKeyContent": {
                "type": "SecureString",
                "value": "<base64 string of the private key content>"
            },
            "passPhrase": {
                "type": "SecureString",
                "value": "<pass phrase>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Multi-Factor Authentication の使用

基本認証と SSH 公開キー認証の組み合わせである多要素認証を使用するには、前のセクションで説明したユーザー名、パスワード、および秘密キーの情報を指定します。

例: 多要素認証

{
    "name": "SftpLinkedService",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "<host>",
            "port": 22,
            "authenticationType": "MultiFactor",
            "userName": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            },
            "privateKeyContent": {
                "type": "SecureString",
                "value": "<base64 encoded private key content>"
            },
            "passPhrase": {
                "type": "SecureString",
                "value": "<passphrase for private key>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

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

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

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

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

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

例:

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

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

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

ソースとしての SFTP

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

SFTP では、形式ベースのコピー ソースの storeSettings 設定で、以下のプロパティがサポートされています。

プロパティ Description 必須
type storeSettings の下の type プロパティは、SftpReadSettings に設定する必要があります。 はい
コピーするファイルを特定する
オプション 1: 静的パス
データセットに指定されているフォルダーやファイル パスからコピーします。 フォルダーからすべてのファイルをコピーする場合は、さらに * として wildcardFileName を指定します。
オプション 2: ワイルドカード
- wildcardFolderPath
ソース フォルダーをフィルター処理するための、ワイルドカード文字を含むフォルダー パス。
使用できるワイルドカードは、* (0 個以上の文字に一致) と ? (0 個または 1 個の文字に一致) です。実際のフォルダー名の中にワイルドカードまたはこのエスケープ文字が含まれている場合は、^ を使用してエスケープします。
他の例については、「フォルダーとファイル フィルターの例」を参照してください。
いいえ
オプション 2: ワイルドカード
- wildcardFileName
ソース ファイルをフィルター処理するための、指定された folderPath または wildcardFolderPath の下のワイルドカード文字を含むファイル名。
使用できるワイルドカードは、* (0 個以上の文字に一致) と ? (0 個または 1 個の文字に一致) です。実際のファイル名の中にワイルドカードまたはこのエスケープ文字が含まれている場合は、^ を使用してエスケープします。 他の例については、「フォルダーとファイル フィルターの例」を参照してください。
はい
オプション 3: ファイルの一覧
- fileListPath
指定されたファイル セットをコピーすることを示します。 コピーするファイルの一覧を含むテキスト ファイルをポイントします (データセットで構成されているパスへの相対パスを使用して、行ごとに 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 アクティビティの実行中にデータ ストアに対して確立されたコンカレント接続数の上限。 コンカレント接続を制限する場合にのみ、値を指定します。 No
disableChunking SFTP からデータをコピーする際、このサービスは、まずファイル長の取得を試み、次にファイルを複数の部分に分割して、並列で読み取ります。 SFTP サーバーで、ファイル長の取得、または特定のオフセットから読み取るためのシークがサポートされているかどうかを指定します。
指定できる値は false (既定値)、true です。
いいえ

例:

"activities":[
    {
        "name": "CopyFromSFTP",
        "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": "SftpReadSettings",
                    "recursive": true,
                    "wildcardFolderPath": "myfolder*A",
                    "wildcardFileName": "*.csv",
                    "disableChunking": false
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

シンクとしての SFTP

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

SFTP では、形式ベースのコピー シンクの storeSettings 設定で、以下のプロパティがサポートされています。

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

使用できる値は、以下のとおりです。
- PreserveHierarchy (既定値):ターゲット フォルダー内でファイル階層を保持します。 ソース フォルダーへのソース ファイルの相対パスはターゲット フォルダーへのターゲット ファイルの相対パスと同じになります。
- FlattenHierarchy:ソース フォルダーのすべてのファイルをターゲット フォルダーの第一レベルに配置します。 ターゲット ファイルは、自動生成された名前になります。
- MergeFiles:ソース フォルダーのすべてのファイルを 1 つのファイルにマージします。 ファイル名を指定した場合、マージされたファイル名は指定した名前になります。 それ以外は自動生成されたファイル名になります。
いいえ
maxConcurrentConnections アクティビティの実行中にデータ ストアに対して確立されたコンカレント接続数の上限。 コンカレント接続を制限する場合にのみ、値を指定します。 いいえ
useTempFileRename 一時ファイルにアップロードしてそれらの名前を変更するか、ターゲットのフォルダーまたはファイルの場所に直接書き込むかを指定します。 既定では、最初に一時ファイルに書き込まれ、アップロードが完了したらそれらの名前が変更されます。 このシーケンスは、(1) 同じファイルに書き込み中の他のプロセスがある場合に、ファイルの破損に至る可能性がある競合を回避し、(2) 転送中に元のバージョンのファイルが確実に存在するようにするのに役立ちます。 実際の SFTP サーバーで名前の変更操作がサポートされていない場合は、このオプションを無効にして、ターゲット ファイルへの同時書き込みが発生しないようにします。 詳細については、この表の末尾にあるトラブルシューティングのヒントを参照してください。 いいえ。 既定値は " [はい] " です。
operationTimeout SFTP サーバーに対する各書き込み要求がタイムアウトになるまでの待機時間。規定値は 60 分 (01:00:00) です。 いいえ

ヒント

SFTP にデータを書き込もうとしているときに "UserErrorSftpPathNotFound"、"UserErrorSftpPermissionDenied"、"SftpOperationFail" のいずれかのエラーが表示され、使用する SFTP ユーザーに適切なアクセス許可が確かにある場合は、実際の SFTP サーバーで、ファイル名の変更操作が機能しているかどうかを確認してください。 そうでない場合は、一時ファイルを使用してアップロードする (useTempFileRename) オプションを無効にして、再度試みてください。 このプロパティの詳細については、前出の表を参照してください。 コピー アクティビティにセルフホステッド統合ランタイムを使用する場合は、必ずバージョン 4.6 以降を使用してください。

例:

"activities":[
    {
        "name": "CopyToSFTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "BinarySink",
                "storeSettings":{
                    "type": "SftpWriteSettings",
                    "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 のコンテンツ Azure Data Factory の構成
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 つのファイルが記載されています)。

Mapping Data Flow のプロパティ

マッピング データ フローでデータを変換するときに、次の形式で SFTP のファイルの読み取りと書き込みができます。

形式固有の設定は、各形式のドキュメントに記載されています。 詳細については、「マッピング データ フローのソース変換」および「マッピング データ フローでのシンク変換」を参照してください。

Note

現在、マッピング データ フローでは SSH ホスト キーの検証はサポートされていません。

Note

オンプレミスの SFTP サーバーにアクセスするには、プライベート エンドポイントを使用して、Azure Data Factory または Synapse ワークスペースのマネージド仮想ネットワークを使用する必要があります。 詳細な手順については、このチュートリアルを参照してください。

ソース変換

次の表に、SFTP ソースでサポートされるプロパティの一覧を示します。 これらのプロパティは、 [ソース オプション] タブで編集できます。インライン データセットを使用する場合、「データセットのプロパティ」セクションで説明されたプロパティと同じ追加の設定が表示されます。

名前 説明 必須 使用できる値 データ フロー スクリプトのプロパティ
ワイルドカード パス ワイルドカード パターンを使用すると、ADF は、単一のソース変換で一致する各フォルダーとファイルをループ処理するよう指示されます。 これは、単一のフロー内の複数のファイルを処理するのに効果的な方法です。 いいえ String[] wildcardPaths
パーティションのルート パス key=value 形式 (例: year=2019) のファイル ソース内のフォルダーをパーティション分割した場合、そのパーティション フォルダー ツリーの最上位をデータ フローのデータ ストリーム内の列名に割り当てることができます。 いいえ String partitionRootPath
[Allow no files found](ファイルの未検出を許可) true の場合、ファイルが見つからない場合でもエラーはスローされません。 いいえ true または false ignoreNoFilesFound
ファイルの一覧 これはファイル セットです。 処理する相対パス ファイルの一覧を含むテキスト ファイルを作成します。 このテキスト ファイルをポイントします。 いいえ true または false fileList
ファイル名を格納する列 ソース ファイルの名前をデータの列に格納します。 ファイル名文字列を格納するための新しい列名をここに入力します。 いいえ String rowUrlColumn
完了後 データ フローの実行後にソース ファイルに何もしないか、ソース ファイルを削除するか、またはソース ファイルを移動することを選択します。 移動のパスは相対パスです。 いいえ 削除: true または false
移動: ['<from>', '<to>']
purgeFiles
moveFiles
最終更新日時でフィルター処理 最終更新日時の範囲を指定することで、処理するファイルをフィルター処理できます。 日時はすべて UTC 形式です。 いいえ Timestamp modifiedAfter
modifiedBefore

SFTP ソース スクリプトの例

ソースの種類として SFTP データセットを使用すると、関連付けられているデータ フロー スクリプトは次のようになります。

source(allowSchemaDrift: true,
	validateSchema: false,
	ignoreNoFilesFound: true,
	purgeFiles: true,
	fileList: true,
	modifiedAfter: (toTimestamp(1647388800000L)),
	modifiedBefore: (toTimestamp(1647561600000L)),
	partitionRootPath: 'partdata',
	wildcardPaths:['partdata/**/*.csv']) ~> SFTPSource

シンク変換

次の表に、SFTP シンクでサポートされるプロパティの一覧を示します。 これらのプロパティは、 [設定] タブで編集できます。インライン データセットを使用する場合、「データセットのプロパティ」セクションで説明されているプロパティと同じ追加の設定が表示されます。

名前 説明 必須 使用できる値 データ フロー スクリプトのプロパティ
フォルダーのクリア データが書き込まれる前に、書き込み先のフォルダーをクリアするかどうかを決定します。 いいえ true または false truncate
ファイル名のオプション 書き込まれたデータの名前付け形式です。 既定では、part-#####-tid-<guid> という形式で、パーティションごとに 1 ファイルです。 いいえ パターン: String
パーティションあたり: String[]
列データでファイルに名前を付ける: String
列データでフォルダーに名前を付ける: String
1 つのファイルに出力する: ['<fileName>']
filePattern
partitionFileNames
rowUrlColumn
rowFolderUrlColumn
partitionFileNames
すべてを引用符で囲む すべての値を引用符で囲むかどうかを決定します。 いいえ true または false quoteAll

SFTP シンク スクリプトの例

シンクの種類として SFTP データセットを使用すると、関連付けられているデータ フロー スクリプトは次のようになります。

IncomingStream sink(allowSchemaDrift: true,
	validateSchema: false,
	filePattern:'loans[n].csv',
	truncate: true,
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true) ~> SFTPSink

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

Lookup アクティビティのプロパティについては、Lookup アクティビティに関する記事を参照してください。

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

GetMetadata アクティビティのプロパティについては、GetMetadata アクティビティに関する記事を参照してください。

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

Delete アクティビティのプロパティについては、Delete アクティビティに関する記事を参照してください。

レガシ モデル

注意

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

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

プロパティ Description 必須
type データセットの type プロパティは FileShare に設定する必要があります。 はい
folderPath フォルダーへのパス。 ワイルドカード フィルターがサポートされています。 使用できるワイルドカードは、* (0 個以上の文字に一致) と ? (0 個または 1 個の文字に一致) です。実際のファイル名の中にワイルドカードまたはこのエスケープ文字が含まれている場合は、^ を使用してエスケープします。

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

フィルターに使用できるワイルドカードは、* (0 個以上の文字に一致) と ? (0 個または 1 個の文字に一致) です。
- 例 1: "fileName": "*.csv"
- 例 2: "fileName": "???20180427.txt"
実際のフォルダー名にワイルドカードまたはこのエスケープ文字が含まれている場合は、^ を使用してエスケープします。
いいえ
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 プロパティをいずれかの値に設定します。 詳細については、テキスト形式Json 形式Avro 形式Orc 形式Parquet 形式についての各セクションを参照してください。
いいえ (バイナリ コピー シナリオのみ)
compression データの圧縮の種類とレベルを指定します。 詳細については、サポートされるファイル形式と圧縮コーデックに関する記事を参照してください。
サポートされる種類は、GZipDeflateBZip2、および ZipDeflate です。
サポートされるレベルは、OptimalFastest です。
いいえ

ヒント

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

注意

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

例:

{
    "name": "SFTPDataset",
    "type": "Datasets",
    "properties": {
        "type": "FileShare",
        "linkedServiceName":{
            "referenceName": "<SFTP 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"
            }
        }
    }
}

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

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

例:

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

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