Delen via


operator reduce

Groepeert een set tekenreeksen op basis van waarde-gelijkenis.

Voor elke dergelijke groep retourneert de operator een pattern, counten representative. De pattern beste beschrijving van de groep, 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.

Syntax

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.
Drempel real Een waarde tussen 0 en 1 die de minimale fractie van rijen bepaalt die moet overeenkomen met de groeperingscriteria om een reductiebewerking te activeren. De standaardwaarde is 0,1.

U wordt aangeraden een kleine drempelwaarde in te stellen voor grote invoerwaarden. Bij een kleinere drempelwaarde worden meer vergelijkbare waarden gegroepeerd, wat resulteert in minder maar meer vergelijkbare groepen. Een grotere drempelwaarde vereist minder overeenkomsten, wat resulteert in meer groepen die minder op elkaar lijken. Zie Voorbeelden.
Tekens string Een lijst met tekens die tussen termen worden gescheiden. De standaardwaarde is elk niet-ascii numeriek teken. Zie De parameter Gedrag van tekens voor voorbeelden.
ReduceKind string De enige geldige waarde is source. Als source is opgegeven, voegt de operator de Pattern kolom toe aan de bestaande rijen in de tabel in plaats van te aggregeren met Pattern.

Retouren

Een tabel met net zoveel rijen als er groepen en kolommen zijn met de naam pattern, counten representative. De pattern beste beschrijving van de groep, 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 bevatten:

Patroon Count Vertegenwoordiger
San* 5182 San Bernard
Saint* 2846 Saint Lucy
Moskou 3726 Moskou
*-Op-* 2730 One -on- One
Parijs 2716 Parijs

Voorbeelden

Kleine drempelwaarde

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 Count Vertegenwoordiger
MachineLearning* 1000 MachineLearningX4

Grote drempelwaarde

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

Patroon Count 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

Parameter Gedrag van tekens

Als de parameter Tekens niet is opgegeven, wordt elk niet-ascii numeriek teken een termenscheidingsteken.

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

Uitvoer

Patroon Count Vertegenwoordiger
Anderen 10

Als u echter opgeeft dat 'Z' een scheidingsteken is, is het alsof elke waarde in str 2 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 Count Vertegenwoordiger
Foo* 10 fooZ1

Toepassen reduce op opgeschoonde invoer

In het volgende voorbeeld ziet u hoe u de reduce operator kunt toepassen op een 'opgeschoonde' invoer, waarbij GUID's in de kolom die wordt verkleind, worden vervangen voordat ze worden verkleind

// Start with a few records from the Trace table.
Trace | take 10000
// We will reduce the Text column which includes random GUIDs.
// As random GUIDs interfere with the reduce operation, replace them all
// by the string "GUID".
| extend Text=replace_regex(Text, @"[[:xdigit:]]{8}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{12}", @"GUID")
// Now perform the reduce. In case there are other "quasi-random" identifiers with embedded '-'
// or '_' characters in them, treat these as non-term-breakers.
| reduce by Text with characters="-_"

autocluster

Notitie

De implementatie van reduce operator is grotendeels gebaseerd op het document A Data Clustering Algorithm for Mining Patterns From Event Logs van Risto Vaarandi.