Formát JSON ve službě Azure Data Factory a Azure Synapse Analytics

PLATÍ PRO: Azure Data Factory Azure Synapse Analytics

Tip

Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.

Pokud chcete parsovat soubory JSON nebo zapisovat data do formátu JSON, postupujte podle tohoto článku.

Formát JSON je podporovaný pro následující konektory:

Vlastnosti datové sady

Úplný seznam oddílů a vlastností dostupných pro definování datových sad najdete v článku Datové sady . Tato část obsahuje seznam vlastností podporovaných datovou sadou JSON.

Vlastnost Popis Povinní účastníci
type Vlastnost typu datové sady musí být nastavená na Json. Ano
location Nastavení umístění souborů Každý konektor založený na souborech má svůj vlastní typ umístění a podporované vlastnosti v části location. Podrobnosti najdete v článku o konektoru –> část Vlastnosti datové sady. Ano
encodingName Typ kódování použitý k čtení a zápisu testovacích souborů.
Povolené hodnoty jsou následující: "UTF-8","UTF-8 bez BOM", "UTF-16", "UTF-16BE", "UTF-32", "UTF-32BE", "US-ASCII", "UTF-7", "BIG5", "EUC-JP", "EUC-KR", "GB2312", "GB18030", "JOHAB", "SHIFT-JIS", "CP875", "CP866", "IBM00858", "IBM037", "IBM273", "IBM437", "IBM500", "IBM737", "IBM775", "IBM850", "IBM852", "IBM855", "IBM857", "IBM860", "IBM861", "IBM863", "IBM864", "IBM865", "IBM865", "IBM869", "IBM870", "IBM01140", "IBM01141", "IBM01142", "IBM01143", "IBM01144", "IBM01145", "IBM01146", "IBM01147", "IBM01148", "IBM01149", "ISO-2022-JP", "ISO-2022-KR", "ISO-8859-1", "ISO-8859-2", "ISO-8859-3", "ISO-8859-4", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", "ISO-8859-13", "ISO-8859-15", "WINDOWS-874", "WINDOWS-1250", "WINDOWS-1251", "WINDOWS-1255", "WINDOWS-1252", "WINDOWS-1253", "WINDOWS-1254", "WINDOWS-1255", "WINDOWS-1256", "WINDOWS-1257", "WINDOWS-1258".
No
komprese Skupina vlastností pro konfiguraci komprese souborů Tuto část nakonfigurujte, když chcete během provádění aktivity provést kompresi nebo dekompresi. No
type
(v části compression)
Kodek komprese používaný ke čtení a zápisu souborů JSON.
Povolené hodnoty jsou bzip2, gzip, deflate, ZipDeflate, TarGzip, Tar, snappy nebo lz4. Výchozí hodnota není komprimována.
Všimněte si, že v současné době aktivita Copy nepodporuje "snappy" a "lz4" a tok dat mapování nepodporuje ZipDeflate", "TarGzip" a "Tar".
Všimněte si, že při dekomprimaci aktivity kopírování dekomprimujte/ soubory TarGzip/Tar a zápis do úložiště dat jímky založené na souborech, ve výchozím nastavení se soubory extrahují do složky:<path specified in dataset>/<folder named as source compressed file>/, pomocí/preserveCompressionFileNameAsFolderpreserveZipFileNameAsFolderzdroje aktivity kopírování můžete řídit, zda chcete zachovat název komprimovaných souborů jako strukturu složek.
Ne.
úroveň
(v části compression)
Poměr komprese.
Povolené hodnoty jsou optimální nebo nejrychlejší.
- Nejrychlejší: Operace komprese by se měla co nejrychleji dokončit, i když výsledný soubor není optimálně komprimovaný.
- Optimální: Operace komprese by měla být optimálně komprimována, i když dokončení operace trvá delší dobu. Další informace naleznete v tématu Úroveň komprese.
No

Níže je příklad datové sady JSON ve službě Azure Blob Storage:

{
    "name": "JSONDataset",
    "properties": {
        "type": "Json",
        "linkedServiceName": {
            "referenceName": "<Azure Blob Storage linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "location": {
                "type": "AzureBlobStorageLocation",
                "container": "containername",
                "folderPath": "folder/subfolder",
            },
            "compression": {
                "type": "gzip"
            }
        }
    }
}

Vlastnosti aktivity kopírování

Úplný seznam oddílů a vlastností dostupných pro definování aktivit najdete v článku Pipelines . Tato část obsahuje seznam vlastností podporovaných zdrojem JSON a jímkou.

Přečtěte si, jak extrahovat data ze souborů JSON a mapovat data do úložiště dat jímky nebo formátu nebo naopak z mapování schématu.

JSON jako zdroj

Následující vlastnosti jsou podporovány v části aktivity kopírování *source* .

Vlastnost Popis Povinní účastníci
type Vlastnost typu zdroje aktivity kopírování musí být nastavena na JSONSource. Ano
formát Nastavení Skupina vlastností. Přečtěte si níže v tabulce nastavení pro čtení JSON. No
store Nastavení Skupina vlastností, jak číst data z úložiště dat. Každý konektor založený na souborech má vlastní podporovaná nastavení čtení v části storeSettings. Podrobnosti najdete v článku o konektoru –> aktivita Copy části vlastností. No

Podporovaná nastavení čtení JSON v části formatSettings:

Vlastnost Popis Povinní účastníci
type Typ formátu Nastavení musí být nastavený na JsonRead Nastavení. Ano
compressionProperties Skupina vlastností, jak dekomprimovat data pro daný kodek komprese. No
preserveZipFileNameAsFolder
(pod compressionProperties->type as ZipDeflateReadSettings)
Platí, když je vstupní datová sada nakonfigurovaná pomocí komprese ZipDeflate . Určuje, zda chcete zachovat název zdrojového souboru ZIP jako strukturu složek během kopírování.
- Pokud je nastavena hodnota true (výchozí), služba zapíše rozbalené soubory do <path specified in dataset>/<folder named as source zip file>/.
- Pokud je nastavena na hodnotu false, služba zapíše rozbalené soubory přímo do <path specified in dataset>. Ujistěte se, že v různých zdrojových souborech ZIP nemáte duplicitní názvy souborů, abyste se vyhnuli závodnímu nebo neočekávanému chování.
No
preserveCompressionFileNameAsFolder
(pod compressionProperties->type jako TarGZipReadSettings nebo TarReadSettings)
Platí, když je vstupní datová sada nakonfigurovaná pomocí komprese Tar Tar./ Určuje, zda se má během kopírování zachovat zdrojový komprimovaný název souboru jako struktura složek.
- Při nastavení na hodnotu true (výchozí) služba zapíše dekompresované soubory do <path specified in dataset>/<folder named as source compressed file>/.
- Pokud je nastavena na hodnotu false, služba zapíše dekomprimované soubory přímo do <path specified in dataset>. Ujistěte se, že v různých zdrojových souborech nemáte duplicitní názvy souborů, abyste se vyhnuli závodnímu nebo neočekávanému chování.
No

JSON jako jímka

Následující vlastnosti jsou podporovány v části aktivity kopírování *jímka*.

Vlastnost Popis Povinní účastníci
type Vlastnost typu zdroje aktivity kopírování musí být nastavena na JSONSink. Ano
formát Nastavení Skupina vlastností. Níže najdete tabulku nastavení zápisu JSON. No
store Nastavení Skupina vlastností pro zápis dat do úložiště dat. Každý konektor založený na souborech má vlastní podporovaná nastavení zápisu v části storeSettings. Podrobnosti najdete v článku o konektoru –> aktivita Copy části vlastností. No

Podporovaná nastavení zápisu JSON v části formatSettings:

Vlastnost Popis Povinní účastníci
type Typ formátu Nastavení musí být nastavený na JsonWrite Nastavení. Ano
filePattern Určete vzor dat uložených v jednotlivých souborech JSON. Povolené hodnoty jsou: setOfObjects (Řádky JSON) a arrayOfObjects. Výchozí hodnota je setOfObjects. Podrobné informace o těchto vzorech najdete v tématu Vzory souborů JSON. No

Vzory souborů JSON

Při kopírování dat ze souborů JSON může aktivita kopírování automaticky zjišťovat a parsovat následující vzory souborů JSON. Při zápisu dat do souborů JSON můžete nakonfigurovat vzor souboru v jímce aktivity kopírování.

  • Typ I: setOfObjects

    Každý soubor obsahuje jeden objekt, řádky JSON nebo zřetězené objekty.

    • Příklad JSON s jedním objektem

      {
          "time": "2015-04-29T07:12:20.9100000Z",
          "callingimsi": "466920403025604",
          "callingnum1": "678948008",
          "callingnum2": "567834760",
          "switch1": "China",
          "switch2": "Germany"
      }
      
    • Řádky JSON (výchozí hodnota pro jímku)

      {"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"}
      
    • Příklad JSON se zřetězením

      {
          "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ždý soubor obsahuje pole objektů.

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

Mapování vlastností toku dat

Při mapování toků dat můžete číst a zapisovat do formátu JSON v následujících úložištích dat: Azure Blob Storage, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2 a SFTP a můžete číst formát JSON v AmazonU S3.

Vlastnosti zdroje

V následující tabulce jsou uvedeny vlastnosti podporované zdrojem JSON. Tyto vlastnosti můžete upravit na kartě Možnosti zdroje.

Název Popis Povinní účastníci Povolené hodnoty Vlastnost skriptu toku dat
Cesty se zástupnými kartami Zpracují se všechny soubory odpovídající cestě se zástupným znakem. Přepíše složku a cestu k souboru nastavenou v datové sadě. ne Řetězec[] Zástupné cardPaths
Kořenová cesta oddílu Pro data souborů rozdělená do oddílů můžete zadat kořenovou cestu oddílu, abyste mohli číst dělené složky jako sloupce. ne String partitionRootPath
Seznam souborů Určuje, jestli váš zdroj ukazuje na textový soubor se seznamem souborů, které se mají zpracovat. ne true nebo false Filelist
Sloupec pro uložení názvu souboru Vytvoření nového sloupce s názvem zdrojového souboru a cestou ne String rowUrlColumn
Po dokončení Soubory po zpracování odstraňte nebo přesuňte. Cesta k souboru začíná z kořenového adresáře kontejneru. ne Odstranit: true nebo false
Přesunout: ['<from>', '<to>']
purgeFiles
moveFiles
Filtrovat podle poslední změny Zvolte filtrování souborů na základě toho, kdy byly naposledy změněny. ne Časové razítko Modifiedafter
Modifiedbefore
Jeden dokument Mapování toků dat čte jeden dokument JSON z každého souboru ne true nebo false singleDocument
Názvy nezařazených sloupců Pokud vyberete názvy sloupců bez citací, mapování toků dat načte sloupce JSON, které nejsou obklopené uvozovkami. ne true nebo false unquotedColumnNames
Obsahuje komentáře Vyberte Možnost Má komentáře , pokud data JSON mají komentáře ve stylu C nebo C++. ne true nebo false asComments
Jednoduché uvozové Přečte sloupce JSON, které nejsou obklopené uvozovkami. ne true nebo false singleQuoted
Zpětné lomítko s řídicím znakem Výběr řídicího znaku Zpětné lomítko, pokud jsou zpětná lomítka použita k řídicím znakům v datech JSON ne true nebo false backslashEscape
Povolit žádné nalezené soubory Pokud je pravda, chyba se nevyvolá, pokud se nenašly žádné soubory. ne true nebo false ignoreNoFilesFound

Vložená datová sada

Mapování toků dat podporuje vložené datové sady jako možnost pro definování zdroje a jímky. Vložená datová sada JSON je definována přímo uvnitř transformace zdroje a jímky a není sdílena mimo definovaný tok dat. Je užitečná pro parametrizaci vlastností datové sady přímo uvnitř toku dat a může mít prospěch z lepšího výkonu oproti sdíleným datovým sadám ADF.

Při čtení velkého počtu zdrojových složek a souborů můžete zlepšit výkon zjišťování souborů toku dat nastavením možnosti "Projektované schéma uživatele" uvnitř projekce | Dialogové okno Možnosti schématu Tato možnost vypne výchozí automatické zjišťování schématu ADF a výrazně zlepší výkon zjišťování souborů. Před nastavením této možnosti nezapomeňte naimportovat projekci JSON, aby služba ADF má existující schéma pro projekci. Tato možnost nefunguje s posunem schématu.

Možnosti formátu zdroje

Použití datové sady JSON jako zdroje v toku dat umožňuje nastavit pět dalších nastavení. Tato nastavení najdete na kartě Možnosti zdroje na kartě Nastavení JSON. Pro nastavení Formulář dokumentu můžete vybrat jeden z jednoho dokumentu, dokument na řádek a pole typů dokumentů.

JSON Settings

Výchozí

Ve výchozím nastavení se data JSON čtou v následujícím formátu.

{ "json": "record 1" }
{ "json": "record 2" }
{ "json": "record 3" }

Jeden dokument

Pokud je vybraný jeden dokument , mapování toků dat načte jeden dokument JSON z každého souboru.

File1.json
{
    "json": "record 1"
}
File2.json
{
    "json": "record 2"
}
File3.json
{
    "json": "record 3"
}

Pokud je vybrán dokument na řádek , mapování toků dat načte jeden dokument JSON z každého řádku v souboru.

File1.json
{"json": "record 1"}

File2.json
 {"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"}

File3.json
 {"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"}

Pokud je vybráno pole dokumentů , mapování toků dat načte jedno pole dokumentu ze souboru.

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

Poznámka:

Pokud toky dat při zobrazení náhledu dat JSON zobrazí chybu "corrupt_record", je pravděpodobné, že vaše data obsahují v souboru JSON jeden dokument. Nastavení jednoho dokumentu by mělo tuto chybu vymazat.

Názvy nezařazených sloupců

Pokud vyberete názvy sloupců bez citací, mapování toků dat načte sloupce JSON, které nejsou obklopené uvozovkami.

{ json: "record 1" }
{ json: "record 2" }
{ json: "record 3" }

Obsahuje komentáře

Vyberte Možnost Má komentáře , pokud data JSON mají komentáře ke stylu C nebo C++.

{ "json": /** comment **/ "record 1" }
{ "json": "record 2" }
{ /** comment **/ "json": "record 3" }

Jednoduché uvozové

Pokud pole JSON a hodnoty místo dvojitých uvozovek používají jednoduché uvozovky, vyberte jednoduché uvozovky .

{ 'json': 'record 1' }
{ 'json': 'record 2' }
{ 'json': 'record 3' }

Zpětné lomítko s řídicím znakem

Pokud se zpětná lomítka použijí k řídicím znakům v datech JSON, vyberte řídicí znaky.

{ "json": "record 1" }
{ "json": "\} \" \' \\ \n \\n record 2" }
{ "json": "record 3" }

Vlastnosti jímky

Následující tabulka uvádí vlastnosti podporované jímkou JSON. Tyto vlastnosti můžete upravit na kartě Nastavení.

Název Popis Povinní účastníci Povolené hodnoty Vlastnost skriptu toku dat
Vymazání složky Pokud je cílová složka před zápisem vymazána. ne true nebo false truncate
Možnost názvu souboru Formát pojmenování zapsaných dat. Ve výchozím nastavení je ve formátu jeden soubor na oddíl. part-#####-tid-<guid> ne Vzor: Řetězec
Na oddíl: String[]
Jako data ve sloupci: Řetězec
Výstup do jednoho souboru: ['<fileName>']
filePattern
partitionFileNames
rowUrlColumn
partitionFileNames

Vytváření struktur JSON v odvozeném sloupci

Pomocí tvůrce odvozených výrazů sloupců můžete do toku dat přidat složitý sloupec. V odvozené transformaci sloupce přidejte nový sloupec a otevřete tvůrce výrazů kliknutím na modré pole. Pokud chcete vytvořit složitý sloupec, můžete strukturu JSON zadat ručně nebo pomocí uživatelského rozhraní interaktivně přidat podsloupce.

Použití uživatelského rozhraní tvůrce výrazů

V bočním podokně výstupního schématu najeďte myší na sloupec a klikněte na ikonu plus. Vyberte Přidat dílčí sloupec , aby byl sloupec komplexním typem.

Add subcolumn

Další sloupce a podsloupce můžete přidat stejným způsobem. Pro každé nesložité pole lze výraz přidat do editoru výrazů napravo.

Add complex column

Ruční zadání struktury JSON

Pokud chcete ručně přidat strukturu JSON, přidejte nový sloupec a zadejte výraz v editoru. Výraz se řídí následujícím obecným formátem:

@(
    field1=0,
    field2=@(
        field1=0
    )
)

Pokud byl tento výraz zadán pro sloupec s názvem complexColumn, zapíše se do jímky jako následující JSON:

{
    "complexColumn": {
        "field1": 0,
        "field2": {
            "field1": 0
        }
    }
}

Ukázkový ruční skript pro úplnou hierarchickou definici

@(
    title=Title,
    firstName=FirstName,
    middleName=MiddleName,
    lastName=LastName,
    suffix=Suffix,
    contactDetails=@(
        email=EmailAddress,
        phone=Phone
    ),
    address=@(
        line1=AddressLine1,
        line2=AddressLine2,
        city=City,
        state=StateProvince,
        country=CountryRegion,
        postCode=PostalCode
    ),
    ids=[
        toString(CustomerID), toString(AddressID), rowguid
    ]
)

Tady jsou některé běžné konektory a formáty související s formátem JSON:

  • Azure Blob Storage (connector-azure-blob-storage.md)
  • Formát textu s oddělovači (format-delimited-text.md)
  • Konektor OData (connector-odata.md)
  • Formát Parquet(format-parquet.md)