Azure Data Factory でサポートされるファイル形式と圧縮コーデックSupported file formats and compression codecs in Azure Data Factory

この記事は、次のコネクターに適用されます。Amazon S3Azure BlobAzure Data Lake Storage Gen1Azure Data Lake Storage Gen2Azure File Storageファイル システムFTPGoogle Cloud StorageHDFSHTTP、および SFTPThis article applies to the following connectors: Amazon S3, Azure Blob, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Azure File Storage, File System, FTP, Google Cloud Storage, HDFS, HTTP, and SFTP.

ファイルベースのストア間でファイルをそのままコピー (バイナリ コピー) する場合は、入力と出力の両方のデータセット定義で format セクションをスキップします。If you want to copy files as-is between file-based stores (binary copy), skip the format section in both input and output dataset definitions. 特定の形式でファイルを解析または生成する場合、Azure Data Factory では次の種類のファイル形式がサポートされています。If you want to parse or generate files with a specific format, Azure Data Factory supports the following file format types:

ヒント

コピー アクティビティがソース データをシンクにマッピングする方法については、「コピー アクティビティでのスキーマ マッピング」を参照してください。Learn how copy activity maps your source data to sink from Schema mapping in copy activity.

テキスト形式Text format

注意

Data Factory に新しい区切りテキスト形式のデータセットが導入されました。詳しくは、区切りテキスト形式に関する記事を参照してください。Data Factory introduced new delimited text format dataset, see Delimited text format article with details. ファイル ベースのデータ ストア データセットの次の構成は、後方互換性のためにまだサポートされています。The following configurations on file-based data store dataset is still supported as-is for backward compabitility. 今後は新しいモデルを使用することをお勧めします。You are suggested to use the new model going forward.

テキスト ファイルからの読み取りまたはテキスト ファイルへの書き込みを行うには、データセットの format セクション で type プロパティを TextFormat に設定します。If you want to read from a text file or write to a text file, set the type property in the format section of the dataset to TextFormat. format セクションにオプションのプロパティを指定することもできます。You can also specify the following optional properties in the format section. 構成方法については、「TextFormat の例」セクションを参照してください。See TextFormat example section on how to configure.

プロパティProperty 説明Description 使用できる値Allowed values 必須Required
columnDelimitercolumnDelimiter ファイル内の列を区切るために使用する文字。The character used to separate columns in a file. データ内に存在する可能性が低い、出力できない珍しい文字を使用することを検討します。You can consider to use a rare unprintable character that may not exist in your data. たとえば、"\u0001" を指定します。これは、見出しの先頭 (SOH) を表します。For example, specify "\u0001", which represents Start of Heading (SOH). 使用できるのは 1 文字だけです。Only one character is allowed. 既定値はコンマ (,) です。The default value is comma (',').

Unicode 文字を使用するには、Unicode 文字に関するページを参照して、対応するコードを取得してください。To use a Unicode character, refer to Unicode Characters to get the corresponding code for it.
いいえNo
rowDelimiterrowDelimiter ファイル内の行を区切るために使用する文字。The character used to separate rows in a file. 使用できるのは 1 文字だけです。Only one character is allowed. 読み取り時の既定値は ["\r\n"、"\r"、"\n"] のいずれかになり、書き込み時の既定値は "\r\n" になります。The default value is any of the following values on read: ["\r\n", "\r", "\n"] and "\r\n" on write. いいえNo
escapeCharescapeChar 入力ファイルのコンテンツの列区切り記号をエスケープするために使用する特殊文字。The special character used to escape a column delimiter in the content of input file.

1 つのテーブルに escapeChar と quoteChar の両方を指定することはできません。You cannot specify both escapeChar and quoteChar for a table.
使用できるのは 1 文字だけです。Only one character is allowed. 既定値はありません。No default value.

例:列区切り記号としてコンマ (,) を使用しているときに、テキストにもコンマ文字を含める必要がある場合 (例:"Hello, world")、エスケープ文字として "$" を定義し、ソースで文字列 "Hello$, world" を使用できます。Example: if you have comma (',') as the column delimiter but you want to have the comma character in the text (example: "Hello, world"), you can define ‘$’ as the escape character and use string "Hello$, world" in the source.
いいえNo
quoteCharquoteChar 文字列値の引用に使用する文字。The character used to quote a string value. 引用符文字内の列区切り文字と行区切り文字は文字列値の一部として処理されます。The column and row delimiters inside the quote characters would be treated as part of the string value. このプロパティは、入力と出力の両方のデータセットに適用されます。This property is applicable to both input and output datasets.

1 つのテーブルに escapeChar と quoteChar の両方を指定することはできません。You cannot specify both escapeChar and quoteChar for a table.
使用できるのは 1 文字だけです。Only one character is allowed. 既定値はありません。No default value.

たとえば、列の区切り文字としてコンマ (,) を使用しているときにテキストにもコンマ文字が必要な場合 (例: Hello, world)、引用符文字として " (二重引用符) を定義し、ソースで文字列 "Hello, world" を使用できます。For example, if you have comma (',') as the column delimiter but you want to have comma character in the text (example: <Hello, world>), you can define " (double quote) as the quote character and use the string "Hello, world" in the source.
いいえNo
nullValuenullValue Null 値を表すために使用する 1 つ以上の文字。One or more characters used to represent a null value. 1 つ以上の文字。One or more characters. 既定値は、読み取り時は "\N" および "NULL" 、書き込み時は "\N" です。The default values are "\N" and "NULL" on read and "\N" on write. いいえNo
encodingNameencodingName エンコード名の指定。Specify the encoding name. 有効なエンコード名。A valid encoding name. 詳細については、Encoding.EncodingName プロパティに関するページを参照してください。see Encoding.EncodingName Property. 例: windows-1250 または shift_jis。Example: windows-1250 or shift_jis. 既定値は UTF-8 です。The default value is UTF-8. いいえNo
firstRowAsHeaderfirstRowAsHeader 先頭行をヘッダーと見なすかどうかを指定します。Specifies whether to consider the first row as a header. 入力データセットでは、Data Factory は先頭行をヘッダーとして読み取ります。For an input dataset, Data Factory reads first row as a header. 出力データセットでは、Data Factory は先頭行をヘッダーとして書き込みます。For an output dataset, Data Factory writes first row as a header.

サンプル シナリオについては、「firstRowAsHeaderskipLineCount を使用するシナリオ」を参照してください。See Scenarios for using firstRowAsHeader and skipLineCount for sample scenarios.
TrueTrue
False (既定値)False (default)
いいえNo
skipLineCountskipLineCount 入力ファイルからのデータ読み取り時にスキップする空でない行数を示します。Indicates the number of non-empty rows to skip when reading data from input files. skipLineCount と firstRowAsHeader の両方を指定した場合は、まず行がスキップされ、次に入力ファイルからヘッダー情報が読み取られます。If both skipLineCount and firstRowAsHeader are specified, the lines are skipped first and then the header information is read from the input file.

サンプル シナリオについては、「firstRowAsHeaderskipLineCount を使用するシナリオ」を参照してください。See Scenarios for using firstRowAsHeader and skipLineCount for sample scenarios.
整数Integer いいえNo
treatEmptyAsNulltreatEmptyAsNull 入力ファイルのデータの読み取り時に null または空の文字列 を Null 値として扱うかどうかを指定します。Specifies whether to treat null or empty string as a null value when reading data from an input file. True (既定値)True (default)
FalseFalse
いいえNo

TextFormat の例TextFormat example

次のデータセットの JSON 定義では、省略可能なプロパティの一部が指定されます。In the following JSON definition for a dataset, some of the optional properties are specified.

"typeProperties":
{
    "folderPath": "mycontainer/myfolder",
    "fileName": "myblobname",
    "format":
    {
        "type": "TextFormat",
        "columnDelimiter": ",",
        "rowDelimiter": ";",
        "quoteChar": "\"",
        "NullValue": "NaN",
        "firstRowAsHeader": true,
        "skipLineCount": 0,
        "treatEmptyAsNull": true
    }
},

quoteChar の代わりに escapeChar を使用するには、quoteChar の含まれる行を次の escapeChar で置き換えます。To use an escapeChar instead of quoteChar, replace the line with quoteChar with the following escapeChar:

"escapeChar": "$",

firstRowAsHeader と skipLineCount を使用するシナリオScenarios for using firstRowAsHeader and skipLineCount

  • ファイル以外のソースからテキスト ファイルにコピーし、スキーマ メタデータ(例:SQL スキーマ) を含むヘッダー行を追加する。You are copying from a non-file source to a text file and would like to add a header line containing the schema metadata (for example: SQL schema). このシナリオでは、出力データセットの firstRowAsHeader を True として指定します。Specify firstRowAsHeader as true in the output dataset for this scenario.
  • ヘッダー行を含むテキスト ファイルから、ファイル以外のシンクにコピーし、その行を削除する:You are copying from a text file containing a header line to a non-file sink and would like to drop that line. 入力データセットの firstRowAsHeader を True として指定します。Specify firstRowAsHeader as true in the input dataset.
  • テキスト ファイルからコピーして、データやヘッダー情報を含まない先頭の数行をスキップする:You are copying from a text file and want to skip a few lines at the beginning that contain no data or header information. skipLineCount を指定して、スキップする行数を示します。Specify skipLineCount to indicate the number of lines to be skipped. ファイルの残りの部分にヘッダー行が含まれている場合は、firstRowAsHeader も指定できます。If the rest of the file contains a header line, you can also specify firstRowAsHeader. skipLineCountfirstRowAsHeader の両方を指定した場合は、まず行がスキップされ、次に入力ファイルからヘッダー情報が読み取られます。If both skipLineCount and firstRowAsHeader are specified, the lines are skipped first and then the header information is read from the input file

JSON 形式JSON format

注意

Data Factory に新しい JSON 形式のデータセットが導入されました。詳しくは、JSON に関する記事を参照してください。Data Factory introduced new JSON format dataset, see JSON article with details. ファイル ベースのデータ ストア データセットの次の構成は、後方互換性のためにまだサポートされています。The following configurations on file-based data store dataset is still supported as-is for backward compabitility. 今後は新しいモデルを使用することをお勧めします。You are suggested to use the new model going forward.

Azure Cosmos DB との間で JSON ファイルをそのままインポート/エクスポートする場合は、Azure Cosmos DB との間でのデータの移動に関する記事の「Import/export JSON documents (JSON ドキュメントのインポート/エクスポート)」のセクションをご覧ください。To import/export a JSON file as-is into/from Azure Cosmos DB, see Import/export JSON documents section in Move data to/from Azure Cosmos DB article.

JSON ファイルを解析するか、JSON 形式でデータを書き込む場合は、format セクションの type プロパティを JsonFormat に設定します。If you want to parse the JSON files or write the data in JSON format, set the type property in the format section to JsonFormat. format セクションにオプションのプロパティを指定することもできます。You can also specify the following optional properties in the format section. 構成方法については、「JsonFormat の例」セクションを参照してください。See JsonFormat example section on how to configure.

プロパティProperty 説明Description 必須Required
filePatternfilePattern 各 JSON ファイルに格納されたデータのパターンを示します。Indicate the pattern of data stored in each JSON file. 使用できる値は、setOfObjectsarrayOfObjects です。Allowed values are: setOfObjects and arrayOfObjects. 既定値は setOfObjects です。The default value is setOfObjects. これらのパターンの詳細については、「JSON ファイルのパターン」セクションを参照してください。See JSON file patterns section for details about these patterns. いいえNo
jsonNodeReferencejsonNodeReference 同じパターンを持つ配列フィールド内のオブジェクトからのデータの反復処理と抽出を行う場合は、その配列の JSON のパスを指定します。If you want to iterate and extract data from the objects inside an array field with the same pattern, specify the JSON path of that array. このプロパティは、JSON ファイルからデータをコピーするときにのみサポートされます。This property is supported only when copying data from JSON files. いいえNo
jsonPathDefinitionjsonPathDefinition カスタマイズされた列名 (先頭が小文字) での列マッピングごとに JSON のパス式を指定します。Specify the JSON path expression for each column mapping with a customized column name (start with lowercase). このプロパティは JSON ファイルからデータをコピーするときにのみサポートされ、オブジェクトまたは配列からデータを抽出することができます。This property is supported only when copying data from JSON files, and you can extract data from object or array.

ルート オブジェクトの直下のフィールドの場合、ルートの $ から記述します。jsonNodeReference プロパティによって選択された配列内のフィールドの場合、配列要素から記述します。For fields under root object, start with root $; for fields inside the array chosen by jsonNodeReference property, start from the array element. 構成方法については、「JsonFormat の例」セクションを参照してください。See JsonFormat example section on how to configure.
いいえNo
encodingNameencodingName エンコード名の指定。Specify the encoding name. 有効なエンコード名の一覧については、Encoding.EncodingName プロパティに関する記事を参照してください。For the list of valid encoding names, see: Encoding.EncodingName Property. 例: windows-1250 または shift_jis。For example: windows-1250 or shift_jis. 既定 値は、UTF-8 です。The default value is: UTF-8. いいえNo
nestingSeparatornestingSeparator 入れ子レベルの分割に使用される文字。Character that is used to separate nesting levels. 既定値は "." (ドット) です。The default value is '.' (dot). いいえNo

注意

配列内のデータを複数の行にクロス適用する場合 (ケース 1 -> 「JsonFormat の例」のサンプル 2)、選択できるのは jsonNodeReference プロパティを使用した 1 つの配列の展開のみです。For the case of cross-apply data in array into multiple rows (case 1 -> sample 2 in JsonFormat examples), you can only choose to expand single array using property jsonNodeReference.

JSON ファイルのパターンJSON file patterns

コピー アクティビティでは、次の JSON ファイルのパターンを解析することができます。Copy activity can parse the following patterns of JSON files:

  • タイプ I: setOfObjectsType I: setOfObjects

    各ファイルには、単一のオブジェクト、または改行区切り/連結された複数のオブジェクトが含まれます。Each file contains single object, or line-delimited/concatenated multiple objects. 出力データセットでこのオプションを選択すると、コピー アクティビティによって、各オブジェクトが行ごとに配置された (改行区切り) 1 つの JSON ファイルが生成されます。When this option is chosen in an output dataset, copy activity produces a single JSON file with each object per line (line-delimited).

    • 単一オブジェクトの JSON の例single object JSON example

      {
          "time": "2015-04-29T07:12:20.9100000Z",
          "callingimsi": "466920403025604",
          "callingnum1": "678948008",
          "callingnum2": "567834760",
          "switch1": "China",
          "switch2": "Germany"
      }
      
    • 改行区切りの JSON の例line-delimited JSON example

      {"time":"2015-04-29T07:12:20.9100000Z","callingimsi":"466920403025604","callingnum1":"678948008","callingnum2":"567834760","switch1":"China","switch2":"Germany"}
      {"time":"2015-04-29T07:13:21.0220000Z","callingimsi":"466922202613463","callingnum1":"123436380","callingnum2":"789037573","switch1":"US","switch2":"UK"}
      {"time":"2015-04-29T07:13:21.4370000Z","callingimsi":"466923101048691","callingnum1":"678901578","callingnum2":"345626404","switch1":"Germany","switch2":"UK"}
      
    • 連結 JSON の例concatenated JSON example

      {
          "time": "2015-04-29T07:12:20.9100000Z",
          "callingimsi": "466920403025604",
          "callingnum1": "678948008",
          "callingnum2": "567834760",
          "switch1": "China",
          "switch2": "Germany"
      }
      {
          "time": "2015-04-29T07:13:21.0220000Z",
          "callingimsi": "466922202613463",
          "callingnum1": "123436380",
          "callingnum2": "789037573",
          "switch1": "US",
          "switch2": "UK"
      }
      {
          "time": "2015-04-29T07:13:21.4370000Z",
          "callingimsi": "466923101048691",
          "callingnum1": "678901578",
          "callingnum2": "345626404",
          "switch1": "Germany",
          "switch2": "UK"
      }
      
  • タイプ II: arrayOfObjectsType II: arrayOfObjects

    各ファイルにはオブジェクトの配列が含まれます。Each file contains an array of objects.

    [
        {
            "time": "2015-04-29T07:12:20.9100000Z",
            "callingimsi": "466920403025604",
            "callingnum1": "678948008",
            "callingnum2": "567834760",
            "switch1": "China",
            "switch2": "Germany"
        },
        {
            "time": "2015-04-29T07:13:21.0220000Z",
            "callingimsi": "466922202613463",
            "callingnum1": "123436380",
            "callingnum2": "789037573",
            "switch1": "US",
            "switch2": "UK"
        },
        {
            "time": "2015-04-29T07:13:21.4370000Z",
            "callingimsi": "466923101048691",
            "callingnum1": "678901578",
            "callingnum2": "345626404",
            "switch1": "Germany",
            "switch2": "UK"
        }
    ]
    

JsonFormat の例JsonFormat example

ケース 1:JSON ファイルからのデータのコピーCase 1: Copying data from JSON files

サンプル 1: オブジェクトと配列からデータを抽出するSample 1: extract data from object and array

このサンプルでは、1 つのルート JSON オブジェクトが表形式の結果の 1 つのレコードにマップされることを想定しています。In this sample, you expect one root JSON object maps to single record in tabular result. 次の内容が含まれる JSON ファイルをお持ちで、If you have a JSON file with the following content:

