JSON-format i Azure Data Factory och Azure Synapse Analytics

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Följ den här artikeln om du vill parsa JSON-filerna eller skriva data till JSON-format.

JSON-format stöds för följande anslutningsappar:

Egenskaper för datamängd

En fullständig lista över avsnitt och egenskaper som är tillgängliga för att definiera datauppsättningar finns i artikeln Datauppsättningar. Det här avsnittet innehåller en lista över egenskaper som stöds av JSON-datauppsättningen.

Egenskap Beskrivning Krävs
typ Typegenskapen för datauppsättningen måste anges till Json. Yes
location Platsinställningar för filer. Varje filbaserad anslutningsapp har en egen platstyp och egenskaper som stöds under location . Mer information finns i artikeln om anslutningsappar – > avsnittet egenskaper för datamängd. Yes
encodingName Kodningstypen som används för att läsa/skriva testfiler.
Tillåtna värden är följande: "UTF-8","UTF-8 utan BOM", "UTF-16", "UTF-16BE", "UTF-32", "UTF-32BE", "US-ASCII", "UTF-7", "BIG5", "EUC-JP", "EUC-KR", "GB2312", "GB18030", "JO CPU", "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".
No
komprimering Grupp med egenskaper för att konfigurera filkomprimering. Konfigurera det här avsnittet när du vill komprimera/dekomprimera under aktivitetskörningen. No
typ
(compression under)
Komprimerings-codec som används för att läsa/skriva JSON-filer.
Tillåtna värden är bzip2, gzip, deflate, ZipDeflate, TarGzip, Tar, snappy eller lz4. Standardvärdet är inte komprimerat.
Observera att aktiviteten Kopiera inte stöder "snappy" & "lz4" och att mappning av dataflöden inte stöder "ZipDeflate", "TarGzip" och "Tar".
Observera när du använder kopieringsaktivitet för att dekomprimera ZipDeflate / TarGzip / Tar-filer och skriva till filbaserade mottagare, extraheras som standard filer till mappen: , använd på kopieringsaktivitetskälla för att kontrollera om namnet på de komprimerade filerna ska bevaras som <path specified in dataset>/<folder named as source compressed file>/ preserveZipFileNameAsFolder / preserveCompressionFileNameAsFolder mappstruktur.
Nej.
nivå
(compression under)
Komprimeringsförhållandet.
Tillåtna värden är optimala eller snabbaste.
- Snabbaste: Komprimeringsåtgärden bör slutföras så snabbt som möjligt, även om den resulterande filen inte komprimeras optimalt.
- Optimal: Komprimeringsåtgärden ska komprimeras optimalt, även om åtgärden tar längre tid att slutföra. Mer information finns i avsnittet Komprimeringsnivå.
No

Nedan visas ett exempel på JSON-datauppsättning på 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"
            }
        }
    }
}

Kopiera egenskaper för aktivitet

En fullständig lista över avsnitt och egenskaper som är tillgängliga för att definiera aktiviteter finns i artikeln Pipelines. Det här avsnittet innehåller en lista över egenskaper som stöds av JSON-källan och -mottagaren.

Lär dig mer om hur du extraherar data från JSON-filer och mappar till mottagare för datalager/-format eller vice versa från schemamappning.

JSON som källa

Följande egenskaper stöds i avsnittet för * * kopieringsaktivitetskälla.

Egenskap Beskrivning Krävs
typ Typegenskapen för kopieringsaktivitetskällan måste anges till JSONSource. Yes
formatSettings En grupp med egenskaper. Se tabellen med JSON-läsinställningar nedan. No
storeSettings En grupp egenskaper för hur du läser data från ett datalager. Varje filbaserad anslutningsapp har egna läsinställningar som stöds under storeSettings . Mer information finns i artikeln om anslutningsappen > aktiviteten Kopiera avsnittet om egenskaper. No

JSON-läsinställningar som stöds under formatSettings :

Egenskap Beskrivning Krävs
typ Typen av formatSettings måste vara inställd på JsonReadSettings. Yes
compressionProperties En grupp med egenskaper för hur du dekomprimerar data för en viss komprimerings-codec. No
preserveZipFileNameAsFolder
(under compressionProperties -> type som ZipDeflateReadSettings)
Gäller när indatauppsättningen konfigureras med ZipDeflate-komprimering. Anger om du vill bevara zip-källfilens namn som mappstruktur under kopieringen.
- När det här är inställt på true (standard) skriver tjänsten uppackade filer till <path specified in dataset>/<folder named as source zip file>/ .
- När det här är inställt på false skriver tjänsten uppackade filer direkt till <path specified in dataset> . Se till att du inte har duplicerade filnamn i olika zip-källfiler för att undvika racing eller oväntat beteende.
No
preserveCompressionFileNameAsFolder
(under compressionProperties -> type som TarGZipReadSettings eller TarReadSettings)
Gäller när indatauppsättningen konfigureras med TarGzip / Tar-komprimering. Anger om du vill bevara det komprimerade källfilnamnet som mappstruktur under kopieringen.
- När det är inställt på true (standard) skriver tjänsten dekomprimerade filer till <path specified in dataset>/<folder named as source compressed file>/ .
- När det här är inställt på false skriver tjänsten dekomprimerade filer direkt till <path specified in dataset> . Se till att du inte har duplicerade filnamn i olika källfiler för att undvika racing eller oväntat beteende.
No

JSON som mottagare

Följande egenskaper stöds i avsnittet om kopieringsaktivitetens * mottagare. *

Egenskap Beskrivning Krävs
typ Typegenskapen för kopieringsaktivitetskällan måste anges till JSONSink. Yes
formatSettings En grupp med egenskaper. Se tabellen med JSON-skrivinställningar nedan. No
storeSettings En grupp med egenskaper för hur du skriver data till ett datalager. Varje filbaserad anslutningsapp har egna skrivinställningar som stöds under storeSettings . Mer information finns i artikeln om anslutningsappen > aktiviteten Kopiera avsnittet om egenskaper. No

JSON-skrivinställningar som stöds under formatSettings :

Egenskap Beskrivning Krävs
typ Typen av formatSettings måste vara inställd på JsonWriteSettings. Yes
filePattern Ange mönstret för de data som lagras i varje JSON-fil. Tillåtna värden är: setOfObjects (JSON Lines) och arrayOfObjects. Standardvärdet är setOfObjects. Detaljerad information om dessa mönster finns i avsnittet om JSON-filmönster. No

JSON-filmönster

När du kopierar data från JSON-filer kan kopieringsaktiviteten automatiskt identifiera och parsa följande mönster för JSON-filer. När du skriver data till JSON-filer kan du konfigurera filmönstret på kopieringsaktivitetens mottagare.

  • Typ I: setOfObjects

    Varje fil innehåller enskilda objekt, JSON-rader eller sammanfogade objekt.

    • Exempel på JSON med enskilda objekt

      {
          "time": "2015-04-29T07:12:20.9100000Z",
          "callingimsi": "466920403025604",
          "callingnum1": "678948008",
          "callingnum2": "567834760",
          "switch1": "China",
          "switch2": "Germany"
      }
      
    • JSON-rader (standard för mottagare)

      {"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"}
      
    • Exempel med sammanfogad 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"
      }
      
  • Typ II: arrayOfObjects

    Varje fil innehåller en matris med 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"
        }
    ]
    

Mappa dataflödesegenskaper

I mappning av dataflödenkan du läsa och skriva till JSON-format i följande datalager: Azure Blob Storage, Azure Data Lake Storage Gen1 och Azure Data Lake Storage Gen2,och du kan läsa JSON-format i Amazon S3.

Källegenskaper

I tabellen nedan visas de egenskaper som stöds av en json-källa. Du kan redigera dessa egenskaper på fliken Källalternativ.

Name Beskrivning Krävs Tillåtna värden Skriptegenskap för dataflöde
Jokerteckensökvägar Alla filer som matchar sökvägen med jokertecken bearbetas. Åsidosätter den mapp och den filsökväg som angetts i datauppsättningen. nej Sträng[] wildcardPaths
Partitionsrotsökväg För fildata som är partitionerade kan du ange en partitionsrotsökväg för att läsa partitionerade mappar som kolumner nej Sträng partitionRootPath
Lista över filer Om källan pekar på en textfil som visar filer som ska bearbetas nej true eller false Filförteckning
Kolumn för att lagra filnamnet Skapa en ny kolumn med källfilens namn och sökväg nej Sträng rowUrlColumn
Efter slutförande Ta bort eller flytta filerna efter bearbetningen. Filsökvägen startar från containerroten nej Ta bort: true eller false
Flytta: ['<from>', '<to>']
purgeFiles
moveFiles
Filtrera efter senast ändrad Välj att filtrera filer baserat på när de senast ändrades nej Timestamp modifiedAfter
modifiedBefore
Enskilt dokument Mappa dataflöden läsa ett JSON-dokument från varje fil nej true eller false singleDocument
Kolumnnamn utan citat Om kolumnnamn utan citattecken har valts läser mappningen av dataflöden JSON-kolumner som inte omges av citattecken. nej true eller false unquotedColumnNames
Har kommentarer Välj Har kommentarer om JSON-data har kommentarer i C- eller C++-format nej true eller false asComments
Enstaka citattecken Läser JSON-kolumner som inte omges av citattecken nej true eller false singleQuoted
Omsnedstreck har rymts Välj Omsnedstreck som inte är snedstreck om omstreck används för att escape-tecken i JSON-data nej true eller false omsnedstreckEscape
Tillåt att inga filer hittas Om sant, uppstår inget fel om inga filer hittas nej true eller false ignoreNoFilesFound

