Sztring operátorok

Szolgáltatások váltása a Verzió legördülő listával. További információ a navigációról.
A következőkre vonatkozik: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel

A Kusto Query Language (KQL) különböző lekérdezési operátorokat kínál a sztringadattípusok kereséséhez. Az alábbi cikk ismerteti a sztringkifejezések indexelését, a sztringlekérdezés operátorainak listáját, és tippeket ad a teljesítmény optimalizálásához.

A sztringkifejezések ismertetése

A Kusto az összes oszlopot indexeli, beleértve a stringtípusú oszlopokat is. Az ilyen oszlopokhoz a tényleges adatoktól függően több index is készül. Ezek az indexek nem érhetők el közvetlenül, hanem olyan string operátorokkal folytatott lekérdezésekben használatosak, amelyek a nevük részeként has, például has, !has, hasprefix, !hasprefix. Az operátorok szemantikáját az oszlop kódolásának módja határozza meg. Ahelyett, hogy "egyszerű" részszúrási egyezést végez, ezek az operátorok kifejezéseket.

Mi az a kifejezés?

Alapértelmezés szerint minden string érték alfanumerikus karakterek maximális sorozatára van bontva, és ezek mindegyike kifejezéssé alakul.

A következő stringpéldául a kifejezések Kusto, KustoExplorerQueryRunés a következő alsztringek: ad67d136, c1db, 4f9f, 88ef, d94f3b6b0b5a.

Kusto: ad67d136-c1db-4f9f-88ef-d94f3b6b0b5a;KustoExplorerQueryRun

A Kusto létrehoz egy kifejezésindexet, amely három vagy több kifejezésből áll, és ezt az indexet sztring operátorok, például has, !hasstb. használják. Ha a lekérdezés három karakternél kisebb kifejezést keres, vagy contains operátort használ, akkor a lekérdezés visszaáll az oszlop értékeinek vizsgálatára. A vizsgálat sokkal lassabb, mint a kifejezés indexben való keresése.

Míg a Explorer a KustoExplorerQueryRunrészhalmaza, "KustoExplorerQueryRun" has "Explorer"false, míg "KustoExplorerQueryRun" contains "Explorer"true. Ez finom, de a viselkedés annak a ténynek köszönhető, hogy has kifejezésalapú.

Operátorok sztringeken

A cikk a következő rövidítéseket használja:

  • RHS = a kifejezés jobb oldala
  • LHS = a kifejezés bal oldala

A _cs utótaggal rendelkező operátorok megkülönböztetik a kis- és nagybetűket.

Operátor Leírás Case-Sensitive Példa (hozamok true)
== Egyenlő Igen "aBc" == "aBc"
!= Nem egyenlő Igen "abc" != "ABC"
=~ Egyenlő Nem "abc" =~ "ABC"
!~ Nem egyenlő Nem "aBc" !~ "xyz"
contains Az RHS az LHS alhálózataként fordul elő Nem "FabriKam" contains "BRik"
!contains Az RHS nem fordul elő az LHS-ben Nem "Fabrikam" !contains "xyz"
contains_cs Az RHS az LHS alhálózataként fordul elő Igen "FabriKam" contains_cs "Kam"
!contains_cs Az RHS nem fordul elő az LHS-ben Igen "Fabrikam" !contains_cs "Kam"
endswith Az RHS az LHS záró részhalmaza Nem "Fabrikam" endswith "Kam"
!endswith Az RHS nem az LHS záró részhalmaza Nem "Fabrikam" !endswith "brik"
endswith_cs Az RHS az LHS záró részhalmaza Igen "Fabrikam" endswith_cs "kam"
!endswith_cs Az RHS nem az LHS záró részhalmaza Igen "Fabrikam" !endswith_cs "brik"
has A jobb oldali (RHS) egy teljes kifejezés a bal oldali (LHS) Nem "North America" has "america"
!has Az RHS nem teljes kifejezés az LHS-ben Nem "North America" !has "amer"
has_all Ugyanaz, mint has, de minden elemen működik Nem "North and South America" has_all("south", "north")
has_any Ugyanaz, mint has, de bármelyik elemen működik Nem "North America" has_any("south", "north")
has_cs Az RHS egy teljes kifejezés az LHS-ben Igen "North America" has_cs "America"
!has_cs Az RHS nem teljes kifejezés az LHS-ben Igen "North America" !has_cs "amer"
hasprefix Az RHS az LHS kifejezéselőtagja Nem "North America" hasprefix "ame"
!hasprefix Az RHS nem kifejezéselőtag az LHS-ben Nem "North America" !hasprefix "mer"
hasprefix_cs Az RHS az LHS kifejezéselőtagja Igen "North America" hasprefix_cs "Ame"
!hasprefix_cs Az RHS nem kifejezéselőtag az LHS-ben Igen "North America" !hasprefix_cs "CA"
hassuffix Az RHS egy kifejezés utótagja az LHS-ben Nem "North America" hassuffix "ica"
!hassuffix Az RHS nem egy kifejezés utótagja az LHS-ben Nem "North America" !hassuffix "americ"
hassuffix_cs Az RHS egy kifejezés utótagja az LHS-ben Igen "North America" hassuffix_cs "ica"
!hassuffix_cs Az RHS nem egy kifejezés utótagja az LHS-ben Igen "North America" !hassuffix_cs "icA"
in Egyenlő az elemek bármelyikével Igen "abc" in ("123", "345", "abc")
!in Nem egyenlő az elemek egyikével sem Igen "bca" !in ("123", "345", "abc")
in~ Egyenlő az elemek bármelyikével Nem "Abc" in~ ("123", "345", "abc")
!in~ Nem egyenlő az elemek egyikével sem Nem "bCa" !in~ ("123", "345", "ABC")
matches regex Az LHS egyezést tartalmaz az RHS-hez Igen "Fabrikam" matches regex "b.*k"
startswith Az RHS az LHS kezdeti részhalmaza Nem "Fabrikam" startswith "fab"
!startswith Az RHS nem az LHS kezdeti részhalmaza Nem "Fabrikam" !startswith "kam"
startswith_cs Az RHS az LHS kezdeti részhalmaza Igen "Fabrikam" startswith_cs "Fab"
!startswith_cs Az RHS nem az LHS kezdeti részhalmaza Igen "Fabrikam" !startswith_cs "fab"

Teljesítménytippek

A jobb teljesítmény érdekében, ha két operátor ugyanazt a feladatot hajtja végre, használja a kis- és nagybetűket. Például:

  • ==használata, nem =~
  • inhasználata, nem in~
  • hassuffix_cshasználata, nem hassuffix

A gyorsabb eredmény érdekében, ha nem alfanumerikus karakterek által kötött szimbólum vagy alfanumerikus szó jelenlétét, illetve egy mező kezdetét vagy végét teszteli, használja a has vagy a in. has gyorsabban működik, mint contains, startswithvagy endswith.

Az IPv4-címek vagy azok előtagjainak kereséséhez használjon egy speciális operátort az IPv4-címek, amelyek erre a célra vannak optimalizálva.

További információ: A lekérdezés ajánlott eljárásai.

Az első lekérdezés például gyorsabban fog futni:

StormEvents | where State has "North" | count;
StormEvents | where State contains "nor" | count

IPv4-címek operátorai

A következő operátorcsoport indexgyors keresést biztosít az IPv4-címeken vagy azok előtagjaikon.

Operátor Leírás Példa (hozamok true)
has_ipv4 Az LHS az RHS által képviselt IPv4-címet tartalmazza has_ipv4("Source address is 10.1.2.3:1234", "10.1.2.3")
has_ipv4_prefix Az LHS egy olyan IPv4-címet tartalmaz, amely megfelel az RHS által képviselt előtagnak has_ipv4_prefix("Source address is 10.1.2.3:1234", "10.1.2.")
has_any_ipv4 Az LHS az RHS által biztosított IPv4-címeket tartalmazza has_any_ipv4("Source address is 10.1.2.3:1234", dynamic(["10.1.2.3", "127.0.0.1"]))
has_any_ipv4_prefix Az LHS egy olyan IPv4-címet tartalmaz, amely megfelel az RHS által biztosított előtagok egyikének has_any_ipv4_prefix("Source address is 10.1.2.3:1234", dynamic(["10.1.2.", "127.0.0."]))