Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Aliran data tersedia di alur Azure Data Factory dan alur Azure Synapse Analytics. Artikel ini berlaku untuk memetakan aliran data. Jika Anda baru mengenal transformasi, lihat artikel pengantar Mengubah data menggunakan aliran data pemetaan.
Petunjuk
Untuk transformasi yang setara (Kolom perluas) di Dataflow Gen2, lihat Panduan untuk Dataflow Gen2 untuk memetakan pengguna aliran data.
Gunakan transformasi flatten untuk mengambil nilai array di dalam struktur hierarkis seperti JSON dan membukanya menjadi baris individual. Proses ini dikenal sebagai denormalisasi.
Konfigurasi
Transformasi flatten berisi pengaturan konfigurasi berikut.
Dibuka oleh
Pilih array untuk menguraikan. Data output memiliki satu baris per item di setiap array. Jika array yang di-unroll di baris input adalah null atau kosong, maka ada satu baris output dengan nilai yang di-unroll sebagai null. Anda dapat mengurai lebih dari satu array per Transformasi Flatten. Pilih tombol plus (+) untuk menyertakan beberapa array dalam satu transformasi Flatten. Anda dapat menggunakan fungsi meta aliran data ADF di sini termasuk name dan type menggunakan pencocokan pola untuk membuka array yang cocok dengan kriteria tersebut. Saat menyertakan beberapa array dalam satu transformasi Flatten, hasil Anda adalah produk kartesius dari semua nilai array yang mungkin.
Pembuka akar
Secara default, transformasi flatten membuka sebuah array ke bagian atas hierarki tempatnya berada. Anda dapat memilih array sebagai akar unroll jika diinginkan. Akar penguraian harus berupa array objek kompleks yang merupakan array penguraian atau berisi penguraian dengan array. Jika akar unroll dipilih, data output berisi setidaknya satu baris untuk setiap item di akar unroll. Jika baris input tidak memiliki item apa pun di akar unroll, baris tersebut akan dihilangkan dari data output. Memilih unroll root selalu menghasilkan jumlah baris yang lebih sedikit atau sama dengan perilaku default.
Penyederhanaan pemetaan
Mirip dengan transformasi pemilihan, pilih proyeksi dari struktur baru berdasarkan kolom masuk dan array yang telah didenormalisasi. Jika array denormalisasi dipetakan, kolom output adalah jenis data yang sama dengan array. Jika unroll by array adalah array objek kompleks yang berisi subarray, memetakan item subarry tersebut menghasilkan array.
Lihat tab inspeksi dan pratinjau data untuk memverifikasi output pemetaan Anda.
Pemetaan berbasis aturan
Transformasi flatten mendukung pemetaan berbasis aturan yang memungkinkan Anda membuat transformasi dinamis dan fleksibel yang meratakan array berdasarkan aturan dan meratakan struktur berdasarkan tingkatan hierarki.
Kondisi pencocokan
Masukkan kondisi pola untuk kolom atau kolom yang ingin Anda ratakan menggunakan pencocokan langsung atau pola. Contoh: like(name,'cust%')
Traversal kolom dalam
Pengaturan opsional yang memberi tahu layanan untuk menangani semua subkolom dari objek yang kompleks secara individual, bukan menangani objek yang kompleks sebagai keseluruhan kolom.
Tingkat hierarki
Pilih tingkat hierarki yang ingin Anda perluas.
Kesesuaian nama (regex)
Anda dapat memilih secara opsional untuk mengekspresikan pencocokan nama Anda sebagai regex dalam kotak ini, alih-alih menggunakan kondisi pencocokan.
Contoh
Lihat objek JSON berikut untuk contoh transformasi flatten di bawah ini
{
"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"}
Tidak ada penguraian akar dengan array string
| Dibuka oleh | Pembuka akar | Proyeksi |
|---|---|---|
| barang.pelanggan | Tidak | Nama pelanggan = barang.pelanggan |
Keluaran
{ 'MSFT', 'government'}
{ 'MSFT', 'distributer'}
{ 'MSFT', 'retail'}
{ 'Company1', 'store'}
{ 'Company1', 'store2'}
{ 'Company2', 'Bank'}
{ 'Company3', null}
Tidak ada pengembangan akar dengan array kompleks
| Dibuka oleh | Pembuka akar | Proyeksi |
|---|---|---|
| goods.orders.shipped.orderItems | Tidak | Nama orderId = barang.pesanan.orderId itemName = barang.pesanan.dikirim.orderItem.itemName itemQty = barang.pesanan.dikirim.orderItem.itemKuantty lokasi = lokasi |
Keluaran
{ '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'}
Akar yang sama dengan pembuka array
| Dibuka oleh | Pembuka akar | Proyeksi |
|---|---|---|
| pesanan.barang | pesanan.barang | Nama barang.pesanan.dikirim.itemPesanan.namaItem barang.pelanggan lokasi |
Keluaran
{ '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'}
Men-dekonstruksi root dengan array yang kompleks
| Dibuka oleh | Pembuka akar | Proyeksi |
|---|---|---|
| goods.orders.shipped.orderItem | pesanan.barang | Nama orderId = barang.pesanan.orderId itemName = barang.pesanan.dikirim.orderItem.itemName itemQty = barang.pesanan.dikirim.orderItem.itemKuantty lokasi = lokasi |
Keluaran
{ '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'}
Skrip aliran data
Sintaks
<incomingStream>
foldDown(unroll(<unroll cols>),
mapColumn(
name,
each(<array>(type == '<arrayDataType>')),
each(<array>, match(true())),
location
)) ~> <transformationName>
Contoh
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)
Konten terkait
- Gunakan Transformasi Pivot untuk pivot baris ke kolom.
- Gunakan Transformasi Unpivot untuk membalik kolom menjadi baris.