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.
Operator SQL, juga disebut editor kode SQL, adalah kemampuan transformasi data baru dalam eventstream Microsoft Fabric. Operator SQL memberikan pengalaman pengeditan kode di mana Anda dapat dengan mudah menentukan logika transformasi data kustom Anda sendiri dengan menggunakan ekspresi SQL sederhana. Artikel ini menjelaskan cara menggunakan operator SQL untuk transformasi data dalam eventstream.
Note
Nama artefak eventstream yang menyertakan garis bawah (_) atau titik (.) tidak kompatibel dengan operator SQL. Untuk pengalaman terbaik, buat eventstream baru tanpa menggunakan garis bawah atau titik dalam nama artefak.
Prerequisites
- Akses ke ruang kerja dalam mode lisensi kapasitas Fabric atau mode lisensi uji coba dengan hak akses Kontributor atau lebih tinggi.
Menambahkan operator SQL ke eventstream
Untuk melakukan operasi pemrosesan aliran pada aliran data Anda dengan menggunakan operator SQL, tambahkan operator SQL ke eventstream Anda dengan menggunakan instruksi berikut:
Buat eventstream baru. Kemudian tambahkan operator SQL ke dalamnya dengan menggunakan salah satu opsi berikut:
Simpul SQL baru ditambahkan ke eventstream Anda. Pilih ikon pensil untuk terus menyiapkan operator SQL.
Pada panel Kode SQL , tentukan nama unik untuk simpul operator SQL di eventstream.
Edit kueri di area kueri, atau pilih Edit kueri untuk memasukkan tampilan editor kode layar penuh.
Mode editor kode layar penuh menampilkan panel penjelajah input/output di sisi kiri. Bagian editor kode dapat disesuaikan, sehingga Anda dapat mengubah ukurannya sesuai dengan preferensi Anda. Bagian pratinjau di bagian bawah memungkinkan Anda menampilkan data input dan hasil pengujian kueri Anda.
Pilih teks di bagian Output , lalu masukkan nama untuk simpul tujuan. Operator SQL mendukung semua tujuan Real-Time Intelligence, termasuk eventhouse, lakehouse, activator, atau stream.
Tentukan alias atau nama untuk tujuan output tempat data yang diproses melalui operator SQL ditulis.
Tambahkan kueri SQL untuk transformasi data yang diperlukan.
Eventstream dibangun di atas Azure Stream Analytics, dan mendukung semantik kueri yang sama dari bahasa kueri Azure Stream Analytics. Untuk mempelajari selengkapnya tentang sintaks dan penggunaan, lihat Azure Stream Analytics dan Referensi Bahasa Kueri Eventstream.
Berikut adalah struktur kueri dasar:
SELECT column1, column2, ... INTO [output alias] FROM [input alias]Contoh kueri ini menunjukkan deteksi suhu tinggi di ruangan setiap menit:
SELECT System.Timestamp AS WindowEnd, roomId, AVG(temperature) AS AvgTemp INTO output FROM input GROUP BY roomId, TumblingWindow(minute, 1) HAVING AVG(temperature) > 75Contoh kueri ini memperlihatkan
CASEpernyataan untuk mengategorikan suhu:SELECT deviceId, temperature, CASE WHEN temperature > 85 THEN 'High' WHEN temperature BETWEEN 60 AND 85 THEN 'Normal' ELSE 'Low' END AS TempCategory INTO CategorizedTempOutput FROM SensorInputPada pita, gunakan perintah Uji kueri untuk memvalidasi logika transformasi. Hasil kueri pengujian muncul pada tab Hasil pengujian .
Saat Anda selesai menguji, pilih Simpan pada pita untuk kembali ke kanvas eventstream.
Pada panel Kode SQL , jika tombol Simpan diaktifkan, pilih untuk menyimpan pengaturan.
Konfigurasikan tujuan.
Contoh lainnya
Contoh berikut menunjukkan skenario analitik real-time umum yang dapat Anda terapkan dengan operator SQL.
Agregasi penjualan kota per menit - Gunakan TumblingWindow untuk menghitung total penjualan tetap dan tidak tumpang tindih satu menit yang dikelompokkan menurut kota:
SELECT
System.Timestamp AS WindowEnd,
city,
SUM(salesAmount) AS TotalSales
INTO
output
FROM
input
GROUP BY
city,
TumblingWindow(minute, 1)
Deteksi ledakan dan bot - Gunakan HoppingWindow untuk mendeteksi pengguna yang melakukan jumlah pesanan yang luar biasa tinggi dalam jendela bergulir lima menit, dievaluasi setiap menit:
SELECT
System.Timestamp AS WindowEnd,
userId,
COUNT(*) AS OrderCount
INTO
output
FROM
input
GROUP BY
userId,
HoppingWindow(minute, 5, 1)
HAVING
COUNT(*) > 10
Penandaan anomali terhadap garis besar bergulir - Gunakan HoppingWindow untuk menghitung rata-rata bergulir dan menandai perangkat yang nilai metrik maksimumnya melebihi dua kali rata-rata dalam jendela, yang menunjukkan potensi anomali:
SELECT
System.Timestamp AS WindowEnd,
deviceId,
AVG(metricValue) AS RollingAvg,
MAX(metricValue) AS CurrentMax
INTO
output
FROM
input
GROUP BY
deviceId,
HoppingWindow(minute, 10, 1)
HAVING
MAX(metricValue) > 2 * AVG(metricValue)
Menulis ke beberapa tujuan dari satu operator SQL
Dengan operator SQL, Anda dapat mengirim data ke beberapa sink output atau tujuan dengan menambahkan beberapa INTO klausa dalam kueri SQL Anda dan dengan menentukan beberapa output.
Menentukan beberapa output di editor kueri
Pilih Edit (ikon Pensil) pada simpul operator SQL untuk membuka panel Kode SQL .
Di panel Kode SQL , pilih Edit kueri untuk membuka editor kode layar penuh.
Di editor kode layar penuh, pilih + di bagian Output untuk menambahkan output baru. Pilih jenis output pilihan Anda. Ini membuat alias untuk output yang bisa Anda gunakan dalam kueri. Pilih nama output yang dibuat dan masukkan nama pilihan Anda.
Gunakan beberapa pernyataan SELECT ... INTO
Setiap SELECT pernyataan dapat menulis ke output yang berbeda. Tambahkan kueri untuk menulis output ke beberapa tujuan.
Dalam contoh kueri berikut, pernyataan pertama SELECT menulis ke output bernama RawArchive (jenis: Lakehouse), dan pernyataan kedua SELECT menulis ke output bernama AggregationResults (jenis: Eventhouse).
-- Query 1: Archive all data to Lakehouse
SELECT *
INTO [RawArchive]
FROM [SQLDemoES-stream]
-- Query 2: Aggregate and filter data to create a real time dashboard to an Eventhouse
SELECT System.Timestamp() AS EventTime, COUNT(*) AS EventCount
INTO [AggregationResults]
FROM [SQLDemoES-stream]
GROUP BY TumblingWindow(minute, 1)
HAVING COUNT(*) > 100
Menggunakan kembali logika perantara (praktik terbaik)
Jika Anda ingin menghindari duplikasi logika, gunakan klausa WITH dan sebarkan ke beberapa output dari sana. Dalam contoh berikut, InputStream ekspresi tabel umum (CTE) didefinisikan untuk membaca dari aliran input sekali, lalu kedua SELECT pernyataan mereferensikan InputStream CTE untuk menulis ke output yang berbeda. Pendekatan ini lebih efisien karena menghindari pembacaan dari aliran input beberapa kali.
Masukkan kueri berikut di editor kode SQL untuk membaca dari aliran input sekali dan menulis ke beberapa output.
--Base query: Reading input stream once With InputStream AS( SELECT * FROM [SQLDemoES-stream] ) -- Query 1: Archive all data to Lakehouse SELECT * INTO [RawArchive] FROM InputStream -- Query 2: Aggregate and filter data to create a real time dashboard to an Eventhouse SELECT System.Timestamp() AS EventTime, COUNT(*) AS EventCount INTO [AggregationResults] FROM InputStream GROUP BY TumblingWindow(minute, 1) HAVING COUNT(*) > 100Pilih Uji kueri untuk memvalidasi hasil kueri. Setiap output yang ditentukan dalam kueri memiliki tab terpisah di panel Hasil pengujian .
Pilih Simpan untuk menyimpan kueri dan keluar dari editor.
Pilih Simpan lagi di panel Editor SQL.
Pilih setiap simpul tujuan yang dibuat dari operator SQL, lalu konfigurasikan pengaturan tujuan untuk masing-masing simpul tersebut.
Setelah Anda menyelesaikan konfigurasi, eventstream Anda akan terlihat seperti contoh berikut, di mana simpul operator SQL memiliki dua tujuan output.
Mengonfigurasi kebijakan pemesanan peristiwa di operator SQL
Dengan operator SQL, Anda dapat memproses data menggunakan waktu peristiwa atau aplikasi. Secara default, Eventstream menggunakan waktu kedatangan. Untuk memproses berdasarkan waktu peristiwa, Anda harus secara eksplisit mengonfigurasinya menggunakan TIMESTAMP BY dalam kueri Anda.
Input contoh
{
"deviceId": "device123",
"temperature": 72,
"eventTime": "2024-01-01T12:00:00Z"
}
Kueri sampel menggunakan waktu peristiwa
SELECT
deviceId,
temperature,
System.Timestamp() AS EventTimestamp
INTO
Output
FROM
Input
TIMESTAMP BY eventTime;
Anda juga dapat menambahkan ambang batas untuk peristiwa dengan kedatangan terlambat dan peristiwa yang tidak berurutan di bawah pengaturan lanjutan operator SQL.
Limitations
Operator SQL dirancang untuk memusatkan semua logika transformasi Anda. Akibatnya, Anda tidak dapat menggunakannya bersama operator bawaan lainnya dalam jalur pemrosesan yang sama. Menautkan beberapa operator SQL dalam satu jalur juga tidak didukung.
Jika Anda menambahkan operator SQL ke topologi, Anda harus membuat simpul tujuan baru. Node tujuan yang sudah ada tidak dapat digunakan ulang dengan operator SQL.