- Vårt erbjudande
- Kundcase
- Insikter & Inspiration
- Om oss
/ Data & Integrations /
KQL – en djupdykning i data
Kusto Query Language (KQL) togs i bruk omkring 2014, då det utvecklades av Microsoft som en del av deras Azure Data Explorer-projekt (ursprungligen kallat "Kusto" och döpt efter dykpionjären Jacques Cousteau).
Azure Data Explorer, som är en snabb och högt skalbar datatjänst för att analysera stora mängder data, var den första plattformen som använde KQL. Syftet med att skapa KQL var att ge användare ett kraftfullt verktyg för att söka, analysera och visualisera stora datamängder.
Sedan dess har KQL integrerats i flera andra Microsoft-tjänster och har blivit ett viktigt verktyg för realtidsdataanalys inom Microsofts molntjänster.
Här är några av de plattformar och tjänster som har stöd för KQL:
- Azure Data Explorer
- Azure Monitor
- Log Analytics
- Azure Sentinel
- Microsoft Defender for Cloud
- Application Insights
- Microsoft Fabric
- Power BI (via Azure Data Explorer)
Här är några av de viktigaste faktorerna som gör KQL kraftfullt:
- Snabbhet och skalbarhet: KQL är utformad för att hantera och bearbeta stora mängder data mycket snabbt. Det är optimerat för realtidsanalys och kan utföra komplexa frågor på miljontals poster på bara några sekunder.
- Flexibilitet:KQL erbjuder en bred uppsättning funktioner och operators som gör det möjligt att skapa komplexa och anpassade frågor. Du kan filtrera, sortera, aggregera och transformera data på många olika sätt, vilket ger stor flexibilitet i analysen.
- Stark integration med Microsofts ekosystem: KQL är djupt integrerat i Microsofts molntjänster som Azure Monitor, Azure Sentinel och Azure Data Explorer, vilket gör det till ett naturligt val för datainsamling och analys i dessa miljöer. Det möjliggör smidiga arbetsflöden och analys av data från flera källor inom samma ekosystem.
- Specialiserat för logganalys: KQL är särskilt kraftfullt för logganalys, vilket är ett kritiskt inom många verksamheter. Det kan användas för att snabbt hitta och analysera mönster, fel, och säkerhetshot i stora loggdatabaser.
- Enkelt att lära sig och använda: Syntaxen i KQL är relativt enkel och lätt att förstå, särskilt för de som redan är bekanta med SQL. Detta gör det enkelt att komma igång med och använda för att utföra avancerade analyser.
- Visualisering och interaktiva analyser: Med integrationen till verktyg som Power BI och Azure Monitor kan KQL användas för att skapa interaktiva rapporter och dashboards som ger användare möjlighet att utforska data visuellt.
QKL vs SQL
Hur står sig KQL i jämförelse med SQL?
Azure Data Explorer har som bekant stöd för SQL, men KQL kan vara både enklare och mer kraftfullt, särskilt när det gäller analys av stora mängder logg- och tidsseriedata.
Här är några konkreta exempel:
1. Tidsbaserad dataanalys
SQL: För att utföra tidsbaserad analys, som att räkna antalet händelser per tidsintervall, behöver du vanligtvis en kombination av GROUP BY, DATEPART eller liknande funktioner. Detta kan bli komplext om du vill ha flexibla tidsintervall eller jämföra data mellan olika tidsperioder.
SELECT DATEPART(hour, timestamp) as Hour, COUNT(*) as EventCount
FROM EventLog
WHERE timestamp BETWEEN '2023-08-21' AND '2023-08-22'
GROUP BY DATEPART(hour, timestamp)
ORDER BY Hour;
KQL: I KQL är tidsbaserad analys betydligt enklare och mer intuitiv. Du kan använda summarize-operatorn tillsammans med bin() för att gruppera data i tidsintervall. Detta gör det enkelt att utföra aggregeringar över tid utan att behöva manipulera tidsobjektet.
EventLog
| where timestamp between(datetime(2023-08-21) .. datetime(2023-08-22))
| summarize EventCount = count() by bin(timestamp, 1h)
| order by timestamp asc
2. Logghantering och sökning
SQL: Att söka efter specifika ord i loggar med SQL kan vara tungrott, speciellt om du ska hantera stora datamängder. Du använder ofta LIKE med wildcards, vilket kan vara ineffektivt för stora datamängder.
SELECT * FROM EventLog
WHERE Message LIKE '%error%' AND Message LIKE '%timeout%'
KQL: I KQL kan du använda "has" som är optimerad för snabb textmatchning. Detta gör att du kan utföra komplexa sökningar i stora loggar med bättre prestanda och enklare syntax.
EventLog
| where Message has "error" and Message has "timeout"
3. Aggregering och pivotering
SQL: Att pivotera data eller utföra komplexa aggregeringar kan kräva flera CASE-satser eller användning av PIVOT, vilket kan göra syntaxen svårläst.
SELECT
COUNT(CASE WHEN severity = 'High' THEN 1 END) as HighSeverity,
COUNT(CASE WHEN severity = 'Low' THEN 1 END) as LowSeverity
FROM EventLog
KQL: I KQL är pivotering och aggregering simplare och mer intuitivt. Med hjälp av summarize kan du snabbt och enkelt aggregera data på flera dimensioner, och extend-operatorn gör det enkelt att skapa nya beräknade kolumner.
EventLog
| summarize HighSeverity = countif(severity == "High"), LowSeverity =
countif(severity == "Low")
Slutsats
KQL är ofta enklare att använda för scenarier som involverar stora mängder data, särskilt loggar och tidsserier. Dess syntax är designad för att vara direkt och kraftfull, vilket gör att komplexa frågor kan skrivas med mindre kod än vad som är möjligt med SQL, samtidigt som prestandan är optimerad för snabba analyser.
