Dize işleçleri
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 alır. 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 adlarının has
bir parçası olan , !has
, , hasprefix
!hasprefix
gibi işleçlerle string
has
sorgularda kullanılır. Bu işleçlerin semantiği, sütunun kodlama şekline göre dikte edilir. Bu işleçler , "düz" alt dize eşleştirmesi yapmak yerine 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 şu 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.
Not
EngineV2'de bir terim dört veya daha fazla karakterden oluşur.
Dizelerdeki işleçler
Bu makalede aşağıdaki kısaltmalar kullanılır:
- RHS = ifadenin sağ tarafı
- LHS = ifadenin sol tarafı
Soneki olan _cs
işleçler büyük/küçük harfe duyarlıdır.
İşleç | Açıklama | Case-Sensitive | Örnek (ödemeler 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 alt dizileri olarak gerçekleşir | Hayır | "FabriKam" contains "BRik" |
!contains |
RHS LHS'de oluşmaz | Hayır | "Fabrikam" !contains "xyz" |
contains_cs |
RHS, LHS'nin alt dizileri olarak gerçekleşir | 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) tam 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ı ama tüm öğeler üzerinde çalışır |
Hayır | "North and South America" has_all("south", "north") |
has_any |
has Aynı ama 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 bir 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 bir 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 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 terim soneki değildir | Yes | "North America" !hassuffix_cs "icA" |
in |
Öğelerden herhangi birine eşittir | Yes | "abc" in ("123", "345", "abc") |
!in |
Öğelerden 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~ |
Öğelerden 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 dizilerinden biri | 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 dizilerinden biri | 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. Örnek:
- kullanma
==
, kullanma=~
- kullanma
in
, kullanmain~
- kullanma
hassuffix_cs
, kullanmahassuffix
Daha hızlı sonuçlar için, alfasayısal olmayan karakterlerle bağlı bir simge veya alfasayısal sözcük olup olmadığını test ediyorsanız veya kullanın has
in
.
has
, startswith
veya endswith
değerinden contains
daha hızlı çalışır.
IPv4 adreslerini veya ön eklerini aramak için, IPv4 adreslerinde bu amaç için iyileştirilmiş özel işleçlerden birini kullanın.
Daha fazla bilgi için bkz . En iyi sorgu 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.
İşleç | Açıklama | Örnek (ödemeler 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."])) |
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin