Formát JSON v Azure Data Factory a Azure synapse Analytics

PLATÍ PRO: Azure Data Factory Azure Synapse Analytics

Použijte tento článek, pokud chcete analyzovat soubory JSON nebo zapsat data do formátu JSON.

Formát JSON se podporuje pro následující konektory:

Vlastnosti datové sady

Úplný seznam oddílů a vlastností, které jsou k dispozici pro definování datových sad, naleznete v článku datové sady . V této části najdete seznam vlastností podporovaných datovou sadou JSON.

Vlastnost Popis Povinné
typ Vlastnost Type datové sady musí být nastavená na JSON. Yes
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 rámci location . Podrobnosti najdete v článku o konektoru – > vlastnosti datové sady. Yes
encodingName Typ kódování používaný pro čtení a zápis testovacích souborů.
Povolené hodnoty jsou následující: UTF-8, UTF-8 bez kusovníku, 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 "," 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-1252", "WINDOWS-1253", "WINDOWS-1254", "WINDOWS-1255", "WINDOWS-1256", "WINDOWS-1257", "WINDOWS-1258".
Ne
komprese Skupina vlastností pro konfiguraci komprese souborů. Tuto část nakonfigurujte, pokud chcete během provádění aktivit provést kompresi nebo dekompresi. Ne
typ
(pod compression)
Kompresní kodek používaný pro čtení a zápis souborů JSON.
Povolené hodnoty jsou bzip2, gzip, Deflate, ZipDeflate, TarGzip, tar, přichycení a LZ4. Výchozí hodnota není komprimovaná.
Poznámka: aktivita kopírování nepodporuje "přichycení" & "LZ4" a tok dat mapování nepodporuje "ZipDeflate" "," TarGzip "a" tar ".
Poznámka: při použití aktivity kopírování k dekompresi souborů ZipDeflate / TarGzip / a zápisu do úložiště dat jímky založeného na souborech se ve výchozím nastavení extrahují soubory do složky: <path specified in dataset>/<folder named as source compressed file>/ pomocí preserveZipFileNameAsFolder / preserveCompressionFileNameAsFolder zdroje aktivity kopírování můžete určit, jestli se má název komprimovaných souborů zachovat jako struktura složek.
No.
úroveň
(pod compression)
Kompresní poměr
Povolené hodnoty jsou optimální nebo nejrychlejší.
- Nejrychlejší: Kompresní operace by se měla dokončit co nejrychleji, a to i v případě, že výsledný soubor není optimálně komprimován.
- Optimální: komprese by měla být optimálně komprimována i v případě, že dokončení operace trvá delší dobu. Další informace najdete v tématu úroveň komprese .
Ne

Níže je příklad datové sady JSON v 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í, které jsou k dispozici pro definování aktivit, najdete v článku o Pipelines . V této části najdete seznam vlastností podporovaných zdrojem a jímkou JSON.

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

JSON jako zdroj

V části * zdroj * aktivity kopírování jsou podporovány následující vlastnosti.

Vlastnost Popis Povinné
typ Vlastnost Type zdroje aktivity kopírování musí být nastavená na JSONSource. Yes
formatSettings Skupina vlastností Další informace najdete v tabulce nastavení čtení JSON níže. Ne
storeSettings Skupina vlastností, jak číst data z úložiště dat. Jednotlivé konektory založené na souborech mají v rámci své vlastní podporované nastavení pro čtení storeSettings . Podrobnosti najdete v článku informace o konektoru – > část kopírování vlastností aktivity. Ne

Podporovaná nastavení čtení JSON v rámci formatSettings :

