Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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, nemin~ -
hassuffix_cshasználata, nemhassuffix
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."])) |