Megosztás a következőn keresztül:


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:

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 .

JSON-beállítások

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.

Almappák hozzáadása

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.

Összetett oszlop hozzáadása

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
    ]
)

Íme néhány gyakori összekötő és formátum a JSON-formátumhoz: