Aracılığıyla paylaş


parse-kv işleci

Şunlar için geçerlidir: ✅Microsoft Fabric✅Azure Veri Gezgini Azure İzleyiciMicrosoft Sentinel

Bir dize ifadesinden yapılandırılmış bilgileri ayıklar ve bir anahtar/değer formundaki bilgileri temsil eder.

Aşağıdaki ayıklama modları desteklenir:

  • Belirtilen sınırlayıcı: Anahtarların/değerlerin ve çiftlerin birbirinden nasıl ayrıldığını belirleyen belirtilen sınırlayıcıları temel alan ayıklama.
  • Belirtilmeyen sınırlayıcı: Sınırlayıcıları belirtmeye gerek olmadan ayıklama. Herhangi bir nonalfanumerik karakter sınırlayıcı olarak kabul edilir.
  • Regex: Normal ifadelere göre ayıklama.

Sözdizimi

Belirtilen sınırlayıcı

T parse-kv | İfade as ( AnahtarlarıList = ) pair_delimiter with ( PairDelimiter kv_delimiter = , KvDelimiter [, = quote QuoteChars ... [, escape = EscapeChar ...]] [, greedy = true])

Belirtilmemiş sınırlayıcı

T | parse-kv İfade as ( Tuşları Listesi ) ( with [quote = QuoteChars ... [, escape = EscapeChar ...]])

Normal ifade

T | parse-kv İfade ( as AnahtarlarıListesi ) regex ( = with RegexPattern) )

Söz dizimi kuralları hakkında daha fazla bilgi edinin.

Parametreler

Ad Tür Zorunlu Açıklama
Expression string ✔️ Anahtar değerlerinin ayıklandığı ifade.
KeysList string ✔️ Anahtar adlarının ve bunların değer veri türlerinin virgülle ayrılmış listesi. Anahtarların sırasının, metinde göründükleri sırayla eşleşmesi gerekmez.
PairDelimiter string Anahtar değer çiftlerini birbirinden ayıran bir sınırlayıcı.
KvDelimiter string Anahtarları değerlerden ayıran sınırlayıcı.
QuoteChars string Anahtar adı veya ayıklanan değerin sarmalanabileceği açılış ve kapanış tırnaklarını temsil eden bir veya iki karakterli dize değişmez değeri. Parametre, ayrı bir açılış/kapanış tırnakları kümesi belirtmek için tekrarlanabilir.
EscapeChar string Tırnak içinde bir değerdeki özel karakterlerden kaçmak için kullanılabilecek bir karakteri açıklayan tek karakterli dize değişmez değeri. Birden çok kaçış karakteri kullanılırsa parametre yinelenebilir.
RegexPattern string Tam olarak iki yakalama grubu içeren normal ifade. İlk grup anahtar adını, ikinci grup ise anahtar değerini temsil eder.

Döndürülenler

Ayıklanması gereken belirtilen anahtar başına sütunlarla genişletilmiş özgün giriş tablosal ifadesi T.

Not

  • Bir kayıtta anahtar görünmüyorsa, sütun türüne bağlı olarak ilgili sütun değeri boş bir dize veya olur null .
  • Yalnızca işleçte listelenen anahtarlar ayıklanır.
  • Bir anahtarın ilk görünümü ayıklanır ve sonraki değerler yoksayılır.
  • Anahtarlar ve değerler ayıklanırken baştaki ve sondaki boşluklar yoksayılır.

Örnekler

İyi tanımlanmış sınırlayıcılarla ayıklama

Aşağıdaki örnekte anahtarlar ve değerler iyi tanımlanmış sınırlayıcılarla ayrılmıştır. Bu sınırlayıcılar virgül ve iki nokta üst üste karakterleridir.

print str="ThreadId:458745723, Machine:Node001, Text: The service is up, Level: Info"
| parse-kv str as (Text: string, ThreadId:long, Machine: string) with (pair_delimiter=',', kv_delimiter=':')
| project-away str

Çıktı

Metin ThreadId Makine
Hizmet çalışır durumda 458745723 Node001

Değer alıntısı ile ayıklama

Bazen anahtar adları veya değerler tırnak içine alınır ve bu da değerlerin sınırlayıcı karakterler içermesine olanak sağlar. Aşağıdaki örneklerde bu tür değerleri ayıklamak için bağımsız quote değişkenin nasıl kullanıldığı gösterilmektedir.

print str='src=10.1.1.123 dst=10.1.1.124 bytes=125 failure="connection aborted" "event time"=2021-01-01T10:00:54'
| parse-kv str as (['event time']:datetime, src:string, dst:string, bytes:long, failure:string) with (pair_delimiter=' ', kv_delimiter='=', quote='"')
| project-away str

Çıktı

olay zamanı src Dst bayt başarısızlık
2021-01-01 10:00:54.0000000 10.1.1.123 10.1.1.124 125 bağlantı durduruldu

Aşağıdaki örnekte farklı açma ve kapatma tırnak işaretleri kullanılır:

print str='src=10.1.1.123 dst=10.1.1.124 bytes=125 failure=(connection aborted) (event time)=(2021-01-01 10:00:54)'
| parse-kv str as (['event time']:datetime, src:string, dst:string, bytes:long, failure:string) with (pair_delimiter=' ', kv_delimiter='=', quote='()')
| project-away str

Çıktı

olay zamanı src Dst bayt başarısızlık
2021-01-01 10:00:54.0000000 10.1.1.123 10.1.1.124 125 bağlantı durduruldu

Aşağıdaki örnekte gösterildiği gibi, değerlerin kendileri doğru şekilde kaçış tırnak karakterleri içerebilir:

print str='src=10.1.1.123 dst=10.1.1.124 bytes=125 failure="the remote host sent \\"bye!\\"" time=2021-01-01T10:00:54'
| parse-kv str as (['time']:datetime, src:string, dst:string, bytes:long, failure:string) with (pair_delimiter=' ', kv_delimiter='=', quote='"', escape='\\')
| project-away str

Çıktı

time src Dst bayt başarısızlık
2021-01-01 10:00:54.0000000 10.1.1.123 10.1.1.124 125 uzak ana bilgisayar "bye!" gönderdi

Doyumsuz modda ayıklama

Alıntılanmamış değerlerin çift sınırlayıcılar içerebileceği durumlar vardır. Bu durumda, işlecine değerin greedy bitişini ararken sonraki anahtar görünümüne (veya dizenin sonuna) kadar tarama yapmak üzere belirtmek için modunu kullanın.

Aşağıdaki örnekler, işlecin belirtilen modla ve mod olmadan greedy nasıl çalıştığını karşılaştırır:

print str='name=John Doe phone=555 5555 city=New York'
| parse-kv str as (name:string, phone:string, city:string) with (pair_delimiter=' ', kv_delimiter='=')
| project-away str

Çıktı

Adı telefon şehir
John 555 Yeni
print str='name=John Doe phone=555 5555 city=New York'
| parse-kv str as (name:string, phone:string, city:string) with (pair_delimiter=' ', kv_delimiter='=', greedy=true)
| project-away str

Çıktı

Adı telefon şehir
John Doe 555 5555 New Yok

İyi tanımlanmış sınırlayıcılar olmadan ayıklama

Aşağıdaki örnekte, herhangi bir nonalphanumeric karakteri geçerli bir sınırlayıcı olarak kabul edilir:

print str="2021-01-01T10:00:34 [INFO] ThreadId:458745723, Machine:Node001, Text: Started"
| parse-kv str as (Text: string, ThreadId:long, Machine: string)
| project-away str

Çıktı

Metin ThreadId Makine
Başlarken 458745723 Node001

Aşağıdaki örnekte gösterildiği gibi bu modda alıntı ve kaçış değerlerine izin verilir:

print str="2021-01-01T10:00:34 [INFO] ThreadId:458745723, Machine:Node001, Text: 'The service \\' is up'"
| parse-kv str as (Text: string, ThreadId:long, Machine: string) with (quote="'", escape='\\')
| project-away str

Çıktı

Metin ThreadId Makine
' hizmeti çalışır durumda 458745723 Node001

Regex kullanarak ayıklama

Sınırlayıcılar metin yapısını yeterince iyi tanımlamadığında, normal ifade tabanlı ayıklama yararlı olabilir.

print str=@'["referer url: https://hostname.com/redirect?dest=/?h=1234", "request url: https://hostname.com/?h=1234", "advertiser id: 24fefbca-cf27-4d62-a623-249c2ad30c73"]'
| parse-kv str as (['referer url']:string, ['request url']:string, ['advertiser id']: guid) with (regex=@'"([\w ]+)\s*:\s*([^"]*)"')
| project-away str

Çıktı

başvuran url'si istek URL'si reklamveren kimliği
https://hostname.com/redirect?dest=/?h=1234 https://hostname.com/?h=1234 24fefbca-cf27-4d62-a623-249c2ad30c73