Formats de fichiers et de compression pris en charge dans Azure Data FactoryFile and compression formats supported by Azure Data Factory

Cette rubrique s’applique aux connecteurs suivants : Amazon S3, Azure Blob, Azure Data Lake Store, File System, FTP, HDFS, HTTP et SFTP.This topic applies to the following connectors: Amazon S3, Azure Blob, Azure Data Lake Store, File System, FTP, HDFS, HTTP, and SFTP.

Notes

Cet article s’applique à la version 1 d’Azure Data Factory.This article applies to version 1 of Azure Data Factory. Si vous utilisez la version actuelle du service Data Factory, consultez Formats de fichier et codecs de compression pris en charge dans Azure Data Factory.If you are using the current version of the Data Factory service, see supported file formats and compression codecs in Data Factory.

Azure Data Factory prend en charge les types de format de fichier suivants :Azure Data Factory supports the following file format types:

Format TexteText format

Si vous souhaitez lire ou écrire des données dans un fichier texte, définissez la propriété type dans la section format du jeu de données sur 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. Vous pouvez également spécifier les propriétés facultatives suivantes, dans la section format.You can also specify the following optional properties in the format section. Consultez la section Exemple pour TextFormat pour en savoir plus sur la méthode de configuration à suivre.See TextFormat example section on how to configure.

PropriétéProperty DescriptionDescription Valeurs autoriséesAllowed values ObligatoireRequired
columnDelimitercolumnDelimiter Caractère utilisé pour séparer les colonnes dans un fichier.The character used to separate columns in a file. Vous pouvez envisager d’utiliser un caractère non imprimable rare qui n’existe probablement pas dans vos données.You can consider to use a rare unprintable char that may not likely exists in your data. Par exemple, spécifiez « \u0001 », qui représente le début d’en-tête (SOH).For example, specify "\u0001", which represents Start of Heading (SOH). Un seul caractère est autorisé.Only one character is allowed. La valeur par défaut est la virgule (,) .The default value is comma (',').

Pour utiliser un caractère Unicode, reportez-vous à l’article sur les caractères Unicode pour obtenir le code correspondant.To use a Unicode character, refer to Unicode Characters to get the corresponding code for it.
NonNo
rowDelimiterrowDelimiter Caractère utilisé pour séparer les lignes dans un fichier.The character used to separate rows in a file. Un seul caractère est autorisé.Only one character is allowed. La valeur par défaut est l’une des suivantes : [« \r\n », « \r », « \n »] en lecture et « \r\n » en écriture.The default value is any of the following values on read: ["\r\n", "\r", "\n"] and "\r\n" on write. NonNo
escapeCharescapeChar Caractère spécial utilisé pour échapper au délimiteur de colonnes dans le contenu du fichier d’entrée.The special character used to escape a column delimiter in the content of input file.

Vous ne pouvez pas spécifier à la fois escapeChar et quoteChar pour une table.You cannot specify both escapeChar and quoteChar for a table.
Un seul caractère est autorisé.Only one character is allowed. Aucune valeur par défaut.No default value.

Exemple : si vous avez une virgule (« , ») comme séparateur de colonnes, mais que vous souhaitez avoir le caractère virgule dans le texte (exemple : « Hello, world »), vous pouvez définir « $ » comme caractère d’échappement et utiliser la chaîne « Hello$, world » dans la source.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.
NonNo
quoteCharquoteChar Le caractère utilisé pour entourer de guillemets une valeur de chaîne.The character used to quote a string value. Les séparateurs de colonnes et de lignes à l'intérieur des caractères de guillemets sont considérés comme faisant partie de la valeur de la chaîne.The column and row delimiters inside the quote characters would be treated as part of the string value. Cette propriété s’applique aux jeux de données d’entrée et de sortie.This property is applicable to both input and output datasets.

Vous ne pouvez pas spécifier à la fois escapeChar et quoteChar pour une table.You cannot specify both escapeChar and quoteChar for a table.
Un seul caractère est autorisé.Only one character is allowed. Aucune valeur par défaut.No default value.

Par exemple, si vous avez une virgule (,) comme séparateur de colonnes mais que vous voulez avoir le caractère virgule dans le texte (par exemple : « Hello, world »), vous pouvez définir " (guillemet droit) comme caractère de guillemet et utiliser la chaîne "Hello, world" dans la source.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.
NonNo
nullValuenullValue Un ou plusieurs caractères utilisés pour représenter une valeur null.One or more characters used to represent a null value. Un ou plusieurs caractères.One or more characters. Les valeurs par défaut sont « \N » et « NULL » en lecture, et « \N » en écriture.The default values are "\N" and "NULL" on read and "\N" on write. NonNo
encodingNameencodingName Spécifier le nom d'encodage.Specify the encoding name. Une liste de noms d’encodage valides.A valid encoding name. Consultez : Propriété Encoding.EncodingName.see Encoding.EncodingName Property. Exemple : windows-1250 ou shift_jis.Example: windows-1250 or shift_jis. La valeur par défaut est UTF-8.The default value is UTF-8. NonNo
firstRowAsHeaderfirstRowAsHeader Spécifie si la première ligne doit être considérée comme un en-tête.Specifies whether to consider the first row as a header. Pour un jeu de données d’entrée, Data Factory lit la première ligne comme un en-tête.For an input dataset, Data Factory reads first row as a header. Pour un jeu de données de sortie, Data Factory écrit la première ligne comme un en-tête.For an output dataset, Data Factory writes first row as a header.

Voir Scénarios d’utilisation de firstRowAsHeader et skipLineCount pour obtenir des exemples de scénarios.See Scenarios for using firstRowAsHeader and skipLineCount for sample scenarios.
TrueTrue
false (valeur par défaut)False (default)
NonNo
skipLineCountskipLineCount Indique le nombre de lignes à ignorer lors de la lecture des données à partir des fichiers d’entrée.Indicates the number of rows to skip when reading data from input files. Si skipLineCount et firstRowAsHeader sont spécifiés, les lignes sont d’abord ignorées, puis les informations d’en-tête sont lues à partir du fichier d’entrée.If both skipLineCount and firstRowAsHeader are specified, the lines are skipped first and then the header information is read from the input file.

Voir Scénarios d’utilisation de firstRowAsHeader et skipLineCount pour obtenir des exemples de scénarios.See Scenarios for using firstRowAsHeader and skipLineCount for sample scenarios.
EntierInteger NonNo
treatEmptyAsNulltreatEmptyAsNull Spécifie si une chaîne null ou vide doit être traitée comme une valeur null lors de la lecture des données à partir d’un fichier d’entrée.Specifies whether to treat null or empty string as a null value when reading data from an input file. True (valeur par défaut)True (default)
FalseFalse
NonNo

Exemple pour TextFormatTextFormat example

Dans la définition JSON suivante d’un jeu de données, certaines propriétés facultatives sont spécifiées.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
    }
},

Pour utiliser un caractère escapeChar au lieu de quoteChar, remplacez la ligne par quoteChar, avec le caractère escapeChar suivant :To use an escapeChar instead of quoteChar, replace the line with quoteChar with the following escapeChar:

"escapeChar": "$",

