Sdílet prostřednictvím


Operátor has_any

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Filtruje sadu záznamů pro data s libovolnou sadou řetězců bez rozlišování velkých a malých písmen. has_any vyhledá indexované termíny, kde indexovaný termín je tři nebo více znaků. Pokud je termín menší než tři znaky, dotaz zkontroluje hodnoty ve sloupci, což je pomalejší než vyhledávání termínu v indexu termínů.

Další informace o jiných operátorech a určení, který operátor je pro váš dotaz nejvhodnější, najdete v tématu řetězcové operátory datového typu.

Tipy týkající se výkonu

Poznámka:

Pokud se používá více než 128 hledaných termínů, je optimalizace vyhledávání v textovém indexu zakázaná, což může vést ke snížení výkonu dotazů.

Syntaxe

Výraz T|wherecol ...has_any(,)

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

Parametry

Název Typ Požadováno Popis
T string ✔️ Tabulkový vstup pro filtrování.
průsmyk string ✔️ Sloupec, podle kterého chcete filtrovat.
výraz skalární nebo tabulkový ✔️ Výraz, který určuje hodnoty, pro které se mají hledat. Každý výraz může být skalární hodnota nebo tabulkový výraz , který vytváří sadu hodnot. Pokud má tabulkový výraz více sloupců, použije se první sloupec. Hledání bude zvažovat až 10 000 jedinečných hodnot.

Poznámka:

Vložený tabulkový výraz musí být uzavřený s dvojitými závorky.

Návraty

Řádky v T , pro které je truepredikát .

Příklady

Následující dotaz ukazuje, jak se používá has_any se seznamem skalárních hodnot oddělených čárkami.

StormEvents 
| where State has_any ("CAROLINA", "DAKOTA", "NEW") 
| summarize count() by State

Výstup

Stát COUNT
NEW YORK 1750
SEVERNÍ KAROLÍNA 1721
SOUTH DAKOTA 1 567
NEW JERSEY 1044
JIŽNÍ KAROLÍNA 915
SEVERNÍ DAKOTA 905
NOVÉ MEXIKO 527
NEW HAMPSHIRE 394

Následující dotaz ukazuje, jak se používá has_any s dynamickým polem.

StormEvents 
| where State has_any (dynamic(['south', 'north']))
| summarize count() by State

Výstup

Stát COUNT
SEVERNÍ KAROLÍNA 1721
SOUTH DAKOTA 1 567
JIŽNÍ KAROLÍNA 915
SEVERNÍ DAKOTA 905
ATLANTICKÝ JIH 193
ATLANTIC NORTH 188

Stejný dotaz lze také napsat pomocí příkazu let.

let areas = dynamic(['south', 'north']);
StormEvents 
| where State has_any (areas)
| summarize count() by State

Výstup

Stát COUNT
SEVERNÍ KAROLÍNA 1721
SOUTH DAKOTA 1 567
JIŽNÍ KAROLÍNA 915
SEVERNÍ DAKOTA 905
ATLANTICKÝ JIH 193
ATLANTIC NORTH 188

Následující dotaz ukazuje, jak se používá has_any s vloženým tabulkovým výrazem. Všimněte si, že vložený tabulkový výraz musí být uzavřený s dvojitými závorky.

StormEvents 
| where State has_any ((PopulationData | where Population > 5000000 | project State))
| summarize count() by State

Výstup

Stát COUNT
TEXAS 4701
ILLINOIS 2022
MISSOURI 2016
GRUZIE 1983
MINNESOTA 1881
... ...

Stejný dotaz lze také napsat pomocí příkazu let. Všimněte si, že v tomto případě nejsou dvojité závorky uvedené v posledním příkladu nezbytné.

let large_states = PopulationData | where Population > 5000000 | project State;
StormEvents 
| where State has_any (large_states)
| summarize count() by State

Výstup

Stát COUNT
TEXAS 4701
ILLINOIS 2022
MISSOURI 2016
GRUZIE 1983
MINNESOTA 1881
... ...