Formaty plików i kompresji obsługiwane przez Azure Data Factory

Ten temat dotyczy następujących łączników: Amazon S3, Azure Blob, Azure Data Lake Store, System plików, FTP, HDFS, HTTP i SFTP.

Uwaga

Ten artykuł dotyczy wersji 1 usługi Azure Data Factory. Jeśli używasz bieżącej wersji usługi Data Factory, zobacz obsługiwane formaty plików i koderki kompresji w usłudze Data Factory.

Azure Data Factory obsługuje następujące typy formatów plików:

Format tekstu

Jeśli chcesz odczytać plik tekstowy lub zapisać w pliku tekstowym, ustaw type właściwość w format sekcji zestawu danych na TextFormat. Ponadto możesz określić następujące opcjonalne właściwości w sekcji format. Aby uzyskać informacje na temat sposobu konfigurowania, zobacz sekcję Przykład formatu TextFormat.

Właściwość Opis Dozwolone wartości Wymagane
columnDelimiter Znak używany do rozdzielania kolumn w pliku. Możesz rozważyć użycie rzadkiego niedrukowalnego znaku, który prawdopodobnie nie istnieje w danych. Na przykład określ wartość "\u0001", która reprezentuje początek nagłówka (SOH). Dozwolony jest tylko jeden znak. Wartość domyślna to przecinek (,).

Aby użyć znaku Unicode, zapoznaj się z znakami Unicode , aby uzyskać odpowiedni kod.
Nie
rowDelimiter Znak używany do rozdzielania wierszy w pliku. Dozwolony jest tylko jeden znak. Wartością domyślną jest dowolna z następujących wartości przy odczycie: [„\r\n”, „\r”, „\n”] oraz wartość „\r\n” przy zapisie. Nie
escapeChar Znak specjalny służący do zmiany interpretacji ogranicznika kolumny w zawartości pliku wejściowego.

W przypadku tabeli nie można określić zarówno właściwości escapeChar, jak i quoteChar.
Dozwolony jest tylko jeden znak. Brak wartości domyślnej.

Przykład: jeśli masz przecinek (',') jako ogranicznik kolumny, ale chcesz mieć znak przecinka w tekście (na przykład: "Hello, world"), możesz zdefiniować znak ucieczki "$" i użyć ciągu "Hello$, world" w źródle.
Nie
quoteChar Znak używany do umieszczania wartości ciągu w cudzysłowie. Ograniczniki kolumny i wiersza umieszczone w cudzysłowie są traktowane jako część wartości ciągu. Ta właściwość ma zastosowanie zarówno do wejściowych, jak i wyjściowych zestawów danych.

W przypadku tabeli nie można określić zarówno właściwości escapeChar, jak i quoteChar.
Dozwolony jest tylko jeden znak. Brak wartości domyślnej.

Jeśli na przykład masz przecinek (',') jako ogranicznik kolumny, ale chcesz mieć znak przecinka w tekście (na przykład: <Hello, world), możesz zdefiniować znak " (podwójny cudzysłów) jako znak cudzysłowu i użyć ciągu "Hello, world>" w źródle.
Nie
nullValue Co najmniej jeden znak służący do reprezentowania wartości null. Co najmniej jeden znak. Wartości domyślne to „\N” i „NULL” przy odczycie oraz „\N” przy zapisie. Nie
encodingName Określa nazwę kodowania. Prawidłowa nazwa kodowania. Zobacz właściwość Encoding.EncodingName. Przykład: windows-1250 lub shift_jis. Wartość domyślna to UTF-8. Nie
firstRowAsHeader Określa, czy pierwszy wiersz ma być traktowany jako nagłówek. W przypadku zestawu danych wejściowych usługa Data Factory odczytuje pierwszy wiersz jako nagłówek. W przypadku zestawu danych wyjściowych usługa Data Factory zapisuje pierwszy wiersz jako nagłówek.

Aby uzyskać przykładowe scenariusze, zobacz sekcję Scenariusze użycia właściwości firstRowAsHeader oraz skipLineCount.
Prawda
False (domyślnie)
Nie
skipLineCount Wskazuje liczbę wierszy do pominięcia podczas odczytywania danych z plików wejściowych. Jeśli określono zarówno właściwość skipLineCount, jak i firstRowAsHeader, najpierw zostaną pominięte wiersze, a następnie zostaną odczytane informacje nagłówka z pliku wejściowego.

