Sztringoperátorok
Kusto lekérdezésnyelv (KQL) különböző lekérdezési operátorokat kínál a sztring adattípusok kereséséhez. A következő cikk ismerteti a sztringkifejezések indexelését, felsorolja a sztringlekérdezési operátorokat, é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 típusú string
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 operátorokkal való lekérdezésekben használatosak, amelyek has
a string
nevük részét képezik, például has
, !has
, hasprefix
, !hasprefix
. Ezeknek az operátoroknak a szemantikáját az oszlop kódolásának módja határozza meg. Ahelyett, hogy "egyszerű" részsztring-egyezést végeznek, ezek az operátorok megegyeznek a kifejezésekkel.
Mi az a kifejezés?
Alapértelmezés szerint minden string
érték alfanumerikus karakterek maximális sorozatára van felosztva, és ezek mindegyike kifejezéssé alakul.
A következőben string
például a kifejezések Kusto
a következők: , KustoExplorerQueryRun
, és a következő részsztringek: ad67d136
, c1db
, 4f9f
, 88ef
. d94f3b6b0b5a
Kusto: ad67d136-c1db-4f9f-88ef-d94f3b6b0b5a;KustoExplorerQueryRun
A Kusto létrehoz egy kifejezésindexet, amely az összes olyan kifejezésből áll, amely három vagy több karakterből áll, és ezt az indexet olyan sztringoperátorok használják, mint has
a , !has
és így tovább. Ha a lekérdezés három karakternél kisebb kifejezést keres, vagy operátort contains
használ, akkor a lekérdezés visszaáll az oszlop értékeinek vizsgálatához. A vizsgálat sokkal lassabb, mint a kifejezés keresése az indexben.
Megjegyzés
A EngineV2-ben egy kifejezés négy vagy több karakterből áll.
Operátorok sztringeken
Ebben a cikkben a következő rövidítéseket használjuk:
- RHS = a kifejezés jobb oldala
- LHS = a kifejezés bal oldala
Az utótaggal rendelkező _cs
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ő | Yes | "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 | Yes | "Fabrikam" !contains_cs "Kam" |
endswith |
Az RHS az LHS záró részlekérdezése | Nem | "Fabrikam" endswith "Kam" |
!endswith |
Az RHS nem az LHS záró részlekérdezése | Nem | "Fabrikam" !endswith "brik" |
endswith_cs |
Az RHS az LHS záró részlekérdezése | Igen | "Fabrikam" endswith_cs "kam" |
!endswith_cs |
Az RHS nem az LHS záró részlekérdezése | Yes | "Fabrikam" !endswith_cs "brik" |
has |
A jobb oldali (RHS) egy teljes kifejezés a bal oldalon (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 az has összes elemen |
Nem | "North and South America" has_all("south", "north") |
has_any |
Ugyanaz, mint az has elemek bármelyikén |
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 | Yes | "North America" !has_cs "amer" |
hasprefix |
Az RHS egy kifejezéselőtag az LHS-ben | Nem | "North America" hasprefix "ame" |
!hasprefix |
Az RHS nem kifejezéselőtag az LHS-ben | Nem | "North America" !hasprefix "mer" |
hasprefix_cs |
Az RHS egy kifejezéselőtag az LHS-ben | Igen | "North America" hasprefix_cs "Ame" |
!hasprefix_cs |
Az RHS nem kifejezéselőtag az LHS-ben | Yes | "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 kifejezés-utótag az LHS-ben | Nem | "North America" !hassuffix "americ" |
hassuffix_cs |
Az RHS egy kifejezés utótagja az LHS-ben | Yes | "North America" hassuffix_cs "ica" |
!hassuffix_cs |
Az RHS nem kifejezés-utótag az LHS-ben | Igen | "North America" !hassuffix_cs "icA" |
in |
Az elemek bármelyikével egyenlő | Yes | "abc" in ("123", "345", "abc") |
!in |
Nem egyenlő egyetlen elemével sem | Igen | "bca" !in ("123", "345", "abc") |
in~ |
Az elemek bármelyikével egyenlő | Nem | "Abc" in~ ("123", "345", "abc") |
!in~ |
Nem egyenlő egyetlen elemével sem | Nem | "bCa" !in~ ("123", "345", "ABC") |
matches regex |
Az LHS egyezést tartalmaz az RHS-hez | Yes | "Fabrikam" matches regex "b.*k" |
startswith |
Az RHS az LHS kezdeti alhálózata | Nem | "Fabrikam" startswith "fab" |
!startswith |
Az RHS nem az LHS kezdeti alhálózata | Nem | "Fabrikam" !startswith "kam" |
startswith_cs |
Az RHS az LHS kezdeti alhálózata | Yes | "Fabrikam" startswith_cs "Fab" |
!startswith_cs |
Az RHS nem az LHS kezdeti alhálózata | Igen | "Fabrikam" !startswith_cs "fab" |
Teljesítménnyel kapcsolatos tippek
A jobb teljesítmény érdekében, ha két operátor hajtja végre ugyanazt a feladatot, használja a kis- és nagybetűket megkülönböztető operátort. Például:
- Használja a
==
, nem=~
- Használja a
in
, nemin~
- Használja a
hassuffix_cs
, nemhassuffix
A gyorsabb eredmény érdekében, ha nem alfanumerikus karakterek által kötött szimbólumot vagy alfanumerikus szót, illetve egy mező kezdetét vagy végét teszteli, használja has
a vagy in
a parancsot.
has
gyorsabban működik, mint contains
a , startswith
vagy endswith
.
Az IPv4-címek vagy azok előtagjainak kereséséhez használja az IPv4-címek egyik speciális operátorát, amely erre a célra van optimalizálva.
További információ: Ajánlott lekérdezési eljárások.
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
Az operátorok alábbi csoportja 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."])) |
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: