Informazioni sui formati di compressione e sui file supportati da Azure Data FactoryFile and compression formats supported by Azure Data Factory

Questo argomento si applica ai connettori seguenti: Amazon S3, BLOB di Azure, Azure Data Lake Store, file system, FTP, HDFS, HTTP e SFTP.This topic applies to the following connectors: Amazon S3, Azure Blob, Azure Data Lake Store, File System, FTP, HDFS, HTTP, and SFTP.

Nota

Le informazioni di questo articolo sono valide per la versione 1 di Azure Data Factory.This article applies to version 1 of Azure Data Factory. Se si usa la versione corrente del servizio Data Factory, vedere le informazioni su formati di file e codec di compressione in 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 supporta i tipi di formato di file seguenti:Azure Data Factory supports the following file format types:

Formato testoText format

Se si vuole leggere da un file di testo o scrivere in un file di testo, impostare la proprietà type nella sezione format del set di dati 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. È anche possibile specificare le proprietà facoltative seguenti nella sezione format.You can also specify the following optional properties in the format section. Vedere la sezione Esempio di TextFormat sulla configurazione.See TextFormat example section on how to configure.

ProprietàProperty DescriptionDescription Valori consentitiAllowed values ObbligatoriaRequired
columnDelimitercolumnDelimiter Il carattere usato per separare le colonne in un file.The character used to separate columns in a file. È possibile usare un carattere non stampabile raro che è probabile non esista nei dati.You can consider to use a rare unprintable char that may not likely exists in your data. Ad esempio, specificare "\u0001", che rappresenta l'inizio intestazione (SOH).For example, specify "\u0001", which represents Start of Heading (SOH). È consentito un solo carattere.Only one character is allowed. Il valore predefinito è la virgola (",") .The default value is comma (',').

Per usare un carattere Unicode, vedere i caratteri Unicode per ottenere il codice corrispondente.To use a Unicode character, refer to Unicode Characters to get the corresponding code for it.
NoNo
rowDelimiterrowDelimiter Il carattere usato per separare le righe in un file.The character used to separate rows in a file. È consentito un solo carattere.Only one character is allowed. Sono consentiti i seguenti valori predefiniti in lettura: ["\r\n", "\r", "\n"] e "\r\n" in scrittura.The default value is any of the following values on read: ["\r\n", "\r", "\n"] and "\r\n" on write. NoNo
escapeCharescapeChar Carattere speciale usato per eseguire l'escape di un delimitatore di colonna nel contenuto del file di input.The special character used to escape a column delimiter in the content of input file.

Per una tabella, è possibile specificare sia escapeChar che quoteChar.You cannot specify both escapeChar and quoteChar for a table.
È consentito un solo carattere.Only one character is allowed. Nessun valore predefinito.No default value.

Ad esempio, se è presente una virgola (",") come delimitatore di colonna, ma si desidera inserire un carattere virgola nel testo (ad esempio: "Hello, world"), è possibile definire "$" come carattere di escape e usare la stringa "Hello$, world" nell'origine.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.
NoNo
quoteCharquoteChar Carattere usato per delimitare tra virgolette un valore stringa.The character used to quote a string value. I delimitatori di colonne e righe tra virgolette sono considerati parte del valore stringa.The column and row delimiters inside the quote characters would be treated as part of the string value. Questa proprietà è applicabile sia ai set di dati di input che a quelli di output.This property is applicable to both input and output datasets.

Per una tabella, è possibile specificare sia escapeChar che quoteChar.You cannot specify both escapeChar and quoteChar for a table.
È consentito un solo carattere.Only one character is allowed. Nessun valore predefinito.No default value.

Ad esempio, se è presente una virgola (",") come delimitatore di colonna, ma si desidera inserire un carattere virgola nel testo (ad esempio: <Hello, world>), è possibile definire " (virgolette doppie) come carattere di virgolette e usare la stringa "Hello, world" nell'origine.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.
NoNo
nullValuenullValue Uno o più caratteri usati per rappresentare un valore null.One or more characters used to represent a null value. Uno o più caratteri.One or more characters. I valori predefiniti sono "\N" e "NULL" in lettura e "\N" in scrittura.The default values are "\N" and "NULL" on read and "\N" on write. NoNo
encodingNameencodingName Specificare il nome della codifica.Specify the encoding name. Un nome di codifica valido.A valid encoding name. Vedere Proprietà Encoding.EncodingName.see Encoding.EncodingName Property. Esempio: windows-1250 o shift_jis.Example: windows-1250 or shift_jis. Il valore predefinito è UTF-8.The default value is UTF-8. NoNo
firstRowAsHeaderfirstRowAsHeader Specifica se considerare la prima riga come intestazione.Specifies whether to consider the first row as a header. In un set di dati di input Data factory legge la prima riga come intestazione.For an input dataset, Data Factory reads first row as a header. In un set di dati di output Data factory scrive la prima riga come intestazione.For an output dataset, Data Factory writes first row as a header.

Vedere Scenari per l'uso di firstRowAsHeader e skipLineCount per gli scenari di esempio.See Scenarios for using firstRowAsHeader and skipLineCount for sample scenarios.
VeroTrue
False (impostazione predefinita)False (default)
NoNo
skipLineCountskipLineCount Indica il numero di righe da ignorare durante la lettura di dati da file di input.Indicates the number of rows to skip when reading data from input files. Se sono specificati sia skipLineCount che firstRowAsHeader, le righe vengono ignorate e le informazioni di intestazione vengono lette dal file di input.If both skipLineCount and firstRowAsHeader are specified, the lines are skipped first and then the header information is read from the input file.

Vedere Scenari per l'uso di firstRowAsHeader e skipLineCount per gli scenari di esempio.See Scenarios for using firstRowAsHeader and skipLineCount for sample scenarios.
IntegerInteger NoNo
treatEmptyAsNulltreatEmptyAsNull Specifica se considerare una stringa vuota o null come valore null durante la lettura di dati da un file di input.Specifies whether to treat null or empty string as a null value when reading data from an input file. True (impostazione predefinita)True (default)
FalsoFalse
NoNo

Esempio di TextFormatTextFormat example

Nella definizione JSON seguente per un set di dati sono specificate alcune proprietà facoltative.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
    }
},

Per usare escapeChar invece di quoteChar, sostituire la riga con quoteChar con l'elemento escapeChar seguente:To use an escapeChar instead of quoteChar, replace the line with quoteChar with the following escapeChar:

"escapeChar": "$",

Scenari di utilizzo di firstRowAsHeader e skipLineCountScenarios for using firstRowAsHeader and skipLineCount

  • Si desidera copiare da un'origine non basata su file in un file di testo e aggiungere una riga di intestazione contenente i metadati dello schema (ad esempio: schema 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). Per questo scenario specificare firstRowAsHeader come true nel set di dati di output.Specify firstRowAsHeader as true in the output dataset for this scenario.
  • Si desidera copiare da un file di testo contenente una riga di intestazione a un sink non basato su file ed eliminare tale riga.You are copying from a text file containing a header line to a non-file sink and would like to drop that line. Specificare firstRowAsHeader come true nel set di dati di input.Specify firstRowAsHeader as true in the input dataset.
  • Si desidera copiare da un file di testo e ignorare alcune righe all'inizio che non contengono né dati né un'intestazione.You are copying from a text file and want to skip a few lines at the beginning that contain no data or header information. Specificare skipLineCount per indicare il numero di righe da ignorare.Specify skipLineCount to indicate the number of lines to be skipped. Se il resto del file contiene una riga di intestazione, è anche possibile specificare firstRowAsHeader.If the rest of the file contains a header line, you can also specify firstRowAsHeader. Se sono specificati sia skipLineCount che firstRowAsHeader, le righe vengono ignorate e le informazioni di intestazione vengono lette dal file di input.If both skipLineCount and firstRowAsHeader are specified, the lines are skipped first and then the header information is read from the input file

Formato JSONJSON format

Per importare/esportare un file JSON senza modifiche in/da Azure Cosmos DB, vedere la sezione Importare/Esportare documenti JSON nell'articolo Spostare dati da e verso 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.

Per analizzare i file JSON o scrivere i dati in formato JSON, impostare la proprietà type nella sezione format su 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. È anche possibile specificare le proprietà facoltative seguenti nella sezione format.You can also specify the following optional properties in the format section. Vedere la sezione Esempio JsonFormat sulla configurazione.See JsonFormat example section on how to configure.

ProprietàProperty DescriptionDescription ObbligatoriaRequired
filePatternfilePattern Indicare il modello dei dati archiviati in ogni file JSON.Indicate the pattern of data stored in each JSON file. I valori consentiti sono: setOfObjects e arrayOfObjects.Allowed values are: setOfObjects and arrayOfObjects. Il valore predefinito è setOfObjects.The default value is setOfObjects. Vedere la sezione Modelli di file JSON per i dettagli su questi modelli.See JSON file patterns section for details about these patterns. NoNo
jsonNodeReferencejsonNodeReference Per eseguire l'iterazione dei dati ed estrarli dagli oggetti presenti nel campo di una matrice con lo stesso modello, specificare il percorso JSON di tale matrice.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. Questa proprietà è supportata solo quando si copiano i dati dai file JSON.This property is supported only when copying data from JSON files. NoNo
jsonPathDefinitionjsonPathDefinition Specificare l'espressione del percorso JSON per ogni mapping colonne con un nome di colonna personalizzato. Iniziare con una lettera minuscola.Specify the JSON path expression for each column mapping with a customized column name (start with lowercase). Questa proprietà è supportata solo quando si copiano i dati dai file JSON ed è possibile estrarre i dati dall'oggetto o dalla matrice.This property is supported only when copying data from JSON files, and you can extract data from object or array.

Per i campi sotto l'oggetto radice, iniziare con la radice $. Per i campi nella matrice scelta dalla proprietà jsonNodeReference, iniziare dall'elemento matrice.For fields under root object, start with root $; for fields inside the array chosen by jsonNodeReference property, start from the array element. Vedere la sezione Esempio JsonFormat sulla configurazione.See JsonFormat example section on how to configure.
NoNo
encodingNameencodingName Specificare il nome della codifica.Specify the encoding name. Per l'elenco di nomi di codifica validi, vedere: Proprietà Encoding.EncodingName .For the list of valid encoding names, see: Encoding.EncodingName Property. Ad esempio: windows-1250 o shift_jis.For example: windows-1250 or shift_jis. Il valore predefinito è UTF-8.The default value is: UTF-8. NoNo
nestingSeparatornestingSeparator Carattere utilizzato per separare i livelli di nidificazione.Character that is used to separate nesting levels. Il valore predefinito è "." (punto).The default value is '.' (dot). NoNo

Modelli di file JSONJSON file patterns

L'attività di copia può eseguire l'analisi dei seguenti modelli di file JSON:Copy activity can parse the following patterns of JSON files:

  • Tipo I: setOfObjectsType I: setOfObjects

    Ogni file contiene un solo oggetto o più oggetti con delimitatori di riga/concatenati.Each file contains single object, or line-delimited/concatenated multiple objects. Quando si sceglie questa opzione in un set di dati di output, l'attività di copia produce un singolo file JSON con un oggetto per riga (delimitato da riga).When this option is chosen in an output dataset, copy activity produces a single JSON file with each object per line (line-delimited).

    • Esempio di JSON a oggetto singolosingle object JSON example

      {
          "time": "2015-04-29T07:12:20.9100000Z",
          "callingimsi": "466920403025604",
          "callingnum1": "678948008",
          "callingnum2": "567834760",
          "switch1": "China",
          "switch2": "Germany"
      }
      
    • Esempio di JSON con delimitatori di rigaline-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"}
      
    • Esempio di JSON concatenaticoncatenated 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"
      }
      
  • Tipo II: arrayOfObjectsType II: arrayOfObjects

    Ogni file contiene una matrice di oggetti.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"
        }
    ]
    

Esempio JsonFormatJsonFormat example

Caso 1: Copia di dati dai file JSONCase 1: Copying data from JSON files

Quando si copiano dati da file JSON, vedere i seguenti due esempi.See the following two samples when copying data from JSON files. Punti generali da notare:The generic points to note:

Esempio 1: Estrarre i dati dall'oggetto e dalla matriceSample 1: extract data from object and array

In questo esempio si prevede che un oggetto JSON radice esegua il mapping a un singolo record in un risultato tabulare.In this sample, you expect one root JSON object maps to single record in tabular result. Se si dispone di un file JSON con il contenuto seguente: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"
                }
            ]
        }
    }
}

e lo si vuole copiare in una tabella SQL di Azure nel formato seguente, estraendo i dati sia dagli oggetti che dalla matrice: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

Il set di dati di input con il tipo JsonFormat è definito come segue (definizione parziale che include solo le parti pertinenti).The input dataset with JsonFormat type is defined as follows: (partial definition with only the relevant parts). In particolare:More specifically:

  • La sezione structure definisce i nomi di colonna personalizzati e il tipo di dati corrispondente durante la conversione in dati tabulari.structure section defines the customized column names and the corresponding data type while converting to tabular data. Questa sezione è facoltativa a meno che non sia necessario eseguire il mapping colonne.This section is optional unless you need to do column mapping. Per altri dettagli, vedere Eseguire il mapping delle colonne del set di dati di origine alle colonne del set di dati di destinazione.See Map source dataset columns to destination dataset columns section for more details.
  • jsonPathDefinition specifica il percorso JSON per ogni colonna indicante da dove estrarre i dati.jsonPathDefinition specifies the JSON path for each column indicating where to extract the data from. Per copiare dati dalla matrice, è possibile usare matrice[x].proprietà per estrarre il valore della proprietà specificata dall'oggetto x oppure è possibile usare matrice[*].proprietà per trovare il valore in qualsiasi oggetto contenente tale proprietà.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"}      
        }
    }
}

Esempio 2: applicazione incrociata di più oggetti con lo stesso modello dalla matriceSample 2: cross apply multiple objects with the same pattern from array

In questo esempio si prevede di trasformare un oggetto JSON radice in più record in risultato tabulare.In this sample, you expect to transform one root JSON object into multiple records in tabular result. Se si dispone di un file JSON con il contenuto seguente: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" } ]
}

e lo si vuole copiare in una tabella SQL di Azure nel formato seguente, rendendo flat i dati nella matrice e nel crossjoin con le informazioni radice comuni: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"}]

Il set di dati di input con il tipo JsonFormat è definito come segue (definizione parziale che include solo le parti pertinenti).The input dataset with JsonFormat type is defined as follows: (partial definition with only the relevant parts). In particolare:More specifically:

  • La sezione structure definisce i nomi di colonna personalizzati e il tipo di dati corrispondente durante la conversione in dati tabulari.structure section defines the customized column names and the corresponding data type while converting to tabular data. Questa sezione è facoltativa a meno che non sia necessario eseguire il mapping colonne.This section is optional unless you need to do column mapping. Per altri dettagli, vedere Eseguire il mapping delle colonne del set di dati di origine alle colonne del set di dati di destinazione.See Map source dataset columns to destination dataset columns section for more details.
  • jsonNodeReference indica di seguire l'iterazione dei dati e di estrarli dagli oggetti con lo stesso modello sotto le righe ordine della matrice.jsonNodeReference indicates to iterate and extract data from the objects with the same pattern under array orderlines.
  • jsonPathDefinition specifica il percorso JSON per ogni colonna indicante da dove estrarre i dati.jsonPathDefinition specifies the JSON path for each column indicating where to extract the data from. In questo esempio "ordernumber", "orderdate" e "city" sono sotto l'oggetto radice con il percorso JSON che inizia con "$.", mentre "order_pd" e "order_price" sono definiti con il percorso derivato dall'elemento matrice senza "$.".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"}         
        }
    }
}

Tenere presente quanto segue:Note the following points:

  • Se structure e jsonPathDefinition non sono definite nel set di dati della data factory, l'attività di copia rileva lo schema dal primo oggetto e rende flat l'intero oggetto.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.
  • Se l'input JSON presenta una matrice, per impostazione predefinita, l'attività di copia converte l'intero valore della matrice in una stringa.If the JSON input has an array, by default the Copy Activity converts the entire array value into a string. È possibile scegliere di estrarre i dati usando jsonNodeReference e/o jsonPathDefinition oppure di ignorarlo non specificandolo in jsonPathDefinition.You can choose to extract data from it using jsonNodeReference and/or jsonPathDefinition, or skip it by not specifying it in jsonPathDefinition.
  • Se ci sono nomi duplicati allo stesso livello, l'attività di copia sceglie quello più recente.If there are duplicate names at the same level, the Copy Activity picks the last one.
  • I nomi delle proprietà distinguono tra maiuscole e minuscole.Property names are case-sensitive. Due proprietà con lo stesso nome ma con una combinazione differente di maiuscole e minuscole vengono considerate come due proprietà diverse.Two properties with same name but different casings are treated as two separate properties.

Caso 2: Scrittura dei dati nel file JSONCase 2: Writing data to JSON file

Se nel database SQL è presente la tabella seguente: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

e per ogni record si prevede di scrivere in un oggetto JSON nel formato seguente: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"
    }
}

Il set di dati di output con il tipo JsonFormat è definito come segue (definizione parziale che include solo le parti pertinenti).The output dataset with JsonFormat type is defined as follows: (partial definition with only the relevant parts). Più in particolare, la sezione structure definisce i nomi di proprietà personalizzati nel file di destinazione e viene usato nestingSeparator (il valore predefinito è ".") per identificare il livello di annidamento dal nome.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. Questa sezione è facoltativa a meno che non si voglia modificare il nome della proprietà confrontandolo con il nome della colonna di origine o annidare alcune delle proprietà.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"
        }
    }
}

Formato AVROAVRO format

Per analizzare i file Avro o scrivere i dati in formato Avro, impostare la proprietà format type su AvroFormat.If you want to parse the Avro files or write the data in Avro format, set the format type property to AvroFormat. Non è necessario specificare le proprietà nella sezione Format all'interno della sezione typeProperties.You do not need to specify any properties in the Format section within the typeProperties section. Esempio:Example:

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

Per usare il formato Avro in una tabella Hive, fare riferimento all' esercitazione su Apache Hive.To use Avro format in a Hive table, you can refer to Apache Hive’s tutorial.

Tenere presente quanto segue:Note the following points:

Formato ORCORC format

Per analizzare i file ORC o scrivere i dati in formato ORC, impostare la proprietà format type su OrcFormat.If you want to parse the ORC files or write the data in ORC format, set the format type property to OrcFormat. Non è necessario specificare le proprietà nella sezione Format all'interno della sezione typeProperties.You do not need to specify any properties in the Format section within the typeProperties section. Esempio:Example:

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

Importante

Se non si esegue una copia identica dei file ORC tra l'archivio dati locale e quello nel cloud, nel computer gateway è necessario installare JRE 8 (Java Runtime Environment).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. Per un gateway a 64 bit è necessario JRE a 64 bit, mentre per un gateway a 32 bit è necessario JRE a 32 bit.A 64-bit gateway requires 64-bit JRE and 32-bit gateway requires 32-bit JRE. Entrambe le versioni sono disponibili qui.You can find both versions from here. Scegliere la versione appropriata.Choose the appropriate one.