Aby uzyskać przykładowe scenariusze, zobacz sekcję Scenariusze użycia właściwości firstRowAsHeader oraz skipLineCount.
Liczba całkowita Nie
treatEmptyAsNull Określa, czy ciąg pusty lub o wartości null ma być traktowany jako wartość null podczas odczytu danych z pliku wejściowego. True (domyślnie)
Fałsz
Nie

Przykład formatu TextFormat

W poniższej definicji JSON dla zestawu danych określono niektóre z opcjonalnych właściwości.

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

Aby użyć właściwości escapeChar zamiast quoteChar, zastąp wiersz z właściwością quoteChar następującą właściwością escapeChar:

"escapeChar": "$",

Scenariusze użycia właściwości firstRowAsHeader oraz skipLineCount

  • Kopiujesz dane ze źródła innego niż plik do pliku tekstowego i chcesz dodać wiersz nagłówka zawierający metadane schematu (na przykład: schemat SQL). Ustaw właściwość firstRowAsHeader na wartość true w zestawie danych wyjściowych dla tego scenariusza.
  • Kopiujesz dane z pliku tekstowego zawierającego wiersz nagłówka do ujścia innego niż plik i chcesz pominąć ten wiersz. Ustaw właściwość firstRowAsHeader na wartość true w zestawie danych wejściowych.
  • Kopiujesz dane z pliku tekstowego i chcesz pominąć kilka początkowych wierszy, które nie zawierają żadnych danych bądź informacji nagłówka. Określ właściwość skipLineCount, aby wskazać liczbę wierszy do pominięcia. Jeśli pozostała część pliku zawiera wiersz nagłówka, możesz również określić właściwość firstRowAsHeader. Jeśli określono zarówno właściwość skipLineCount, jak i firstRowAsHeader, najpierw zostaną pominięte wiersze, a następnie zostaną odczytane informacje nagłówka z pliku wejściowego

Format JSON

Aby zaimportować/wyeksportować plik JSON zgodnie z rzeczywistym użyciem do/z usługi Azure Cosmos DB, zobacz sekcję Importowanie/eksportowanie dokumentów JSON w artykule Przenoszenie danych do/z usługi Azure Cosmos DB.

Jeśli chcesz przeanalizować pliki JSON lub zapisać dane w formacie JSON, ustaw type właściwość w format sekcji na wartość JsonFormat. Ponadto możesz określić następujące opcjonalne właściwości w sekcji format. Aby uzyskać informacje na temat sposobu konfigurowania, zobacz sekcję Przykład formatu JsonFormat.

Właściwość Opis Wymagane
filePattern Wskazuje wzorzec danych przechowywanych w każdym pliku JSON. Dozwolone wartości to: setOfObjects i arrayOfObjects. Wartością domyślną jest setOfObjects. Aby uzyskać szczegółowe informacje o tych wzorcach, zobacz sekcję Wzorce plików JSON. Nie
jsonNodeReference Jeśli chcesz wykonać iterację i ekstrakcję danych z obiektów wewnątrz pola tablicy o tym samym wzorcu, określ ścieżkę JSON tej tablicy. Ta właściwość jest obsługiwana tylko podczas kopiowania danych z plików JSON. Nie
jsonPathDefinition Określa wyrażenie ścieżki JSON dla każdego mapowania kolumny z niestandardową nazwą kolumny (musi zaczynać się małą literą). Ta właściwość jest obsługiwana tylko podczas kopiowania danych z plików JSON; dane możesz wyodrębnić z obiektu lub tablicy.

W przypadku pól obiektu głównego na początku użyj elementu głównego $. W przypadku pól wewnątrz tablicy wybranej przez właściwość jsonNodeReference najpierw podaj element tablicy. Aby uzyskać informacje na temat sposobu konfigurowania, zobacz sekcję Przykład formatu JsonFormat.
Nie
encodingName Określa nazwę kodowania. Aby uzyskać listę prawidłowych nazw kodowania, zobacz właściwość Encoding.EncodingName. Na przykład: windows-1250 lub shift_jis. Wartość domyślna to: UTF-8. Nie
nestingSeparator Znak używany do rozdzielania poziomów zagnieżdżenia. Wartość domyślna to „.” (kropka). Nie

Wzorce plików JSON

działanie Kopiuj można analizować następujące wzorce plików JSON:

  • Typ I: setOfObjects

    Każdy plik zawiera pojedynczy obiekt lub wiele obiektów rozdzielonych wierszami bądź połączonych. W przypadku wybrania tej opcji w zestawie danych wyjściowych działanie kopiowania tworzy pojedynczy plik JSON z każdym obiektem w osobnym wierszu (rozdzielanie wierszami).

    • przykład kodu JSON z pojedynczym obiektem

      {
          "time": "2015-04-29T07:12:20.9100000Z",
          "callingimsi": "466920403025604",
          "callingnum1": "678948008",
          "callingnum2": "567834760",
          "switch1": "China",
          "switch2": "Germany"
      }
      
    • przykład kodu JSON z obiektami rozdzielonymi wierszami

      {"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"}
      
    • przykład kodu JSON z obiektami połączonymi

      {
          "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"
      }
      
  • Typ II: arrayOfObjects

    Każdy plik zawiera tablicę obiektów.

    [
        {
            "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"
        }
    ]
    

Przykład formatu JsonFormat

Przypadek 1. Kopiowanie danych z plików JSON

Zapoznaj się z poniższymi dwoma przykładami podczas kopiowania danych z plików JSON. Ogólne punkty do zanotowania:

Przykład 1. Wyodrębnianie danych z obiektu i tablicy

W tym przykładzie oczekiwany jest jeden główny obiekt JSON mapowany na pojedynczy rekord w wyniku tabelarycznym. Jeśli masz plik JSON z następującą zawartością:

{
    "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"
                }
            ]
        }
    }
}

i chcesz skopiować ją do tabeli usługi Azure SQL w następującym formacie przez wyodrębnienie danych z obiektu i tabeli:

ID (Identyfikator) deviceType targetResourceType resourceManagementProcessRunId occurrenceTime
ed0e4960-d9c5-11e6-85dc-d7996816aad3 PC Microsoft.Compute/virtualMachines 827f8aaa-ab72-437c-ba48-d8917a7336a3 1/13/2017 11:24:37 AM

Zestaw danych wejściowych typu JsonFormat jest zdefiniowany następująco: (częściowa definicja zawierająca tylko stosowne fragmenty). Więcej szczegółów:

  • Sekcja structure definiuje niestandardowe nazwy kolumn i odpowiedni typ danych podczas konwersji na dane tabelaryczne. Ta sekcja jest opcjonalna, o ile nie trzeba wykonać mapowania kolumn. Aby uzyskać więcej informacji, zobacz sekcję Mapuj kolumny źródłowego zestawu danych na docelową kolumnę zestawu danych .
  • Właściwość jsonPathDefinition określa ścieżkę JSON dla każdej kolumny, wskazując, skąd mają zostać wyodrębnione dane. Aby skopiować dane z tablicy, możesz użyć właściwości array[x].property , aby wyodrębnić wartość danej właściwości z obiektu xth lub użyć właściwości array[*].property , aby znaleźć wartość z dowolnego obiektu zawierającego taką właściwość.
"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"}      
        }
    }
}

Przykład 2. Krzyżowe stosowanie tego samego wzorca z tabeli do wielu obiektów

W tym przykładzie oczekiwane jest przetransformowanie jednego głównego obiektu JSON na wiele rekordów w wyniku tabelarycznym. Jeśli masz plik JSON z następującą zawartością:

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

i chcesz ją skopiować do tabeli Azure SQL w następującym formacie, spłaszczając dane wewnątrz tablicy i łącząc je krzyżowo ze wspólnymi informacjami głównymi:

ordernumber orderdate order_pd order_price city
01 20170122 P1 23 [{"sanmateo":"No 1"}]
01 20170122 P2 13 [{"sanmateo":"No 1"}]
01 20170122 P3 231 [{"sanmateo":"No 1"}]

Zestaw danych wejściowych typu JsonFormat jest zdefiniowany następująco: (częściowa definicja zawierająca tylko stosowne fragmenty). Więcej szczegółów:

  • Sekcja structure definiuje niestandardowe nazwy kolumn i odpowiedni typ danych podczas konwersji na dane tabelaryczne. Ta sekcja jest opcjonalna, o ile nie trzeba wykonać mapowania kolumn. Aby uzyskać więcej informacji, zobacz sekcję Mapuj kolumny źródłowego zestawu danych na docelową kolumnę zestawu danych .
  • Właściwość jsonNodeReference określa, że ma zostać wykonana iteracja i ekstrakcja danych z obiektów o tym samym wzorcu w tablicy orderlines.
  • Właściwość jsonPathDefinition określa ścieżkę JSON dla każdej kolumny, wskazując, skąd mają zostać wyodrębnione dane. W tym przykładzie kolumny „ordernumber”, „orderdate” i „city” znajdują się w obiekcie głównym ze ścieżką JSON rozpoczynającą się od znaków „$.”, natomiast kolumny „order_pd” i „order_price” są zdefiniowane przy użyciu ścieżki pochodzącej od elementu tablicy bez ciągu „$.”.
