Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
SQL kod düzenleyicisi olarak da adlandırılan SQL işleci, Microsoft Fabric olay akışlarında yeni bir veri dönüştürme özelliğidir. SQL işleçleri, basit SQL ifadelerini kullanarak kendi özel veri dönüştürme mantığınızı kolayca tanımlayabileceğiniz bir kod düzenleme deneyimi sağlar. Bu makalede, bir olay akışındaki veri dönüştürmeleri için SQL işlecinin nasıl kullanılacağı açıklanmaktadır.
Note
Alt çizgi (_) veya nokta (.) içeren olay akışı yapıt adları SQL işleçleriyle uyumlu değildir. En iyi deneyim için yapıt adında alt çizgi veya nokta kullanmadan yeni bir olay akışı oluşturun.
Prerequisites
- Fabric kapasite lisans modu veya Katkıda Bulunan veya daha yüksek izinlere sahip deneme lisansı modu altında bir çalışma alanına erişim.
Olay akışına SQL işleci ekleme
Sql işleci kullanarak veri akışlarınızda akış işleme işlemleri gerçekleştirmek için aşağıdaki yönergeleri kullanarak olay akışınıza bir SQL işleci ekleyin:
Yeni bir olay akışı oluşturun. Ardından aşağıdaki seçeneklerden birini kullanarak buna bir SQL işleci ekleyin:
Olay akışınıza yeni bir SQL düğümü eklenir. SQL işlecini ayarlamaya devam etmek için kalem simgesini seçin.
SQL Kodu bölmesinde, olay akışındaki SQL işleç düğümü için benzersiz bir ad belirtin.
Sorgu alanında sorguyu düzenleyin veya Tam ekran kod düzenleyicisi görünümüne girmek için Sorguyu düzenle'yi seçin.
Tam ekran kod düzenleyicisi modunda sol tarafta bir giriş/çıkış gezgini bölmesi bulunur. Kod düzenleyicisi bölümü ayarlanabilir, böylece tercihlerinize göre yeniden boyutlandırabilirsiniz. Alttaki önizleme bölümü hem giriş verilerinizi hem de sorgunuzun test sonucunu görüntülemenizi sağlar.
Çıkışlar bölümündeki metni seçin ve hedef düğüm için bir ad girin. SQL operatörü, etkinlik merkezi, veri gölü evi, aktivatör veya akış dahil olmak üzere tüm Gerçek Zamanlı İstihbarat hedeflerini destekler.
SQL işleci aracılığıyla işlenen verilerin yazıldığı çıkış hedefi için bir diğer ad veya ad belirtin.
Gerekli veri dönüşümü için SQL sorgusu ekleyin.
Olay akışı, Azure Stream Analytics üzerine kuruludur ve Stream Analytics sorgu dilinin aynı sorgu semantiğini destekler. Söz dizimi ve kullanımı hakkında daha fazla bilgi edinmek için bkz. Azure Stream Analytics ve Eventstream Sorgu Dili Başvurusu.
Temel sorgu yapısı aşağıdadır:
SELECT column1, column2, ... INTO [output alias] FROM [input alias]Bu sorgu örneği, bir odada dakikada bir yüksek sıcaklıkların algılanması işlemini gösterir:
SELECT System.Timestamp AS WindowEnd, roomId, AVG(temperature) AS AvgTemp INTO output FROM input GROUP BY roomId, TumblingWindow(minute, 1) HAVING AVG(temperature) > 75Bu sorgu örneği, sıcaklığı kategorilere ayırmak için bir
CASEdeyim gösterir: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 SensorInputŞeritte Test sorgusu komutunu kullanarak dönüştürme mantığını doğrulayın. Test sorgusu sonuçları , Test sonucu sekmesinde görüntülenir.
Testi bitirdiğinizde, olay akışı tuvaline geri dönmek için şeritte Kaydet'i seçin.
SQL Kodu bölmesinde Kaydet düğmesi etkinse ayarları kaydetmek için seçin.
Hedefi yapılandırın.
Diğer örnekler
Aşağıdaki örneklerde SQL işleciyle uygulayabileceğiniz yaygın gerçek zamanlı analiz senaryoları gösterilmektedir.
Dakika başına şehir satış toplaması - Şehre göre gruplandırılmış sabit, örtüşmeyen bir dakikalık satış toplamlarını hesaplamak için kullanın TumblingWindow :
SELECT
System.Timestamp AS WindowEnd,
city,
SUM(salesAmount) AS TotalSales
INTO
output
FROM
input
GROUP BY
city,
TumblingWindow(minute, 1)
Ani artış ve bot tespiti - Dakikada bir değerlendirilen beş dakikalık hareketli süre içinde olağan dışı derecede yüksek sayıda sipariş veren kullanıcıları algılamak için HoppingWindow kullanın.
SELECT
System.Timestamp AS WindowEnd,
userId,
COUNT(*) AS OrderCount
INTO
output
FROM
input
GROUP BY
userId,
HoppingWindow(minute, 5, 1)
HAVING
COUNT(*) > 10
Güncellenen taban çizgisine karşı anomali işaretleme - Güncellenen bir ortalama hesaplamak için HoppingWindow kullanın ve maksimum ölçüm değeri pencere içinde ortalamanın iki katını aşan cihazları işaretleyin; bu durum olası bir anomaliyi gösterir:
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)
Tek bir SQL işlecinden birden çok hedefe yazma
SQL işleciyle, SQL sorgunuza birden çok yan tümce ekleyerek ve birden çok çıkış tanımlayarak birden çok INTO çıkış havuzuna veya hedefe veri gönderebilirsiniz.
Sorgu düzenleyicisinde birden çok çıkış tanımlama
SQL kodu bölmesini açmak için SQL işleç düğümünde Düzenle (Kalem simgesi) öğesini seçin.
SQL Kodu bölmesinde Sorguyu düzenle'yi seçerek tam ekran kod düzenleyicisini açın.
Tam ekran kod düzenleyicisinde + bölümünü seçerek yeni bir çıkış ekleyin. İstediğiniz çıkış türünü seçin. Sorguda kullanabileceğiniz çıktının bir diğer adını oluşturur. Oluşturulan çıkışın adını seçin ve istediğiniz bir ad girin.
Birden çok SELECT ... INTO deyimi kullan
Her bir SELECT ifadesi farklı bir çıkışa yazabilir. Çıktıyı birden çok hedefe yazmak için sorguyu ekleyin.
Aşağıdaki sorgu örneğinde, ilk SELECT deyimi, RawArchive adlı bir çıkışa yazar (türü: Lakehouse) ve ikinci SELECT deyimi, AggregationResults adlı bir çıkışa yazar (türü: 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
Ara mantığı yeniden kullanma (en iyi yöntem)
Yinelenen mantık kullanmaktan kaçınmak istiyorsanız, bir WITH yan tümcesi kullanın ve buradan birden çok çıktıya dağıtın. Aşağıdaki örnekte, InputStream ortak tablo ifadesi (CTE), giriş akışından bir kez okunacak şekilde tanımlanır ve ardından iki SELECT deyim, farklı çıkışlara yazmak için InputStream CTE'ye başvurur. Giriş akışından birden çok kez okumayı önlediğinden bu yaklaşım daha verimlidir.
Giriş akışından bir kez okumak ve birden çok çıkışa yazmak için SQL kod düzenleyicisine aşağıdaki sorguyu girin.
--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(*) > 100Sorgu sonucunu doğrulamak için Sorguyu test et'i seçin. Sorguda tanımlanan her çıkışın Test sonuçları panelinde ayrı bir sekmesi vardır.
Kaydet'i seçerek sorguyu kaydedin ve düzenleyiciden çıkın.
SQL Düzenleyicisi bölmesinde Kaydet'i yeniden seçin.
SQL işlecinden oluşturulan her hedef düğümü seçin ve her biri için hedef ayarlarını yapılandırın.
Yapılandırmayı tamamladıktan sonra, olay akışınız sql işleci düğümünün iki çıkış hedefine sahip olduğu aşağıdaki örneğe benzemelidir.
SQL işlecinde olay sıralama ilkelerini yapılandırma
SQL işleciyle, olay veya uygulama süresini kullanarak verileri işleyebilirsiniz. Eventstream varsayılan olarak varış saatini kullanır.
Olay zamanına göre işlemek için sorgunuzda kullanarak TIMESTAMP BY açıkça yapılandırmanız gerekir.
Örnek girdi
{
"deviceId": "device123",
"temperature": 72,
"eventTime": "2024-01-01T12:00:00Z"
}
Olay zamanını kullanan örnek sorgu
SELECT
deviceId,
temperature,
System.Timestamp() AS EventTimestamp
INTO
Output
FROM
Input
TIMESTAMP BY eventTime;
Sql işlecinin gelişmiş ayarları altında geç varış ve sipariş dışı olayları için eşikler de ekleyebilirsiniz.
Limitations
SQL işleci, tüm dönüştürme mantığınızı merkezileştirmek için tasarlanmıştır. Sonuç olarak, bunu aynı işleme yolu içindeki diğer yerleşik işleçler ile birlikte kullanamazsınız. Birden çok SQL işlecini tek bir yolda zincirleme de desteklenmez.
Topolojinize bir SQL işleci eklerseniz yeni hedef düğümler oluşturmanız gerekir. Mevcut hedef düğümler SQL işleciyle yeniden kullanılamaz.