Scénarios d’utilisation de firstRowAsHeader et skipLineCountScenarios for using firstRowAsHeader and skipLineCount

  • Vous copiez à partir d’une source hors fichier vers un fichier texte et vous souhaitez ajouter une ligne d’en-tête qui contient les métadonnées de schéma (par exemple : schéma 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). Définissez le paramètre firstRowAsHeader sur true dans le jeu de données de sortie pour ce scénario.Specify firstRowAsHeader as true in the output dataset for this scenario.
  • Vous copiez à partir d’un fichier texte contenant une ligne d’en-tête vers un récepteur hors fichier et souhaitez supprimer cette ligne.You are copying from a text file containing a header line to a non-file sink and would like to drop that line. Définissez le paramètre firstRowAsHeader sur true dans le jeu de données d’entrée.Specify firstRowAsHeader as true in the input dataset.
  • Vous copiez à partir d’un fichier texte et souhaitez ignorer quelques lignes au début, qui ne contiennent ni données, ni informations d’en-tête.You are copying from a text file and want to skip a few lines at the beginning that contain no data or header information. Spécifiez le paramètre skipLineCount pour indiquer le nombre de lignes à ignorer.Specify skipLineCount to indicate the number of lines to be skipped. Si le reste du fichier contient une ligne d’en-tête, vous pouvez également spécifier firstRowAsHeader.If the rest of the file contains a header line, you can also specify firstRowAsHeader. Si les paramètres skipLineCount et firstRowAsHeader sont tous deux spécifiés, les lignes sont d’abord ignorées, puis les informations d’en-tête sont lues à partir du fichier d’entrée.If both skipLineCount and firstRowAsHeader are specified, the lines are skipped first and then the header information is read from the input file

Format JSONJSON format

Pour en savoir plus sur l’importation ou l’exportation de fichiers JSON en l’état dans ou à partir d’Azure Cosmos DB, consultez la section Importation/exportation de documents JSON de l’article Move data to/from Azure Cosmos DB (Déplacer des données vers et depuis Azure Cosmos DB).To import/export a JSON file as-is into/from Azure Cosmos DB, the see Import/export JSON documents section in Move data to/from Azure Cosmos DB article.

Si vous souhaitez analyser des fichiers JSON ou écrire des données au format JSON, définissez la propriété type de la section format sur 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. Vous pouvez également spécifier les propriétés facultatives suivantes, dans la section format.You can also specify the following optional properties in the format section. Consultez la section Exemple pour JsonFormat pour en savoir plus sur la méthode de configuration à suivre.See JsonFormat example section on how to configure.

PropriétéProperty DescriptionDescription ObligatoireRequired
filePatternfilePattern Indiquez le modèle des données stockées dans chaque fichier JSON.Indicate the pattern of data stored in each JSON file. Les valeurs autorisées sont les suivantes : setOfObjects et arrayOfObjects.Allowed values are: setOfObjects and arrayOfObjects. La valeur par défaut est setOfObjects.The default value is setOfObjects. Consultez la section Modèles de fichiers JSON pour en savoir plus sur ces modèles.See JSON file patterns section for details about these patterns. NonNo
jsonNodeReferencejsonNodeReference Si vous souhaitez effectuer une itération et extraire des données à partir des objets situés à l’intérieur d’un champ de tableau présentant le même modèle, spécifiez le chemin d’accès JSON de ce tableau.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. Cette propriété est uniquement prise en charge lors de la copie de données de fichiers JSON.This property is supported only when copying data from JSON files. NonNo
jsonPathDefinitionjsonPathDefinition Spécifiez l’expression de chemin JSON pour chaque mappage de colonne avec un nom de colonne personnalisé (commencez par une lettre minuscule).Specify the JSON path expression for each column mapping with a customized column name (start with lowercase). Cette propriété est uniquement prise en charge lors de la copie de données à partir de fichiers JSON, et vous pouvez extraire des données d’un objet ou d’un tableau.This property is supported only when copying data from JSON files, and you can extract data from object or array.

Pour les champs situés sous l’objet racine, commencez par $ racine ; pour ceux qui se trouvent dans le tableau sélectionné par la propriété jsonNodeReference, commencez par l’élément de tableau.For fields under root object, start with root $; for fields inside the array chosen by jsonNodeReference property, start from the array element. Consultez la section Exemple pour JsonFormat pour en savoir plus sur la méthode de configuration à suivre.See JsonFormat example section on how to configure.
NonNo
encodingNameencodingName Spécifiez le nom du codage.Specify the encoding name. Pour obtenir la liste des noms de codage valides, consultez : Propriété Encoding.EncodingName.For the list of valid encoding names, see: Encoding.EncodingName Property. Par exemple : windows-1250 ou shift_jis.For example: windows-1250 or shift_jis. La valeur par défaut est : UTF-8.The default value is: UTF-8. NonNo
nestingSeparatornestingSeparator Caractère utilisé pour séparer les niveaux d'imbrication.Character that is used to separate nesting levels. La valeur par défaut est . (point).The default value is '.' (dot). NonNo

Modèles de fichiers JSONJSON file patterns

L’activité de copie peut analyser les modèles de fichiers JSON ci-dessous :Copy activity can parse the following patterns of JSON files:

  • Type I : setOfObjectsType I: setOfObjects

    Chaque fichier contient un objet unique, ou plusieurs objets concaténés/délimités par des lignes.Each file contains single object, or line-delimited/concatenated multiple objects. Quand cette option est sélectionnée dans un jeu de données de sortie, l’activité de copie produit un seul fichier JSON contenant un objet par ligne (format délimité par des lignes).When this option is chosen in an output dataset, copy activity produces a single JSON file with each object per line (line-delimited).

    • Exemple de fichier JSON à un seul objetsingle object JSON example

      {
          "time": "2015-04-29T07:12:20.9100000Z",
          "callingimsi": "466920403025604",
          "callingnum1": "678948008",
          "callingnum2": "567834760",
          "switch1": "China",
          "switch2": "Germany"
      }
      
    • Exemple de fichier JSON incluant des objets délimités par des lignesline-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"}
      
    • Exemple de fichier JSON incluant des objets concaténésconcatenated 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"
      }
      
  • Type II : arrayOfObjectsType II: arrayOfObjects

    Chaque fichier contient un tableau d’objets.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"
        }
    ]
    

Exemple pour JsonFormatJsonFormat example

Cas 1 : Copie de données à partir de fichiers JSONCase 1: Copying data from JSON files

Consultez les deux exemples suivants lors de la copie des données à partir de fichiers JSON.See the following two samples when copying data from JSON files. Voici quelques points généraux à prendre en compte :The generic points to note:

Exemple 1 : Extraire des données d’objet et de tableauSample 1: extract data from object and array

Dans cet exemple, un objet JSON racine doit correspondre à un seul enregistrement dans la table de résultats.In this sample, you expect one root JSON object maps to single record in tabular result. Prenons un fichier JSON avec le contenu suivant :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"
                }
            ]
        }
    }
}

Vous voulez copier ce contenu dans un tableau SQL Azure au format suivant, en extrayant les données des objets et du tableau :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 13/01/2017 11:24:371/13/2017 11:24:37 AM

Le jeu de données d’entrée présentant le type JsonFormat est défini comme suit : (définition partielle présentant uniquement les éléments pertinents).The input dataset with JsonFormat type is defined as follows: (partial definition with only the relevant parts). Plus précisément :More specifically:

  • La section structure définit les noms de colonne personnalisés et le type de données correspondant lors de la conversion des données au format tabulaire.structure section defines the customized column names and the corresponding data type while converting to tabular data. Cette section est facultative, sauf si vous avez besoin d’effectuer un mappage de colonne.This section is optional unless you need to do column mapping. Pour plus d’informations, consultez Mapper des colonnes d’un jeu de données source sur des colonnes d’un jeu de données de destination.See Map source dataset columns to destination dataset columns section for more details.
  • Le paramètre jsonPathDefinition indique le chemin JSON de chaque colonne indiquant l’emplacement à partir duquel les données sont extraites.jsonPathDefinition specifies the JSON path for each column indicating where to extract the data from. Pour copier les données d’un tableau, vous pouvez utiliser array[x].property pour extraire la valeur de la propriété spécifiée à partir de l’objet x, ou vous pouvez utiliser array[*].property pour trouver la valeur de tout objet contenant cette propriété.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"}      
        }
    }
}

Exemple 2 : application croisée de plusieurs objets avec le même modèle à partir d’un tableauSample 2: cross apply multiple objects with the same pattern from array

Dans cet exemple, vous voulez transformer un objet JSON racine en plusieurs enregistrements dans la table de résultats.In this sample, you expect to transform one root JSON object into multiple records in tabular result. Prenons un fichier JSON avec le contenu suivant :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" } ]
}

Vous souhaitez copier ce fichier dans une table SQL Azure au format suivant, en mettant à plat les données se trouvant dans le tableau et en effectuant une jointure croisée avec les informations racines communes :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:

ordernumberordernumber orderdateorderdate order_pdorder_pd order_priceorder_price citycity
0101 2017012220170122 P1P1 2323 [{"sanmateo":"No 1"}][{"sanmateo":"No 1"}]
0101 2017012220170122 P2P2 1313 [{"sanmateo":"No 1"}][{"sanmateo":"No 1"}]
0101 2017012220170122 P3P3 231231 [{"sanmateo":"No 1"}][{"sanmateo":"No 1"}]

Le jeu de données d’entrée présentant le type JsonFormat est défini comme suit : (définition partielle présentant uniquement les éléments pertinents).The input dataset with JsonFormat type is defined as follows: (partial definition with only the relevant parts). Plus précisément :More specifically:

  • La section structure définit les noms de colonne personnalisés et le type de données correspondant lors de la conversion des données au format tabulaire.structure section defines the customized column names and the corresponding data type while converting to tabular data. Cette section est facultative, sauf si vous avez besoin d’effectuer un mappage de colonne.This section is optional unless you need to do column mapping. Pour plus d’informations, consultez Mapper des colonnes d’un jeu de données source sur des colonnes d’un jeu de données de destination.See Map source dataset columns to destination dataset columns section for more details.
  • Le paramètre jsonNodeReference indique que les données doivent être itérées et extraites des objets présentant le même modèle sous « orderlines » dans le tableau.jsonNodeReference indicates to iterate and extract data from the objects with the same pattern under array orderlines.
  • Le paramètre jsonPathDefinition indique le chemin JSON de chaque colonne indiquant l’emplacement à partir duquel les données sont extraites.jsonPathDefinition specifies the JSON path for each column indicating where to extract the data from. Dans cet exemple, les éléments « ordernumber », « orderdate » et « city » se trouvent sous l’objet racine associé au chemin JSON commençant par « $. », tandis que les éléments « order_pd » et « order_price » sont définis avec le chemin d’accès dérivé de l’élément de tableau sans « $.».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"}         
        }
    }
}

Notez les points suivants :Note the following points:

  • Si les éléments structure et jsonPathDefinition ne sont pas définis dans le jeu de données Data Factory, l’activité de copie détecte le schéma à partir du premier objet et aplatit l’objet entier.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.
  • Si l’entrée JSON contient un tableau, l’activité de copie convertit la valeur du tableau entier en une chaîne, par défaut.If the JSON input has an array, by default the Copy Activity converts the entire array value into a string. Vous pouvez choisir d’extraire des données de cette dernière à l’aide de jsonNodeReference et/ou jsonPathDefinition, ou ignorer cette opération en ne la spécifiant pas dans jsonPathDefinition.You can choose to extract data from it using jsonNodeReference and/or jsonPathDefinition, or skip it by not specifying it in jsonPathDefinition.
  • S’il y a plusieurs noms identiques au même niveau, l’activité de copie sélectionne le dernier nom.If there are duplicate names at the same level, the Copy Activity picks the last one.
  • Les noms de propriété respectent la casse.Property names are case-sensitive. Quand deux propriétés de même nom ont une casse différente, elles sont considérées comme deux propriétés distinctes.Two properties with same name but different casings are treated as two separate properties.

Cas 2 : Écriture de données dans un fichier JSONCase 2: Writing data to JSON file

Vous disposez de la table suivante dans votre base de données SQL :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 3 5003500 PatrickPatrick
33 2017012120170121 40004000 JasonJason