"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"}         
        }
    }
}

Pamiętaj o następujących kwestiach:

  • Jeśli sekcja structure i właściwość jsonPathDefinition nie są zdefiniowane w zestawie danych usługi Data Factory, działanie kopiowania wykrywa schemat z pierwszego obiektu i spłaszcza cały obiekt.
  • Jeśli dane wejściowe JSON zawierają tablicę, działanie kopiowania domyślnie konwertuje całą wartość tablicy na ciąg. Możesz wyodrębnić z niej dane przy użyciu właściwości jsonNodeReference i/lub jsonPathDefinition bądź ją pominąć, nie określając jej we właściwości jsonPathDefinition.
  • Jeśli na tym samym poziomie występują zduplikowane nazwy, działanie kopiowania wybierze ostatnią z nich.
  • W przypadku nazw właściwości wielkość liter ma znaczenie. Dwie właściwości o takiej samej nazwie, ale zapisanej przy użyciu różnej wielkości liter, są traktowane jako dwie osobne właściwości.

Przypadek 2. Zapisywanie danych do pliku JSON

Jeśli masz następującą tabelę w SQL Database:

ID (Identyfikator) order_date order_price order_by
1 20170119 2000 David
2 20170120 3500 Patrick
3 20170121 4000 Jason

i dla każdego rekordu oczekuje się zapisu w obiekcie JSON w następującym formacie:

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

Zestaw danych wyjściowych typu JsonFormat jest zdefiniowany następująco: (częściowa definicja zawierająca tylko stosowne fragmenty). W szczególności structure sekcja definiuje niestandardowe nazwy właściwości w pliku docelowym ( nestingSeparator wartość domyślna to ".") służą do identyfikowania warstwy zagnieżdżenia z nazwy. Ta sekcja jest opcjonalna, o ile nie chcesz zmieniać nazwy właściwości na podstawie porównania z nazwą kolumny źródłowej ani zagnieżdżać właściwości.

"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 AVRO

Jeśli chcesz analizować pliki Avro lub zapisywać dane w formacie Avro, ustaw właściwość formattype na wartość AvroFormat. Nie musisz określać żadnych właściwości w sekcji Format należącej do sekcji typeProperties. Przykład:

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

Aby użyć formatu Avro w tabeli Hive, możesz zapoznać się z samouczkiem platformy Apache Hive.

Pamiętaj o następujących kwestiach:

Format ORC

Jeśli chcesz analizować pliki ORC lub zapisywać dane w formacie ORC, ustaw właściwość formattype na wartość OrcFormat. Nie musisz określać żadnych właściwości w sekcji Format należącej do sekcji typeProperties. Przykład:

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

Ważne

Jeśli nie kopiujesz plików ORC w niezmienionej postaci między lokalnymi i chmurowymi magazynami danych, musisz zainstalować środowisko JRE 8 (Java Runtime Environment) na maszynie bramy. Brama 64-bitowa wymaga 64-bitowego środowiska JRE, natomiast brama 32-bitowa — 32-bitowego środowiska JRE. Obie wersje można znaleźć tutaj. Wybierz odpowiednią.

Pamiętaj o następujących kwestiach:

  • Złożone typy danych nie są obsługiwane (struktura, mapa, lista, unia)
  • Plik ORC ma trzy opcje związane z kompresją: NONE, ZLIB, SNAPPY. Usługa Data Factory obsługuje odczyt danych z pliku ORC w dowolnym z tych skompresowanych formatów. Do odczytywania danych używa kodera-dekodera kompresji z metadanych. Podczas zapisywania w pliku ORC usługa Data Factory wybiera natomiast opcję ZLIB, która jest domyślna dla formatu ORC. Obecnie nie ma możliwości zastąpienia tego zachowania.

Format Parquet

Jeśli chcesz analizować pliki Parquet lub zapisywać dane w formacie Parquet, ustaw właściwość formattype na wartość ParquetFormat. Nie musisz określać żadnych właściwości w sekcji Format należącej do sekcji typeProperties. Przykład:

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

Ważne

Jeśli nie kopiujesz plików Parquet w niezmienionej postaci między lokalnymi i chmurowymi magazynami danych, musisz zainstalować środowisko JRE 8 (Java Runtime Environment) na maszynie bramy. Brama 64-bitowa wymaga 64-bitowego środowiska JRE, natomiast brama 32-bitowa — 32-bitowego środowiska JRE. Obie wersje można znaleźć tutaj. Wybierz odpowiednią.

Pamiętaj o następujących kwestiach:

  • Złożone typy danych nie są obsługiwane (mapa, lista)
  • Plik Parquet ma następujące opcje związane z kompresją: NONE, SNAPPY, GZIP oraz LZO. Usługa Data Factory obsługuje odczyt danych z pliku ORC w dowolnym z tych skompresowanych formatów. Do odczytywania danych używa kodera-dekodera kompresji z metadanych. Podczas zapisywania w pliku Parquet usługa Data Factory wybiera natomiast opcję SNAPPY, która jest domyślna dla formatu Parquet. Obecnie nie ma możliwości zastąpienia tego zachowania.

Obsługa kompresji

Przetwarzanie dużych zestawów danych może powodować wąskie gardła we/wy i sieci. W związku z tym skompresowane dane w magazynach mogą nie tylko przyspieszyć transfer danych w sieci i zaoszczędzić miejsce na dysku, ale także znacznie poprawić wydajność przetwarzania danych big data. Obecnie kompresja jest obsługiwana w przypadku magazynów danych opartych na plikach, takich jak azure blob lub lokalny system plików.

Aby określić kompresję zestawu danych, użyj właściwości kompresji w formacie JSON zestawu danych, jak w poniższym przykładzie:

{  
    "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"  
            }  
        }  
    }  
}  

Załóżmy, że przykładowy zestaw danych jest używany jako dane wyjściowe działania kopiowania, a działanie kopiowania kompresuje dane wyjściowe za pomocą kodera GZIP przy użyciu optymalnego współczynnika, a następnie zapisuje skompresowane dane w pliku o nazwie pagecounts.csv.gz w Azure Blob Storage.

Uwaga

Ustawienia kompresji nie są obsługiwane w przypadku danych w formacie AvroFormat, OrcFormat lub ParquetFormat. Podczas odczytywania plików w tych formatach usługa Data Factory wykrywa koder kompresji w metadanych i używa go. Podczas zapisywania plików w tych formatach usługa Data Factory wybiera domyślny koder kodujący kompresji dla tego formatu. Na przykład ZLIB dla OrcFormat i SNAPPY dla ParquetFormat.

Sekcja kompresji ma dwie właściwości:

  • Typ: koder kompresji, który może być GZIP, Deflate, BZIP2 lub ZipDeflate.

  • Poziom: współczynnik kompresji, który może być optymalny lub najszybszy.

    • Najszybszy: Operacja kompresji powinna zostać ukończona tak szybko, jak to możliwe, nawet jeśli wynikowy plik nie jest optymalnie skompresowany.

    • Optymalny: operacja kompresji powinna być optymalnie skompresowana, nawet jeśli operacja trwa dłużej.

      Aby uzyskać więcej informacji, zobacz temat Poziom kompresji .

Po określeniu compression właściwości w wejściowym formacie JSON zestawu danych potok może odczytywać skompresowane dane ze źródła, a po określeniu właściwości w wyjściowym formacie JSON zestawu danych działanie kopiowania może zapisywać skompresowane dane do miejsca docelowego. Oto kilka przykładowych scenariuszy:

  • Odczytywanie skompresowanych danych GZIP z obiektu blob platformy Azure, dekompresowanie ich i zapisywanie danych wynikowych w celu Azure SQL Database. Należy zdefiniować wejściowy zestaw danych obiektów blob platformy Azure z właściwością compressiontype JSON jako GZIP.
  • Odczytywanie danych z pliku zwykłego tekstu z lokalnego systemu plików, kompresowanie ich przy użyciu formatu GZip i zapisywanie skompresowanych danych do obiektu blob platformy Azure. Zdefiniujesz wyjściowy zestaw danych obiektów blob platformy Azure z właściwością compressiontype JSON jako GZip.
  • Odczyt .zip pliku z serwera FTP, dekompresuj go, aby pobrać pliki wewnątrz, i wystawić te pliki do usługi Azure Data Lake Store. Należy zdefiniować wejściowy zestaw danych FTP z właściwością compressiontype JSON jako ZipDeflate.
  • Odczytywanie skompresowanych danych GZIP z obiektu blob platformy Azure, dekompresowanie go, kompresowanie go przy użyciu protokołu BZIP2 i zapisywanie danych wynikowych w obiekcie blob platformy Azure. W tym przypadku należy zdefiniować wejściowy zestaw danych obiektów blob platformy Azure z ustawioną wartością compressiontype GZIP i wyjściowym zestawem compressiontype danych ustawionym na BZIP2.

Następne kroki

Zapoznaj się z następującymi artykułami dotyczącymi magazynów danych opartych na plikach obsługiwanych przez Azure Data Factory: