Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przełącz usługi przy użyciu rozwijanej listy Wersja. Dowiedz się więcej o nawigacji.
Dotyczy: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
Wyodrębnia informacje ustrukturyzowane z wyrażenia ciągu i reprezentuje informacje w formularzu klucza/wartości.
Obsługiwane są następujące tryby wyodrębniania:
- określony ogranicznik: wyodrębnianie na podstawie określonych ograniczników, które określają, jak klucze/wartości i pary są oddzielone od siebie.
- ogranicznik nieokreślony: wyodrębnianie bez konieczności określania ograniczników. Każdy znak niefanumeryczny jest uważany za ogranicznik.
- Wyrażenie regularne: wyodrębnianie na podstawie wyrażeń regularnych.
Składnia
Określony ogranicznik
T|parse-kv Expressionas( KeysList)with(pair_delimiter= [,kv_delimiter=QuoteChars ... [,quote= EscapeChar ...]] [,escape=],
Ogranicznik nieokreślony
T|parse-kv Expressionas(KeysList)with( [quote=QuoteChars ... [,escape= EscapeChar ...]])
Wyrażenie regularne
T|parse-kvExpressionas( KeysList)with(regex= RegexPattern))
Dowiedz się więcej na temat konwencji składni.
Parametry
Zwraca
Oryginalne wejściowe wyrażenie tabelaryczne T, rozszerzone o kolumny na określone klucze do wyodrębnienia.
Uwaga
- Jeśli klucz nie jest wyświetlany w rekordzie, odpowiadająca mu wartość kolumny jest
nulllub pusty ciąg, w zależności od typu kolumny. - Wyodrębnione są tylko klucze wymienione w operatorze.
- Pierwszy wygląd klucza jest wyodrębniany, a kolejne wartości są ignorowane.
- Podczas wyodrębniania kluczy i wartości wiodące i końcowe białe spacje są ignorowane.
Przykłady
W przykładach w tej sekcji pokazano, jak używać składni, aby ułatwić rozpoczęcie pracy.
Wyodrębnianie z dobrze zdefiniowanymi ogranicznikami
W tym zapytaniu klucze i wartości są rozdzielane dobrze zdefiniowanymi ogranicznikami. Te ograniczniki są przecinkami i dwukropkami.
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
Wyjście
| Tekst | Identyfikatorwątku | Maszyna |
|---|---|---|
| Usługa jest włączona | 458745723 | Node001 |
Wyodrębnianie z cudzysłów wartości
Czasami nazwy kluczy lub wartości są owinięte cudzysłowami, co umożliwia same wartości zawierające znaki ogranicznika. W poniższych przykładach pokazano, jak quote argument jest używany do wyodrębniania takich wartości.
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
Wyjście
| czas zdarzenia | src | Czasu letniego | B | awaria |
|---|---|---|---|---|
| 2021-01-01 10:00:54.0000000 | 10.1.1.123 | 10.1.1.124 | 125 | przerwane połączenie |
To zapytanie używa różnych cudzysłowów otwierających i zamykających:
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
Wyjście
| czas zdarzenia | src | Czasu letniego | B | awaria |
|---|---|---|---|---|
| 2021-01-01 10:00:54.0000000 | 10.1.1.123 | 10.1.1.124 | 125 | przerwane połączenie |
Same wartości mogą zawierać prawidłowo znaki cudzysłowu o wartościach ucieczki, jak pokazano w poniższym przykładzie:
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
Wyjście
| time | src | Czasu letniego | B | awaria |
|---|---|---|---|---|
| 2021-01-01 10:00:54.0000000 | 10.1.1.123 | 10.1.1.124 | 125 | zdalny host wysłany "bye!" |
Wyodrębnianie w trybie chciwości
Istnieją przypadki, gdy wartości bez cudzysłów mogą zawierać ograniczniki par. W takim przypadku użyj greedy trybu , aby wskazać operatorowi skanowanie do momentu następnego wyglądu klucza (lub końca ciągu) podczas wyszukiwania wartości kończącej.
W poniższych przykładach porównamy sposób działania operatora z określonym trybem i bez tego greedy trybu:
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
Wyjście
| name | phone | miejscowość |
|---|---|---|
| Michał | 555 | Nowe |
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
Wyjście
| name | phone | miejscowość |
|---|---|---|
| John Doe | 555 5555 | Nowy Jork |
Wyodrębnianie bez dobrze zdefiniowanych ograniczników
W poniższym przykładzie każdy znak niefanumeryczny jest uznawany za prawidłowy ogranicznik:
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
Wyjście
| Tekst | Identyfikatorwątku | Maszyna |
|---|---|---|
| Rozpoczęto | 458745723 | Node001 |
Wartości cudzysłowu i ucieczki są dozwolone w tym trybie, jak pokazano w poniższym przykładzie:
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
Wyjście
| Tekst | Identyfikatorwątku | Maszyna |
|---|---|---|
| Usługa " jest włączona | 458745723 | Node001 |
Wyodrębnianie przy użyciu wyrażenia regularnego
Jeśli ograniczniki nie definiują wystarczającej struktury tekstu, wyodrębnianie oparte na wyrażeniach regularnych może być przydatne.
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
Wyjście
| adres URL referera | adres URL żądania | identyfikator reklamodawcy |
|---|---|---|
https://hostname.com/redirect?dest=/?h=1234 |
https://hostname.com/?h=1234 |
24fefbca-cf27-4d62-a623-249c2ad30c73 |