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

ŞUNLARA UYGULANIR: Azure Data Factory Azure Synapse Analytics

İpucu

Microsoft Fabric'daki Data Factory, daha basit bir mimariye, yerleşik yapay zekaya ve yeni özelliklere sahip yeni nesil Azure Data Factory. Veri tümleştirmeyi yeni kullanmaya başladıysanız Fabric Data Factory ile başlayın. Mevcut ADF iş yükleri veri bilimi, gerçek zamanlı analiz ve raporlama genelinde yeni özelliklere erişmek için Fabric yükseltebilir.

Veri akışları hem Azure Data Factory işlem hatlarında hem de Azure Synapse Analytics işlem hatlarında kullanılabilir. Bu makale, eşleme veri akışları için geçerlidir. Dönüştürmeler hakkında yeniyseniz , Eşleme veri akışlarını kullanarak verileri dönüştürme başlıklı giriş makalesine bakın.

İpucu

Veri Akışı 2. Nesil'deki eşdeğer dönüştürme (Sütunu genişlet) için bkz. Veri akışı kullanıcılarını eşlemek için Veri Akışı 2. Nesil kılavuzu.

JSON gibi hiyerarşik yapıların içindeki dizi değerlerini almak ve bunları bireysel satırlara açmak için düzleştirme işlemini 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 bir ekran görüntüsü.

Açmak

Açmak için bir dizi seçin. Çıkış verilerinin her dizideki öğe başına bir satırı vardır. Giriş satırında diziye göre kaydı kaldırma null veya boşsa, kaydı kaldırılmış değerleri null olarak içeren bir çıkış satırı vardır. "Bir Düzleştirme dönüşümü ile birden fazla diziyi açabilirsiniz." Tek bir Düzleştirme dönüşümüne birden çok dizi eklemek için artı (+) düğmesini seçin. ADF veri akışı meta işlevlerini burada, name ve type dahil olmak üzere, kullanabilir ve bu ölçütlerle eşleşen dizileri açmak 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üdür.

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

Kökü aç

Varsayılan olarak, düzleştirme dönüşümü bir diziyi bulunduğu hiyerarşide en üst seviyeye açarak yerleştirir. İsteğe bağlı olarak bir diziyi çözme başlangıç noktası 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. Eğer bir açma kökü seçilirse, çıkış verileri açma kökündeki öğeler için en az bir satır içerir. Giriş satırında açılan kökte herhangi bir öğe yoksa, çıkış verilerinden çıkarılır. Seçilen bir açılmamış kök her zaman varsayılan davranıştan daha az veya eşit sayıda satır üretir.

Düzleştirme eşlemesi

Seçme dönüştürmesine benzer şekilde, gelen alanlardan ve denormalize edilmiş diziden yeni yapının projeksiyonunu seçin. Denormalize edilmiş bir dizi eşleştirilirse, çıkış sütunu diziyle aynı veri türüdür. Diziye göre açma işlemi, alt diziler içeren karmaşık nesnelerin bir dizisiyse, bu alt dizinin bir öğesi eşlendiğinde bir dizi döndürülür.

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 deseni

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, eşleşme koşulunu kullanmak yerine bu kutuda ad eşleştirmenizi düzenli ifade olarak belirtmeyi seçebilirsiniz.

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

Dizeler dizisi ile kök açılması yok.

Açmak Kökü aç Yansıtma
mallar.müşteriler Hiçbiri ad
customer = goods.customer (müşteri = goods müşteri)

Çıktı

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

Karmaşık dizide açılım kökü yok

Açmak Kökü aç Yansıtma
ürünler.siparişler.gönderildi.siparişÖğeleri Hiçbiri ad
orderId = goods.orders.orderId
itemName = mallar.siparişler.gönderilen.siparişKalemler.kalemAdı
ürünAdet = ürünler.siparişler.gönderildi.siparişÖğeleri.ürünAdet
konum = konum

Çı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

Açmak Kökü aç Yansıtma
ürünler.siparişler ürünler.siparişler ad
goods.orders.shipped.orderItems.itemName
ürünler.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 açılımı

Açmak Kökü aç Yansıtma
ürünler.siparişler.gönderildi.siparişKalemi ürünler.siparişler ad
orderId = goods.orders.orderId
itemName = mallar.siparişler.gönderilen.siparişKalemler.kalemAdı
itemQty = goods.orders.shipped.orderItems.itemQty
konum = konum

Çı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)