Alternativ för källformat

Genom att använda en JSON-datauppsättning som källa i ditt dataflöde kan du ange fem ytterligare inställningar. De här inställningarna finns under JSON-inställningar på fliken Källalternativ. För inställningen Dokumentformulär kan du välja ett dokument, dokument per rad och en matris med dokumenttyper.

JSON-Inställningar

Standardvärde

Som standard läses JSON-data i följande format.

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

Enskilt dokument

Om enstaka dokument har valts läser mappningsdataflöden ett JSON-dokument från varje fil.

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

Om Dokument per rad har valts läser mappningsdataflöden ett JSON-dokument från varje rad i en fil.

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"}

Om Matris med dokument har valts läser mappningsdataflöden en matris med dokument från en fil.

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

Anteckning

Om dataflöden rymmer ett fel som anger "corrupt_record" när du förhandsgranskar JSON-data är det troligt att dina data innehåller ett enda dokument i JSON-filen. Inställningen "enskilt dokument" bör rensa felet.

Kolumnnamn utan citat

Om kolumnnamn utan citattecken har valts läser mappningen av dataflöden JSON-kolumner som inte omges av citattecken.

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

Har kommentarer

Välj Har kommentarer om JSON-data har kommentarer i C- eller C++-format.

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

Enstaka citattecken

Välj Enskild citerad om JSON-fälten och värdena använder enkla citattecken i stället för dubbla citattecken.

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

Omsnedstreck har rymts

Välj Omsnedstreck som inte är snedstreck om omstreck används för att escape-tecken i JSON-data.

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

Egenskaper för mottagare

I tabellen nedan visas de egenskaper som stöds av en json-mottagare. Du kan redigera dessa egenskaper på Inställningar fliken.

Name Beskrivning Krävs Tillåtna värden Dataflödesskriptegenskap
Rensa mappen Om målmappen rensas före skrivning nej true eller false truncate
Filnamnsalternativ Namngivningsformatet för skrivna data. Som standard en fil per partition i format part-#####-tid-<guid> nej Mönster: Sträng
Per partition: Sträng[]
Som data i kolumnen: Sträng
Utdata till en enda fil: ['<fileName>']
filePattern
partitionFileNames
rowUrlColumn
partitionFileNames

Skapa JSON-strukturer i en härledd kolumn

Du kan lägga till en komplex kolumn i dataflödet via verktyget för härledda kolumnuttryck. I omvandlingen av den härledda kolumnen lägger du till en ny kolumn och öppnar uttrycksverktyget genom att klicka på den blå rutan. Om du vill göra en kolumn komplex kan du ange JSON-strukturen manuellt eller använda UX för att lägga till underkolumner interaktivt.

Använda uttrycksverktygets UX

Hovra över en kolumn i fönstret för utdataschemat och klicka på plusikonen. Välj Lägg till underkolumn för att göra kolumnen till en komplex typ.

Lägg till underkolumn

Du kan lägga till ytterligare kolumner och underkolumner på samma sätt. För varje icke-komplext fält kan ett uttryck läggas till i uttrycksredigeraren till höger.

Lägga till komplex kolumn

Ange JSON-strukturen manuellt

Om du vill lägga till en JSON-struktur manuellt lägger du till en ny kolumn och anger uttrycket i redigeraren. Uttrycket följer följande allmänna format:

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

Om det här uttrycket har angetts för en kolumn med namnet "complexColumn" skrivs det till mottagaren som följande JSON:

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

Exempel på manuellt skript för fullständig hierarkisk definition

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

Här är några vanliga anslutningsappar och format som är relaterade till JSON-formatet:

  • Azure Blob Storage (connector-azure-blob-storage.md)
  • Format för avgränsad text (formatavgränsad text.md)
  • OData-anslutning (odata.md)
  • Parquet-format (parquet.md)

Nästa steg