parse-kv işleci
Şunlar için geçerlidir: ✅Microsoft Fabric✅
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
İfadeas
(
AnahtarlarıList)
with
(
pair_delimiter
=
PairDelimiter,
kv_delimiter
=
KvDelimiter [,
quote
=
QuoteChars ... [,
escape
=
EscapeChar ...]] [,
greedy
=
true
])
Belirtilmemiş sınırlayıcı
T|
parse-kv
İfadeas
(
Tuşları Listesi)
with
(
[quote
=
QuoteChars ... [,
escape
=
EscapeChar ...]])
Normal ifade
T|
parse-kv
İfadeas
(
AnahtarlarıListesi)
with
(
regex
=
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
null
veya boş bir dizedir. - 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ğerleri ayıkladığınızda, baştaki ve sondaki boşluklar yoksayılır.
Örnekler
Bu bölümdeki örneklerde, kullanmaya başlamanıza yardımcı olması için söz diziminin nasıl kullanılacağı gösterilmektedir.
İyi tanımlanmış sınırlayıcılarla ayıklama
Bu sorguda 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 |
Bu sorguda 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 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 |