Pour chaque enregistrement, vous voulez écrire des données dans un objet JSON, en utilisant le format suivant :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"
    }
}

Le jeu de données de sortie présentant le type JsonFormat est défini comme suit : (définition partielle présentant uniquement les éléments pertinents).The output dataset with JsonFormat type is defined as follows: (partial definition with only the relevant parts). Plus précisément, la section structure définit les noms de propriété personnalisés dans le fichier de destination ; le paramètre nestingSeparator (valeur par défaut : «. ») vous permet d’identifier la couche d’imbrication à partir du nom.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. Cette section est facultative, sauf si vous souhaitez modifier le nom de propriété par rapport au nom de la colonne source, ou imbriquer certaines propriétés.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"
        }
    }
}

Format AVROAVRO format

Si vous souhaitez analyser des fichiers Avro ou écrire des données au format Avro, définissez la propriété format type sur AvroFormat.If you want to parse the Avro files or write the data in Avro format, set the format type property to AvroFormat. Il est inutile de spécifier des propriétés dans la partie Format de la section typeProperties.You do not need to specify any properties in the Format section within the typeProperties section. Exemple :Example:

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

Pour utiliser le format Avro dans une table Hive, vous pouvez faire référence au didacticiel Apache Hive.To use Avro format in a Hive table, you can refer to Apache Hive’s tutorial.

Notez les points suivants :Note the following points:

Format ORCORC format

Si vous souhaitez analyser des fichiers ORC ou écrire des données au format ORC, définissez la propriété format type sur OrcFormat.If you want to parse the ORC files or write the data in ORC format, set the format type property to OrcFormat. Il est inutile de spécifier des propriétés dans la partie Format de la section typeProperties.You do not need to specify any properties in the Format section within the typeProperties section. Exemple :Example:

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

Important

Si vous ne copiez pas les fichiers ORC tels quels entre les magasins de données locaux et cloud, vous devez installer JRE 8 (Java Runtime Environment) sur votre machine de passerelle.If you are not copying ORC files as-is between on-premises and cloud data stores, you need to install the JRE 8 (Java Runtime Environment) on your gateway machine. La passerelle 64 bits requiert un environnement JRE 64 bits et que la passerelle 32 bits nécessite un environnement JRE 32 bits.A 64-bit gateway requires 64-bit JRE and 32-bit gateway requires 32-bit JRE. Ces deux versions sont disponibles ici.You can find both versions from here. Sélectionnez la bonne version.Choose the appropriate one.

Notez les points suivants :Note the following points:

  • Les types de données complexes ne sont pas pris en charge (STRUCT, MAP, LIST, UNION)Complex data types are not supported (STRUCT, MAP, LIST, UNION)
  • Le fichier ORC a trois options liées à la compression : NONE, ZLIB, SNAPPY.ORC file has three compression-related options: NONE, ZLIB, SNAPPY. Data Factory prend en charge la lecture des données du fichier ORC dans tous ces formats compressés.Data Factory supports reading data from ORC file in any of these compressed formats. Il utilise le codec de compression se trouvant dans les métadonnées pour lire les données.It uses the compression codec is in the metadata to read the data. Toutefois, lors de l’écriture dans un fichier ORC, Data Factory choisit ZLIB, qui est la valeur par défaut pour ORC.However, when writing to an ORC file, Data Factory chooses ZLIB, which is the default for ORC. Actuellement, il n’existe aucune option permettant de remplacer ce comportement.Currently, there is no option to override this behavior.

Format ParquetParquet format

Si vous souhaitez analyser des fichiers Parquet ou écrire des données au format Parquet, définissez la propriété format type sur ParquetFormat.If you want to parse the Parquet files or write the data in Parquet format, set the format type property to ParquetFormat. Il est inutile de spécifier des propriétés dans la partie Format de la section typeProperties.You do not need to specify any properties in the Format section within the typeProperties section. Exemple :Example:

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

Important

