Eşleme veri akışında dönüştürmeyi ayrıştırma
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!
Veri akışları hem Azure Data Factory'de hem de Azure Synapse Pipelines'da kullanılabilir. Bu makale, eşleme veri akışları için geçerlidir. Dönüştürmeler hakkında yeniyseniz lütfen eşleme veri akışı kullanarak verileri dönüştürme başlıklı giriş makalesine bakın.
Verilerinizdeki belge biçimindeki dizeler olan metin sütunlarını ayrıştırmak için Ayrıştır dönüştürmesini kullanın. Ayrıştırılabilen desteklenen geçerli ekli belge türleri JSON, XML ve sınırlandırılmış metindir.
Yapılandırma
Ayrıştırma dönüştürme yapılandırma panelinde, önce satır içinde ayrıştırmak istediğiniz sütunlarda bulunan veri türünü seçersiniz. Ayrıştırma dönüşümü aşağıdaki yapılandırma ayarlarını da içerir.
Sütun
Türetilmiş sütunlara ve toplamalara benzer şekilde Column özelliği, mevcut bir sütunu açılan seçiciden seçerek değiştirdiğiniz yerdir. Alternatif olarak, buraya yeni bir sütunun adını yazabilirsiniz. ADF ayrıştırılan kaynak verilerini bu sütunda depolar. Çoğu durumda, gelen eklenmiş belge dizesi alanını ayrıştıran yeni bir sütun tanımlamak istersiniz.
Expression
Ayrıştırmanızın kaynağını ayarlamak için ifade oluşturucusunu kullanın. Kaynağı ayarlamak, ayrıştırmak istediğiniz bağımsız verileri içeren kaynak sütunu seçmek kadar basit olabilir veya ayrıştırmak için karmaşık ifadeler oluşturabilirsiniz.
Örnek ifadeler
Kaynak dize verileri:
chrome|steel|plastic
- İfade:
(desc1 as string, desc2 as string, desc3 as string)
- İfade:
Kaynak JSON verileri:
{"ts":1409318650332,"userId":"309","sessionId":1879,"page":"NextSong","auth":"Logged In","method":"PUT","status":200,"level":"free","itemInSession":2,"registration":1384448}
- İfade:
(level as string, registration as long)
- İfade:
Kaynak İç İçe JSON verileri:
{"car" : {"model" : "camaro", "year" : 1989}, "color" : "white", "transmission" : "v8"}
- İfade:
(car as (model as string, year as integer), color as string, transmission as string)
- İfade:
Kaynak XML verileri:
<Customers><Customer>122</Customer><CompanyName>Great Lakes Food Market</CompanyName></Customers>
- İfade:
(Customers as (Customer as integer, CompanyName as string))
- İfade:
Öznitelik verileriyle kaynak XML:
<cars><car model="camaro"><year>1989</year></car></cars>
- İfade:
(cars as (car as ({@model} as string, year as integer)))
- İfade:
Ayrılmış karakterler içeren ifadeler:
{ "best-score": { "section 1": 1234 } }
- içindeki '-' karakteri
best-score
çıkarma işlemi olarak yorumlandığından yukarıdaki ifade çalışmaz. JSON altyapısına metni tam anlamıyla yorumlamasını söylemek için bu durumlarda köşeli ayraç gösterimine sahip bir değişken kullanın:var bestScore = data["best-score"]; { bestScore : { "section 1": 1234 } }
- içindeki '-' karakteri
Not: Öznitelikleri ayıklarken hatalarla karşılaşırsanız (özellikle @model) karmaşık bir türden, geçici bir çözüm karmaşık türü dizeye dönüştürmek, @ simgesini (özellikle replace(toString(your_xml_string_parsed_column_name.cars.car),'@','' ) kaldırmak ve ardından JSON dönüştürme etkinliğini ayrıştırmaktır.
Çıkış sütun türü
Burada, tek bir sütuna yazılan ayrıştırmadan hedef çıkış şemasını yapılandırırsınız. Ayrıştırmadan çıkışınız için şema ayarlamanın en kolay yolu, ifade oluşturucusunun sağ üst kısmındaki 'Türü Algıla' düğmesini seçmektir. ADF, ayrıştırdığınız dize alanından şemayı otomatik olarak algılamayı ve çıkış ifadesinde sizin için ayarlamayı dener.
Bu örnekte, düz metin olan ancak JSON yapısı olarak biçimlendirilmiş gelen "jsonString" alanının ayrıştırmasını tanımladık. Ayrıştırılan sonuçları şu şemayla "json" adlı yeni bir sütunda JSON olarak depolayacağız:
(trade as boolean, customers as string[])
Çıkışınızın düzgün eşlendiğini doğrulamak için inceleme sekmesine ve veri önizlemesine bakın.
Hiyerarşik verileri ayıklamak için Türetilmiş Sütun etkinliğini kullanma (ifade alanında your_complex_column_name.car.model)
Örnekler
source(output(
name as string,
location as string,
satellites as string[],
goods as (trade as boolean, customers as string[], orders as (orderId as string, orderTotal as double, shipped as (orderItems as (itemName as string, itemQty as string)[]))[])
),
allowSchemaDrift: true,
validateSchema: false,
ignoreNoFilesFound: false,
documentForm: 'documentPerLine') ~> JsonSource
source(output(
movieId as string,
title as string,
genres as string
),
allowSchemaDrift: true,
validateSchema: false,
ignoreNoFilesFound: false) ~> CsvSource
JsonSource derive(jsonString = toString(goods)) ~> StringifyJson
StringifyJson parse(json = jsonString ? (trade as boolean,
customers as string[]),
format: 'json',
documentForm: 'arrayOfDocuments') ~> ParseJson
CsvSource derive(csvString = 'Id|name|year\n\'1\'|\'test1\'|\'1999\'') ~> CsvString
CsvString parse(csv = csvString ? (id as integer,
name as string,
year as string),
format: 'delimited',
columnNamesAsHeader: true,
columnDelimiter: '|',
nullValue: '',
documentForm: 'documentPerLine') ~> ParseCsv
ParseJson select(mapColumn(
jsonString,
json
),
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> KeepStringAndParsedJson
ParseCsv select(mapColumn(
csvString,
csv
),
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> KeepStringAndParsedCsv
Veri akışı betiği
Sözdizimi
Örnekler
parse(json = jsonString ? (trade as boolean,
customers as string[]),
format: 'json|XML|delimited',
documentForm: 'singleDocument') ~> ParseJson
parse(csv = csvString ? (id as integer,
name as string,
year as string),
format: 'delimited',
columnNamesAsHeader: true,
columnDelimiter: '|',
nullValue: '',
documentForm: 'documentPerLine') ~> ParseCsv
İlgili içerik
- Satırları sütunlara döndürmek için Düzleştirme dönüştürmesini kullanın.
- Satırları dönüştürmek için Türetilmiş sütun dönüştürmesini kullanın.