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.
BERLAKU UNTUK:
Azure Data Factory
Azure Synapse Analytics
Tip
Cobalah Data Factory di Microsoft Fabric, solusi analitik all-in-one untuk perusahaan. Microsoft Fabric mencakup semuanya mulai dari pergerakan data hingga ilmu data, analitik real time, kecerdasan bisnis, dan pelaporan. Pelajari cara memulai uji coba baru secara gratis!
Aliran data tersedia di Alur Azure Data Factory dan Azure Synapse. Artikel ini berlaku untuk memetakan aliran data. Jika Anda baru mengenal transformasi, silakan lihat artikel pengantar Transformasi data menggunakan aliran data pemetaan.
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 rata berisi pengaturan konfigurasi berikut.
Dibuka oleh
Pilih array untuk membuka. Data output akan memiliki satu baris per item di setiap array. Jika dibuka dengan array di baris input adalah null atau kosong, akan ada satu baris output dengan nilai yang tidak dibuka sebagai null. Anda memiliki opsi untuk membuka pendaftaran lebih dari satu array per transformasi Flatten. Klik 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 akan menjadi 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 secara opsional memilih array sebagai pembuka akar Anda. Pembuka akar harus berupa array objek kompleks yang berupa pembuka array atau berisi pembuka dengan array. Jika pembuka akar dipilih, data output akan berisi setidaknya satu baris per item di pembuka akar. Jika baris input tidak memiliki item apa pun di pembuka akar, baris tersebut akan dihilangkan dari data output. Memilih pembuka akar akan selalu menghasilkan jumlah baris yang kurang dari atau sama dengan perilaku default.
Pemetaan flatten
Mirip dengan transformasi pilih, pilih proyeksi struktur baru dari bidang masuk dan array yang didenormalisasi. Jika array yang didenormalisasi dipetakan, kolom output akan menjadi jenis data yang sama dengan array. Jika pembuka dengan array adalah array objek kompleks yang berisi sub array, pemetaan item dari sub array tersebut akan menghasilkan array.
Lihat tab inspeksi dan pratinjau data untuk memverifikasi output pemetaan Anda.
Pemetaan berbasis aturan
Transformasi yang diratakan mendukung pemetaan berbasis aturan yang memungkinkan Anda membuat transformasi dinamis dan fleksibel yang akan meratakan array berdasarkan aturan dan meratakan struktur berdasarkan tingkat hierarki.
Kondisi penyesuaian
Masukkan kondisi penyesuaian pola untuk kolom atau kolom yang ingin Anda ratakan menggunakan penyesuaian atau pola yang tepat. 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)
Secara opsional, pilih untuk mengekspresikan penyesuaian nama Anda sebagai regex dalam kotak ini, alih-alih menggunakan kondisi yang sesuai di atas.
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 pembuka akar dengan string array
| Dibuka oleh | Pembuka akar | Proyeksi |
|---|---|---|
| goods.customers | Tidak | Nama pelanggan = goods.customer |
Output
{ 'MSFT', 'government'}
{ 'MSFT', 'distributer'}
{ 'MSFT', 'retail'}
{ 'Company1', 'store'}
{ 'Company1', 'store2'}
{ 'Company2', 'Bank'}
{ 'Company3', null}
Tidak ada pembuka akar dengan array kompleks
| Dibuka oleh | Pembuka akar | Proyeksi |
|---|---|---|
| goods.orders.shipped.orderItems | Tidak | Nama orderId = goods.orders.orderId itemName = goods.orders.shipped.orderItems.itemName itemQty = goods.orders.shipped.orderItems.itemQty lokasi = lokasi |
Output
{ '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 |
|---|---|---|
| goods.orders | goods.orders | Nama goods.orders.shipped.orderItems.itemName goods.customers lokasi |
Output
{ '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'}
Pembuka akar dengan array kompleks
| Dibuka oleh | Pembuka akar | Proyeksi |
|---|---|---|
| goods.orders.shipped.orderItem | goods.orders | Nama orderId = goods.orders.orderId itemName = goods.orders.shipped.orderItems.itemName itemQty = goods.orders.shipped.orderItems.itemQty lokasi = lokasi |
Output
{ '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 pivot kolom menjadi baris.

