Azure Data Factory ve Azure Synapse Analytics'de JSON biçimi

Uygulama hedefi: Azure SYNAPSE Analytics 'i Azure Data Factory

JSON dosyalarını ayrıştırmak veya verileri JSON biçiminde yazmak için bu makaleyi izleyin.

JSON biçimi aşağıdaki bağlayıcılar için de kullanılabilir:

Veri kümesi özellikleri

Veri kümelerini tanımlamaya uygun bölümlerin ve özelliklerin tam listesi için Veri kümeleri makalesine bakın. Bu bölümde, JSON veri kümesi tarafından desteklenen özelliklerin bir listesi yer almaktadır.

Özellik Açıklama Gerekli
tür Veri kümesi tür özelliğinin Json olarak ayarlanmış olması gerekir. Yes
location Dosyalarda konum ayarları. Her dosya tabanlı bağlayıcının kendi konum türü ve altında desteklenen özellikleri location vardır. Bağlayıcı makalesi -> Veri kümesi özellikleri bölümünde ayrıntılara bakın. Yes
encodingName Test dosyalarını okumak/yazmak için kullanılan kodlama türü.
İzin verilen değerler şunlardır: "UTF-8", "UTF-16", "UTF-16BE", "UTF-32", "UTF-32BE", "US-ASCII", "UTF-7", "BIG5", "EUC-JP", "EUC-KR", "GB2312", "GB18030", "JOHIT", "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", "IS O-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
sıkıştırma Dosya sıkıştırmayı yapılandırmak için özellik grubu. Etkinlik yürütme sırasında sıkıştırma/sıkıştırmayı decompression yapmak istediğiniz zaman bu bölümü yapılandırabilirsiniz. No
tür
(compression altında)
JSON dosyalarını okumak/yazmak için kullanılan sıkıştırma codec bileşeni.
İzin verilen değerler bzip2, gzip, deflate, ZipDeflate, TarGzip, Tar, snappy veya lz4 değerleridir. Varsayılan olarak sıkıştırılmış değildir.
Şu Kopyalama etkinliği "lz4" ile "snappy" & ve eşleme veri akışı "ZipDeflate", "TarGzip" ve "Tar" desteğine de izin vermez.
ZipDeflate / TarGzip Tar dosyalarının sıkıştırmasını açmak ve dosya tabanlı havuz veri deposuna yazmak için kopyalama etkinliği kullanılırken, varsayılan olarak dosyalar klasöre ayıklanır: , sıkıştırılmış dosyaların adını klasör yapısı olarak korumayı kontrol etmek için kopyalama etkinliği kaynağında / <path specified in dataset>/<folder named as source compressed file>/ preserveZipFileNameAsFolder / preserveCompressionFileNameAsFolder kullanın.
Hayır.
düzey
(compression altında)
Sıkıştırma oranı.
İzin verilen değerler En Uygun veya En Hızlı değerleridir.
- En hızlı: Elde edilen dosya en iyi şekilde sıkıştırılmış olsa bile sıkıştırma işlemi mümkün olan en kısa sürede tamamlanır.
- En iyi: Sıkıştırma işleminin tamamlanması daha uzun sürerse bile en iyi şekilde sıkıştırılır. Daha fazla bilgi için Sıkıştırma Düzeyi konu başlığına bakın.
No

Aşağıda Azure Blob Depolama'da JSON veri kümesi Depolama:

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

Kopyalama etkinliğinin özellikleri

Etkinlik tanımlamaya yönelik olarak kullanılabilen bölümlerin ve özelliklerin tam listesi için Pipelines bakın. Bu bölümde, JSON kaynağı ve havuzu tarafından desteklenen özelliklerin bir listesi yer almaktadır.

JSON dosyalarından veri ayıklamayı ve şema eşlemeden havuz veri deposuna/biçimine (veya tam tersi) eşlemeyi öğrenin.

Kaynak olarak JSON

Kopyalama etkinliği kaynağı bölümünde aşağıdaki * özellikler * de desteklemektedir.

Özellik Açıklama Gerekli
tür Kopyalama etkinliği kaynağının type özelliği JSONSource olarak ayarmalıdır. Yes
formatSettings Bir özellik grubu. Aşağıdaki JSON okuma ayarları tablosuna bakın. No
storeSettings Bir veri deposundan veri okumayla ilgili bir özellik grubu. Her dosya tabanlı bağlayıcının altında kendi desteklenen okuma ayarları storeSettings vardır. Ayrıntılar için bağlayıcı makalesi -> Kopyalama etkinliği bölümüne bakın. No

altında desteklenen JSON okuma formatSettings ayarları:

Özellik Açıklama Gerekli
tür formatSettings türü JsonReadSettings olarak ayarlanması gerekir. Yes
compressionProperties Veri sıkıştırma codec'i için verilerin sıkıştırmasını nasıl alalı bir özellik grubu. No
preserveZipFileNameAsFolder
(olarak compressionProperties -> type altında ZipDeflateReadSettings)
Giriş veri kümesi ZipDeflate sıkıştırması ile yapılandırıldığında geçerlidir. Kopyalama sırasında kaynak zip dosyası adının klasör yapısı olarak korunıp korunmay olmadığını gösterir.
- true (varsayılan) olarak ayarlanırsa, hizmet sıkıştırması açılmış dosyaları 'ye <path specified in dataset>/<folder named as source zip file>/ yazar.
- False olarak ayarlanırsa, hizmet sıkıştırması açılmış dosyaları doğrudan üzerine <path specified in dataset> yazar. Yarıştan veya beklenmeyen davranışlardan kaçınmak için farklı kaynak zip dosyalarında yinelenen dosya adlara sahip olmadığınızdan emin olun.
No
preserveCompressionFileNameAsFolder
(veya compressionProperties -> type olarak TarGZipReadSettings altında TarReadSettings)
Giriş veri kümesi TarGzip Tar sıkıştırma ile yapılandırıldığında / geçerlidir. Kopyalama sırasında kaynak sıkıştırılmış dosya adının klasör yapısı olarak korunıp korunmay olmadığını gösterir.
- true (varsayılan) olarak ayarlanırsa hizmet, sıkıştırılmamış dosyaları 'ye <path specified in dataset>/<folder named as source compressed file>/ yazar.
- False olarak ayarlanırsa hizmet, sıkıştırılmamış dosyaları doğrudan üzerine <path specified in dataset> yazar. Yarıştan veya beklenmeyen davranışlardan kaçınmak için farklı kaynak dosyalarda yinelenen dosya adlara sahip olmadığınızdan emin olun.
No

Havuz olarak JSON

Kopyalama etkinliği havuzu bölümünde aşağıdaki * özellikler * de desteklemektedir.

Özellik Açıklama Gerekli
tür Kopyalama etkinliği kaynağının type özelliği JSONSink olarak ayarmalıdır. Yes
formatSettings Bir özellik grubu. Aşağıdaki JSON yazma ayarları tablosuna bakın. No
storeSettings Bir veri deposuna veri yazma özelliği grubu. Her dosya tabanlı bağlayıcının altında kendi desteklenen yazma ayarları storeSettings vardır. Ayrıntılar için bağlayıcı makalesi -> Kopyalama etkinliği bölümüne bakın. No

altında desteklenen JSON yazma formatSettings ayarları:

Özellik Açıklama Gerekli
tür formatSettings türü JsonWriteSettings olarak ayarlanması gerekir. Yes
filePattern Her bir JSON dosyasında depolanan verilerin desenini belirtir. İzin verilen değerler: setOfObjects (JSON Satırları) ve arrayOfObjects. Varsayılan değer setOfObjects olarak belirlenmiştir. Bu desenler hakkında ayrıntılı bilgi için bkz. JSON dosyası desenleri. No

JSON dosyası desenleri

