Aracılığıyla paylaş


Eşleme veri akışında dönüştürmeyi düzleştirme

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.

JSON gibi hiyerarşik yapıların içindeki dizi değerlerini almak ve bunları tek tek satırlara kaydetmek için düzleştirme dönüştürmesini kullanın. Bu işlem, normal dışıleştirme olarak bilinir.

Yapılandırma

Düzleştirme dönüşümü aşağıdaki yapılandırma ayarlarını içerir.

Düzleştirme ayarlarını gösteren ekran görüntüsü.

Kaydı kaldıran

Kaydını kaldırmak için bir dizi seçin. Çıkış verilerinin her dizideki öğe başına bir satırı olur. Giriş satırında diziye göre kayıt kaldırma null veya boşsa, kaydı kaldırılmış değerleri null olarak içeren bir çıkış satırı olacaktır. Düzleştirme dönüşümü başına birden fazla dizi kaydını kaldırma seçeneğiniz vardır. Tek bir Düzleştirme dönüşümüne birden çok dizi eklemek için artı (+) düğmesine tıklayın. Burada ve dahil olmak üzere name type ADF veri akışı meta işlevlerini kullanabilir ve bu ölçütlerle eşleşen dizilerin kaydını kaldırmak için desen eşleştirmeyi kullanabilirsiniz. Tek bir Flatten dönüşümüne birden çok dizi eklerken, sonuçlarınız tüm olası dizi değerlerinin kartezyen ürünü olur.

Düzleştirme sonuçlarını gösteren ekran görüntüsü.

Kök kaydını kaldır

Varsayılan olarak, düzleştirme dönüşümü bir dizinin kaydını bulunduğu hiyerarşinin en üstüne kaldırır. İsteğe bağlı olarak bir diziyi kaydı kaldırdığınız kök olarak seçebilirsiniz. Kayıt kaldırma kökü, diziye göre kaydı içeren veya içeren karmaşık nesne dizisi olmalıdır. Bir kayıt kaldırma kökü seçilirse, çıkış verileri kayıtsız kökteki öğeler başına en az bir satır içerir. Giriş satırında kayıtsız kökte herhangi bir öğe yoksa çıkış verilerinden bırakılır. Bir kayıt kaldırma kökü seçildiğinde her zaman varsayılan davranıştan daha az veya eşit sayıda satır çıkarılır.

Düzleştirme eşlemesi

Seçme dönüştürmesine benzer şekilde, gelen alanlardan ve normal olmayan diziden yeni yapının projeksiyonunu seçin. Normalleştirilmiş bir dizi eşlenirse, çıkış sütunu diziyle aynı veri türüne sahip olur. Diziye göre kayıt kaldırma, alt diziler içeren bir karmaşık nesne dizisiyse, bu alt dizinin bir öğesini eşlemek bir dizi çıkışı verir.

Eşleme çıkışınızı doğrulamak için inceleme sekmesine ve veri önizlemesine bakın.

Kural tabanlı eşleme

Düzleştirme dönüşümü kural tabanlı eşlemeyi destekler ve böylece dizileri kurallara göre düzleştirme ve hiyerarşi düzeylerine göre yapıları düzleştirme olanağı sağlayan dinamik ve esnek dönüştürmeler oluşturabilirsiniz.

Düzleştirme düzeni

Eşleşen koşul

Tam eşleştirmeyi veya desenleri kullanarak düzleştirmek istediğiniz sütun veya sütunlar için desen eşleştirme koşulu girin. Örnek: like(name,'cust%')

Derin sütun geçişi

Hizmete, karmaşık nesneyi tüm sütun olarak işlemek yerine karmaşık bir nesnenin tüm alt sütunlarını tek tek işlemesini söyleyen isteğe bağlı ayar.

Hiyerarşi düzeyi

Genişletmek istediğiniz hiyerarşi düzeyini seçin.

Ad eşleşmeleri (regex)

İsteğe bağlı olarak, yukarıdaki eşleşen koşulu kullanmak yerine bu kutuda ad eşleştirmenizi normal ifade olarak ifade etmeyi seçin.

Örnekler

Düzleştirme dönüştürmesinin aşağıdaki örnekleri için aşağıdaki JSON nesnesine bakın

