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

UYGULANANLAR: Azure Data Factory Azure Synapse Analytics

İpucu

Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!

JSON dosyalarını ayrıştırmak veya verileri JSON biçiminde yazmak istediğinizde bu makaleyi izleyin.

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

Veri kümesi özellikleri

Veri kümelerini tanımlamak için kullanılabilen 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 listesi sağlanır.

Özellik Açıklama Gerekli
Tür Veri kümesinin type özelliği Json olarak ayarlanmalıdır. Yes
konum Dosya konum ayarları. Her dosya tabanlı bağlayıcının kendi konum türü ve altında locationdesteklenen özellikleri vardır. Bağlayıcı makalesi -> Veri kümesi özellikleri bölümündeki 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-8 bom olmadan", "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", "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".
Hayır
sıkıştırma Dosya sıkıştırmayı yapılandırmak için özellikler grubu. Etkinlik yürütme sırasında sıkıştırma/sıkıştırmayı açmak istediğinizde bu bölümü yapılandırın. Hayır
Tür
(altında compression)
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ılmaz.
Şu anda Kopyalama etkinliği "snappy" & "lz4" ve eşleme veri akışının "ZipDeflate", "TarGzip" ve "Tar" desteği olmadığını unutmayın.
ZipDeflate/TarGzip/Tar dosyalarının sıkıştırmasını açmak ve dosya tabanlı havuz veri deposuna yazmak için kopyalama etkinliğini kullanırken, varsayılan olarak dosyalar klasöre ayıklanır:<path specified in dataset>/<folder named as source compressed file>/, sıkıştırılmış dosyaların adının klasör yapısı olarak korunup korunmayacağını denetlemek için kopyalama etkinliği kaynağında kullanın.preserveZipFileNameAsFolder/preserveCompressionFileNameAsFolder
Hayır
düzey
(altında compression)
Sıkıştırma oranı.
İzin verilen değerler En uygun veya en hızlı değerlerdir.
- En hızlı: Elde edilen dosya en iyi şekilde sıkıştırılmasa bile sıkıştırma işlemi mümkün olan en hızlı şekilde tamamlanmalıdır.
- En uygun: İşlemin tamamlanması daha uzun sürse bile sıkıştırma işlemi en iyi şekilde sıkıştırılmalıdır. Daha fazla bilgi için Bkz . Sıkıştırma Düzeyi konusu.
Hayır

aşağıda Azure Blob Depolama üzerinde JSON veri kümesi örneği verilmiştir:

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

Etkinlikleri tanımlamak için kullanılabilen bölümlerin ve özelliklerin tam listesi için İşlem hatları makalesine bakın. Bu bölüm, JSON kaynağı ve havuzu tarafından desteklenen özelliklerin listesini sağlar.

JSON dosyalarından verileri ayıklamayı ve havuz veri deposu/biçimiyle eşlemeyi veya şema eşlemesinden tam tersini yapmayı öğrenin.

Kaynak olarak JSON

Kopyalama etkinliği *kaynak* bölümünde aşağıdaki özellikler desteklenir.

Özellik Açıklama Gerekli
Tür Kopyalama etkinliği kaynağının type özelliği JSONSource olarak ayarlanmalıdır. Yes
formatSettings Bir özellik grubu. Aşağıdaki JSON okuma ayarları tablosuna bakın. Hayır
storeSettings Veri deposundan veri okuma hakkında bir özellik grubu. Her dosya tabanlı bağlayıcının altında storeSettingskendi desteklenen okuma ayarları vardır. Bağlayıcı makalesi -> Kopyalama etkinliği özellikleri bölümündeki ayrıntılara bakın. Hayır

altında formatSettingsdesteklenen JSON okuma ayarları:

