Skriva frågor med KQL
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
, aggregate
eller 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.
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.
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.
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.