JSON-formátum az Azure Data Factoryben és az Azure Synapse Analyticsben
A következőkre vonatkozik: Azure Data Factory Azure Synapse Analytics
Tipp.
Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!
Kövesse ezt a cikket, ha elemezni szeretné a JSON-fájlokat, vagy JSON formátumban szeretné írni az adatokat.
A JSON formátum a következő összekötők esetében támogatott:
- Amazon S3
- Amazon S3 kompatibilis tároló,
- Azure Blob
- 1. generációs Azure Data Lake Storage
- Azure Data Lake Storage Gen2
- Azure Files
- Fájlrendszer
- FTP
- Google Cloud Storage
- HDFS
- HTTP
- Oracle Cloud Storage
- SFTP
Adathalmaz tulajdonságai
Az adathalmazok meghatározásához elérhető szakaszok és tulajdonságok teljes listáját az Adathalmazok című cikkben találja. Ez a szakasz a JSON-adatkészlet által támogatott tulajdonságok listáját tartalmazza.
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | Az adathalmaz típustulajdonságának Json értékre kell állítania. | Igen |
hely | A fájl(ok) helybeállításai. Minden fájlalapú összekötő saját helytípussal és támogatott tulajdonságokkal rendelkezik a(z) < a0/> alatt location . Lásd az összekötőkről szóló cikk –> Adathalmaz tulajdonságai szakasz részleteit. |
Igen |
encodingName | A tesztfájlok olvasásához/írásához használt kódolási típus. Az engedélyezett értékek a következők: "UTF-8","UTF-8 BOM nélkül", "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-125 2", "WINDOWS-1253", "WINDOWS-1254", "WINDOWS-1255", "WINDOWS-1256", "WINDOWS-1257", "WINDOWS-1258". |
Nem |
tömörítés | A fájltömörítés konfigurálásához használt tulajdonságok csoportja. Konfigurálja ezt a szakaszt, ha a tevékenység végrehajtása során tömörítést/tömörítést szeretne végezni. | Nem |
típus (alatt compression ) |
A JSON-fájlok olvasásához/írásához használt tömörítési kodek. Az engedélyezett értékek a következők: bzip2, gzip, deflate, ZipDeflate, TarGzip, Tar, snappy vagy lz4. Az alapértelmezett beállítás nincs tömörítve. Vegye figyelembe, hogy Copy tevékenység jelenleg nem támogatja a "snappy" & "lz4" elemet, és a leképezési adatfolyam nem támogatja a "ZipDeflate", a "TarGzip" és a "Tar" elemet. Figyelje meg, hogy a ZipDeflate/TarGzip/Tar fájl(ok) kibontásához és a fájlalapú fogadóadattárba való íráshoz a másolási tevékenység során alapértelmezés szerint a fájlok a mappába lesznek kinyerve: <path specified in dataset>/<folder named as source compressed file>/ a másolási tevékenység forrásának használatával preserveZipFileNameAsFolder /preserveCompressionFileNameAsFolder szabályozhatja, hogy a tömörített fájl(ok) neve megmarad-e mappastruktúraként. |
Szám |
szint (alatt compression ) |
A tömörítési arány. Az engedélyezett értékek optimálisak vagy leggyorsabbak. - Leggyorsabb: A tömörítési műveletnek a lehető leggyorsabban végre kell hajtania, még akkor is, ha az eredményül kapott fájl nincs optimálisan tömörítve. - Optimális: A tömörítési műveletet optimálisan kell tömöríteni, még akkor is, ha a művelet végrehajtása hosszabb időt vesz igénybe. További információ: Tömörítési szint témakör. |
Nem |
Az alábbiakban egy példa látható az Azure Blob Storage JSON-adatkészletére:
{
"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"
}
}
}
}
Másolási tevékenység tulajdonságai
A tevékenységek meghatározásához elérhető szakaszok és tulajdonságok teljes listáját a Folyamatok című cikkben találja. Ez a szakasz a JSON-forrás és fogadó által támogatott tulajdonságok listáját tartalmazza.
Megtudhatja, hogyan nyerhet ki adatokat JSON-fájlokból, és hogyan képezheti le az adatokat fogadó adattárba/formátumba vagy fordítva a sémaleképezésből.
JSON mint forrás
A másolási tevékenység *forrás* szakasza az alábbi tulajdonságokat támogatja.
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | A másolási tevékenység forrásának típustulajdonságát JSONSource értékre kell állítani. | Igen |
formatSettings | Egy tulajdonságcsoport. Tekintse meg az alábbi JSON olvasási beállítások táblázatát. | Nem |
storeSettings | Az adatok adattárból való olvasására vonatkozó tulajdonságok csoportja. Minden fájlalapú összekötő saját támogatott olvasási beállításokkal rendelkezik a következő alatt storeSettings : . Az összekötőkről szóló cikk részleteinek megtekintése –> Copy tevékenység tulajdonságok szakasz. |
Nem |
Támogatott JSON-olvasási beállítások a következő területen formatSettings
:
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | A formatSettings típusának JsonReadSettings értékre kell állítania. | Igen |
compressionProperties | Egy adott tömörítési kodek adatainak felbontására vonatkozó tulajdonságok csoportja. | Nem |
preserveZipFileNameAsFolder (under compressionProperties ->type as ZipDeflateReadSettings ) |
Akkor érvényes, ha a bemeneti adatkészlet ZipDeflate tömörítéssel van konfigurálva. Azt jelzi, hogy a másolás során meg kell-e őrizni a forrás zip-fájl nevét mappastruktúraként. - Ha igaz (alapértelmezett) értékre van állítva, a szolgáltatás a kibontott fájlokat a következőre <path specified in dataset>/<folder named as source zip file>/ írja: .- Ha hamis értékre van állítva, a szolgáltatás a kibontott fájlokat közvetlenül a következőre <path specified in dataset> írja: . Győződjön meg arról, hogy nincsenek ismétlődő fájlnevek a különböző forrás zip-fájlokban, hogy elkerülje a versenyzést vagy a váratlan viselkedést. |
Nem |
preserveCompressionFileNameAsFolder (alatt compressionProperties ->type mint TarGZipReadSettings vagy TarReadSettings ) |
Akkor érvényes, ha a bemeneti adatkészlet TarGzip/Tar-tömörítéssel van konfigurálva. Azt jelzi, hogy a másolás során megőrzi-e a forrás tömörített fájlnevét mappastruktúraként. - Ha igaz (alapértelmezett) értékre van állítva, a szolgáltatás a tömörített fájlokat a következőre <path specified in dataset>/<folder named as source compressed file>/ írja: . - Ha hamis értékre van állítva, a szolgáltatás közvetlenül <path specified in dataset> ide írja a tömörített fájlokat. Győződjön meg arról, hogy nem duplikált fájlnevek szerepelnek a különböző forrásfájlokban, hogy elkerülje a versenyzést vagy a váratlan viselkedést. |
Nem |
JSON fogadóként
A másolási tevékenység *fogadó* szakasza az alábbi tulajdonságokat támogatja.
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | A másolási tevékenység forrásának típustulajdonságát JSONSink értékre kell állítani. | Igen |
formatSettings | Egy tulajdonságcsoport. Tekintse meg az alábbi JSON írási beállítások táblázatát. | Nem |
storeSettings | Az adatok adattárba való írására vonatkozó tulajdonságok csoportja. Minden fájlalapú összekötő saját támogatott írási beállításokkal rendelkezik a .storeSettings Az összekötőkről szóló cikk részleteinek megtekintése –> Copy tevékenység tulajdonságok szakasz. |
Nem |
Támogatott JSON-írási beállítások a következő területenformatSettings
:
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | A formatSettings típusának JsonWriteSettings értékre kell állítania. | Igen |
filePattern | Az egyes JSON-fájlokban tárolt adatok mintáját jelzi. Az engedélyezett értékek a következők: setOfObjects (JSON Lines) és arrayOfObjects. Az alapértelmezett érték a setOfObjects. A mintákkal kapcsolatban lásd a JSON-fájlminták című szakaszt. | Nem |
JSON-fájlminták
Az adatok JSON-fájlokból való másolásakor a másolási tevékenység automatikusan észleli és elemzi a JSON-fájlok alábbi mintáit. Amikor JSON-fájlokba ír adatokat, konfigurálhatja a fájlmintát a másolási tevékenység fogadóján.
I. típus: setOfObjects
Minden fájl egyetlen objektumot, JSON-sort vagy összefűzött objektumot tartalmaz.
példa egy objektumot tartalmazó JSON-fájlra
{ "time": "2015-04-29T07:12:20.9100000Z", "callingimsi": "466920403025604", "callingnum1": "678948008", "callingnum2": "567834760", "switch1": "China", "switch2": "Germany" }
JSON-sorok (a fogadó alapértelmezett beállítása)
{"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élda összefűzött JSON-fájlra
{ "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" }
II. típus: arrayOfObjects
Minden fájl objektumok egy tömbjét tartalmazza.
[ { "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" } ]
Adatfolyam-tulajdonságok leképezése
Az adatfolyamok leképezése során az alábbi adattárakban olvashat és írhat JSON formátumban: Azure Blob Storage, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2 és SFTP, JSON formátumot pedig az Amazon S3-ban olvashat.
Forrástulajdonságok
Az alábbi táblázat felsorolja a json-forrás által támogatott tulajdonságokat. Ezeket a tulajdonságokat a Forrás beállításai lapon szerkesztheti.
Név | Leírás | Kötelező | Megengedett értékek | Adatfolyam-szkript tulajdonság |
---|---|---|---|---|
Helyettesítő kártya elérési útjai | A program minden olyan fájlt feldolgoz, amely megfelel a helyettesítő karakter elérési útjának. Felülbírálja az adathalmazban beállított mappát és fájl elérési útját. | nem | Karakterlánc[] | helyettesítő karakterekPaths |
Partíció gyökérútvonala | A particionált fájladatok esetében megadhat egy partíció gyökérútvonalát, hogy a particionált mappákat oszlopként olvassa be | nem | Sztring | partitionRootPath |
Fájlok listája | Azt jelzi, hogy a forrás olyan szövegfájlra mutat-e, amely felsorolja a feldolgozandó fájlokat | nem | true vagy false |
fileList |
A fájlnév tárolására használt oszlop | Új oszlop létrehozása a forrásfájl nevével és elérési útjával | nem | Sztring | rowUrlColumn |
A befejezés után | A feldolgozás után törölje vagy helyezze át a fájlokat. A fájl elérési útja a tároló gyökerétől indul | nem | Törlés: true vagy false Mozog: ['<from>', '<to>'] |
purgeFiles moveFiles |
Szűrés utoljára módosítva | Fájlok szűrésének kiválasztása az utolsó módosításuk időpontjától függően | nem | Időbélyegző | modifiedAfter modifiedBefore |
Egy dokumentum | A leképezési adatfolyamok minden fájlból egy JSON-dokumentumot olvasnak be | nem | true vagy false |
singleDocument |
Nem kvótált oszlopnevek | Ha nem kvótált oszlopnevek vannak kijelölve, a leképezési adatfolyamok olyan JSON-oszlopokat olvasnak, amelyeket nem idézőjelek vesznek körül. | nem | true vagy false |
unquotedColumnNames |
Megjegyzésekkel rendelkezik | Ha a JSON-adatok C vagy C++ stílusú megjegyzéseket fűznek a JSON-adatokhoz, válassza a Has comments (Megjegyzések ) lehetőséget | nem | true vagy false |
asComments |
Egyetlen idézet | Olyan JSON-oszlopokat olvas be, amelyeket nem idézőjelek vesznek körül | nem | true vagy false |
singleQuoted |
Fordított perjel megmenekült | Ha a JSON-adatokban a fordított perjeleket használják a karakterek feloldására, válassza a Fordított perjel lehetőséget | nem | true vagy false |
backslashEscape |
Nem található fájl engedélyezése | Ha igaz, a rendszer nem ad hibát, ha nem található fájl | nem | true vagy false |
ignoreNoFilesFound |
Beágyazott adatkészlet
Az adatfolyamok leképezése támogatja a "beágyazott adathalmazokat" a forrás és a fogadó meghatározásához. A beágyazott JSON-adatkészletek közvetlenül a forrás- és fogadóátalakításokon belül vannak definiálva, és nem lesznek megosztva a definiált adatfolyamon kívül. Az adathalmaz tulajdonságainak közvetlenül az adatfolyamon belüli paraméterezéséhez hasznos, és a megosztott ADF-adathalmazokkal szemben jobb teljesítmény érhető el.
Ha nagy számú forrásmappát és fájlt olvas, javíthatja az adatfolyam-fájlok felderítésének teljesítményét a "Felhasználó által előrejelzett séma" lehetőség beállításával a Projection | Sémabeállítások párbeszédpanel. Ez a beállítás kikapcsolja az ADF alapértelmezett séma automatikus felderítését, és jelentősen javítja a fájlfelderítés teljesítményét. A beállítás megadása előtt mindenképpen importálja a JSON-vetítést, hogy az ADF rendelkezik meglévő vetületi sémával. Ez a beállítás nem működik a sémaeltolódással.
Forrásformátum beállításai
Ha JSON-adatkészletet használ forrásként az adatfolyamban, öt további beállítást is megadhat. Ezek a beállítások a JSON-beállítások harmonika alatt találhatók a Forrásbeállítások lapon. A Dokumentuműrlap beállításnál kiválaszthat egy dokumentumot, egysoros dokumentumot és dokumentumtípus-tömböt .
Alapértelmezett
A JSON-adatok alapértelmezés szerint az alábbi formátumban olvashatók.
{ "json": "record 1" }
{ "json": "record 2" }
{ "json": "record 3" }
Egy dokumentum
Ha egyetlen dokumentum van kijelölve, a leképezési adatfolyamok minden fájlból egy JSON-dokumentumot olvasnak be.
File1.json
{
"json": "record 1"
}
File2.json
{
"json": "record 2"
}
File3.json
{
"json": "record 3"
}
Ha a Dokumentum soronként lehetőség van kijelölve, a leképezési adatfolyamok egy JSON-dokumentumot olvasnak be a fájl minden sorából.
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"}
Ha a dokumentumok tömbje ki van jelölve, a leképezési adatfolyamok egy dokumentumtömböt olvasnak be egy fájlból.
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"
}
]
Feljegyzés
Ha az adatfolyamok "corrupt_record" hibaüzenetet adnak a JSON-adatok előnézetének megtekintésekor, valószínű, hogy az adatok egyetlen dokumentumot tartalmaznak a JSON-fájlban. Az "egy dokumentum" beállításnak egyértelművé kell tennie ezt a hibát.
Nem kvótált oszlopnevek
Ha nem kvótált oszlopnevek vannak kijelölve, a leképezési adatfolyamok olyan JSON-oszlopokat olvasnak, amelyeket nem idézőjelek vesznek körül.
{ json: "record 1" }
{ json: "record 2" }
{ json: "record 3" }
Megjegyzésekkel rendelkezik
Ha a JSON-adatok C vagy C++ stílusú megjegyzéseket fűznek a JSON-adatokhoz, válassza a Has comments (Megjegyzések ) lehetőséget.
{ "json": /** comment **/ "record 1" }
{ "json": "record 2" }
{ /** comment **/ "json": "record 3" }
Egyetlen idézet
Válassza az Egy idézőjel lehetőséget , ha a JSON-mezők és -értékek kettős idézőjelek helyett egyetlen idézőjelet használnak.
{ 'json': 'record 1' }
{ 'json': 'record 2' }
{ 'json': 'record 3' }
Fordított perjel megmenekült
Válassza ki a Fordított perjelet, ha a fordított perjelek a JSON-adatokban szereplő karakterek feloldására szolgálnak.
{ "json": "record 1" }
{ "json": "\} \" \' \\ \n \\n record 2" }
{ "json": "record 3" }
Fogadó tulajdonságai
Az alábbi táblázat a json-fogadó által támogatott tulajdonságokat sorolja fel. Ezeket a tulajdonságokat a Beállítások lapon szerkesztheti.
Név | Leírás | Kötelező | Megengedett értékek | Adatfolyam-szkript tulajdonság |
---|---|---|---|---|
A mappa törlése | Ha a célmappa írás előtt törlődik | nem | true vagy false |
megcsonkít |
Fájlnév beállítás | A megírt adatok elnevezési formátuma. Alapértelmezés szerint partíciónként egy fájl formátuma part-#####-tid-<guid> |
nem | Minta: Sztring Partíciónként: Sztring[] Adatok az oszlopban: Sztring Kimenet egyetlen fájlba: ['<fileName>'] |
filePattern partitionFileNames rowUrlColumn partitionFileNames |
JSON-struktúrák létrehozása származtatott oszlopban
A származtatott oszlopkifejezés-szerkesztővel összetett oszlopot vehet fel az adatfolyamba. A származtatott oszlopátalakítás során adjon hozzá egy új oszlopot, és a kék mezőre kattintva nyissa meg a kifejezésszerkesztőt. Ha összetettsé szeretne tenni egy oszlopot, manuálisan beírhatja a JSON-struktúrát, vagy az UX használatával interaktív módon adhat hozzá almappákat.
A kifejezésszerkesztő UX használata
A kimeneti séma oldalpaneljén mutasson egy oszlopra, és kattintson a plusz ikonra. Az oszlop összetett típussá alakításához válassza az Add subcolumn (Aloszlop hozzáadása) lehetőséget.
Ugyanúgy adhat hozzá további oszlopokat és aloszlopokat. Minden nem összetett mezőhöz hozzáadhat egy kifejezést a jobb oldali kifejezésszerkesztőben.
A JSON-struktúra manuális megadása
JSON-struktúra manuális hozzáadásához adjon hozzá egy új oszlopot, és írja be a kifejezést a szerkesztőbe. A kifejezés a következő általános formátumot követi:
@(
field1=0,
field2=@(
field1=0
)
)
Ha ez a kifejezés egy "complexColumn" nevű oszlophoz lett beírva, akkor a rendszer a következő JSON-ként írja be a fogadóba:
{
"complexColumn": {
"field1": 0,
"field2": {
"field1": 0
}
}
}
Manuális példaszkript teljes hierarchikus definícióhoz
@(
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
]
)
Kapcsolódó összekötők és formátumok
Íme néhány gyakori összekötő és formátum a JSON-formátumhoz: