Dize işleçleri
Şunlar için geçerlidir: ✅Microsoft Fabric✅Azure Veri Gezgini✅ Azure İzleyici✅Microsoft Sentinel
Kusto Sorgu Dili (KQL), dize veri türlerini aramak için çeşitli sorgu işleçleri sunar. Aşağıdaki makalede dize terimlerinin dizine nasıl eklendiği açıklanır, dize sorgu işleçleri listelenir ve performansı iyileştirmeye yönelik ipuçları verilmektedir.
Dize terimlerini anlama
Kusto, türünde string
sütunlar da dahil olmak üzere tüm sütunları dizine ekler. Gerçek verilere bağlı olarak bu tür sütunlar için birden çok dizin oluşturulur. Bu dizinler doğrudan kullanıma sunulmaz, ancak , , !hasprefix
gibi !has
has
hasprefix
adlarının bir parçası olan has
işleçlerle string
yapılan sorgularda kullanılır. Bu işleçlerin semantiği, sütunun kodlama şekline göre dikte edilir. "Düz" alt dize eşleştirmesi yapmak yerine, bu işleçler terimleri eşleştirir.
Terim nedir?
Varsayılan olarak, her string
değer alfasayısal karakterlerin en üst düzey dizilerine ayrılır ve bu dizilerin her biri bir terime dönüştürülür.
Örneğin, aşağıdaki string
içinde terimler Kusto
, KustoExplorerQueryRun
ve aşağıdaki alt dizelerdir: ad67d136
, c1db
, 4f9f
, 88ef
, . d94f3b6b0b5a
Kusto: ad67d136-c1db-4f9f-88ef-d94f3b6b0b5a;KustoExplorerQueryRun
Kusto, üç veya daha fazla karakterden oluşan tüm terimlerden oluşan bir terim dizini oluşturur ve bu dizin , !has
gibi has
dize işleçleri tarafından kullanılır. Sorgu üç karakterden küçük bir terim ararsa veya işleç contains
kullanırsa, sorgu sütundaki değerleri taramaya geri döner. Tarama, terim dizininde terimi aramaktan çok daha yavaştır.
Dizelerdeki işleçler
Bu makalede aşağıdaki kısaltmalar kullanılır:
- RHS = ifadenin sağ tarafı
- LHS = ifadenin sol tarafı
Son eki olan _cs
işleçler büyük/küçük harfe duyarlıdır.
Operator | Açıklama | Büyük/Küçük Harfe Duyarlı | Örnek (verimler true ) |
---|---|---|---|
== |
Eşittir | Yes | "aBc" == "aBc" |
!= |
Eşit değil | Yes | "abc" != "ABC" |
=~ |
Eşittir | Hayır | "abc" =~ "ABC" |
!~ |
Eşit değil | Hayır | "aBc" !~ "xyz" |
contains |
RHS, LHS'nin bir alt dizi olarak oluşur | Hayır | "FabriKam" contains "BRik" |
!contains |
RHS LHS'de oluşmaz | Hayır | "Fabrikam" !contains "xyz" |
contains_cs |
RHS, LHS'nin bir alt dizi olarak oluşur | Yes | "FabriKam" contains_cs "Kam" |
!contains_cs |
RHS LHS'de oluşmaz | Yes | "Fabrikam" !contains_cs "Kam" |
endswith |
RHS, LHS'nin kapanış alt dizidir | Hayır | "Fabrikam" endswith "Kam" |
!endswith |
RHS, LHS'nin kapanış alt dizilerinden biri değildir | Hayır | "Fabrikam" !endswith "brik" |
endswith_cs |
RHS, LHS'nin kapanış alt dizidir | Yes | "Fabrikam" endswith_cs "kam" |
!endswith_cs |
RHS, LHS'nin kapanış alt dizilerinden biri değildir | Yes | "Fabrikam" !endswith_cs "brik" |
has |
Sağ taraf (RHS), sol taraftaki (LHS) tüm bir terimdir | Hayır | "North America" has "america" |
!has |
RHS, LHS'de tam bir terim değildir | Hayır | "North America" !has "amer" |
has_all |
has Aynı ancak tüm öğelerde çalışır |
Hayır | "North and South America" has_all("south", "north") |
has_any |
has Aynı ancak herhangi bir öğe üzerinde çalışır |
Hayır | "North America" has_any("south", "north") |
has_cs |
RHS, LHS'de tam bir terimdir | Yes | "North America" has_cs "America" |
!has_cs |
RHS, LHS'de tam bir terim değildir | Yes | "North America" !has_cs "amer" |
hasprefix |
RHS, LHS'de bir terim ön ekidir | Hayır | "North America" hasprefix "ame" |
!hasprefix |
RHS, LHS'de terim ön eki değildir | Hayır | "North America" !hasprefix "mer" |
hasprefix_cs |
RHS, LHS'de bir terim ön ekidir | Yes | "North America" hasprefix_cs "Ame" |
!hasprefix_cs |
RHS, LHS'de terim ön eki değildir | Yes | "North America" !hasprefix_cs "CA" |
hassuffix |
RHS, LHS'de bir terim sonekidir | Hayır | "North America" hassuffix "ica" |
!hassuffix |
RHS, LHS'de bir terim soneki değildir | Hayır | "North America" !hassuffix "americ" |
hassuffix_cs |
RHS, LHS'de bir terim sonekidir | Yes | "North America" hassuffix_cs "ica" |
!hassuffix_cs |
RHS, LHS'de bir terim soneki değildir | Yes | "North America" !hassuffix_cs "icA" |
in |
Öğelerden herhangi birine eşittir | Yes | "abc" in ("123", "345", "abc") |
!in |
Öğelerin hiçbirine eşit değildir | Yes | "bca" !in ("123", "345", "abc") |
in~ |
Öğelerden herhangi birine eşittir | Hayır | "Abc" in~ ("123", "345", "abc") |
!in~ |
Öğelerin hiçbirine eşit değildir | Hayır | "bCa" !in~ ("123", "345", "ABC") |
matches regex |
LHS, RHS için bir eşleşme içeriyor | Yes | "Fabrikam" matches regex "b.*k" |
startswith |
RHS, LHS'nin ilk alt dizisini oluşturur | Hayır | "Fabrikam" startswith "fab" |
!startswith |
RHS, LHS'nin ilk alt dizilerinden biri değildir | Hayır | "Fabrikam" !startswith "kam" |
startswith_cs |
RHS, LHS'nin ilk alt dizisini oluşturur | Yes | "Fabrikam" startswith_cs "Fab" |
!startswith_cs |
RHS, LHS'nin ilk alt dizilerinden biri değildir | Yes | "Fabrikam" !startswith_cs "fab" |
Performans ipuçları
Daha iyi performans için, aynı görevi yerine getiren iki işleç olduğunda büyük/küçük harfe duyarlı olanı kullanın. Örneğin:
- kullanma
==
, kullanma=~
- kullanma
in
, kullanmain~
- kullanma
hassuffix_cs
, kullanmahassuffix
Daha hızlı sonuç almak için, alfasayısal olmayan karakterlerle bağlı bir simge veya alfasayısal sözcük olup olmadığını ya da bir alanın başlangıcını veya sonunu test ediyorsanız veya in
kullanınhas
.
has
, startswith
veya endswith
değerinden contains
daha hızlı çalışır.
IPv4 adreslerini veya ön eklerini aramak için, bu amaç için iyileştirilmiş IPv4 adreslerindeki özel işleçlerden birini kullanın.
Daha fazla bilgi için bkz . Sorgu en iyi yöntemleri.
Örneğin, bu sorgulardan ilki daha hızlı çalışır:
StormEvents | where State has "North" | count;
StormEvents | where State contains "nor" | count
IPv4 adreslerindeki işleçler
Aşağıdaki işleç grubu IPv4 adreslerinde veya ön eklerinde dizin hızlandırılmış arama sağlar.
Operator | Açıklama | Örnek (verimler true ) |
---|---|---|
has_ipv4 | LHS, RHS tarafından temsil edilen IPv4 adresini içerir | has_ipv4("Source address is 10.1.2.3:1234", "10.1.2.3") |
has_ipv4_prefix | LHS, RHS tarafından temsil edilen ön ekle eşleşen bir IPv4 adresi içerir | has_ipv4_prefix("Source address is 10.1.2.3:1234", "10.1.2.") |
has_any_ipv4 | LHS, RHS tarafından sağlanan IPv4 adreslerinden birini içerir | has_any_ipv4("Source address is 10.1.2.3:1234", dynamic(["10.1.2.3", "127.0.0.1"])) |
has_any_ipv4_prefix | LHS, RHS tarafından sağlanan ön eklerden biriyle eşleşen bir IPv4 adresi içerir | has_any_ipv4_prefix("Source address is 10.1.2.3:1234", dynamic(["10.1.2.", "127.0.0."])) |