Özellik Açıklama Gerekli
Tür formatSettings türü JsonReadSettings olarak ayarlanmalıdır. Yes
compressionProperties Belirli bir sıkıştırma codec'i için verilerin sıkıştırmasını kaldırmaya yönelik bir özellik grubu. Hayır
preserveZipFileNameAsFolder
(altında compressionProperties->type olarak ZipDeflateReadSettings)
Giriş veri kümesi ZipDeflate sıkıştırması ile yapılandırıldığında uygulanır. Kopyalama sırasında kaynak zip dosyası adının klasör yapısı olarak korunup korunmayacağını gösterir.
- True (varsayılan) olarak ayarlandığında, hizmet sıkıştırması açılmış dosyaları öğesine <path specified in dataset>/<folder named as source zip file>/yazar.
- False olarak ayarlandığında, hizmet sıkıştırması açılmış dosyaları doğrudan öğesine <path specified in dataset>yazar. Yarış veya beklenmeyen davranışlardan kaçınmak için farklı kaynak zip dosyalarında yinelenen dosya adlarının olmadığından emin olun.
Hayır
preserveCompressionFileNameAsFolder
(altında compressionProperties->type veya )TarReadSettingsTarGZipReadSettings
Giriş veri kümesi TarGzip/Tar sıkıştırmasıyla yapılandırıldığında geçerlidir. Kaynak sıkıştırılmış dosya adının kopyalama sırasında klasör yapısı olarak korunup korunmayacağını gösterir.
- True (varsayılan) olarak ayarlandığında, hizmet sıkıştırılmış dosyaları öğesine <path specified in dataset>/<folder named as source compressed file>/yazar.
- False olarak ayarlandığında, hizmet sıkıştırılan dosyaları doğrudan öğesine <path specified in dataset>yazar. Yarış veya beklenmeyen davranışlardan kaçınmak için farklı kaynak dosyalarda yinelenen dosya adlarınız olmadığından emin olun.
Hayır

Havuz olarak JSON

Kopyalama etkinliği *havuz* bölümünde aşağıdaki özellikler desteklenir.

Özellik Açıklama Gerekli
Tür Kopyalama etkinliği kaynağının type özelliği JSONSink olarak ayarlanmalıdır. Yes
formatSettings Bir özellik grubu. Aşağıdaki JSON yazma ayarları tablosuna bakın. Hayır
storeSettings Veri deposuna veri yazma hakkında bir özellik grubu. Her dosya tabanlı bağlayıcının altında storeSettingskendi desteklenen yazma ayarları vardır. Bağlayıcı makalesi -> Kopyalama etkinliği özellikleri bölümündeki ayrıntılara bakın. Hayır

altında formatSettingsdesteklenen JSON yazma ayarları:

Özellik Açıklama Gerekli
Tür formatSettings türü JsonWriteSettings olarak ayarlanmalıdır. Yes
filePattern Her bir JSON dosyasında depolanan verilerin desenini belirtir. İzin verilen değerler şunlardır: 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. Hayır

JSON dosyası desenleri

JSON dosyalarından veri kopyalarken kopyalama etkinliği aşağıdaki JSON dosyalarının desenlerini otomatik olarak algılayabilir ve ayrıştırabilir. JSON dosyalarına veri yazarken, kopyalama etkinliği havuzundaki dosya desenini yapılandırabilirsiniz.

  • 1. Tür: setOfObjects

    Her dosya tek nesne, JSON satırları veya birleştirilmiş 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 okuma ve yazma işlemleri yapabilirsiniz: Azure Blob Depolama, Azure Data Lake Storage 1. Nesil, Azure Data Lake Storage 2. Nesil ve SFTP; Amazon'da JSON biçimini okuyabilirsiniz S3.

Kaynak özellikleri

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

Veri Akışı Adı Açıklama Gerekli İzin verilen değerler Veri akışı betiği özelliği
Joker karakter yolları Joker karakter yoluyla eşleşen tüm dosyalar işlenir. Veri kümesinde ayarlanan klasörü ve dosya yolunu geçersiz kılar. hayır Dize[] joker karakterler
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 String partitionRootPath
Dosya listesi Kaynağınızın işlenmek üzere dosyaları listeleyen bir metin dosyasına işaret edip etmediği 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 String rowUrlColumn
Tamamlandıktan sonra İşlemden sonra dosyaları silin veya taşıyın. Dosya yolu kapsayıcı kökünden başlar hayır Sil: true veya false
Hareket etmek: ['<from>', '<to>']
purgeFiles
moveFiles
Son değiştirme ölçütüne göre filtrele Dosyaları son değiştirilme zamanlarına göre filtrelemeyi seçin hayır Zaman damgası modifiedAfter
modifiedBefore
Tek belge Eşleme veri akışları her dosyadan bir JSON belgesi okur hayır true veya false singleDocument
Alıntılanmamış sütun adları Alıntılanmamış sütun adları seçilirse, eşleme veri akışları tırnak içine alınmayan JSON sütunlarını okur. hayır true veya false unquotedColumnNames
Açıklamaları var JSON verisinde C veya C++ stili açıklama varsa Açıklama var'ı seçin hayır true veya false asComments
Tek tırnaklı Tırnak içine alınmayacak JSON sütunlarını okur hayır true veya false singleQuoted
Ters eğik çizgi kaçtı JSON verilerindeki karakterlerden kurtulmak için ters eğik çizgi kullanılıyorsa Ters eğik çizgi kaçışı'nı seçin hayır true veya false ters eğik çizgiEscape
Dosya bulunamadığında izin ver True ise, hiçbir dosya bulunamazsa hata oluşmaz hayır true veya false ignoreNoFilesFound

