Číst v angličtině

Sdílet prostřednictvím


reduce operator

Applies to: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

Seskupí sadu řetězců na základě podobnosti hodnot.

Pro každou takovou skupinu vrátí patternoperátor hodnotu , counta representative. Nejlépe pattern popisuje skupinu, ve které * znak představuje zástupný znak. Jedná se count o počet hodnot ve skupině a representative jedná se o jednu z původních hodnot ve skupině.

Syntax

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

Learn more about syntax conventions.

Parameters

Name Typ Required Description
Expr string ✔️ Hodnota, o kterou chcete snížit.
Threshold real Hodnota mezi 0 a 1, která určuje minimální zlomek řádků potřebných ke splnění kritérií seskupení, aby se mohla aktivovat operace redukce. Výchozí hodnota je 0,1.

Parametr prahové hodnoty určuje minimální úroveň podobnosti vyžadovanou pro seskupení hodnot. S menší prahovou hodnotou (blíže k 0) se seskupí více podobných hodnot, což vede k menšímu počtu, ale více podobných skupin. Větší prahová hodnota (blíže k 1) vyžaduje menší podobnost, což vede k menšímu počtu skupin, které jsou méně podobné. Doporučujeme nastavit malou prahovou hodnotu pro velké vstupy. See Examples.
Characters string Seznam znaků, které se oddělují mezi termíny. Výchozí hodnota je každý číselný znak, který není ascii. For examples, see Examples.
ReduceKind string Jediná platná hodnota je source. Pokud source je zadán, operátor připojí Pattern sloupec k existujícím řádkům v tabulce místo agregace Pattern.

Returns

Tabulka s tolika řádky, kolik jsou skupiny a sloupce s názvem pattern, counta representative. Nejlépe pattern popisuje skupinu, ve které * znak představuje zástupný znak nebo zástupný symbol pro libovolný řetězec vložení. Jedná se count o počet hodnot ve skupině a representative jedná se o jednu z původních hodnot ve skupině.

Například výsledek reduce by city může zahrnovat:

Pattern Count Representative
San * 5182 San Bernard
Saint * 2846 Saint Lucy
Moscow 3726 Moscow
*-na-* 2730 Jeden -on- Jeden
Paris 2716 Paris

Examples

Příklad v této části ukazuje, jak použít syntaxi, která vám pomůže začít.

The examples in this article use publicly available tables in the help cluster, such as the StormEvents table in the Samples database.

The examples in this article use publicly available tables, such as the Weather table in the Weather analytics sample gallery. Možná budete muset změnit název tabulky v ukázkovém dotazu tak, aby odpovídal tabulce v pracovním prostoru.

Následující příklad vygeneruje rozsah čísel, vytvoří nový sloupec se zřetězenými řetězci a náhodnými celými čísly a potom seskupí řádky podle nového sloupce s konkrétními parametry redukce. Prahová hodnota je nastavená na hodnotu 0,001, což znamená, že operátor seskupí hodnoty, které jsou velmi podobné sobě.

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

Následující příklad vygeneruje rozsah čísel, vytvoří nový sloupec se zřetězenými řetězci a náhodnými celými čísly a potom seskupí řádky podle nového sloupce s konkrétními parametry redukce. Prahová hodnota je nastavená na hodnotu 0,9, což znamená, že operátor seskupí hodnoty méně přísně a umožňuje větší odchylku.

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

Výsledek zahrnuje pouze ty skupiny, ve kterých se hodnota MyText zobrazí nejméně v 90% řádků.

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

If the Characters parameter is unspecified, by default the operator treats all non-alphanumeric characters (including spaces and punctuation) as term separators. The following example shows how the reduce operator behaves when the Characters parameter isn't specified.

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

Output

Pattern Count Representative
others 10

Pokud ale zadáte, že "Z" je oddělovač, je to, jako by každá hodnota v str je dva termíny: foo a 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

Následující příklad ukazuje, jak jeden může použít operátor reduce na "sanitized" vstup, ve kterém identifikátory GUID ve sloupci jsou nahrazeny před snížením:

Začněte několika záznamy z tabulky Trasování. Potom zmenšete sloupec Text, který obsahuje náhodné identifikátory GUID. Vzhledem k tomu, že náhodné identifikátory GUID interferují s operací redukce, nahraďte je všechny řetězcem "GUID". Teď proveďte operaci redukce. V případě, že existují další identifikátory "quasi-random" s vloženými znaky -, nebo '_' v nich, považují se za znaky bez termínů.

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

Poznámka

Implementace operátoru reduce je z velké části založena na papíru A Data Clustering Algorithm for Mining Patterns From Event Logs, autor Risto Vaarandi.