JSON dosyalarından veri kopyalama sırasında kopyalama etkinliği aşağıdaki JSON dosyalarının desenlerini otomatik olarak algılayıp ayrıştırabilirsiniz. JSON dosyalarına veri yazarken kopyalama etkinliği havuzu üzerinde dosya desenini yapılandırabilirsiniz.

  • 1. Tür: setOfObjects

    Her dosya tek bir nesne, JSON satırları veya birlenmiş nesneler içerir.

    • tek nesne JSON örneği

      {
          "time": "2015-04-29T07:12:20.9100000Z",
          "callingimsi": "466920403025604",
          "callingnum1": "678948008",
          "callingnum2": "567834760",
          "switch1": "China",
          "switch2": "Germany"
      }
      
    • JSON Satırları (havuz için varsayılan)

      {"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"}
      
    • bitiştirilmiş JSON örneği

      {
          "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"
      }
      
  • 2. Tür: arrayOfObjects

    Her dosya bir nesne dizisi içerir.

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

Eşleme veri akışı özellikleri

Eşleme veri akışlarında,şu veri depolarında JSON biçiminde okuyabilir ve yazabilirsiniz: Azure Blob Depolama, Azure Data Lake Depolama 1. Nesil ve Azure Data Lake Depolama 2.Nesil ve Amazon S3'teJSON biçimini okuyabilirsiniz.

Kaynak özellikleri

Aşağıdaki tabloda bir json kaynağı tarafından desteklenen özellikler listelenmiştir. Bu özellikleri Kaynak seçenekleri sekmesinde düzenleyebilirsiniz.

Ad Açıklama Gerekli İzin verilen değerler Veri akışı betik özelliği
Joker karakter yolları Joker karakter yolu ile eşleşen tüm dosyalar işlenir. Veri kümesinde ayarlanmış klasörü ve dosya yolunu geçersiz kılar. hayır Dize[] wildcardPaths
Bölüm kök yolu Bölümlenmiş dosya verileri için bölümlenmiş klasörleri sütun olarak okumak için bir bölüm kök yolu girebilirsiniz hayır Dize partitionRootPath
Dosya listesi Kaynağınız iş uygulanacak dosyaları listeleen bir metin dosyasına işaret edip ediyor olabilir hayır true veya false Filelist
Dosya adını depolamak için sütun Kaynak dosya adı ve yolu ile yeni bir sütun oluşturma hayır Dize rowUrlColumn
Tamamlandıktan sonra İşlemden sonra dosyaları silin veya taşıma. Dosya yolu kapsayıcı kökünden başlar hayır Silme: true veya false
Hareket: ['<from>', '<to>']
purgeFiles
moveFiles
Son değiştirilme tarihine göre filtreleme Dosyaları en son ne zaman değiştirildiklerine göre filtrelemeyi seçin hayır Timestamp modifiedAfter
modifiedBefore
Tek belge Eşleme veri akışları her dosyadan bir JSON belgesi okur hayır true veya false singleDocument
Quoted sütun adları Tırnak içine alınmış sütun adları seçilirse, eşleme veri akışları tırnak içine alınarak çevrelen JSON sütunlarını okur. hayır true veya false unquotedColumnNames
Açıklamalar var JSON verilerinde C veya C++ stili yorumu varsa, Select yorumu vardır hayır true veya false asComments
Tek tırnaklı Tırnak işaretleri içine almayan JSON sütunlarını okur hayır true veya false Singletırnaklı
Ters eğik çizgi kaçışı JSON verilerinde karakter kaçış için ters eğik çizgi kullanılırsa, ters eğik çizgiden kaçı seçin hayır true veya false Biriktirme listesi
Dosya bulunamamış izin ver True ise bir dosya bulunmazsa bir hata oluşturulmaz hayır true veya false ıgnorenofilesfound

Kaynak Biçim seçenekleri

Veri akışınızda kaynak olarak JSON veri kümesi kullanmak, beş ek ayar ayarlamanıza olanak sağlar. Bu ayarlar, kaynak seçenekleri sekmesindeki JSON ayarları Accordion altında bulunabilir. Belge formu ayarı için tek bir belgeden birini, satır başına belgeyi ve belge türlerini dizisini seçebilirsiniz.

JSON Ayarlar

Varsayılan

Varsayılan olarak, JSON verileri aşağıdaki biçimde okunurdur.

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

Tek belge

Tek belge seçilirse, eşleme veri akışları her dosyadan bir JSON belgesi okur.

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

Satır başına belge seçilirse, eşleme veri akışları bir dosyadaki her SATıRDAN bir JSON belgesi okur.

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

Belge dizisi seçiliyse, eşleme veri akışları bir dosyadaki bir belge dizisini okur.

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

Not

Veri akışları JSON verileriniz görüntülenirken "corrupt_record" belirten bir hata oluşturanıyor, veriniz JSON dosyanızda tek bir belge içeriyor olabilir. "Tek belge" ayarı bu hatayı temizlemelidir.

Tırnak işaretleri olmayan sütun adları

Tırnak Işaretleri olmayan sütun adları seçiliyse, eşleme veri akışları tırnak IÇINE alınmış JSON sütunlarını okur.

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

Açıklamalar içeriyor

JSON verilerinde C veya C++ stili yorum oluşturma varsa, Select yorumu vardır .

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

Tek tırnaklı

JSON alanları ve değerleri çift tırnak yerine tek tırnakları kullanıyorsa, tek tırnak işareti ' ni seçin.

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

Ters eğik çizgi kaçışı

JSON verilerinde karakter kaçış için ters eğik çizgi kullanılırsa, ters eğik çizgiden kaçı seçin.

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

Havuz özellikleri

Aşağıdaki tabloda bir JSON havuzu tarafından desteklenen özellikler listelenmiştir. bu özellikleri Ayarlar sekmesinden düzenleyebilirsiniz.

Ad Açıklama Gerekli İzin verilen değerler Veri akışı betiği özelliği
Klasörü temizle Hedef klasör, yazma işleminden önce silinirse hayır true veya false kesilemedi
Dosya adı seçeneği Yazılan verilerin adlandırma biçimi. Varsayılan olarak, biçimdeki bölüm başına bir dosya part-#####-tid-<guid> hayır Model: dize
Bölüm başına: dize []
Sütunda veri olarak: dize
Tek dosyaya çıkış: ['<fileName>']
filePattern
Partitionbir dosya adı
rowUrlColumn
Partitionbir dosya adı

Türetilmiş bir sütunda JSON yapıları oluşturma

Türetilmiş sütun ifade Oluşturucusu aracılığıyla veri akışınıza karmaşık bir sütun ekleyebilirsiniz. Türetilmiş sütun dönüşümünde yeni bir sütun ekleyin ve mavi kutuya tıklayarak ifade oluşturucuyu açın. Bir sütunu karmaşık hale getirmek için JSON yapısını el ile girebilir veya UX kullanarak alt sütunları etkileşimli olarak ekleyebilirsiniz.

İfade Oluşturucu UX 'i kullanma

Çıktı şeması yan bölmesinde bir sütunun üzerine gelin ve artı simgesine tıklayın. Sütunu karmaşık bir tür yapmak için alt sütun Ekle ' yi seçin.

Alt sütun Ekle

Aynı şekilde ek sütunlar ve alt sütunlar ekleyebilirsiniz. Karmaşık olmayan her bir alan için, ifade düzenleyicisine sağa doğru bir ifade eklenebilir.

Karmaşık sütun Ekle

JSON yapısını el ile girme

JSON yapısını el ile eklemek için yeni bir sütun ekleyin ve düzenleyicide ifadeyi girin. İfade aşağıdaki genel biçimi izler:

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

Bu ifade "complexColumn" adlı bir sütun için girilmişse, havuza aşağıdaki JSON olarak yazılır:

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

Tüm hiyerarşik tanım için örnek el ile betik

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

JSON biçimiyle ilgili bazı yaygın bağlayıcılar ve biçimler aşağıda verilmiştir:

  • Azure Blob Depolama (connector-azure-blob-storage.md)
  • Sınırlandırılmış metin biçimi (format-Delimited-text.md)
  • OData Bağlayıcısı (bağlayıcı-odata.md)
  • Parquet biçimi (format-parquet.md)

Sonraki adımlar