Satır içi veri kümesi

Eşleme veri akışları, kaynak ve havuzunuzu tanımlama seçeneği olarak "satır içi veri kümelerini" destekler. Satır içi JSON veri kümesi doğrudan kaynak ve havuz dönüşümlerinizin içinde tanımlanır ve tanımlı veri akışının dışında paylaşılmaz. Veri kümesi özelliklerini doğrudan veri akışınızın içinde parametrelendirmek için kullanışlıdır ve paylaşılan ADF veri kümelerine göre geliştirilmiş performanstan yararlanabilir.

Çok sayıda kaynak klasör ve dosya okurken Projeksiyon | içinde "Kullanıcı tarafından öngörülen şema" seçeneğini ayarlayarak veri akışı dosyası bulma performansını geliştirebilirsiniz Şema seçenekleri iletişim kutusu. Bu seçenek, ADF'nin varsayılan şema otomatik bulmasını kapatır ve dosya bulma performansını büyük ölçüde artırır. Bu seçeneği ayarlamadan önce, ADF'nin projeksiyon için mevcut bir şeması olması için JSON projeksiyonunu içeri aktardığından emin olun. Bu seçenek şema kayması ile çalışmaz.

Kaynak biçimi seçenekleri

Veri akışınızda kaynak olarak bir JSON veri kümesi kullanmak beş ek ayar ayarlamanıza olanak tanır. Bu ayarlar, Kaynak Seçenekleri sekmesindeki JSON ayarları akordeonu altında bulunabilir. Belge Formu ayarı için Tek belge, Satır başına belge ve Belge türleri dizisi'nin birini seçebilirsiniz.

JSON Ayarları

Varsayılan

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

{ "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çiliyse, 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 dosyadan bir belge dizisi 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 verilerinizin önizlemesini görüntülerken "corrupt_record" hatasını oluşturursa, büyük olasılıkla verileriniz JSON dosyanızda tek bir belge içeriyordur. "Tek belge" ayarının bu hatayı temizlemesi gerekir.

Alıntılanmamış sütun adları

Alıntılanmamış sütun adları seçilirse, eşleme veri akışları tırnak içine alınmayan JSON sütunlarını okur.

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

Açıklamaları var

JSON verisinde C veya C++ stili açıklama varsa Açıklamaları var'ı seçin.

{ "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ırnak kullanıyorsa Tek tırnaklı seçeneğini belirleyin.

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

Ters eğik çizgi kaçtı

JSON verilerindeki karakterlerin kaçışı için ters eğik çizgi kullanılıyorsa Ters eğik çizgi kaçışı'nı seçin.

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

Havuz Özellikleri

Aşağıdaki tabloda json havuzu tarafından desteklenen özellikler listelenmektedir. Bu özellikleri Ayarlar sekmesinde düzenleyebilirsiniz.

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

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üretilen sütun dönüşümünde yeni bir sütun ekleyin ve mavi kutuya tıklayarak ifade oluşturucusunu açın. Sütunu karmaşık hale getirmek için JSON yapısını el ile girebilir veya UX kullanarak etkileşimli olarak alt sütun ekleyebilirsiniz.

İfade oluşturucu UX 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 alan için, sağdaki ifade düzenleyicisine bir ifade eklenebilir.

Karmaşık sütun ekleme

JSON yapısını el ile girme

JSON yapısını el ile eklemek için yeni bir sütun ekleyin ve ifadeyi düzenleyiciye 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
        }
    }
}

Tam 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 şunlardır: