Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : ✅Microsoft Fabric✅✅
Extrait les informations structurées d’une expression de chaîne, et les représente sous forme de clé/valeur.
Les modes d’extraction suivants sont pris en charge :
- délimiteur spécifié: extraction basée sur des délimiteurs spécifiés qui déterminent la façon dont les clés/valeurs et les paires sont séparées les unes des autres.
- délimiteur non spécifié: extraction sans avoir besoin de spécifier des délimiteurs. Tout caractère nonphanumérique est considéré comme un délimiteur.
- Regex : extraction basée sur des expressions régulières.
Syntaxe
Délimiteur spécifié
T|parse-kv Expressionas( KeysList)with(pair_delimiter=PairDelimiter,kv_delimiter=KvDelimiter [ ,quote=QuoteChars ... [,escape= EscapeChar ...]] [,greedy=true])
Délimiteur non spécifié
T|parse-kv Expressionas(KeysList)with( [quote=QuoteChars ... [,escape= EscapeChar ...]])
Expression régulière
T|parse-kvExpressionas( KeysList)with(regex= RegexPattern))
En savoir plus sur les conventions de syntaxe.
Paramètres
Retours
Expression tabulaire d’entrée d’origine T, étendue avec des colonnes par clés spécifiées à extraire.
Remarque
- Si une clé n’apparaît pas dans un enregistrement, la valeur de colonne correspondante est
nullou une chaîne vide, selon le type de colonne. - Seules les clés répertoriées dans l’opérateur sont extraites.
- La première apparence d’une clé est extraite et les valeurs suivantes sont ignorées.
- Lorsque vous extrayez des clés et des valeurs, les espaces blancs de début et de fin sont ignorés.
Exemples
Les exemples de cette section montrent comment utiliser la syntaxe pour vous aider à commencer.
Extraction avec délimiteurs bien définis
Dans cette requête, les clés et les valeurs sont séparées par des délimiteurs bien définis. Ces délimètres sont des virgules et des caractères deux-points.
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
Sortie
| Détails | ThreadId | Machine |
|---|---|---|
| Le service est en cours | 458745723 | Node001 |
Extraction avec guillemets de valeur
Parfois, les noms de clé ou les valeurs sont encapsulés entre guillemets, ce qui permet aux valeurs elles-mêmes de contenir des caractères délimiteurs. Les exemples suivants montrent comment un quote argument est utilisé pour extraire ces valeurs.
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
Sortie
| heure de l’événement | src | dst | octets | failure |
|---|---|---|---|---|
| 2021-01-01 10:00:54.0000000 | 10.1.1.123 | 10.1.1.124 | 125 | connexion abandonnée |
Cette requête utilise des guillemets d’ouverture et de fermeture différents :
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
Sortie
| heure de l’événement | src | dst | octets | failure |
|---|---|---|---|---|
| 2021-01-01 10:00:54.0000000 | 10.1.1.123 | 10.1.1.124 | 125 | connexion abandonnée |
Les valeurs elles-mêmes peuvent contenir des caractères de guillemets correctement placés en échappement, comme l’illustre l’exemple suivant :
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
Sortie
| time | src | dst | octets | failure |
|---|---|---|---|---|
| 2021-01-01 10:00:54.0000000 | 10.1.1.123 | 10.1.1.124 | 125 | l’hôte distant a envoyé « bye ! » |
Extraction en mode gourmand
Il existe des cas où des valeurs nonquoées peuvent contenir des délimiteurs de paires. Dans ce cas, utilisez le greedy mode pour indiquer à l’opérateur d’analyser jusqu’à l’apparence de la clé suivante (ou fin de chaîne) lors de la recherche de la fin de la valeur.
Les exemples suivants comparent le fonctionnement de l’opérateur et sans le greedy mode spécifié :
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
Sortie
| name | phone | city |
|---|---|---|
| John | 555 | Nouvelle |
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
Sortie
| name | phone | city |
|---|---|---|
| John Doe | 555 5555 | New York |
Extraction sans délimiteurs bien définis
Dans l’exemple suivant, tout caractère nonphanumé est considéré comme un délimiteur valide :
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
Sortie
| Détails | ThreadId | Machine |
|---|---|---|
| Démarré | 458745723 | Node001 |
Les valeurs entre guillemets et échappement sont autorisées dans ce mode, comme illustré dans l’exemple suivant :
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
Sortie
| Détails | ThreadId | Machine |
|---|---|---|
| Le service ' est en cours | 458745723 | Node001 |
Extraction à l’aide de regex
Lorsqu’aucun délimiteur ne définit suffisamment de structure de texte, l’extraction basée sur des expressions régulières peut être utile.
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
Sortie
| URL de l’éditeur de référence | URL de requête | ID de l’annonceur |
|---|---|---|
https://hostname.com/redirect?dest=/?h=1234 |
https://hostname.com/?h=1234 |
24fefbca-cf27-4d62-a623-249c2ad30c73 |