{
    "id": "ed0e4960-d9c5-11e6-85dc-d7996816aad3",
    "context": {
        "device": {
            "type": "PC"
        },
        "custom": {
            "dimensions": [
                {
                    "TargetResourceType": "Microsoft.Compute/virtualMachines"
                },
                {
                    "ResourceManagementProcessRunId": "827f8aaa-ab72-437c-ba48-d8917a7336a3"
                },
                {
                    "OccurrenceTime": "1/13/2017 11:24:37 AM"
                }
            ]
        }
    }
}

オブジェクトと配列両方からデータを抽出することで、上記の内容を次の形式の Azure SQL テーブルにコピーします。and you want to copy it into an Azure SQL table in the following format, by extracting data from both objects and array:

idID deviceTypedeviceType targetResourceTypetargetResourceType resourceManagementProcessRunIdresourceManagementProcessRunId occurrenceTimeoccurrenceTime
ed0e4960-d9c5-11e6-85dc-d7996816aad3ed0e4960-d9c5-11e6-85dc-d7996816aad3 PCPC Microsoft.Compute/virtualMachinesMicrosoft.Compute/virtualMachines 827f8aaa-ab72-437c-ba48-d8917a7336a3827f8aaa-ab72-437c-ba48-d8917a7336a3 1/13/2017 11:24:37 AM1/13/2017 11:24:37 AM

JsonFormat 型の入力データセットは次のように定義されます (関連する部分のみでの部分的な定義)。The input dataset with JsonFormat type is defined as follows: (partial definition with only the relevant parts). 具体的には次のとおりです。More specifically:

  • structure セクションでは、表形式データへの変換中に、カスタマイズされた列名と、対応するデータ型を定義します。structure section defines the customized column names and the corresponding data type while converting to tabular data. このセクションは、列マッピングを行う必要がない場合は省略可能です。This section is optional unless you need to do column mapping. 詳しくは、変換先のデータセット列へのソース データセット列のマップに関するページをご覧ください。For more information, see Map source dataset columns to destination dataset columns.
  • jsonPathDefinition は、データを抽出する位置を示す各列の JSON のパスを指定します。jsonPathDefinition specifies the JSON path for each column indicating where to extract the data from. 配列からデータをコピーするには、array[x].property を使用して xth 番目のオブジェクトから特定のプロパティの値を抽出するか、array[*].property を使用してこのようなプロパティを含むオブジェクトから値を見つけることができます。To copy data from array, you can use array[x].property to extract value of the given property from the xth object, or you can use array[*].property to find the value from any object containing such property.
"properties": {
    "structure": [
        {
            "name": "id",
            "type": "String"
        },
        {
            "name": "deviceType",
            "type": "String"
        },
        {
            "name": "targetResourceType",
            "type": "String"
        },
        {
            "name": "resourceManagementProcessRunId",
            "type": "String"
        },
        {
            "name": "occurrenceTime",
            "type": "DateTime"
        }
    ],
    "typeProperties": {
        "folderPath": "mycontainer/myfolder",
        "format": {
            "type": "JsonFormat",
            "filePattern": "setOfObjects",
            "jsonPathDefinition": {"id": "$.id", "deviceType": "$.context.device.type", "targetResourceType": "$.context.custom.dimensions[0].TargetResourceType", "resourceManagementProcessRunId": "$.context.custom.dimensions[1].ResourceManagementProcessRunId", "occurrenceTime": " $.context.custom.dimensions[2].OccurrenceTime"}
        }
    }
}

サンプル 2: 同じパターンの複数のオブジェクトを配列からクロス適用するSample 2: cross apply multiple objects with the same pattern from array

このサンプルでは、表形式の結果において 1 つのルート JSON オブジェクトを複数のレコードに変換することを想定しています。In this sample, you expect to transform one root JSON object into multiple records in tabular result. 次の内容が含まれる JSON ファイルをお持ちで、If you have a JSON file with the following content:

{
    "ordernumber": "01",
    "orderdate": "20170122",
    "orderlines": [
        {
            "prod": "p1",
            "price": 23
        },
        {
            "prod": "p2",
            "price": 13
        },
        {
            "prod": "p3",
            "price": 231
        }
    ],
    "city": [ { "sanmateo": "No 1" } ]
}

配列内のデータをフラット化し、共通のルート情報とクロス結合させることで Azure SQL テーブルに次の形式でコピーする場合:and you want to copy it into an Azure SQL table in the following format, by flattening the data inside the array and cross join with the common root info:

ordernumber orderdate order_pd order_price city
0101 2017012220170122 P1P1 2323 [{"sanmateo":"No 1"}]
0101 2017012220170122 P2P2 1313 [{"sanmateo":"No 1"}]
0101 2017012220170122 P3P3 231231 [{"sanmateo":"No 1"}]

JsonFormat 型の入力データセットは次のように定義されます (関連する部分のみでの部分的な定義)。The input dataset with JsonFormat type is defined as follows: (partial definition with only the relevant parts). 具体的には次のとおりです。More specifically:

  • structure セクションでは、表形式データへの変換中に、カスタマイズされた列名と、対応するデータ型を定義します。structure section defines the customized column names and the corresponding data type while converting to tabular data. このセクションは、列マッピングを行う必要がない場合は省略可能です。This section is optional unless you need to do column mapping. 詳しくは、変換先のデータセット列へのソース データセット列のマップに関するページをご覧ください。For more information, see Map source dataset columns to destination dataset columns.
  • jsonNodeReference は、orderlines という配列の直下にある同じパターンのオブジェクトからのデータの反復処理と抽出を行うことを示します。jsonNodeReference indicates to iterate and extract data from the objects with the same pattern under array orderlines.
  • jsonPathDefinition は、データを抽出する位置を示す各列の JSON のパスを指定します。jsonPathDefinition specifies the JSON path for each column indicating where to extract the data from. この例での ordernumberorderdatecity は、$. から始まる JSON のパスが含まれるルート オブジェクトの直下にあります。order_pdorder_price は、$. のない配列要素から派生したパスで定義されています。In this example, ordernumber, orderdate, and city are under root object with JSON path starting with $., while order_pd and order_price are defined with path derived from the array element without $..
"properties": {
    "structure": [
        {
            "name": "ordernumber",
            "type": "String"
        },
        {
            "name": "orderdate",
            "type": "String"
        },
        {
            "name": "order_pd",
            "type": "String"
        },
        {
            "name": "order_price",
            "type": "Int64"
        },
        {
            "name": "city",
            "type": "String"
        }
    ],
    "typeProperties": {
        "folderPath": "mycontainer/myfolder",
        "format": {
            "type": "JsonFormat",
            "filePattern": "setOfObjects",
            "jsonNodeReference": "$.orderlines",
            "jsonPathDefinition": {"ordernumber": "$.ordernumber", "orderdate": "$.orderdate", "order_pd": "prod", "order_price": "price", "city": " $.city"}
        }
    }
}

以下の点に注意してください。Note the following points:

  • structurejsonPathDefinition が Data Factory データセット内で定義されていない場合、コピー アクティビティでは最初のオブジェクトからスキーマを検出し、オブジェクト全体をフラット化します。If the structure and jsonPathDefinition are not defined in the Data Factory dataset, the Copy Activity detects the schema from the first object and flatten the whole object.
  • JSON 入力に配列がある場合、コピー アクティビティは既定で配列値全体を文字列に変換します。If the JSON input has an array, by default the Copy Activity converts the entire array value into a string. jsonNodeReferencejsonPathDefinition の両方またはどちらかからデータを抽出するか、jsonPathDefinition でこれを指定せずにスキップすることが可能です。You can choose to extract data from it using jsonNodeReference and/or jsonPathDefinition, or skip it by not specifying it in jsonPathDefinition.
  • 同じレベルに重複する名前がある場合、コピー アクティビティでは最後の 1 つが選択されます。If there are duplicate names at the same level, the Copy Activity picks the last one.
  • プロパティ名では大文字と小文字が区別されます。Property names are case-sensitive. 名前は同じでも大文字小文字が異なる 2 つのプロパティは、2 つの個別のプロパティとして扱われます。Two properties with same name but different casings are treated as two separate properties.

ケース 2:JSON ファイルへのデータの書き込みCase 2: Writing data to JSON file

SQL Database 内に次のテーブルが含まれているとします。If you have the following table in SQL Database:

idID order_dateorder_date order_priceorder_price order_byorder_by
11 2017011920170119 20002000 DavidDavid
22 2017012020170120 35003500 PatrickPatrick
33 2017012120170121 40004000 JasonJason

また、レコードごとに、次の形式で JSON オブジェクトに書き込みます。and for each record, you expect to write to a JSON object in the following format:

{
    "id": "1",
    "order": {
        "date": "20170119",
        "price": 2000,
        "customer": "David"
    }
}

JsonFormat 型の出力データセットは次のように定義されます (関連する部分のみでの部分的な定義)。The output dataset with JsonFormat type is defined as follows: (partial definition with only the relevant parts). 具体的には、structure セクションでは、目的のファイル内のカスタマイズされたプロパティ名を定義します。nestingSeparator (既定では ".") は、入れ子のレイヤーを名前から識別するために使用されます。More specifically, structure section defines the customized property names in destination file, nestingSeparator (default is ".") are used to identify the nest layer from the name. このセクションは、ソース列名と比較してプロパティ名を変更したり、一部のプロパティを入れ子にしたりする必要がない場合は省略可能です。This section is optional unless you want to change the property name comparing with source column name, or nest some of the properties.

"properties": {
    "structure": [
        {
            "name": "id",
            "type": "String"
        },
        {
            "name": "order.date",
            "type": "String"
        },
        {
            "name": "order.price",
            "type": "Int64"
        },
        {
            "name": "order.customer",
            "type": "String"
        }
    ],
    "typeProperties": {
        "folderPath": "mycontainer/myfolder",
        "format": {
            "type": "JsonFormat"
        }
    }
}

Parquet 形式Parquet format

注意

Data Factory に新しい Parquet 形式のデータセットが導入されました。詳しくは、Parquet 形式に関する記事を参照してください。Data Factory introduced new Parquet format dataset, see Parquet format article with details. ファイル ベースのデータ ストア データセットの次の構成は、後方互換性のためにまだサポートされています。The following configurations on file-based data store dataset is still supported as-is for backward compabitility. 今後は新しいモデルを使用することをお勧めします。You are suggested to use the new model going forward.

Parquet ファイルを解析するか、Parquet 形式でデータを書き込む場合は、format type プロパティを ParquetFormat に設定します。If you want to parse the Parquet files or write the data in Parquet format, set the format type property to ParquetFormat. typeProperties セクション内の Format セクションにプロパティを指定する必要はありません。You do not need to specify any properties in the Format section within the typeProperties section. 例:Example:

"format":
{
    "type": "ParquetFormat"
}

以下の点に注意してください。Note the following points:

  • 複雑なデータ型はサポートされていません (MAP、LIST)。Complex data types are not supported (MAP, LIST).
  • 列名では、空白はサポートされません。White space in column name is not supported.
  • Parquet ファイルには、圧縮関連のオプションとして、NONE、SNAPPY、GZIP、LZO があります。Parquet file has the following compression-related options: NONE, SNAPPY, GZIP, and LZO. Data Factory では、LZO を除く、これらすべての圧縮形式の Parquet ファイルからデータを読み取ることができます。データの読み取りには、メタデータ内の圧縮コーデックが使用されます。Data Factory supports reading data from Parquet file in any of these compressed formats except LZO - it uses the compression codec in the metadata to read the data. ただし、Data Factory で Parquet ファイルに書き込むときは、Parquet 形式の既定の動作である SNAPPY が選択されます。However, when writing to a Parquet file, Data Factory chooses SNAPPY, which is the default for Parquet format. 現時点でこの動作をオーバーライドするオプションはありません。Currently, there is no option to override this behavior.

重要

セルフホステッド統合ランタイム を利用するコピー (たとえば、オンプレミスとクラウド データ ストア間) では、Parquet ファイルをそのままコピーしない場合、IR マシン上に 64 ビット JRE 8 (Java Runtime Environment) または OpenJDK をインストールする必要があります。For copy empowered by Self-hosted Integration Runtime e.g. between on-premises and cloud data stores, if you are not copying Parquet files as-is, you need to install the 64-bit JRE 8 (Java Runtime Environment) or OpenJDK on your IR machine. 詳細については、次の段落を参照してください。See the following paragraph with more details.

Parquet ファイルのシリアル化/逆シリアル化を使用してセルフホステッド IR 上で実行されるコピーでは、ADF は最初に JRE のレジストリ (SOFTWARE\JavaSoft\Java Runtime Environment\{Current Version}\JavaHome) を調べ、見つからない場合は次に OpenJDK のシステム変数 JAVA_HOME を調べることで、Java ランタイムを見つけます。For copy running on Self-hosted IR with Parquet file serialization/deserialization, ADF locates the Java runtime by firstly checking the registry (SOFTWARE\JavaSoft\Java Runtime Environment\{Current Version}\JavaHome) for JRE, if not found, secondly checking system variable JAVA_HOME for OpenJDK.

  • JRE を使用する場合:64 ビット IR には 64 ビット JRE が必要です。To use JRE: The 64-bit IR requires 64-bit JRE. こちらから入手できます。You can find it from here.
  • OpenJDK を使用する場合: IR バージョン 3.13 以降でサポートされています。To use OpenJDK: it's supported since IR version 3.13. jvm.dll を他のすべての必要な OpenJDK のアセンブリと共にセルフホステッド IR マシンにパッケージ化し、それに応じてシステム環境変数 JAVA_HOME を設定します。Package the jvm.dll with all other required assemblies of OpenJDK into Self-hosted IR machine, and set system environment variable JAVA_HOME accordingly.

ヒント

セルフホステッド統合ランタイムを使用して、 Parquet 形式をコピー元またはコピー先にしてデータをコピーしたときに、[An error occurred when invoking java, message: java.lang.OutOfMemoryError:Java heap space (java の呼び出し中にエラーが発生しました。メッセージ: java.lang.OutOfMemoryError:Java heap space)] というエラーが発生する場合は、まず、セルフホステッド IR のホストであるマシン内に環境変数 _JAVA_OPTIONS を追加してください。次に、JVM の最小/最大ヒープ サイズを調整し、コピーを行えるようにしてから、パイプラインを再実行してください。If you copy data to/from Parquet format using Self-hosted Integration Runtime and hit error saying "An error occurred when invoking java, message: java.lang.OutOfMemoryError:Java heap space", you can add an environment variable _JAVA_OPTIONS in the machine that hosts the Self-hosted IR to adjust the min/max heap size for JVM to empower such copy, then rerun the pipeline.

セルフホステッド IR 上での JVM ヒープ サイズの設定

例: 変数 _JAVA_OPTIONS を設定して、値 -Xms256m -Xmx16g を指定します。Example: set variable _JAVA_OPTIONS with value -Xms256m -Xmx16g. フラグ Xms では、Java 仮想マシン (JVM) の初期メモリ割り当てプールを指定します。Xmx では、最大メモリ割り当てプールを指定します。The flag Xms specifies the initial memory allocation pool for a Java Virtual Machine (JVM), while Xmx specifies the maximum memory allocation pool. これは、JVM 起動時のメモリ量が Xms、使用可能なメモリ量が最大で Xmx であることを意味します。This means that JVM will be started with Xms amount of memory and will be able to use a maximum of Xmx amount of memory. 既定では、ADF では、最小で 64MB、最大で 1G が使用されます。By default, ADF use min 64MB and max 1G.

Parquet ファイルのデータ型マッピングData type mapping for Parquet files

Data Factory の中間データ型Data factory interim data type Parquet のプリミティブ型Parquet Primitive Type Parquet の元の型 (逆シリアル化)Parquet Original Type (Deserialize) Parquet の元の型 (シリアル化)Parquet Original Type (Serialize)
BooleanBoolean BooleanBoolean 該当なしN/A 該当なしN/A
SByteSByte Int32Int32 Int8Int8 Int8Int8
ByteByte Int32Int32 UInt8UInt8 Int16Int16
Int16Int16 Int32Int32 Int16Int16 Int16Int16
UInt16UInt16 Int32Int32 UInt16UInt16 Int32Int32
Int32Int32 Int32Int32 Int32Int32 Int32Int32
UInt32UInt32 Int64Int64 UInt32UInt32 Int64Int64
Int64Int64 Int64Int64 Int64Int64 Int64Int64
UInt64UInt64 Int64/BinaryInt64/Binary UInt64UInt64 DecimalDecimal
SingleSingle FloatFloat 該当なしN/A 該当なしN/A
DoubleDouble DoubleDouble 該当なしN/A 該当なしN/A
DecimalDecimal BinaryBinary DecimalDecimal DecimalDecimal
stringString BinaryBinary Utf8Utf8 Utf8Utf8
DateTimeDateTime Int96Int96 該当なしN/A 該当なしN/A
TimeSpanTimeSpan Int96Int96 該当なしN/A 該当なしN/A
DateTimeOffsetDateTimeOffset Int96Int96 該当なしN/A 該当なしN/A
ByteArrayByteArray BinaryBinary 該当なしN/A 該当なしN/A
GuidGuid BinaryBinary Utf8Utf8 Utf8Utf8
CharChar BinaryBinary Utf8Utf8 Utf8Utf8
CharArrayCharArray サポートされていませんNot supported 該当なしN/A 該当なしN/A

ORC 形式ORC format

ORC ファイルを解析するか、ORC 形式でデータを書き込む場合は、format type プロパティを OrcFormat に設定します。If you want to parse the ORC files or write the data in ORC format, set the format type property to OrcFormat. typeProperties セクション内の Format セクションにプロパティを指定する必要はありません。You do not need to specify any properties in the Format section within the typeProperties section. 例:Example:

"format":
{
    "type": "OrcFormat"
}

以下の点に注意してください。Note the following points:

  • 複雑なデータ型はサポートされていません (STRUCT、MAP、LIST、UNION)。Complex data types are not supported (STRUCT, MAP, LIST, UNION).
  • 列名では、空白はサポートされません。White space in column name is not supported.
  • ORC ファイルには、圧縮関連のオプションとして、NONE、ZLIB、SNAPPY の 3 つがあります。ORC file has three compression-related options: NONE, ZLIB, SNAPPY. Data Factory では、これらすべての圧縮形式の ORC ファイルからデータを読み取ることができます。Data Factory supports reading data from ORC file in any of these compressed formats. データの読み取りには、メタデータ内の圧縮コーデックが使用されます。It uses the compression codec is in the metadata to read the data. ただし、Data Factory で ORC ファイルに書き込むときは、ORC の既定の動作である ZLIB が選択されます。However, when writing to an ORC file, Data Factory chooses ZLIB, which is the default for ORC. 現時点でこの動作をオーバーライドするオプションはありません。Currently, there is no option to override this behavior.

重要

セルフホステッド統合ランタイム を利用するコピー (たとえば、オンプレミスとクラウド データ ストア間) では、Parquet ファイルをそのままコピーしない場合、IR マシン上に 64 ビット JRE 8 (Java Runtime Environment) または OpenJDK をインストールする必要があります。For copy empowered by Self-hosted Integration Runtime e.g. between on-premises and cloud data stores, if you are not copying ORC files as-is, you need to install the 64-bit JRE 8 (Java Runtime Environment) or OpenJDK on your IR machine. 詳細については、次の段落を参照してください。See the following paragraph with more details.

ORC ファイルのシリアル化/逆シリアル化を使用してセルフホステッド IR 上で実行されるコピーでは、ADF は最初に JRE のレジストリ (SOFTWARE\JavaSoft\Java Runtime Environment\{Current Version}\JavaHome) を調べ、見つからない場合は次に OpenJDK のシステム変数 JAVA_HOME を調べることで、Java ランタイムを見つけます。For copy running on Self-hosted IR with ORC file serialization/deserialization, ADF locates the Java runtime by firstly checking the registry (SOFTWARE\JavaSoft\Java Runtime Environment\{Current Version}\JavaHome) for JRE, if not found, secondly checking system variable JAVA_HOME for OpenJDK.

  • JRE を使用する場合:64 ビット IR には 64 ビット JRE が必要です。To use JRE: The 64-bit IR requires 64-bit JRE. こちらから入手できます。You can find it from here.
  • OpenJDK を使用する場合: IR バージョン 3.13 以降でサポートされています。To use OpenJDK: it's supported since IR version 3.13. jvm.dll を他のすべての必要な OpenJDK のアセンブリと共にセルフホステッド IR マシンにパッケージ化し、それに応じてシステム環境変数 JAVA_HOME を設定します。Package the jvm.dll with all other required assemblies of OpenJDK into Self-hosted IR machine, and set system environment variable JAVA_HOME accordingly.

ORC ファイルデータ型マッピングData type mapping for ORC files

Data Factory の中間データ型Data factory interim data type ORC 型ORC types
BooleanBoolean BooleanBoolean
SByteSByte ByteByte
ByteByte ショートShort
Int16Int16 ショートShort
UInt16UInt16 intInt
Int32Int32 intInt
UInt32UInt32 longLong
Int64Int64 longLong
UInt64UInt64 stringString
SingleSingle FloatFloat
DoubleDouble DoubleDouble
DecimalDecimal DecimalDecimal
stringString stringString
DateTimeDateTime TimestampTimestamp
DateTimeOffsetDateTimeOffset TimestampTimestamp
TimeSpanTimeSpan TimestampTimestamp
ByteArrayByteArray BinaryBinary
GuidGuid stringString
CharChar Char(1)Char(1)

AVRO 形式AVRO format

注意

Data Factory に新しい Avro 形式のデータセットが導入されました。詳しくは、Avri 形式に関する記事を参照してください。Data Factory introduced new Avro format dataset, see Avri format article with details. ファイル ベースのデータ ストア データセットの次の構成は、後方互換性のためにまだサポートされています。The following configurations on file-based data store dataset is still supported as-is for backward compabitility. 今後は新しいモデルを使用することをお勧めします。You are suggested to use the new model going forward.

Avro ファイルを解析するか、Avro 形式でデータを書き込む場合は、format type プロパティを AvroFormat に設定します。If you want to parse the Avro files or write the data in Avro format, set the format type property to AvroFormat. typeProperties セクション内の Format セクションにプロパティを指定する必要はありません。You do not need to specify any properties in the Format section within the typeProperties section. 例:Example:

"format":
{
    "type": "AvroFormat",
}

Hive テーブルで Avro 形式を使用するには、 Apache Hive のチュートリアルに関するページを参照してください。To use Avro format in a Hive table, you can refer to Apache Hive’s tutorial.

以下の点に注意してください。Note the following points:

  • 複合データ型はサポートされていません (レコード、列挙型、配列、マップ、共用体、および固定)。Complex data types are not supported (records, enums, arrays, maps, unions, and fixed).