Vlastnost Popis Povinné
typ Typ formatSettings musí být nastaven na hodnotu JsonReadSettings. Yes
compressionProperties Skupina vlastností, jak dekomprimovat data pro daný Kompresní kodek. Ne
preserveZipFileNameAsFolder
(v části compressionProperties -> type jako ZipDeflateReadSettings)
Platí v případě, že je vstupní datová sada nakonfigurovaná s ZipDeflate kompresí. Určuje, jestli se má při kopírování zachovat název zdrojového souboru ZIP jako struktura složek.
– Když je nastavená hodnota true (výchozí), služba zapíše soubory getzip do <path specified in dataset>/<folder named as source zip file>/ .
– Pokud je hodnota nastavena na false, služba zapisuje soubory unzip přímo do <path specified in dataset> . Ujistěte se, že nemáte duplicitní názvy souborů v různých zdrojových souborech ZIP, abyste se vyhnuli neočekávanému chování.
Ne
preserveCompressionFileNameAsFolder
(v části compressionProperties -> type jako TarGZipReadSettings nebo TarReadSettings)
Použije se, když je pro vstupní datovou sadu nakonfigurovaná komprese TarGzip / tar . Určuje, zda se má při kopírování zachovat zdrojový komprimovaný název souboru jako struktura složky.
– Pokud je nastavená hodnota true (výchozí), služba zapíše dekomprimované soubory do <path specified in dataset>/<folder named as source compressed file>/ .
– Pokud je nastavená hodnota false, služba zapisuje dekomprimované soubory přímo do <path specified in dataset> . Ujistěte se, že nemáte duplicitní názvy souborů v různých zdrojových souborech, abyste se vyhnuli závodům nebo neočekávanému chování.
Ne

JSON jako jímka

V části jímky aktivity kopírování jsou * podporovány následující * vlastnosti.

Vlastnost Popis Povinné
typ Vlastnost type zdroje aktivity kopírování musí být nastavená na JSONSink. Yes
nastavení formátu Skupina vlastností. Přečtěte si následující tabulku nastavení zápisu JSON. Ne
storeSettings Skupina vlastností pro zápis dat do úložiště dat. Každý souborový konektor má vlastní podporovaná nastavení zápisu v části storeSettings . Podrobnosti najdete v článku o konektoru – > aktivita Copy vlastnosti. Ne

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

Vlastnost Popis Povinné
typ Typ formatSettings musí být nastavený na JsonWriteSettings. Yes
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. Ne

Vzory souborů JSON

Při kopírování dat ze souborů JSON může aktivita kopírování automaticky detekovat a parsovat následující vzory souborů JSON. Při zápisu dat do souborů JSON můžete pro jímku aktivity kopírování nakonfigurovat vzor souborů.

  • Typ I: setOfObjects

    Každý soubor obsahuje jeden objekt, řádky JSON nebo zřetězované 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í 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

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

Vlastnosti zdroje

Následující tabulka uvádí vlastnosti podporované zdrojem JSON. Tyto vlastnosti můžete upravit na kartě Možnosti zdroje.

Název Popis Povinné Povolené hodnoty Vlastnost skriptu toku dat
Cesty se zástupnými znaky Zpracují se všechny soubory, které odpovídají cestě se zástupnými znaky. Přepíše složku a cestu k souboru nastavené v datové sadě. ne Řetězec[] zástupné znakyPaths
Kořenová cesta oddílu U dat souborů, která jsou rozdělená na oddíly, můžete zadat kořenovou cestu oddílu, abyste mohli načíst dělené složky jako sloupce. ne Řetězec partitionRootPath
Seznam souborů Jestli váš zdroj odkazuje na textový soubor se seznamem souborů ke zpracování ne true nebo false Filelist
Sloupec pro uložení názvu souboru Vytvořte nový sloupec s názvem zdrojového souboru a cestou. ne Řetězec sloupec rowUrlColumn
Po dokončení Po zpracování odstraňte nebo přesuňte soubory. Cesta k souboru začíná v kořenovém adresáři kontejneru. ne Odstranit: true nebo false
Přesunout: ['<from>', '<to>']
purgeFiles
moveFiles
Filtrovat podle poslední změny Vyfiltrujte soubory podle toho, kdy byly naposledy změněny. ne Timestamp Modifiedafter
Modifiedbefore
Jeden dokument Mapování toků dat čte z každého souboru jeden dokument JSON ne true nebo false singleDocument (jeden dokument)
Názvy sloupců bez uvozových uvozů Pokud vyberete názvy sloupců bez uvozovek, mapování toků dat přečte sloupce JSON, které nejsou v uvozovkách. ne true nebo false unquotedColumnNames
Obsahuje komentáře Pokud data JSON komentují styl C nebo C++, vyberte Má komentáře. ne true nebo false asComments
Jednoduché uvozovek Čte sloupce JSON, které nejsou v uvozovkách. ne true nebo false SingleQuoted
Zpětné lomítko uvozeno Pokud se k řídicím znakům v datech JSON používají zpětná lomítka, vyberte Zpětné lomítko uvozeno. ne true nebo false zpětné lomítkoEscape
Povolit, aby se nenašly žádné soubory Pokud je true, pokud nejsou nalezeny žádné soubory, není vyvolána chyba. ne true nebo false ignoreNoFilesFound

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 v souladu s nastavením JSON na kartě Možnosti zdroje. V nastavení Formulář dokumentu můžete vybrat jeden z typů Jeden dokument, Dokument na řádek a Pole dokumentů.

Json – Nastavení

Výchozí

Ve výchozím nastavení se data JSON načítá 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 přečte z každého souboru jeden dokument JSON.

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

Pokud je vybrána možnost Dokument na řádek, mapování toků dat přeč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 přečte ze souboru jedno pole dokumentu.

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 náhledu dat corrupt_record chybu s oznámením "corrupt_record", je pravděpodobné, že vaše data obsahují jeden dokument v souboru JSON. Nastavení "jednoho dokumentu" by mělo tuto chybu vymazat.

Názvy sloupců bez uvozových uvozů

Pokud vyberete názvy sloupců bez uvozovek, mapování toků dat přečte sloupce JSON, které nejsou v uvozovkách.

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

Obsahuje komentáře

Pokud data JSON komentují styl C nebo C++, vyberte Má komentáře.

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

Jednoduché uvozovek

Vyberte Jednoduché uvozovky, pokud pole a hodnoty JSON používají jednoduché uvozovky místo dvojitých uvozovek.

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

Zpětné lomítko uvozeno

Pokud se k řídicím znakům v datech JSON používají zpětná lomítka, vyberte Zpětné lomítko uvozeno.

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

Vlastnosti jímky

Následující tabulka uvádí vlastnosti podporované jímka json. Tyto vlastnosti můžete upravit na Nastavení panelu.

Název Popis Povinné Povolené hodnoty Vlastnost skriptu toku dat
Vymazání složky Pokud se cílová složka před zápisem vyčistí ne true nebo false Zkrátit
Možnost Název souboru Formát pojmenování zapsaného dat. Ve výchozím nastavení jeden soubor na oddíl ve formátu 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
sloupec rowUrlColumn
partitionFileNames

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

Komplexní sloupec můžete do toku dat přidat prostřednictvím tvůrce odvozených sloupcových výrazů. V transformaci odvozeného sloupce přidejte nový sloupec a kliknutím na modré pole otevřete tvůrce výrazů. Pokud chcete, aby byl sloupec složitý, můžete ručně zadat strukturu JSON 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 Add subcolumn (Přidat podsloupec), aby byl sloupec komplexním typem.

Přidání podsloupce

Stejným způsobem můžete přidat další sloupce a podsloupce. Pro každé nesložité pole je možné výraz přidat v editoru výrazů napravo.

Přidání složitého sloupce

Ruční zadání struktury JSON

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

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

Pokud by tento výraz byl zadán pro sloupec s názvem complexColumn, zapisal by 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 je několik běžných konektorů a formátů souvisejících s formátem JSON:

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

Další kroky