Operátor reduce
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Seskupí sadu řetězců na základě podobnosti hodnot.
Pro každou takovou skupinu vrátí pattern
operátor hodnotu , count
a 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] by
Vý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
, count
a 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="-_"
Související obsah
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.