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 analitik LAST memungkinkan seseorang untuk mencari peristiwa terbaru dalam aliran peristiwa dalam batasan yang ditentukan. Ini berguna dalam skenario seperti menghitung nilai baik terakhir yang diketahui (misalnya tidak null), menemukan terakhir kali ketika peristiwa cocok dengan kriteria tertentu, dll.
Di Azure Stream Analytics, cakupan LAST (yaitu, seberapa jauh ke belakang riwayat dari peristiwa saat ini yang perlu dilihat) selalu terbatas pada interval waktu terbatas, menggunakan klausul LIMIT DURATION. LAST secara opsional dapat dibatasi untuk hanya mempertimbangkan peristiwa yang cocok dengan peristiwa saat ini pada properti atau kondisi tertentu menggunakan klausa PARTITION BY dan WHEN. LAST tidak dipengaruhi oleh predikat dalam klausa WHERE, kondisi gabungan dalam klausa JOIN, atau ekspresi pengelompokan dalam klausa GROUP BY dari kueri saat ini.
Pernyataan: LAST(<expression>, <default>) setara dengan LAG(<expression>, 0, <default>) (yaitu nilai offset yang diatur ke '0'). Perhatikan bahwa LAG(<ekspresi>, 0, <default>) sebenarnya bukan konstruksi yang valid karena LAG mengambil offset yang lebih besar atau sama dengan 1. Jadi, Anda harus menggunakan operator LAST sebagai gantinya, yang diperkenalkan untuk kenyamanan dan keterbacaan yang lebih baik.
Sintaksis
LAST(<scalar_expression >, [<default>])
OVER ( [PARTITION BY <partition key>] LIMIT DURATION(<unit>, <length>) [WHEN boolean_expression])
Argumen
scalar_expression
Nilai yang akan dikembalikan. Ini adalah ekspresi dari jenis apa pun yang mengembalikan nilai tunggal (skalar) atau ekspresi kartubebas '*'. Untuk '*' seluruh peristiwa akan dikembalikan dan akan dimuat dalam peristiwa hasil (catatan berlapis). scalar_expression tidak boleh berisi fungsi analitik atau fungsi eksternal lainnya.
Default
Nilai yang akan dikembalikan ketika tidak ada kriteria pencocokan peristiwa. Jika nilai default tidak ditentukan, NULL dikembalikan. 'Tidak ada peristiwa' dapat terjadi jika tidak ada peristiwa sebelumnya dalam interval waktu yang ditentukan dalam limit_duration_clause atau peristiwa ada tetapi tidak cocok dengan kondisi yang ditentukan dalam when_clause. Jika peristiwa ada dan nilai scalar_expression adalah NULL maka NULL dikembalikan. default dapat berupa kolom, subkueri, atau ekspresi lainnya, tetapi tidak dapat berisi fungsi analitik atau fungsi eksternal lainnya. default harus memiliki jenis yang sama persis dengan scalar_expression.
OVER ( [ partition_by_clause ] limit_duration_clause [when_clause])
partition_by_clause Klausul kunci> partisi BY <partisi meminta bahwa hanya peristiwa yang nilainya
<kunci> partisi sama dengan peristiwa saat ini yang dipertimbangkan.
limit_duration_clause DURATION(<unit>, <panjang>):
Menentukan berapa banyak riwayat dari peristiwa saat ini yang harus dipertimbangkan. Lihat DATEDIFF untuk deskripsi terperinci tentang unit yang didukung dan singkatannya. Jika tidak cukup peristiwa yang cocok ditemukan dalam interval DURATION, <nilai default> dikembalikan.
when_clause Menentukan kondisi boolean untuk peristiwa yang akan dipertimbangkan dalam komputasi TERAKHIR. Jika tidak ada peristiwa yang cocok yang ditemukan dalam interval DURATION, <nilai default> dikembalikan. when_clause bersifat opsional.
Jenis Kembalian
Jenis data dari scalar_expression yang ditentukan. NULL dikembalikan jika scalar_expression
Keterangan Umum
LAST adalah nondeterministik. Peristiwa diproses dalam urutan temporal. Jika ada beberapa peristiwa dengan peristiwa stempel waktu yang sama diproses dalam urutan kedatangan.
Menerapkan LAST pada kumpulan hasil fungsi windowing dapat menghasilkan hasil yang tidak terduga. Fungsi windowing mengubah tanda waktu peristiwa, karena setiap operasi jendela menghasilkan peristiwa di akhir jendela. Tanda waktu peristiwa saat ini dapat diakses dengan system.timestamp(), setelah operasi jendela, itu akan berbeda dari atribut waktu peristiwa asli. Jika LAST tidak dapat dipindahkan sebelum operasi jendela, pertimbangkan untuk menggunakan CollectTop, mengurutkan berdasarkan waktu peristiwa asli.
Contoh
Temukan pembacaan sensor non-null terbaru:
SELECT
sensorId,
LAST(reading) OVER (PARTITION BY sensorId LIMIT DURATION(hour, 1) WHEN reading IS NOT NULL)
FROM input
Temukan terakhir kali saat membaca lebih besar dari 50:
SELECT
sensorId,
LAST(System.Timestamp()) OVER (PARTITION BY sensorId LIMIT DURATION(hour, 1) WHEN reading > 50 )
FROM input