バイナリ形式Binary format

詳しくは、バイナリ形式に関する記事をご覧ください。Refer to Binary format article on details.

圧縮のサポートCompression support

Azure Data Factory は、コピー中のデータの圧縮/圧縮解除をサポートします。Azure Data Factory supports compress/decompress data during copy. compression プロパティを入力データセットで指定すると、コピー アクティビティでソースから圧縮データを読み取り、圧縮を解除することができます。このプロパティを出力データセットで指定すると、コピー アクティビティによりシンクへの書き込みデータを圧縮することができます。When you specify compression property in an input dataset, the copy activity read the compressed data from the source and decompress it; and when you specify the property in an output dataset, the copy activity compress then write data to the sink. いくつかのサンプル シナリオを次に示します。Here are a few sample scenarios:

  • Azure BLOB から GZIP 圧縮データを読み取り、展開して、生成されたデータを Azure SQL データベースに書き込みます。Read GZIP compressed data from an Azure blob, decompress it, and write result data to an Azure SQL database. compression type プロパティを使用して、Azure BLOB 入力データセットを GZIP として定義します。You define the input Azure Blob dataset with the compression type property as GZIP.
  • オンプレミスのファイル システムのプレーンテキスト ファイルからデータを読み取り、GZip 形式で圧縮して、圧縮データを Azure BLOB に書き込みます。Read data from a plain-text file from on-premises File System, compress it using GZip format, and write the compressed data to an Azure blob. compression type プロパティを使用して、Azure BLOB 出力データセットを GZip として定義します。You define an output Azure Blob dataset with the compression type property as GZip.
  • FTP サーバーから .zip ファイルを読み取り、圧縮解除して中にあるファイルを取得し、それらのファイルを Azure Data Lake Store に格納します。Read .zip file from FTP server, decompress it to get the files inside, and land those files in Azure Data Lake Store. compression type プロパティを使用して、FTP 入力データセットを ZipDeflate として定義します。You define an input FTP dataset with the compression type property as ZipDeflate.
  • Azure BLOB から GZIP 圧縮データを読み取って展開し、BZIP2 で圧縮して、生成されたデータを Azure BLOB に書き込みます。Read a GZIP-compressed data from an Azure blob, decompress it, compress it using BZIP2, and write result data to an Azure blob. Azure BLOB 入力データセットは compression type を GZIP に設定して定義し、Azure BLOB 出力データセットは compression type を BZIP2 に設定して定義します。You define the input Azure Blob dataset with compression type set to GZIP and the output dataset with compression type set to BZIP2.

データセットの圧縮を指定するには、次の例のように、データセットの JSON で compression プロパティを使用します。To specify compression for a dataset, use the compression property in the dataset JSON as in the following example:

{
    "name": "AzureBlobDataSet",
    "properties": {
        "type": "AzureBlob",
        "linkedServiceName": {
            "referenceName": "StorageLinkedService",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "fileName": "pagecounts.csv.gz",
            "folderPath": "compression/file/",
            "format": {
                "type": "TextFormat"
            },
            "compression": {
                "type": "GZip",
                "level": "Optimal"
            }
        }
    }
}

compression セクションには次の 2 つのプロパティがあります。The compression section has two properties:

  • Type: 圧縮コーデックです。GZIPDeflateBZIP2、または ZipDeflate を選択できます。Type: the compression codec, which can be GZIP, Deflate, BZIP2, or ZipDeflate.

  • level: 圧縮率です。Optimal または Fastest を指定できます。Level: the compression ratio, which can be Optimal or Fastest.

    • Fastest: 圧縮操作は可能な限り短時間で完了しますが、圧縮後のファイルが最適に圧縮されていない場合があります。Fastest: The compression operation should complete as quickly as possible, even if the resulting file is not optimally compressed.

    • Optimal:圧縮操作で最適に圧縮されますが、操作が完了するまでに時間がかかる場合があります。Optimal: The compression operation should be optimally compressed, even if the operation takes a longer time to complete.

      詳細については、 圧縮レベル に関するトピックをご覧ください。For more information, see Compression Level topic.

注意

AvroFormatOrcFormat、および ParquetFormat のデータの圧縮設定はサポートされていません。Compression settings are not supported for data in the AvroFormat, OrcFormat, or ParquetFormat. こうした形式でファイルを読み取るとき、Data Factory は、メタデータ内の圧縮コーデックを検出して使用します。When reading files in these formats, Data Factory detects and uses the compression codec in the metadata. ファイルに書き込むときは、その形式の既定の圧縮コーデックを選択します。When writing to files in these formats, Data Factory chooses the default compression codec for that format. たとえば、OrcFormat には ZLIB、ParquetFormat には SNAPPY が選択されます。For example, ZLIB for OrcFormat and SNAPPY for ParquetFormat.

サポートされていないファイル形式と圧縮形式Unsupported file types and compression formats

Azure Data Factory の拡張機能を使用して、サポートされていないファイルに変換することができます。You can use the extensibility features of Azure Data Factory to transform files that aren't supported. Azure Function、および Azure Batch を使用することによるカスタム タスクという 2つのオプションがあります。Two options include Azure Functions and custom tasks by using Azure Batch.

Azure Function を使用して tar ファイルの内容を抽出するサンプルをご覧いただけます。You can see a sample that uses an Azure function to extract the contents of a tar file. 詳細については、「Azure Functions アクティビティ」をご覧ください。For more information, see Azure Functions activity.

また、カスタム dotnet アクティビティを使用してこの機能性を構築することもできます。You can also build this functionality using a custom dotnet activity. 詳細については、ここを参照してください。Further information is available here

次の手順Next steps

Azure Data Factory でサポートされるファイル ベースのデータ ストアについては、次の記事を参照してください。See the following articles for file-based data stores supported by Azure Data Factory: