reducera-operator

Växla tjänster genom att använda listrutan Version. Läs mer om navigering.
Gäller för: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft 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] byUttr [with [threshold=Tröskelvärde] [,characters=Tecken]]

Läs mer om syntaxkonventioner.

Parameters

Name Type Required Description
Expr string ✔️ Värdet som ska minskas.
Threshold 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.

Tröskelvärdesparametern avgör den minsta likhetsnivå som krävs för att värden ska grupperas tillsammans. Med ett mindre tröskelvärde (närmare 0) grupperas fler liknande värden tillsammans, vilket resulterar i färre men mer liknande grupper. Ett större tröskelvärde (närmare 1) kräver mindre likhet, vilket resulterar i fler grupper som är mindre lika. Vi rekommenderar att du anger ett litet tröskelvärde för stora indata. Se Exempel.
Characters string En lista med tecken som separerar mellan termer. Standardvärdet är alla icke-ascii numeriska tecken. Exempel finns i Exempel.
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.

Returns

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:

Pattern Count Representative
San* 5182 San Bernard
Saint* 2846 Sankt Lucy
Moscow 3726 Moscow
*-på-* 2730 En - på - en
Paris 2716 Paris

Examples

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älpklustret, till exempel StormEvents tabellen i exempeldatabasen .

Exemplen i den här artikeln använder offentligt tillgängliga tabeller, till exempel Weather tabellen i exempelgalleriet Väderanalys. Du kan behöva ändra tabellnamnet i exempelfrågan för att matcha tabellen på din arbetsyta.

Följande exempel 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. Tröskelvärdet är inställt på 0,001, vilket innebär att operatorn grupperar värden som är mycket lika varandra.

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" 

Output

Pattern Count Representative
MachineLearning* 1000 MachineLearningX4

Följande exempel 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. Tröskelvärdet är inställt på 0,9, vilket innebär att operatorn grupperar värden mindre strikt och tillåter mer varians.

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" 

Output

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

Pattern Count Representative
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

Om parametern Tecken är ospecificerad behandlar operatorn som standard alla icke-alfanumeriska tecken (inklusive blanksteg och skiljetecken) som termavgränsare. I följande exempel visas hur operatorn reduce beter sig när parametern Tecken inte har angetts.

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

Output

Pattern Count Representative
others 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"

Output

Pattern Count Representative
foo* 10 fooZ1

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="-_"

Note

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