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:
- Amazon S3
- Amazon S3 Uyumlu Depolama,
- Azure Blob
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage 2. Nesil
- Azure Dosyaları
- Dosya Sistemi
- FTP
- Google Cloud Storage
- HDFS
- HTTP
- Oracle Cloud Storage
- SFTP
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 location desteklenen ö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 storeSettings kendi 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 formatSettings
desteklenen 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 )TarReadSettings TarGZipReadSettings |
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 storeSettings kendi 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 formatSettings
desteklenen 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.
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.
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.
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
]
)
İlgili bağlayıcılar ve biçimler
JSON biçimiyle ilgili bazı yaygın bağlayıcılar ve biçimler şunlardır: