Dela via


reduce-operator

Gäller för: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

Grupperar en uppsättning strängar tillsammans baserat på värdelikhet.

För varje sådan grupp returnerar operatorn en pattern, countoch representative. pattern beskriver bäst gruppen, där *-tecknet representerar ett jokertecken. count är antalet värden i gruppen och representative är ett av de ursprungliga värdena i gruppen.

Syntax

T|reduce [kind=ReduceKind] byExpr [with [threshold=Threshold] [,characters=Characters]]

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Krävs Beskrivning
uttr string ✔️ Värdet som ska minskas.
tröskelvärde real Ett värde mellan 0 och 1 som avgör den minsta del av raderna som krävs för att matcha grupperingsvillkoren för att utlösa en minskningsåtgärd. Standardvärdet är 0.1.

Vi rekommenderar att du anger ett litet tröskelvärde för stora indata. Med ett mindre tröskelvärde grupperas fler liknande värden tillsammans, vilket resulterar i färre men mer liknande grupper. Ett större tröskelvärde kräver mindre likhet, vilket resulterar i fler grupper som är mindre lika. Se exempel.
tecken string En lista med tecken som separerar mellan termer. Standardvärdet är alla icke-ascii numeriska tecken. Exempel finns i parametern Beteende för tecken.
ReduceKind string Det enda giltiga värdet är source. Om source anges lägger operatorn till kolumnen Pattern till de befintliga raderna i tabellen i stället för att aggregera efter Pattern.

Returnerar

En tabell med så många rader som det finns grupper och kolumner med titeln pattern, countoch representative. pattern beskriver bäst gruppen, där *-tecknet representerar ett jokertecken eller platshållare för en godtycklig insättningssträng. count är antalet värden i gruppen och representative är ett av de ursprungliga värdena i gruppen.

Resultatet av reduce by city kan till exempel innehålla:

Mönster Räkna Representant
San* 5182 San Bernard
Helgon* 2846 Sankt Lucy
Moskva 3726 Moskva
*-på-* 2730 En - på - en
Paris 2716 Paris

Exempel

Exemplet i det här avsnittet visar hur du använder syntaxen för att komma igång.

Exemplen i den här artikeln använder offentligt tillgängliga tabeller i hjälpkluster, till exempel tabellen StormEvents i databasen Samples.

Exemplen i den här artikeln använder offentligt tillgängliga tabeller, till exempel tabellen StormEvents i Väderanalys exempeldata.

Litet tröskelvärde

Den här frågan genererar ett intervall med tal, skapar en ny kolumn med sammanfogade strängar och slumpmässiga heltal och grupperar sedan raderna efter den nya kolumnen med specifika minskningsparametrar.

range x from 1 to 1000 step 1
| project MyText = strcat("MachineLearningX", tostring(toint(rand(10))))
| reduce by MyText  with threshold=0.001 , characters = "X" 

utdata

Mönster Räkna Representant
MachineLearning* 1000 MachineLearningX4

Stort tröskelvärde

Den här frågan genererar ett intervall med tal, skapar en ny kolumn med sammanfogade strängar och slumpmässiga heltal och grupperar sedan raderna efter den nya kolumnen med specifika minskningsparametrar.

range x from 1 to 1000 step 1
| project MyText = strcat("MachineLearningX", tostring(toint(rand(10))))
| reduce by MyText  with threshold=0.9 , characters = "X" 

utdata

Resultatet innehåller endast de grupper där värdet MyText visas i minst 90% av raderna.

Mönster Räkna Representant
MachineLearning* 177 MachineLearningX9
MachineLearning* 102 MachineLearningX0
MachineLearning* 106 MachineLearningX1
MachineLearning* 96 MachineLearningX6
MachineLearning* 110 MachineLearningX4
MachineLearning* 100 MachineLearningX3
MachineLearning* 99 MachineLearningX8
MachineLearning* 104 MachineLearningX7
MachineLearning* 106 MachineLearningX2

Beteende för Characters parameter

Om parametern Tecken är ospecificerad blir varje numeriskt tecken som inte är ascii en termavgränsare.

range x from 1 to 10 step 1 | project str = strcat("foo", "Z", tostring(x)) | reduce by str

utdata

Mönster Räkna Representant
andra 10

Men om du anger att "Z" är en avgränsare är det som om varje värde i str är två termer: foo och tostring(x):

range x from 1 to 10 step 1 | project str = strcat("foo", "Z", tostring(x)) | reduce by str with characters="Z"

utdata

Mönster Räkna Representant
Foo* 10 fooZ1

Använd reduce för sanerade indata

I följande exempel visas hur man kan tillämpa reduce-operatorn på en "sanerad" indata, där GUID:er i kolumnen som minskas ersätts innan de minskar:

Börja med några poster från tabellen Trace. Minska sedan kolumnen Text som innehåller slumpmässiga GUID:er. Eftersom slumpmässiga GUID:er stör reduce-åtgärden ersätter du dem alla med strängen "GUID". Utför nu reduce-åtgärden. Om det finns andra "kvasi-slumpmässiga" identifierare med inbäddade '-' eller '_' tecken i dem, behandlar du tecken som icke-termbrytare.

Trace
| take 10000
| extend Text = replace(@"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", "GUID", Text)
| reduce by Text with characters="-_"

Not

Implementeringen av reduce-operatorn baseras till stor del på dokumentet A Data Clustering Algorithm for Mining Patterns From Event Logs, av Risto Vaarandi.