{
  "name":"MSFT","location":"Redmond", "satellites": ["Bay Area", "Shanghai"],
  "goods": {
    "trade":true, "customers":["government", "distributer", "retail"],
    "orders":[
        {"orderId":1,"orderTotal":123.34,"shipped":{"orderItems":[{"itemName":"Laptop","itemQty":20},{"itemName":"Charger","itemQty":2}]}},
        {"orderId":2,"orderTotal":323.34,"shipped":{"orderItems":[{"itemName":"Mice","itemQty":2},{"itemName":"Keyboard","itemQty":1}]}}
    ]}}
{"name":"Company1","location":"Seattle", "satellites": ["New York"],
  "goods":{"trade":false, "customers":["store1", "store2"],
  "orders":[
      {"orderId":4,"orderTotal":123.34,"shipped":{"orderItems":[{"itemName":"Laptop","itemQty":20},{"itemName":"Charger","itemQty":3}]}},
      {"orderId":5,"orderTotal":343.24,"shipped":{"orderItems":[{"itemName":"Chair","itemQty":4},{"itemName":"Lamp","itemQty":2}]}}
    ]}}
{"name": "Company2", "location": "Bellevue",
  "goods": {"trade": true, "customers":["Bank"], "orders": [{"orderId": 4, "orderTotal": 123.34}]}}
{"name": "Company3", "location": "Kirkland"}

Dize dizisiyle kayıtsız kök yok

Kaydı kaldıran Kök kaydını kaldır Yansıtma
mallar.müşteriler Hiçbiri ad
customer = goods.customer

Çıktı

{ 'MSFT', 'government'}
{ 'MSFT', 'distributer'}
{ 'MSFT', 'retail'}
{ 'Company1', 'store'}
{ 'Company1', 'store2'}
{ 'Company2', 'Bank'}
{ 'Company3', null}

Karmaşık dizi ile kayıt kaldırma kökü yok

Kaydı kaldıran Kök kaydını kaldır Yansıtma
goods.orders.shipped.orderItems Hiçbiri ad
orderId = goods.orders.orderId
itemName = goods.orders.shipped.orderItems.itemName
itemQty = goods.orders.shipped.orderItems.itemQty
location = location

Çıktı

{ 'MSFT', 1, 'Laptop', 20, 'Redmond'}
{ 'MSFT', 1, 'Charger', 2, 'Redmond'}
{ 'MSFT', 2, 'Mice', 2, 'Redmond'}
{ 'MSFT', 2, 'Keyboard', 1, 'Redmond'}
{ 'Company1', 4, 'Laptop', 20, 'Seattle'}
{ 'Company1', 4, 'Charger', 3, 'Seattle'}
{ 'Company1', 5, 'Chair', 4, 'Seattle'}
{ 'Company1', 5, 'Lamp', 2, 'Seattle'}
{ 'Company2', 4, null, null, 'Bellevue'}
{ 'Company3', null, null, null, 'Kirkland'}

Unroll dizisiyle aynı kök

Kaydı kaldıran Kök kaydını kaldır Yansıtma
mallar.siparişler mallar.siparişler ad
goods.orders.shipped.orderItems.itemName
mallar.müşteriler
konum

Çıktı

{ 'MSFT', ['Laptop','Charger'], ['government','distributer','retail'], 'Redmond'}
{ 'MSFT', ['Mice', 'Keyboard'], ['government','distributer','retail'], 'Redmond'}
{ 'Company1', ['Laptop','Charger'], ['store', 'store2'], 'Seattle'}
{ 'Company1', ['Chair', 'Lamp'], ['store', 'store2'], 'Seattle'}
{ 'Company2', null, ['Bank'], 'Bellevue'}

Karmaşık dizi ile kök kaydını kaldırma

Kaydı kaldıran Kök kaydını kaldır Yansıtma
goods.orders.shipped.orderItem mallar.siparişler ad
orderId = goods.orders.orderId
itemName = goods.orders.shipped.orderItems.itemName
itemQty = goods.orders.shipped.orderItems.itemQty
location = location

Çıktı

{ 'MSFT', 1, 'Laptop', 20, 'Redmond'}
{ 'MSFT', 1, 'Charger', 2, 'Redmond'}
{ 'MSFT', 2, 'Mice', 2, 'Redmond'}
{ 'MSFT', 2, 'Keyboard', 1, 'Redmond'}
{ 'Company1', 4, 'Laptop', 20, 'Seattle'}
{ 'Company1', 4, 'Charger', 3, 'Seattle'}
{ 'Company1', 5, 'Chair', 4, 'Seattle'}
{ 'Company1', 5, 'Lamp', 2, 'Seattle'}
{ 'Company2', 4, null, null, 'Bellevue'}

Veri akışı betiği

Sözdizimi

<incomingStream>
foldDown(unroll(<unroll cols>),
    mapColumn(
        name,
        each(<array>(type == '<arrayDataType>')),
        each(<array>, match(true())),
        location
    )) ~> <transformationName>

Örnek

source foldDown(unroll(goods.orders.shipped.orderItems, goods.orders),
    mapColumn(
        name,
        orderId = goods.orders.orderId,
        itemName = goods.orders.shipped.orderItems.itemName,
        itemQty = goods.orders.shipped.orderItems.itemQty,
        location = location
    ),
    skipDuplicateMapInputs: false,
    skipDuplicateMapOutputs: false)