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:
- Amazon S3
- Amazon S3 Compatible Storage,
- Azure Blob
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage Gen2
- Azure Files
- Systém souborů
- FTP
- Cloudové úložiště Googlu
- HDFS
- HTTP
- Oracle Cloud Storage
- SFTP
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í/preserveCompressionFileNameAsFolder preserveZipFileNameAsFolder zdroje 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 |
formatSettings | Skupina vlastností. Přečtěte si níže v tabulce nastavení pro čtení JSON. | No |
storeSettings | 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 formatSettings musí být nastaven na JsonReadSettings. | 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 |
formatSettings | Skupina vlastností. Níže najdete tabulku nastavení zápisu JSON. | No |
storeSettings | 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 formatSettings musí být nastaven na JsonWriteSettings. | 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 Pohnout: ['<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ů.
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.
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.
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
]
)
Související konektory a formáty
Tady jsou některé běžné konektory a formáty související s formátem JSON: