plugin bag_unpack

Plugin bag_unpack membongkar satu kolom jenis dynamic, dengan memperlakukan setiap slot tingkat atas bag properti sebagai kolom. Plugin dipanggil dengan operator evaluate.

Sintaks

T|evaluatebag_unpack(Column [,OutputColumnPrefix ] [,columnsConflict ] [,ignoredProperties ] ) [:OutputSchema]

Pelajari selengkapnya tentang konvensi sintaksis.

Parameter

Nama Jenis Diperlukan 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 diganti
keep_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 wildcard * 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.

Catatan

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.

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)

Output

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_')

Output

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

Output

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

Output

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']))

Output

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)

Output

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)

Output

Deskripsi Nama Usia
Siswa John 20
Guru Dave 40
Siswa Melati 30