Tenere presente quanto segue:Note the following points:

  • Tipi di dati complessi non sono supportati (STRUCT, MAP, LIST, UNION)Complex data types are not supported (STRUCT, MAP, LIST, UNION)
  • Il file ORC dispone di tre opzioni relative alla compressione: NONE, ZLIB, SNAPPY.ORC file has three compression-related options: NONE, ZLIB, SNAPPY. Data Factory supporta la lettura dei dati dal file ORC in uno di questi formati compressi.Data Factory supports reading data from ORC file in any of these compressed formats. Per leggere i dati, Data Factoy usa la compressione codec dei metadati.It uses the compression codec is in the metadata to read the data. Tuttavia, durante la scrittura in un file ORC, Data Factory sceglie ZLIB che è il valore predefinito per ORC.However, when writing to an ORC file, Data Factory chooses ZLIB, which is the default for ORC. Al momento non esiste alcuna opzione per ignorare tale comportamento.Currently, there is no option to override this behavior.

Formato ParquetParquet format

Per analizzare i file Parquet o scrivere i dati in formato Parquet, impostare la proprietà format type su ParquetFormat.If you want to parse the Parquet files or write the data in Parquet format, set the format type property to ParquetFormat. Non è necessario specificare le proprietà nella sezione Format all'interno della sezione typeProperties.You do not need to specify any properties in the Format section within the typeProperties section. Esempio:Example:

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

Importante

Se non si esegue una copia identica dei file Parquet tra l'archivio dati locale e quello nel cloud, nel computer gateway è necessario installare JRE 8 (Java Runtime Environment).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. Per un gateway a 64 bit è necessario JRE a 64 bit, mentre per un gateway a 32 bit è necessario JRE a 32 bit.A 64-bit gateway requires 64-bit JRE and 32-bit gateway requires 32-bit JRE. Entrambe le versioni sono disponibili qui.You can find both versions from here. Scegliere la versione appropriata.Choose the appropriate one.

Tenere presente quanto segue:Note the following points:

  • Tipi di dati complessi non sono supportati (MAP, LIST)Complex data types are not supported (MAP, LIST)
  • Un file Parquet ha le seguenti opzioni relative alla compressione: NONE, SNAPPY, GZIP e LZO.Parquet file has the following compression-related options: NONE, SNAPPY, GZIP, and LZO. Data Factory supporta la lettura dei dati dal file ORC in uno di questi formati compressi.Data Factory supports reading data from ORC file in any of these compressed formats. Per la lettura dei dati usa il codec di compressione nei metadati.It uses the compression codec in the metadata to read the data. Tuttavia, durante la scrittura in un file Parquet, Data Factory sceglie SNAPPY, cioè il valore predefinito per il formato Parquet.However, when writing to a Parquet file, Data Factory chooses SNAPPY, which is the default for Parquet format. Al momento non esiste alcuna opzione per ignorare tale comportamento.Currently, there is no option to override this behavior.

Supporto della compressioneCompression support

L'elaborazione di set di dati di grandi dimensioni può causare colli di bottiglia I/O e di rete.Processing large data sets can cause I/O and network bottlenecks. Pertanto, i dati compressi negli archivi possono non solo velocizzare il trasferimento dei dati attraverso la rete e risparmiare spazio su disco, ma apportare anche miglioramenti significativi delle prestazioni nell'elaborazione di dati di grandi dimensioni.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. Attualmente, la compressione è supportata per gli archivi di dati basati su file, ad esempio BLOB di Azure o il file system locale.Currently, compression is supported for file-based data stores such as Azure Blob or On-premises File System.

Per specificare la compressione per un set di dati, usare la proprietà compression nel set di dati JSON come illustrato di seguito: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"  
            }  
        }  
    }  
}  

Si supponga che il set di dati di esempio venga usato come output di un'attività di copia, l'attività di copia comprime i dati di output con il codec GZIP usando un rapporto ottimale e quindi scrive i dati compressi in un file denominato pagecounts.csv.gz in Archiviazione BLOB di 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.

Nota

Le impostazioni di compressione non sono attualmente supportate per i dati in AvroFormat, OrcFormat o ParquetFormat.Compression settings are not supported for data in the AvroFormat, OrcFormat, or ParquetFormat. Quando si leggono file in questi formati, Data Factory rileva e usa il codec di compressione nei metadati.When reading files in these formats, Data Factory detects and uses the compression codec in the metadata. Quando si scrive in un file che si presenta in uno di questi formati, Data Factory sceglie il codice di compressione predefinito per il formato specifico.When writing to files in these formats, Data Factory chooses the default compression codec for that format. ad esempio ZLIB per OrcFormat e SNAPPY per ParquetFormat.For example, ZLIB for OrcFormat and SNAPPY for ParquetFormat.

La sezione compression ha due proprietà:The compression section has two properties:

  • Type: codec di compressione, che può essere GZIP, Deflate, BZIP2 o ZipDeflate.Type: the compression codec, which can be GZIP, Deflate, BZIP2, or ZipDeflate.

  • Level: rapporto di compressione, che può essere Optimal o Fastest.Level: the compression ratio, which can be Optimal or Fastest.

    • Fastest: l'operazione di compressione deve essere completata il più rapidamente possibile, anche se il file risultante non viene compresso in modo ottimale.Fastest: The compression operation should complete as quickly as possible, even if the resulting file is not optimally compressed.

    • Optimal: l'operazione di compressione deve comprimere il file in modo ottimale, anche se il completamento richiede più tempo.Optimal: The compression operation should be optimally compressed, even if the operation takes a longer time to complete.

      Per maggiori informazioni, vedere l'argomento relativo al livello di compressione .For more information, see Compression Level topic.

Quando si specifica una proprietà compression in un set di dati di input JSON, la pipeline può leggere i dati compressi dall'origine. Quando si specifica la proprietà in un set di dati di output JSON, l'attività di copia può scrivere i dati compressi nella destinazione.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. Di seguito vengono forniti alcuni scenari di esempio:Here are a few sample scenarios:

  • Leggere i dati compressi GZIP da un BLOB di Azure, decomprimerli e scrivere i dati del risultato in un database SQL di Azure.Read GZIP compressed data from an Azure blob, decompress it, and write result data to an Azure SQL database. Definire il set di dati di input del BLOB di Azure con la proprietà JSON compression type impostata su GZIP.You define the input Azure Blob dataset with the compression type JSON property as GZIP.
  • Leggere i dati da un file di testo normale dal file system locale, comprimerli usando il formato GZIP e scrivere i dati compressi in un BLOB di 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. Definire un set di dati di output del BLOB di Azure con la proprietà JSON compression type impostata su GZIP.You define an output Azure Blob dataset with the compression type JSON property as GZip.
  • Leggere il file ZIP dal server FTP, decomprimerlo per ottenere i file all'interno e inserire i file in 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. Definire un set di dati FTP di input con la proprietà JSON compression type impostata su ZipDeflate.You define an input FTP dataset with the compression type JSON property as ZipDeflate.
  • Leggere i dati compressi GZIP da un BLOB di Azure, decomprimerli, comprimerli usando BZIP2 e scrivere i dati del risultato in un BLOB di Azure.Read a GZIP-compressed data from an Azure blob, decompress it, compress it using BZIP2, and write result data to an Azure blob. In questo caso, il set di dati di input del BLOB di Azure viene definito con compression type impostato su GZIP e il set di dati di output viene definito con compression type impostato su 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.

Passaggi successiviNext steps

Per gli archivi dati basati su file supportati da Azure Data Factory, vedere i seguenti articoli:See the following articles for file-based data stores supported by Azure Data Factory: