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.
✅ Azure Stream Analytics ✅ Fabric Eventstream
Operator APPLY memungkinkan Anda memanggil fungsi bernilai tabel untuk setiap baris yang dikembalikan oleh ekspresi tabel luar kueri. Fungsi bernilai tabel bertindak sebagai input kanan dan ekspresi tabel luar bertindak sebagai input kiri. Input kanan dievaluasi untuk setiap baris dari input kiri dan baris yang dihasilkan digabungkan untuk output akhir. Daftar kolom yang dihasilkan oleh operator APPLY adalah kumpulan kolom di input kiri diikuti dengan daftar kolom yang dikembalikan oleh input kanan.
Ada dua bentuk APPLY: CROSS APPLY dan OUTER APPLY.
CROSS APPLY hanya mengembalikan baris dari tabel eksterior yang menghasilkan kumpulan hasil dari fungsi bernilai tabel. Hasil CROSS APPLY tidak dapat digunakan sebagai nilai target TIMESTAMP BY. Namun, Anda dapat menggunakan satu pekerjaan Azure Stream Analytics yang melakukan CROSS APPLY, dan menggunakan pekerjaan kedua untuk melakukan TIMESTAMP BY.
OUTER APPLY mengembalikan baris baik yang menghasilkan kumpulan hasil maupun yang tidak, dengan nilai NULL dalam kolom yang dihasilkan oleh fungsi bernilai tabel.
Ada dua fungsi bernilai tabel yang tersedia di Azure Stream Analytics untuk memfasilitasi bekerja dengan bidang jenis Array dan Rekaman. Mereka adalah GetArrayElements dan GetRecordProperties.
Sintaksis
<input> {CROSS | OUTER} APPLY <elements_selector>
<input> ::= input_name | input_alias
<elements_selector> ::=
{GetArrayElements | GetRecordProperties} (<column_name>) AS element_name
Argumen
input_name | input_alias
Nama atau alias aliran input.
column_name
Nama kolom aliran input.
element_name
Nama kolom baru yang berisi hasil fungsi bernilai tabel.
Jenis Kembalian
Output adalah rekaman yang berisi payload awal dan rekaman 'element_name', yang berisi hasil fungsi bernilai tabel.
Untuk fungsi GetArrayElements, hasilnya akan menjadi rekaman dengan dua bidang:
ArrayIndex: indeks elemen dalam array
ArrayValue: nilai elemen dalam array.
Untuk fungsi GetRecordProperties, hasilnya akan menjadi rekaman dengan dua bidang:
PropertyName: nama properti dalam rekaman.
PropertyValue: nilai properti dalam rekaman.
Contoh
Dalam contoh ini, memperluas skenario tollbooth, kami berasumsi bahwa mobil dapat memiliki lebih dari satu plat nomor (misalnya mobil yang menaikkan trailer akan memiliki dua). Aplikasi lintas/luar dapat digunakan untuk meratakan array ini, yaitu mendapatkan satu baris per pelat lisensi.
CREATE TABLE input(TollId nvarchar(max), EntryTime datetime, Licenses array)
SELECT e.TollId, e.EntryTime, flat.ArrayValue AS licensePlate
FROM input AS e
CROSS APPLY GetArrayElements(e.Licenses) AS flat
Kueri dapat dimodifikasi untuk menggunakan terapkan luar untuk juga melacak mobil tanpa pelat nomor apa pun.
SELECT e.TollId, e.EntryTime,
flat.ArrayValue AS licensePlate, flat.ArrayIndex AS licensePlateIndex
FROM input AS e
OUTER APPLY GetArrayElements(e.Licenses) AS flat
Contoh lain menggunakan array berlapis (array array).
WITH firstQuery AS (
SELECT input.TollId, input.EntryTime,
flat.ArrayIndex AS i1, flat.ArrayValue AS licenses
FROM input
CROSS APPLY GetArrayElements(input.ArrayOfArray) AS flat)
SELECT firstQuery.TollId, firstQuery.EntryTime, firstQuery.i1,
flat2.ArrayIndex AS i2, flat2.ArrayValue AS license
FROM firstQuery
CROSS APPLY GetArrayElements(firstQuery.licenses) AS flat2