Skriva frågor med KQL

Slutförd

Om du vill köra frågor mot data från en tabell i en KQL-databas kan du använda Kusto-frågespråk (KQL) som används för att skriva frågor i Azure Data Explorer, Azure Monitor Log Analytics, Azure Sentinel och Microsoft Fabric. KQL är en skrivskyddad begäran om att bearbeta data och returnera resultat. KQL-frågor görs av en eller flera frågeinstruktioner.

En frågeuttryck består av ett tabellnamn följt av en eller flera operatorer som take, filter, transform, aggregateeller join data. Till exempel:


sales
| take 10

KQL-frågor skapas med hjälp av relationsoperatorer för att filtrera och transformera data med en syntax som liknar SQL. KQL-syntaxen innehåller dock tillägg som möjliggör avancerad text- och mönstermatchning, statistisk analys, tidsserieprojektioner, geo-spatiala algoritmer och maskininlärningsalgoritmer.

Skapa och läsa in tabeller i KQL

I de flesta fall skapar du tabeller och definierar deras källa med hjälp av de grafiska verktygen i Microsoft Fabric. Du kan dock använda KQL-instruktioner för att skapa och läsa in tabeller.

Om du vill skapa en tabell och mata in data i den .create table kan du använda kommandot som skapar en ny tom tabell med ett angivet schema. Du måste ange tabellnamnet, kolumnnamnen och deras datatyper och eventuellt vissa egenskaper, till exempel dokument eller mapp. Till exempel:

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

Det här kommandot skapar en tabell med namnet försäljning med 9 kolumner av olika datatyper.

Du kan mata in data i en tabell på flera sätt, inklusive ingest into kommandot, som du ser i det här exemplet:

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

Hämta data från en tabell

En grundläggande KQL-fråga består av att välja data från en tabell och tillämpa filter och transformeringar på data. I följande exempel ska vi bara fråga alla data från sales tabellen.

sales

Utdata från den här frågan skulle se ut ungefär som i följande exempel:

SalesOrderNumber SalesOrderLineItem OrderDate CustomerName EmailAddress Artikel Kvantitet UnitPrice TaxAmount
SO43701 1 2019-07-01T00:00:00Z Christy Zhu christy12@adventure-works.com Mountain-100 Silver 44 1 3399.99 271.9992
SO43704 1 2019-07-01T00:00:00Z Julio Ruiz julio1@adventure-works.com Mountain-100 Svart 48 1 3374.99 269.9992
SO43705 1 2019-07-01T00:00:00Z Curtis Lu curtis9@adventure-works.com Mountain-100 Silver 38 1 3399.99 271.9992
SO43700 1 2019-07-01T00:00:00Z Ruben Prasad ruben10@adventure-works.com Väg 650 Svart 62 1 699.0982 55.9279
SO43703 1 2019-07-01T00:00:00Z Albert Alvarez albert7@adventure-works.com Väg 150 Röd 62 1 3578.27 286.2616
SO43697 1 2019-07-01T00:00:00Z Cole Watson cole1@adventure-works.com Väg 150 Röd 62 1 3578.27 286.2616
SO43699 1 2019-07-01T00:00:00Z Sydney Wright sydney61@adventure-works.com Mountain-100 Silver 44 1 3399.99 271.9992
... ... ... ... ... ... ... ... ...

Frågeutdata kan sedan analyseras ytterligare med hjälp av visualiseringsverktyg eller integreras med andra program för att skapa anpassade instrumentpaneler och automatiserade arbetsflöden.

I nästa exempel returneras fem rader från försäljningstabellen i KQL-databasen med hjälp av -instruktionen take , vilket är ett enkelt och snabbt sätt att visa ett litet urval av poster när du bläddrar i data.

sales
| take 5

Den här gången innehåller resultatet fem rader:

SalesOrderNumber SalesOrderLineItem OrderDate CustomerName EmailAddress Artikel Kvantitet UnitPrice TaxAmount
SO43701 1 2019-07-01T00:00:00Z Christy Zhu christy12@adventure-works.com Mountain-100 Silver 44 1 3399.99 271.9992
SO43704 1 2019-07-01T00:00:00Z Julio Ruiz julio1@adventure-works.com Mountain-100 Svart 48 1 3374.99 269.9992
SO43705 1 2019-07-01T00:00:00Z Curtis Lu curtis9@adventure-works.com Mountain-100 Silver 38 1 3399.99 271.9992
SO43700 1 2019-07-01T00:00:00Z Ruben Prasad ruben10@adventure-works.com Väg 650 Svart 62 1 699.0982 55.9279
SO43703 1 2019-07-01T00:00:00Z Albert Alvarez albert7@adventure-works.com Väg 150 Röd 62 1 3578.27 286.2616

Filtrera med where -satsen

I KQL where är en sats som används för att filtrera raderna i en tabell baserat på ett angivet villkor. Satsen where följs av ett booleskt uttryck som utvärderas till true eller false för varje rad i tabellen. Rader som uttrycket utvärderas till true ingår i resultatet, medan rader som uttrycket utvärderas för undantas för false .

Operatorn contains används i frågans sats för att filtrera raderna i where försäljningstabellen baserat på om kolumnen Item innehåller strängen "Mountain-100".

sales
| where Item contains 'Mountain-100'

Resultatet inkluderar endast försäljning för artiklar som innehåller "Mountain-100":

SalesOrderNumber SalesOrderLineItem OrderDate CustomerName EmailAddress Artikel Kvantitet UnitPrice TaxAmount
SO43701 1 2019-07-01T00:00:00Z Christy Zhu christy12@adventure-works.com Mountain-100 Silver 44 1 3399.99 271.9992
SO43704 1 2019-07-01T00:00:00Z Julio Ruiz julio1@adventure-works.com Mountain-100 Svart 48 1 3374.99 269.9992
SO43705 1 2019-07-01T00:00:00Z Curtis Lu curtis9@adventure-works.com Mountain-100 Silver 38 1 3399.99 271.9992
SO43699 1 2019-07-01T00:00:00Z Sydney Wright sydney61@adventure-works.com Mountain-100 Silver 44 1 3399.99 271.9992
... ... ... ... ... ... ... ... ...

KQL fungerar bra när du vill arbeta med tidsseriedata. Om du till exempel vill filtrera försäljningsdata för att visa beställningar som har inträffat mellan två datetime-värden. Du kan dra nytta av många tidsseriefunktioner, inklusive now(), som returnerar den aktuella tiden. Det här exemplet returnerar alla beställningar som inträffat under den senaste dagen (24 timmar).

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

Resultaten filtreras för att endast inkludera beställningar inom den angivna tidsperioden.

SalesOrderNumber SalesOrderLineItem OrderDate CustomerName EmailAddress Artikel Kvantitet UnitPrice TaxAmount
SO49171 1 2023-05-01T22:01:00Z Mariah Foster mariah21@adventure-works.com Väg-250 Svart 48 1 2181.5625 174.525
SO49172 1 2021-05-01T23:55:00Z Brian Howard brian23@adventure-works.com Väg-250 Röd 44 1 2443.35 195.468
SO49173 1 2021-05-02T01:10:00Z Linda Alvarez linda19@adventure-works.com Mountain-200 Silver 38 1 2071.4196 165.7136
... ... ... ... ... ... ... ... ...

Sortera frågeresultat

Den här frågan använder operatorn sort för att hämta försäljning av "Mountain-100"-objekt sorterade så att den senaste försäljningen visas först:

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

Resultatet ser ut ungefär som i det här exemplet:

SalesOrderNumber SalesOrderLineItem OrderDate CustomerName EmailAddress Artikel Kvantitet UnitPrice TaxAmount
SO43699 1 2023-05-01T00:00:00Z Sydney Wright sydney61@adventure-works.com Mountain-100 Silver 44 1 3399.99 271.9992
SO43705 1 2023-04-20T00:00:00Z Curtis Lu curtis9@adventure-works.com Mountain-100 Silver 38 1 3399.99 271.9992
SO43704 1 2023-04-12T00:00:00Z Julio Ruiz julio1@adventure-works.com Mountain-100 Svart 48 1 3374.99 269.9992
SO43701 1 2023-03-27T00:00:00Z Christy Zhu christy12@adventure-works.com Mountain-100 Silver 44 1 3399.99 271.9992
... ... ... ... ... ... ... ... ...

Sammanfatta och aggregera

Du kan använda operatorn summarize för att gruppera data efter en kolumn och skapa en ny kolumn med en aggregering för gruppen. Följande fråga returnerar till exempel den totala kvantiteten för varje objekt som har sålts.

sales
| summarize ItemsSold= sum(Quantity) by Item

Resultatet inkluderar en kolumn baserat på den aggregeringsfunktion som används (i det här fallet sum())

Artikel ObjektSålda
Vattenflaska - 30 oz. 2,097
Korrigeringspaket/8 korrigeringar 1,621
Mountain Tire Tube 1,581
Vägdäcksrör 1 212
... ...

Använda Copilot för att hjälpa till med frågeuppsättningsfrågor

En ny funktion i Microsofts realtidsinformationsverktyg är möjligheten att använda Copilot för realtidsinformation. Med Copilot kan du skriva frågor på naturligt språk i stället för att skriva eller snabbt behöva lära dig KQL-frågor.

När administratören aktiverar Copilot visas alternativet i den översta menyraden i dina frågeuppsättningar. När du ställer en fråga om dina data genererar Copilot KQL-koden för att besvara din fråga. Du kan skapa flera frågor i frågeuppsättningen med den här metoden utan kod för att samla in användbar information för användarförbrukning.

Skärmbild av Nocode Copilot-metoden med hjälp av Querysets.

När du har frågor i frågeuppsättningen kan du fästa dem på en befintlig instrumentpanel eller skapa en ny instrumentpanel. Det gör du genom att välja de frågor som du vill fästa och sedan välja Fäst på instrumentpanelen. Detta ger dig ett fönster för att utföra andra åtgärder.

Skärmbild av nocode Copilot-pin till instrumentpanelsfunktionen.

Du kan också lägga till en frågeuppsättningsfråga i en Power BI-rapport genom att markera önskad fråga och sedan välja Skapa PowerBI-rapport.

Skärmbild av Nocode Copilot Build PowerBI-rapport.

Kommentar

Du kan bara välja en fråga i taget med hjälp av Fäst på instrumentpanelen eller Skapa PowerBI-rapporten , men du kan lägga till instrumentpanelselement i befintliga instrumentpaneler.