KQL ile sorgu yazma

Tamamlandı

KQL veritabanındaki bir tablodan veri sorgulamak için Azure Veri Gezgini, Azure İzleyici Log Analytics, Azure Sentinel ve Microsoft Fabric'te sorgu yazmak için kullanılan Kusto Sorgu Dili (KQL) kullanabilirsiniz. KQL, verileri işlemek ve sonuçları döndürmek için yapılan salt okunur bir istektir. KQL sorguları bir veya daha fazla sorgu deyiminden oluşur.

Sorgu deyimi, bir tablo adından ve ardından , , , veya verilerinden takeoluşan bir veya join daha fazla işleçden oluşur. aggregatetransformfilter Örneğin:

KQL sorguları, SQL'e benzer bir söz dizimi kullanılarak verileri filtrelemek ve dönüştürmek için ilişkisel işleçler kullanılarak oluşturulur. Ancak KQL söz dizimi gelişmiş metin ve desen eşleştirme, istatistiksel analiz, zaman serisi projeksiyonları, coğrafi uzamsal ve makine öğrenmesi algoritmalarını etkinleştiren uzantılar içerir.

KQL'de tablo oluşturma ve yükleme

Çoğu durumda, Microsoft Fabric'teki grafik araçları kullanarak tablolar oluşturur ve kaynaklarını tanımlarsınız. Ancak, tablo oluşturmak ve yüklemek için KQL deyimlerini kullanabilirsiniz.

Tablo oluşturmak ve bu tabloya veri almak için komutunu kullanabilirsiniz .create table . Bu komut, belirtilen şemaya sahip yeni bir boş tablo oluşturur. Tablo adını, sütun adlarını ve veri türlerini ve isteğe bağlı olarak docstring veya klasör gibi bazı özellikleri sağlamanız gerekir. Örneğin:

 .create table sales (
     SalesOrderNumber: string,
     SalesOrderLineItem: int,
     OrderDate: datetime,
     CustomerName: string,
     EmailAddress: string,
     Item: string,
     Quantity: int,
     UnitPrice: real,
     TaxAmount: real)

Bu komut, farklı veri türlerinde 9 sütun içeren sales adlı bir tablo oluşturur.

Bu örnekte gösterildiği gibi, komutu da dahil olmak üzere bir tabloya ingest into birden çok yolla veri alabilirsiniz:

 .ingest into table sales 'https://<StorageAccountName>.blob.core.windows.net/container/<TableName>.csv' 
 with (ignoreFirstRecord = true)

Tablodan veri alma

Temel KQL sorgusu, bir tablodan veri seçme ve verilere filtre ve dönüştürme uygulamadan oluşur. Aşağıdaki örnekte, yalnızca tablodaki tüm verileri sales sorgulayacağız.

sales

Bu sorgunun çıktısı aşağıdaki örneğe benzer olacaktır:

SalesOrderNumber SalesOrderLineItem OrderDate CustomerName EmailAddress Kalem Miktar UnitPrice TaxAmount
SO43701 1 2019-07-01T00:00:00Z Christy Zhu christy12@adventure-works.com Dağ-100 Gümüş 44 1 3399.99 271.9992
SO43704 1 2019-07-01T00:00:00Z Julio Ruiz julio1@adventure-works.com Dağ-100 Siyah 48 1 3374.99 269.9992
SO43705 1 2019-07-01T00:00:00Z Curtis Lu curtis9@adventure-works.com Dağ-100 Gümüş 38 1 3399.99 271.9992
SO43700 1 2019-07-01T00:00:00Z Ruben Prasad ruben10@adventure-works.com Yol-650 Siyah 62 1 699.0982 55.9279
SO43703 1 2019-07-01T00:00:00Z Albert Alvarez albert7@adventure-works.com Yol-150 Kırmızı 62 1 3578.27 286.2616
SO43697 1 2019-07-01T00:00:00Z Cole Watson cole1@adventure-works.com Yol-150 Kırmızı 62 1 3578.27 286.2616
SO43699 1 2019-07-01T00:00:00Z Sidney Wright sydney61@adventure-works.com Dağ-100 Gümüş 44 1 3399.99 271.9992
... ... ... ... ... ... ... ... ...

Daha sonra sorgu çıktısı görselleştirme araçları kullanılarak daha fazla analiz edilebilir veya özel panolar ve otomatik iş akışları oluşturmak için diğer programlarla tümleştirilebilir.

Sonraki örnek, verileri tararken küçük bir kayıt örneğini görüntülemenin basit ve hızlı bir yolu olan deyimini take kullanarak KQL veritabanındaki satış tablosundan beş satır döndürür.

sales
| take 5

Bu kez, sonuçlar beş satır içerir:

SalesOrderNumber SalesOrderLineItem OrderDate CustomerName EmailAddress Kalem Miktar UnitPrice TaxAmount
SO43701 1 2019-07-01T00:00:00Z Christy Zhu christy12@adventure-works.com Dağ-100 Gümüş 44 1 3399.99 271.9992
SO43704 1 2019-07-01T00:00:00Z Julio Ruiz julio1@adventure-works.com Dağ-100 Siyah 48 1 3374.99 269.9992
SO43705 1 2019-07-01T00:00:00Z Curtis Lu curtis9@adventure-works.com Dağ-100 Gümüş 38 1 3399.99 271.9992
SO43700 1 2019-07-01T00:00:00Z Ruben Prasad ruben10@adventure-works.com Yol-650 Siyah 62 1 699.0982 55.9279
SO43703 1 2019-07-01T00:00:00Z Albert Alvarez albert7@adventure-works.com Yol-150 Kırmızı 62 1 3578.27 286.2616

Yan tümcesiyle where filtreleme

KQL'de, where tablonun satırlarını belirtilen koşula göre filtrelemek için kullanılan bir yan tümcedir. Yan tümcesini where , tablodaki her satır için true veya false olarak değerlendiren bir Boole ifadesi izler. İfadenin değerlendirildiği true satırlar sonuda dahil edilirken, ifadenin değerlendirildiği false satırlar dışlanır.

contains İşleç, sorgunun yan tümcesindewhere, Item sütununun "Mountain-100" dizesini içerip içermediğine bağlı olarak satış tablosunun satırlarını filtrelemek için kullanılır.

sales
| where Item contains 'Mountain-100'

Sonuçlar yalnızca "Mountain-100" içeren ürünler için satışları içerir:

SalesOrderNumber SalesOrderLineItem OrderDate CustomerName EmailAddress Kalem Miktar UnitPrice TaxAmount
SO43701 1 2019-07-01T00:00:00Z Christy Zhu christy12@adventure-works.com Dağ-100 Gümüş 44 1 3399.99 271.9992
SO43704 1 2019-07-01T00:00:00Z Julio Ruiz julio1@adventure-works.com Dağ-100 Siyah 48 1 3374.99 269.9992
SO43705 1 2019-07-01T00:00:00Z Curtis Lu curtis9@adventure-works.com Dağ-100 Gümüş 38 1 3399.99 271.9992
SO43699 1 2019-07-01T00:00:00Z Sidney Wright sydney61@adventure-works.com Dağ-100 Gümüş 44 1 3399.99 271.9992
... ... ... ... ... ... ... ... ...

Zaman serisi verileriyle çalışmak istediğinizde KQL iyi çalışır. Örneğin, satış verilerini iki tarih saat değeri arasında gerçekleşen siparişleri gösterecek şekilde filtrelemek için. dahil olmak üzere now()geçerli saati döndüren birçok zaman serisi işlevinden yararlanabilirsiniz. Bu örnek, son gün (24 saat) içinde gerçekleşen tüm siparişleri döndürür.

sales
| where OrderDate between (now(-1d) .. now())

Sonuçlar yalnızca belirtilen süre içindeki siparişleri içerecek şekilde filtrelenir.

SalesOrderNumber SalesOrderLineItem OrderDate CustomerName EmailAddress Kalem Miktar UnitPrice TaxAmount
SO49171 1 2023-05-01T22:01:00Z Mariah Foster mariah21@adventure-works.com Yol-250 Siyah 48 1 2181.5625 174.525
SO49172 1 2021-05-01T23:55:00Z Brian Howard brian23@adventure-works.com Yol-250 Kırmızı 44 1 2443.35 195.468
SO49173 1 2021-05-02T01:10:00Z Linda Alvarez linda19@adventure-works.com Dağ-200 Gümüş 38 1 2071.4196 165.7136
... ... ... ... ... ... ... ... ...

Sorgu sonuçlarını sıralama

Bu sorgu, sort "Mountain-100" öğelerinin satışlarını almak için işlecini kullanır; böylece en son satışlar ilk olarak gösterilir:

sales
| where Item contains 'Mountain-100'
| sort by OrderDate desc

Sonuçlar şu örneğe benzer:

SalesOrderNumber SalesOrderLineItem OrderDate CustomerName EmailAddress Kalem Miktar UnitPrice TaxAmount
SO43699 1 2023-05-01T00:00:00Z Sidney Wright sydney61@adventure-works.com Dağ-100 Gümüş 44 1 3399.99 271.9992
SO43705 1 2023-04-20T00:00:00Z Curtis Lu curtis9@adventure-works.com Dağ-100 Gümüş 38 1 3399.99 271.9992
SO43704 1 2023-04-12T00:00:00Z Julio Ruiz julio1@adventure-works.com Dağ-100 Siyah 48 1 3374.99 269.9992
SO43701 1 2023-03-27T00:00:00Z Christy Zhu christy12@adventure-works.com Dağ-100 Gümüş 44 1 3399.99 271.9992
... ... ... ... ... ... ... ... ...

Özetleme ve toplama

işlecini summarize kullanarak verileri bir sütuna göre gruplandırabilir ve grup için toplama içeren yeni bir sütun oluşturabilirsiniz. Örneğin, aşağıdaki sorgu satılan her öğenin toplam miktarını döndürür.

sales
| summarize ItemsSold= sum(Quantity) by Item

Sonuçlar, kullanılan toplama işlevini temel alan bir sütun içerir (bu örnekte sum())

Kalem ItemsSold
Su Şişesi - 30 oz. 2,097
Patch Kit/8 Yamalar 1,621
Dağ Lastiği Tüpü 1,581
Yol Lastiği Tüpü 1.212
... ...

Sorgu kümesi sorgularına yardımcı olmak için Copilot kullanma

Microsoft Gerçek Zamanlı Zeka araçlarının yeni özelliklerinden biri, Gerçek Zamanlı Zeka için Copilot'u kullanabilmektir. Copilot, KQL sorgularını hızlı bir şekilde öğrenmek yerine doğal dil istemleri yazmanızı sağlar.

Yöneticiniz Copilot'ı etkinleştirdiğinde, sorgu kümelerinizin üst menü çubuğunda seçeneğini görürsünüz. Verilerinizle ilgili bir soru sorduğunuzda Copilot, sorunuzu yanıtlamak için KQL Kodunu oluşturur. Kullanıcı tüketimine yönelik yararlı bilgiler toplamak için bu kod içermeyen yaklaşımı kullanarak sorgu kümesi içinde birkaç sorgu oluşturabilirsiniz.

Querysets kullanan Nocode Copilot yaklaşımının ekran görüntüsü.

Sorgu kümesinde sorgularınız olduktan sonra bunları mevcut bir panoya sabitleyebilir veya yeni bir pano oluşturabilirsiniz. Bunu yapmak için, sabitlenmiş olmasını istediğiniz sorguları seçin ve ardından Panoya sabitle'yi seçin. Bu size başka eylemler gerçekleştirmeniz için bir pencere sağlar.

Nocode Copilot pin to dashboard özelliğinin ekran görüntüsü.

Ayrıca tercih ettiğiniz sorguyu vurgulayarak ve ardından PowerBI oluştur raporunu seçerek Power BI Raporuna sorgu kümesi sorgusu ekleyebilirsiniz.

Nocode Copilot Build PowerBI Raporunun ekran görüntüsü.

Not

Panoya Sabitle veya PowerBI Oluştur raporunu kullanarak aynı anda yalnızca bir sorgu seçebilirsiniz, ancak pano öğelerini mevcut panolara ekleyebilirsiniz.