Delen via


reductieoperator

Van toepassing op: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel-

Hiermee wordt een set tekenreeksen gegroepeerd op basis van waarde-gelijkenis.

Voor elke dergelijke groep retourneert de operator een pattern, counten representative. De pattern beschrijft de groep het beste, waarin het * teken een jokerteken vertegenwoordigt. De count is het aantal waarden in de groep en de representative is een van de oorspronkelijke waarden in de groep.

Syntaxis

T|reduce [kind=ReduceKind] byExpr [with [threshold=Drempelwaarde] [,characters=tekens]]

Meer informatie over syntaxisconventies.

Parameters

Naam Type Vereist Beschrijving
Expr- string ✔️ De waarde waarmee moet worden verminderd.
drempelwaarde real Een waarde tussen 0 en 1 die bepaalt het minimumaantal rijen dat is vereist om te voldoen aan de groeperingscriteria om een reductiebewerking te activeren. De standaardwaarde is 0,1.

U wordt aangeraden een kleine drempelwaarde in te stellen voor grote invoer. Met een kleinere drempelwaarde worden meer vergelijkbare waarden gegroepeerd, wat resulteert in minder maar meer vergelijkbare groepen. Een hogere drempelwaarde vereist minder gelijkenis, wat resulteert in meer groepen die minder vergelijkbaar zijn. Zie Voorbeelden.
tekens string Een lijst met tekens die tussen termen scheiden. De standaardwaarde is elk niet-ascii-numeriek teken. Zie Gedrag van de parameter Tekensvoor voorbeelden.
ReduceKind- string De enige geldige waarde is source. Als source is opgegeven, voegt de operator de kolom Pattern toe aan de bestaande rijen in de tabel in plaats van te aggregeren door Pattern.

Retourneert

Een tabel met zoveel rijen als groepen en kolommen met de titel pattern, counten representative. De pattern beschrijft de groep het beste, waarin het * teken een jokerteken of tijdelijke aanduiding voor een willekeurige invoegtekenreeks vertegenwoordigt. De count is het aantal waarden in de groep en de representative is een van de oorspronkelijke waarden in de groep.

Het resultaat van reduce by city kan bijvoorbeeld het volgende omvatten:

Patroon Tellen Vertegenwoordiger
San* 5182 San Bernard
Sint* 2846 Saint Lucy
Moskou 3726 Moskou
*-op-* 2730 Eén -op- Een
Parijs 2716 Parijs

Voorbeelden

In het voorbeeld in deze sectie ziet u hoe u de syntaxis gebruikt om aan de slag te gaan.

In de voorbeelden in dit artikel worden openbaar beschikbare tabellen gebruikt in de Help-cluster, zoals de StormEvents tabel in de Voorbeelden database.

In de voorbeelden in dit artikel worden openbaar beschikbare tabellen gebruikt, zoals de tabel StormEvents in de weather analytics voorbeeldgegevens.

Kleine drempelwaarde

Deze query genereert een bereik met getallen, maakt een nieuwe kolom met samengevoegde tekenreeksen en willekeurige gehele getallen en groepeert vervolgens de rijen op de nieuwe kolom met specifieke reductieparameters.

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" 

uitvoer

Patroon Tellen Vertegenwoordiger
MachineLearning* 1000 MachineLearningX4

Hoge drempelwaarde

Deze query genereert een bereik met getallen, maakt een nieuwe kolom met samengevoegde tekenreeksen en willekeurige gehele getallen en groepeert vervolgens de rijen op de nieuwe kolom met specifieke reductieparameters.

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" 

uitvoer

Het resultaat bevat alleen de groepen waarin de MyText-waarde wordt weergegeven in ten minste 90% van de rijen.

Patroon Tellen Vertegenwoordiger
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

Gedrag van Characters parameter

Als de parameter tekens niet is opgegeven, wordt elk niet-ascii-numeriek teken een scheidingsteken voor termen.

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

uitvoer

Patroon Tellen Vertegenwoordiger
anderen 10

Als u echter opgeeft dat Z een scheidingsteken is, is het alsof elke waarde in str twee termen is: foo en tostring(x):

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

uitvoer

Patroon Tellen Vertegenwoordiger
Foo* 10 fooZ1

reduce toepassen op opgeschoonde invoer

In het volgende voorbeeld ziet u hoe u de reduce-operator kunt toepassen op een 'opgeschoonde' invoer, waarin GUID's in de kolom die worden verminderd, worden vervangen voordat u deze vermindert:

Begin met een paar records uit de tabel Trace. Verminder vervolgens de kolom Tekst die willekeurige GUID's bevat. Omdat willekeurige GUID's de reductiebewerking verstoren, vervangt u deze allemaal door de tekenreeks 'GUID'. Voer nu de reductiebewerking uit. Als er andere 'quasi-willekeurige' id's zijn met ingesloten '-' of '_'-tekens, behandelt u tekens als niet-termonderbrekers.

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

Notitie

De implementatie van reduce operator is grotendeels gebaseerd op het paper A Data Clustering Algorithm for Mining Patterns From Event Logs, door Risto Vaaralgoritmen.