Si vous ne copiez pas les fichiers Parquet tels quels entre les magasins de données locaux et cloud, vous devez installer JRE 8 (Java Runtime Environment) sur votre machine de passerelle.If you are not copying Parquet files as-is between on-premises and cloud data stores, you need to install the JRE 8 (Java Runtime Environment) on your gateway machine. La passerelle 64 bits requiert un environnement JRE 64 bits et que la passerelle 32 bits nécessite un environnement JRE 32 bits.A 64-bit gateway requires 64-bit JRE and 32-bit gateway requires 32-bit JRE. Ces deux versions sont disponibles ici.You can find both versions from here. Sélectionnez la bonne version.Choose the appropriate one.

Notez les points suivants :Note the following points:

  • Les types de données complexes ne sont pas pris en charge (MAP, LIST)Complex data types are not supported (MAP, LIST)
  • Le fichier Parquet a les options liées à la compression suivantes : NONE, SNAPPY, GZIP et LZO.Parquet file has the following compression-related options: NONE, SNAPPY, GZIP, and LZO. Data Factory prend en charge la lecture des données du fichier ORC dans tous ces formats compressés.Data Factory supports reading data from ORC file in any of these compressed formats. Il utilise le codec de compression se trouvant dans les métadonnées pour lire les données.It uses the compression codec in the metadata to read the data. Toutefois, lors de l’écriture dans un fichier Parquet, Data Factory choisit SNAPPY, qui est la valeur par défaut pour le format Parquet.However, when writing to a Parquet file, Data Factory chooses SNAPPY, which is the default for Parquet format. Actuellement, il n’existe aucune option permettant de remplacer ce comportement.Currently, there is no option to override this behavior.

Prise en charge de la compressionCompression support

Le traitement de jeux de données de grande taille peut provoquer des goulots d’étranglement des E/S et du réseau.Processing large data sets can cause I/O and network bottlenecks. Par conséquent, les données compressées dans les magasins peuvent non seulement accélérer le transfert des données sur le réseau et économiser l’espace disque, mais également apporter des améliorations significatives des performances du traitement du Big Data.Therefore, compressed data in stores can not only speed up data transfer across the network and save disk space, but also bring significant performance improvements in processing big data. Actuellement, la compression est prise en charge pour les magasins de données de fichiers, comme les objets blob Azure ou un système de fichiers local.Currently, compression is supported for file-based data stores such as Azure Blob or On-premises File System.

Pour spécifier la compression pour un jeu de données, utilisez la propriété compression du jeu de données JSON, comme dans l'exemple suivant :To specify compression for a dataset, use the compression property in the dataset JSON as in the following example:

{  
    "name": "AzureBlobDataSet",  
    "properties": {  
        "availability": {  
            "frequency": "Day",  
              "interval": 1  
        },  
        "type": "AzureBlob",  
        "linkedServiceName": "StorageLinkedService",  
        "typeProperties": {  
            "fileName": "pagecounts.csv.gz",  
            "folderPath": "compression/file/",  
            "compression": {  
                "type": "GZip",  
                "level": "Optimal"  
            }  
        }  
    }  
}  

Partons du principe que l’exemple de jeu de données est utilisé en tant que sortie d’une activité de copie. Cette dernière va compresser les données de sortie avec le codec GZIP en utilisant le taux optimal, puis écrire les données compressées dans un fichier nommé pagecounts.csv.gz dans le Stockage Blob Azure.Suppose the sample dataset is used as the output of a copy activity, the copy activity compresses the output data with GZIP codec using optimal ratio and then write the compressed data into a file named pagecounts.csv.gz in the Azure Blob Storage.

Notes

Les paramètres de compression ne sont pas pris en charge pour les données au format AvroFormat, OrcFormat ou ParquetFormat.Compression settings are not supported for data in the AvroFormat, OrcFormat, or ParquetFormat. Data Factory détecte et utilise le codec de compression se trouvant dans les métadonnées pour lire des fichiers présentant ces formats.When reading files in these formats, Data Factory detects and uses the compression codec in the metadata. Lors de l’écriture dans des fichiers présentant ces formats, Data Factory choisit le code de la compression par défaut pour ce format.When writing to files in these formats, Data Factory chooses the default compression codec for that format. Par exemple, ZLIB pour OrcFormat et SNAPPY pour ParquetFormat.For example, ZLIB for OrcFormat and SNAPPY for ParquetFormat.

La section compression a deux propriétés :The compression section has two properties:

  • Type : le codec de compression, qui peut être GZIP, Deflate, BZIP2 ou ZipDeflate.Type: the compression codec, which can be GZIP, Deflate, BZIP2, or ZipDeflate.

  • Level : le taux de compression, qui peut être Optimal ou Fastest.Level: the compression ratio, which can be Optimal or Fastest.

    • Fastest (Le plus rapide) : l’opération de compression doit se terminer le plus rapidement possible, même si le fichier résultant n’est pas compressé de façon optimale.Fastest: The compression operation should complete as quickly as possible, even if the resulting file is not optimally compressed.

    • Optimal : l’opération de compression doit aboutir à une compression optimale, même si elle prend plus de temps.Optimal: The compression operation should be optimally compressed, even if the operation takes a longer time to complete.

      Pour plus d’informations, consultez la rubrique Niveau de compression .For more information, see Compression Level topic.

Lorsque vous spécifiez la propriété compression dans un jeu de données JSON d’entrée, le pipeline peut lire les données compressées à partir de la source. Lorsque vous spécifiez la propriété dans un jeu de données JSON de sortie, l’activité de copie peut écrire les données compressées dans la destination.When you specify compression property in an input dataset JSON, the pipeline can read compressed data from the source; and when you specify the property in an output dataset JSON, the copy activity can write compressed data to the destination. Voici quelques exemples de scénarios :Here are a few sample scenarios:

  • Lire les données compressées GZIP à partir d’un objet blob Azure, les décompresser et écrire des données du résultat dans une base de données Azure SQL.Read GZIP compressed data from an Azure blob, decompress it, and write result data to an Azure SQL database. Dans ce cas, vous définissez le jeu de données d’objets Blob Azure d’entrée avec la propriété JSON compression type au format GZIP.You define the input Azure Blob dataset with the compression type JSON property as GZIP.
  • Lire les données d’un fichier de texte brut dans le système de fichiers local, les compresser en utilisant le format GZIP et écrire les données compressées dans un objet blob Azure.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. Dans ce cas, vous définissez le jeu de données d’objets Blob Azure de sortie avec la propriété JSON compression type au format GZIP.You define an output Azure Blob dataset with the compression type JSON property as GZip.
  • Lisez le fichier .zip à partir du serveur FTP, décompressez-le pour accéder aux fichiers qu’il contient et placez ces derniers dans Azure Data Lake Store.Read .zip file from FTP server, decompress it to get the files inside, and land those files into Azure Data Lake Store. Dans ce cas, vous définissez le jeu de données FTP d’entrée avec la propriété JSON compression type au format ZipDeflate.You define an input FTP dataset with the compression type JSON property as ZipDeflate.
  • Lire les données compressées au format GZIP à partir d’un objet blob Azure, les décompresser, les compresser en utilisant le format BZIP2 et écrire les données résultantes dans un objet blob Azure.Read a GZIP-compressed data from an Azure blob, decompress it, compress it using BZIP2, and write result data to an Azure blob. Dans ce cas, vous définissez le jeu de données d’objet blob Azure d’entrée avec le paramètre compression type défini sur GZIP et le jeu de données de sortie avec le paramètre compression type défini sur BZIP2.You define the input Azure Blob dataset with compression type set to GZIP and the output dataset with compression type set to BZIP2 in this case.

Étapes suivantesNext steps

Consultez les articles suivants pour connaître les magasins de données basés sur un fichier qui sont pris en charge par Azure Data Factory :See the following articles for file-based data stores supported by Azure Data Factory: