plugin bag_unpack
Berlaku untuk: ✅Microsoft Fabric✅Azure Data Explorer
Plugin bag_unpack
membongkar satu kolom jenis dynamic
, dengan memperlakukan setiap slot tingkat atas bag properti sebagai kolom. Plugin dipanggil dengan operator evaluate
.
Sintaks
bag_unpack(
[,
OutputColumnPrefix ] [,
columnsConflict ] [,
ignoredProperties ] )
[:
OutputSchema]
Pelajari selengkapnya tentang konvensi sintaksis.
Parameter
Nama | Tipe | Wajib | Deskripsi |
---|---|---|---|
T | string |
✔️ | Input tabular yang kolom Column-nya akan dibongkar. |
Kolom | dynamic |
✔️ | Kolom T yang akan dibongkar. |
OutputColumnPrefix | string |
Awalan umum untuk ditambahkan ke semua kolom yang dibuat oleh plugin. | |
columnsConflict | string |
Arah untuk resolusi konflik kolom. Nilai yang valid: error - Kueri menghasilkan kesalahan (default)replace_source - Kolom sumber digantikeep_source - Kolom sumber disimpan |
|
ignoredProperties | dynamic |
Sekumpulan properti tas opsional yang akan diabaikan. } | |
OutputSchema | Nama dan jenis untuk kolom yang diharapkan dari output plugin bag_unpack . Menentukan skema yang diharapkan akan mengoptimalkan pelaksanaan kueri dengan tidak menjalankan kueri aktual terlebih dahulu untuk menjelajahi skema. Untuk informasi sintaks, lihat Sintaks skema output. |
Sintaks skema output
(
ColumnName:
ColumnType [,
...])
Untuk menambahkan semua kolom tabel input ke output plugin, gunakan kartubebas *
sebagai parameter pertama, sebagai berikut:
(
*
,
ColumnName:
ColumnType [,
...])
Mengembalikan
Plugin bag_unpack
mengembalikan tabel dengan catatan sebanyak input tabular (T). Skema tabel sama dengan skema input tabularnya dengan modifikasi berikut:
- Kolom input yang ditentukan (Column) dihapus.
- Skema diperluas dengan kolom sebanyak slot yang berbeda dalam nilai kantong properti tingkat atas T. Nama setiap kolom sesuai dengan nama setiap slot, secara opsional diawali dengan OutputColumnPrefix. Jenisnya adalah jenis slot, jika semua nilai slot yang sama memiliki jenis yang sama, atau
dynamic
, jika nilainya berbeda dalam jenis.
Catatan
Jika OutputSchema tidak ditentukan, skema output plugin bervariasi sesuai dengan nilai data input. Oleh karena itu, beberapa eksekusi plugin menggunakan input data yang berbeda, dapat menghasilkan skema output yang berbeda.
Data input ke plugin harus sedemikian rupa sehingga skema output mengikuti semua aturan untuk skema tabular. Secara khusus:
Nama kolom output tidak bisa sama dengan kolom yang ada di input tabular T, kecuali kolom yang akan dibongkar (Column), karena itu akan menghasilkan dua kolom dengan nama yang sama.
Semua nama slot, saat diawali oleh OutputColumnPrefix, harus merupakan nama entitas yang valid dan mengikuti aturan penamaan pengenal.
Nilai null diabaikan.
Contoh
Memperluas bag
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d)
Hasil
Usia | Nama |
---|---|
20 | John |
40 | Dave |
30 | Melati |
Memperluas bag dengan OutputColumnPrefix
Perluas bag dan gunakan opsi OutputColumnPrefix
untuk menghasilkan nama kolom yang dimulai dengan awalan 'Property_'.
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, 'Property_')
Hasil
Property_Age | Property_Name |
---|---|
20 | John |
40 | Dave |
30 | Melati |
Memperluas bag dengan columnsConflict
Perluas bag dan gunakan opsi columnsConflict
untuk menyelesaikan konflik antara kolom dan kolom yang ada yang dihasilkan oleh operator bag_unpack()
.
datatable(Name:string, d:dynamic)
[
'Old_name', dynamic({"Name": "John", "Age":20}),
'Old_name', dynamic({"Name": "Dave", "Age":40}),
'Old_name', dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, columnsConflict='replace_source') // Use new name
Hasil
Usia | Nama |
---|---|
20 | John |
40 | Dave |
30 | Melati |
datatable(Name:string, d:dynamic)
[
'Old_name', dynamic({"Name": "John", "Age":20}),
'Old_name', dynamic({"Name": "Dave", "Age":40}),
'Old_name', dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, columnsConflict='keep_source') // Keep old name
Hasil
Usia | Nama |
---|---|
20 | Old_name |
40 | Old_name |
30 | Old_name |
Memperluas bag dengan ignoredProperties
Perluas bag dan gunakan opsi ignoredProperties
untuk mengabaikan properti tertentu di bag properti.
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20, "Address": "Address-1" }),
dynamic({"Name": "Dave", "Age":40, "Address": "Address-2"}),
dynamic({"Name": "Jasmine", "Age":30, "Address": "Address-3"}),
]
// Ignore 'Age' and 'Address' properties
| evaluate bag_unpack(d, ignoredProperties=dynamic(['Address', 'Age']))
Hasil
Nama |
---|
John |
Dave |
Melati |
Memperluas bag dengan OutputSchema yang ditentukan kueri
Perluas bag dan gunakan opsi OutputSchema
untuk memungkinkan berbagai pengoptimalan dievaluasi sebelum menjalankan kueri aktual.
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d) : (Name:string, Age:long)
Hasil
Nama | Usia |
---|---|
John | 20 |
Dave | 40 |
Melati | 30 |
Perluas bag dan gunakan opsi OutputSchema
untuk memungkinkan berbagai pengoptimalan dievaluasi sebelum menjalankan kueri aktual. Gunakan kartubebas *
untuk mengembalikan semua kolom tabel input.
datatable(d:dynamic, Description: string)
[
dynamic({"Name": "John", "Age":20}), "Student",
dynamic({"Name": "Dave", "Age":40}), "Teacher",
dynamic({"Name": "Jasmine", "Age":30}), "Student",
]
| evaluate bag_unpack(d) : (*, Name:string, Age:long)
Hasil
Deskripsi | Nama | Usia |
---|---|---|
Siswa | John | 20 |
Guru | Dave | 40 |
Siswa | Melati | 30 |
Konten terkait
- fungsi parse_json
- operator mv-expand