Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Szolgáltatások váltása a Verzió legördülő listával. További információ a navigációról.
A következőkre vonatkozik: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
Az aggregációs függvények csoportosítják és összevonják a több sorból származó adatokat egy összegző értékbe. Az összegző érték a kiválasztott függvénytől függ, például a darabszámtól, a maximumtól vagy az átlagtól.
Ebben az oktatóanyagban a következőket sajátíthatja el:
- Az összegző operátor használata
- Lekérdezési eredmények vizualizációja
- Sorok feltételes megszámlálása
- Adatok csoportosítása tárolókba
- A minimális, maximális, átlagos és összeg kiszámítása
- Százalékértékek kiszámítása
- Egyedi értékek kinyerés
- Gyűjtőadatok feltétel szerint
- Összesítés végrehajtása csúszóablakban
Az ebben az oktatóanyagban bemutatott példák a StormEvents klaszterben nyilvánosan elérhető táblát használják. Ha saját adataival szeretne megismerkedni, hozzon létre egy saját ingyenes fürtöt.
Az oktatóanyagban szereplő példák a StormEvents táblázatot használják, amely nyilvánosan elérhető a WeatherAnalytics-mintaadatokban.
Ez az oktatóanyag az "Ismerd meg a gyakori operátorokat" című első oktatóanyag alapjaira épül.
Előfeltételek
A következő lekérdezések futtatásához olyan lekérdezési környezetre van szükség, amely hozzáfér a mintaadatokhoz. Használja az alábbi lehetőségek egyikét:
- Microsoft-fiók vagy Microsoft Entra azonosító használata a súgófürtbe történő bejelentkezéshez
- Microsoft-fiók vagy Microsoft Entra felhasználói identitás
- Fabric-munkaterület Microsoft Fabric-kompatibilis kapacitással
Az összegző operátor használata
Az összegző operátor elengedhetetlen az adatokon végzett összesítésekhez. Az summarize operátor a záradék alapján csoportosítja a by sorokat, majd a megadott összesítési függvénnyel egyesíti az egyes csoportokat egyetlen sorba.
Keresse meg az események számát állapot summarize szerint a darabszám aggregációs függvénnyel.
StormEvents
| summarize TotalStorms = count() by State
Kimenet
| Állam | Összesstorms |
|---|---|
| TEXAS | 4701 |
| KANSAS | 3166 |
| IOWA | 2337 |
| ILLINOIS | 2022 |
| MISSOURI | 2016 |
| ... | ... |
Lekérdezési eredmények vizualizációja
A lekérdezési eredmények diagramon vagy grafikonon való megjelenítése segíthet azonosítani az adatok mintáit, trendjeit és kiugró adatait. Ezeket a vizualizációkat a renderelő operátorral hozhatja létre.
Az oktatóanyag során példákat láthat arra, hogyan használhatja a(z) render elemet az eredmények megjelenítésére. Egyes elérhető diagramtípusok közé tartoznak a sávdiagramok, a vonaldiagramok, a kördiagramok és a pontdiagramok. Egyelőre a(z) render használatával tekintheti meg az előző lekérdezés eredményeit sávdiagramon.
StormEvents
| summarize TotalStorms = count() by State
| render barchart
Sorok feltételes megszámlálása
Az adatok elemzésekor a countif() használatával megszámlálhatja a sorokat egy adott feltétel alapján. Ez a függvény segít megérteni, hogy hány sor felel meg a megadott feltételeknek.
Az alábbi lekérdezés a kárt okozó viharok megszámlálására használja countif() . A lekérdezés ezután az top operátorral szűri az eredményeket, és megjeleníti azokat az állapotokat, amelyekben a legnagyobb a viharok által okozott terméskár.
StormEvents
| summarize StormsWithCropDamage = countif(DamageCrops > 0) by State
| top 5 by StormsWithCropDamage
Kimenet
| Állam | Viharkárok a termésben |
|---|---|
| IOWA | 359 |
| NEBRASKA | 201 |
| MISSISSIPPI | 105 |
| ÉSZAK-KAROLINA | 82 |
| MISSOURI | 78 |
Adatok csoportosítása tárolókba
Ha szám- vagy időértékek szerint szeretné összesíteni az adatokat, először csoportosítsa az adatokat tárolókba a bin() függvény használatával. A használat bin() segít megérteni, hogy az értékek hogyan vannak elosztva egy adott tartományban, és megkönnyíti a különböző időszakok összehasonlítását.
Az alábbi lekérdezés a 2007-es év minden hetében megszámlálja azoknak a viharoknak a számát, amelyek terméskárokat okoztak. Az 7d argumentum egy hetet jelöl, mivel a függvény érvényes időbélyeget igényel.
StormEvents
| where StartTime between (datetime(2007-01-01) .. datetime(2007-12-31))
and DamageCrops > 0
| summarize EventCount = count() by bin(StartTime, 7d)
Kimenet
| StartTime | Eseményszám |
|---|---|
| 2007-01-01T00:00:00Z | 16 |
| 2007-01-08T00:00:00Z | 20 |
| 2007-01-29T00:00:00Z | 8 |
| 2007-02-05T00:00:00Z | 1 |
| 2007-02-12T00:00:00Z | 3 |
| ... | ... |
Adja hozzá | render timechart a lekérdezés végéhez az eredmények megjelenítéséhez.
Megjegyzés:
bin() hasonló a floor() más programozási nyelvekben használt függvényhez. Minden értéket a megadott modulus legközelebbi többszörösére csökkenti, és lehetővé teszi summarize a sorok csoportokhoz rendelését.
A minimális, maximális, átlagos és összeg kiszámítása
Ha többet szeretne megtudni a terméskárt okozó vihartípusokról, számítsa ki az egyes eseménytípusok minimális(), max() és avg() terméskárait. Ezután rendezze az eredményt az átlagos károsodás alapján.
Több összesítő függvényt is használhat egyetlen summarize operátorban több számított oszlop létrehozásához.
StormEvents
| where DamageCrops > 0
| summarize
MaxCropDamage=max(DamageCrops),
MinCropDamage=min(DamageCrops),
AvgCropDamage=avg(DamageCrops)
by EventType
| sort by AvgCropDamage
Kimenet
| Eseménytípus | MaxCropDamage | Minimális Növénykár | Átlagos növénykárosodás |
|---|---|---|---|
| Fagy/befagyás | 568600000 | 3000 | 9106087.5954198465 |
| Futótűz | 21000000 | 10000 | 7268333.333333333 |
| Aszály | 700000000 | 2000 | 6763977.8761061952 |
| Árvíz | 500000000 | 1000 | 4844925.23364486 |
| Zivatar szél | 22000000 | 100 | 920328.36538461538 |
| ... | ... | ... | ... |
Az előző lekérdezés eredményei azt jelzik, hogy a Fagy/Fagyás események átlagosan a legtöbb terméskárt okoznak. A bin() lekérdezés azonban azt mutatja, hogy a növénykárosítással kapcsolatos események többnyire a nyári hónapokban történnek.
Használja a sum() függvényt a sérült növények teljes számának ellenőrzéséhez a kárt okozó események mennyisége helyett, az előző count() leírtak szerint.
StormEvents
| where StartTime between (datetime(2007-01-01) .. datetime(2007-12-31))
and DamageCrops > 0
| summarize CropDamage = sum(DamageCrops) by bin(StartTime, 7d)
| render timechart
Most már látható egy csúcs a növényi károk januárban, ami valószínűleg a fagyásra / fagyra vezethető vissza.
Jótanács
Használja a minif(), maxif(), avgif() és sumif() függvényt a feltételes aggregációk elvégzéséhez, ahogyan azt a sorok feltételes számlálása szakaszban tette.
Százalékértékek kiszámítása
A százalékértékek kiszámítása segíthet megérteni a különböző értékek eloszlását és arányát az adatokban. Ez a szakasz két gyakori módszert ismertet a százalékok kusto lekérdezési nyelv (KQL) használatával történő kiszámításához.
Százalék kiszámítása két oszlop alapján
Használja a count() és a countif függvényt az egyes állapotokban terméskárt okozó viharesemények százalékos arányának megkereséséhez. Először számolja meg az egyes államokban lévő viharok teljes számát. Ezután számolja meg az egyes állapotokban a terméskárokat okozó viharok számát.
Ezután használja extend funkciót a százalék kiszámításához, amely úgy történik, hogy a vetéskárosítással rendelkező viharok számát elosztja a viharok teljes számával, majd megszorozza 100-zal.
Ha meg szeretné győződni arról, hogy decimális eredményt kap, a todouble() függvénnyel az osztás végrehajtása előtt az egész számok számának legalább egyikét dupla értékre konvertálhatja.
StormEvents
| summarize
TotalStormsInState = count(),
StormsWithCropDamage = countif(DamageCrops > 0)
by State
| extend PercentWithCropDamage =
round((todouble(StormsWithCropDamage) / TotalStormsInState * 100), 2)
| sort by StormsWithCropDamage
Kimenet
| Állam | TotalStormsInState | Viharkárok a termésben | Károsodott termények százaléka |
|---|---|---|---|
| IOWA | 2337 | 359 | 15.36 |
| NEBRASKA | 1766 | 201 | 11.38 |
| MISSISSIPPI | 1218 | 105 | 8.62 |
| ÉSZAK-KAROLINA | 1721 | 82 | 4.76 |
| MISSOURI | 2016 | 78 | 3.87 |
| ... | ... | ... | ... |
Megjegyzés:
Százalékos értékek kiszámításakor konvertáljon legalább egy egész értéket a todouble() vagy toreal() függvényekkel. Ez az átalakítás biztosítja, hogy az egész számok osztása miatt ne kapjon csonkolt eredményeket. További információt az aritmetikai műveletek típusszabályai című témakörben talál.
Százalék kiszámítása a táblaméret alapján
Ha a viharok számát eseménytípus szerint szeretné összehasonlítani az adatbázisban található összes viharszámmal, először mentse az adatbázisban lévő viharok teljes számát változóként. A Let utasításokkal változókat definiálhat egy lekérdezésen belül.
Mivel a táblázatos kifejezési utasítások táblázatos eredményeket adnak vissza, a toscalar() függvénnyel skaláris értékké alakíthatja a count() függvény táblázatos eredményét. Ezután használja a numerikus értéket a százalékos számításban.
let TotalStorms = toscalar(StormEvents | summarize count());
StormEvents
| summarize EventCount = count() by EventType
| project EventType, EventCount, Percentage = todouble(EventCount) / TotalStorms * 100.0
Kimenet
| Eseménytípus | Eseményszám | Százalék |
|---|---|---|
| Zivatar szél | 13015 | 22.034673077574237 |
| Jégeső | 12711 | 21.519994582331627 |
| Villámárvíz | 3688 | 6.2438627975485055 |
| Aszály | 3616 | 6.1219652592015716 |
| Téli időjárás | 3349 | 5,669928554498358 |
| ... | ... | ... |
Egyedi értékek kinyerés
A make_set() használatával a táblázat sorainak kijelölése egyedi értékek tömbje lesz.
Az alábbi lekérdezés az egyes állapotokban halálokat okozó eseménytípusok tömbjének létrehozására használható make_set() . Az eredményként kapott táblázatot ezután az egyes tömbökben lévő vihartípusok száma alapján rendezi a rendszer.
StormEvents
| where DeathsDirect > 0 or DeathsIndirect > 0
| summarize StormTypesWithDeaths = make_set(EventType) by State
| project State, StormTypesWithDeaths
| sort by array_length(StormTypesWithDeaths)
Kimenet
| Állam | StormTypesWithDeaths |
|---|---|
| KALIFORNIA | ["Zivataros szél","Magas hullámtörés","Hideg/szélhűtés","Erős szél","Húzó áramlat","Hőség","Extrém hőség","Erdőtűz","Porvihar","Csillagászati apály","Sűrű köd","Téli időjárás"] |
| TEXAS | ["Villámárvíz","Zivatar szél","Tornádó","Villámlás","Árvíz","Jégvihar","Téli időjárás","Visszaáramlás","Túlzott hőség","Sűrű köd","Hurrikán (Tájfun)","Hideg/szélsérülés"] |
| OKLAHOMA | ["Villámárvíz","Tornádó","Hideg/Szélhűtés","Téli vihar","Heves havazás","Túlzott hőség","Hőség","Jeges vihar","Téli időjárás","Sűrű köd"] |
| NEW YORK | ["Árvíz","Villámlás","Zivataros szél","Villámárvíz","Téli időjárás","Jeges vihar","Extrém hideg/Szélhűtés","Téli vihar","Erős havazás"] |
| KANSAS | ["Zivataros szél", "Heves esőzés", "Tornádó", "Árvíz", "Villámárvíz", "Villámlás", "Nagy hó", "Téli időjárás", "Hóvihar"] |
| ... | ... |
Adatok csoportosítása feltétel szerint
A case() függvény megadott feltételek alapján gyűjtőkbe csoportosítja az adatokat. A függvény az első teljesült predikátum megfelelő eredménykifejezését adja vissza, vagy ha a predikátumok egyike sem teljesül, a végleges más kifejezést.
Ez a példa a polgárok által elszenvedett viharos sérülések száma alapján csoportosítja az államokat.
StormEvents
| summarize InjuriesCount = sum(InjuriesDirect) by State
| extend InjuriesBucket = case (
InjuriesCount > 50,
"Large",
InjuriesCount > 10,
"Medium",
InjuriesCount > 0,
"Small",
"No injuries"
)
| sort by State asc
Kimenet
| Állam | Sérülések száma | Sérülések Tároló |
|---|---|---|
| ALABAMA | 494 | Nagy |
| ALASZKA | 0 | Nincsenek sérülések |
| AMERIKAI SZAMOA | 0 | Nincsenek sérülések |
| ARIZONA | 6 | Kicsi |
| ARKANSAS | 54 | Nagy |
| ATLANTI-ÓCEÁN ÉSZAK | 15 | Közepes |
| ... | ... | ... |
Kördiagram létrehozása a nagy, közepes vagy kis számú sérülést eredményező viharokat okozó állapotok arányának megjelenítéséhez.
StormEvents
| summarize InjuriesCount = sum(InjuriesDirect) by State
| extend InjuriesBucket = case (
InjuriesCount > 50,
"Large",
InjuriesCount > 10,
"Medium",
InjuriesCount > 0,
"Small",
"No injuries"
)
| summarize InjuryBucketByState=count() by InjuriesBucket
| render piechart
Összesítések végrehajtása egy csúszóablakon keresztül
Az alábbi példa bemutatja, hogyan összegezheti az oszlopokat egy tolóablak használatával.
A lekérdezés egy hét napos csúszóablak használatával kiszámítja a tornádók, árvizek és erdőtüzek által okozott anyagi kár minimumát, maximumát és átlagát. Az eredményhalmaz minden rekordja összesíti az előző hét napot, az eredmények pedig naponta egy rekordot tartalmaznak az elemzési időszakban.
A lekérdezés részletes magyarázata:
- Az egyes rekordokat egy adott napra kell csoportosítani, a
windowStartidőpontra vonatkozóan. - Adjon hozzá hét napot a bin értékhez, hogy beállítsa az egyes rekordok tartományának végét. Ha az érték kívül esik a
windowStartéswindowEndközötti tartományon, ennek megfelelően módosítsa az értéket. - Hozzon létre egy hét napos tömböt minden rekordhoz a rekord aktuális napjától kezdve.
- Bontsa ki a tömböt a 3. lépésből az mv-expand paranccsal, hogy minden rekordot hét rekordra duplikáljon egy-egy napos intervallummal.
- Végezze el az összesítéseket minden naphoz. A 4. lépés miatt ez a lépés valójában az előző hét napot foglalja össze.
- Zárja ki az első hét napot a végeredményből, mert nincs hét napos visszatekintési időszak számukra.
let windowStart = datetime(2007-07-01);
let windowEnd = windowStart + 13d;
StormEvents
| where EventType in ("Tornado", "Flood", "Wildfire")
| extend bin = bin_at(startofday(StartTime), 1d, windowStart) // 1
| extend endRange = iff(bin + 7d > windowEnd, windowEnd,
iff(bin + 7d - 1d < windowStart, windowStart,
iff(bin + 7d - 1d < bin, bin, bin + 7d - 1d))) // 2
| extend range = range(bin, endRange, 1d) // 3
| mv-expand range to typeof(datetime) // 4
| summarize min(DamageProperty), max(DamageProperty), round(avg(DamageProperty)) by Timestamp=bin_at(range, 1d, windowStart), EventType // 5
| where Timestamp >= windowStart + 7d; // 6
Kimenet
A következő eredménytábla rövidítve van. A teljes kimenet megtekintéséhez futtassa a lekérdezést.
| Időbélyeg | Eseménytípus | min_DamageProperty | max_DamageProperty | avg_DamageProperty |
|---|---|---|---|---|
| 2007-07-08T00:00:00Z | Tornádó | 0 | 30000 | 6905 |
| 2007-07-08T00:00:00Z | Árvíz | 0 | 200000 | 9261 |
| 2007-07-08T00:00:00Z | Futótűz | 0 | 200000 | 14033 |
| 2007-07-09T00:00:00Z | Tornádó | 0 | 100 000 | 14783 |
| 2007-07-09T00:00:00Z | Árvíz | 0 | 200000 | 12529 |
| 2007-07-09T00:00:00Z | Futótűz | 0 | 200000 | 14033 |
| 2007-07-10T00:00:00Z | Tornádó | 0 | 100 000 | 31400 |
| 2007-07-10T00:00:00Z | Árvíz | 0 | 200000 | 12263 |
| 2007-07-10T00:00:00Z | Futótűz | 0 | 200000 | 11694 |
| ... | ... | ... |
Következő lépés
Most, hogy már ismeri a gyakori lekérdezési operátorokat és aggregációs függvényeket, folytassa a következő oktatóanyaggal, amelyből megtudhatja, hogyan illeszthet össze adatokat több táblából.