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 | where col ... has_any (,)

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

Parametry

Název Type 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. Viz příklad.

Návraty

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

Příklady

Seznam skalárů

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

State COUNT
NEW YORK 1750
NORTH CAROLINA 1721
SOUTH DAKOTA 1 567
NEW JERSEY 1044
SOUTH CAROLINA 915
SEVERNÍ DAKOTA 905
NOVÉ MEXIKO 527
NEW HAMPSHIRE 394

Dynamické pole

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

State COUNT
NORTH CAROLINA 1721
SOUTH DAKOTA 1 567
SOUTH CAROLINA 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

State COUNT
NORTH CAROLINA 1721
SOUTH DAKOTA 1 567
SOUTH CAROLINA 915
SEVERNÍ DAKOTA 905
ATLANTICKÝ JIH 193
ATLANTIC NORTH 188

Tabulkový výraz

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

State COUNT
TEXAS 4701
ILLINOIS 2022
MISSOURI 2016
GEORGIA 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

State COUNT
TEXAS 4701
ILLINOIS 2022
MISSOURI 2016
GEORGIA 1983
MINNESOTA 1881
... ...