Sdílet prostřednictvím


Operátor reduce

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure 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ě.

Syntaxe

T|reduce [kind=ReduceKind] byVýraz [with [ threshold= Prahová hodnota] [ ,characters=Znaky]]

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Type Požadováno Popis
Výraz string ✔️ Hodnota, o kterou chcete snížit.
Prahová hodnota 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.

Doporučujeme nastavit malou prahovou hodnotu pro velké vstupy. S menší prahovou hodnotou se seskupí více podobných hodnot, což vede k menšímu, ale více podobným skupinám. Větší prahová hodnota vyžaduje menší podobnost, což vede k tomu, že více skupin, které jsou méně podobné. Viz příklady.
Znaky string Seznam znaků, které se oddělují mezi termíny. Výchozí hodnota je každý číselný znak, který není ascii. Příklady najdete v tématu Chování parametru Characters.
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.

Návraty

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:

Vzor Počet Zástupce
San* 5182 San Bernard
Svatý* 2846 Saint Lucy
Moskva 3726 Moskva
*-na-* 2730 Jeden -on- Jeden
Paříž 2716 Paříž

Příklady

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

Příklady v tomto článku používají veřejně dostupné tabulky v clusteru nápovědy, jako je StormEvents tabulka v databázi Ukázky.

Příklady v tomto článku používají veřejně dostupné tabulky, jako je tabulka StormEvents v analýze počasí, ukázková data.

Malá prahová hodnota

Tento dotaz 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.

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" 

Výstup

Vzor Počet Zástupce
MachineLearning* 1000 MachineLearningX4

Velká prahová hodnota

Tento dotaz 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.

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" 

Výstup

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

Vzor Počet Zástupce
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

Chování parametru Characters

Pokud je parametr Characters nezadaný, stane se každý číselný znak, který není ascii, oddělovač termínů.

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

Výstup

Vzor Počet Zástupce
jiní 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"

Výstup

Vzor Počet Zástupce
Foo* 10 fooZ1

Použít reduce u sanitizovaného vstupu

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.