Cette rubrique décrit l'utilisation des instructions d'opération sur les champs et fournit des exemples.
project
Cette instruction conserve les champs correspondant à un modèle donné et renomme les champs spécifiés. Lors de l'exécution, le système traite d'abord toutes les expressions de conservation des champs, puis les expressions de renommage.
Les champs temporels par défaut __time__ et __time_ns_part__ sont réservés et ne peuvent pas être renommés ni écrasés. Pour plus d'informations, consultez la section Champ temporel.
Syntaxe
| project -wildcard <field-pattern>, <output>=<field>, ...
Paramètres
|
Paramètre |
Type |
Obligatoire |
Description |
|
wildcard |
Bool |
Non |
Indique s'il faut activer la correspondance de modèle avec caractères génériques. Par défaut, la correspondance exacte des champs est utilisée. Ajoutez ce paramètre pour activer la correspondance avec caractères génériques. |
|
field-pattern |
FieldPattern |
Oui |
Le nom du champ à conserver, ou une combinaison d'un nom de champ et de caractères génériques pour traiter tous les champs correspondants. |
|
output |
Field |
Oui |
Le nouveau nom du champ. Vous ne pouvez pas renommer plusieurs champs vers le même champ cible. Important
Si le nouveau champ porte le même nom qu'un champ présent dans les données d'entrée, consultez la section Conservation et écrasement des anciennes et nouvelles valeurs pour connaître la politique d'attribution des valeurs. |
|
field |
Field |
Oui |
Le nom d'origine du champ à renommer.
|
Exemples
-
Exemple 1 : Conserver des champs spécifiques.
* | project level, err_msg -
Exemple 2 : Renommer des champs.
* | project log_level=level, err_msg -
Exemple 3 : Conserver le champ qui correspond exactement à
__tag__:*.* | project "__tag__:*"
project-away
Cette instruction supprime les champs correspondant à un modèle donné et conserve tous les autres champs.
Cette instruction conserve par défaut les champs temporels __time__ et __time_ns_part__. Pour plus d'informations, consultez la section Champs temporels.
Syntaxe
| project-away -wildcard <field-pattern>, ...
Paramètres
|
Paramètre |
Type |
Obligatoire |
Description |
|
wildcard |
Bool |
Non |
Indique s'il faut activer la correspondance de modèle avec caractères génériques. Par défaut, la correspondance exacte des champs est utilisée. Ajoutez ce paramètre pour activer la correspondance avec caractères génériques. |
|
field-pattern |
FieldPattern |
Oui |
Le nom du champ à supprimer, ou une combinaison d'un nom de champ et de caractères génériques pour traiter tous les champs correspondants. |
project-rename
Cette instruction renomme les champs spécifiés et conserve tous les autres champs.
Les champs temporels par défaut __time__ et __time_ns_part__ sont réservés et ne peuvent pas être renommés ni écrasés. Pour plus d'informations, consultez la section Champs temporels.
Syntaxe
| project-rename <output>=<field>, ...
Paramètres
|
Paramètre |
Type |
Obligatoire |
Description |
|
output |
Field |
Oui |
Le nouveau nom du champ. Vous ne pouvez pas renommer plusieurs champs vers le même champ cible. Important
Si le nouveau champ porte le même nom qu'un champ présent dans les données d'entrée, consultez la section Conservation et écrasement des anciennes et nouvelles valeurs pour connaître la politique d'attribution des valeurs. |
|
field |
Field |
Oui |
Le nom d'origine du champ à renommer.
|
Exemple
Renommez les champs spécifiés.
* | project-rename log_level=level, log_err_msg=err_msg
expand-values
Cette instruction développe la première couche d'un objet JSON dans un champ spécifié pour générer plusieurs résultats.
Le type de données des champs de sortie est VARCHAR. Si un champ de résultat porte le même nom qu'un champ d'entrée, consultez la section Conservation et écrasement des valeurs pour obtenir des informations sur la politique de gestion des valeurs.
Vous ne pouvez pas effectuer d'opérations sur les champs temporels
__time__ou__time_ns_part__. Pour plus d'informations, consultez la section Champs temporels.Cette instruction prend en charge la transformation des données dans la nouvelle version. Pour différents scénarios d'utilisation de SPL, consultez la section Référence générale.
Syntaxe
| expand-values -path=<path> -limit=<limit> -keep <field> as <output>
Paramètres
|
Paramètre |
Type |
Obligatoire |
Description |
|
path |
JSONPath |
Non |
Spécifie le chemin JSON au sein du contenu du champ pour localiser le contenu à développer. La valeur par défaut est vide, ce qui signifie que l'intégralité du contenu du champ spécifié est développée directement. |
|
limit |
Integer |
Non |
Le nombre maximal d'entrées développées à partir de chaque entrée de données brute. Valeurs valides : 0 et 1 à 10. Valeur par défaut : 10. Remarque
La taille cumulative des valeurs développées pour un seul champ ne peut pas dépasser 50 Mo. Lorsque limit est défini entre 1 et 10, le nombre de lignes développées est limité par cette valeur. Remarque
Lorsque limit est défini sur 0, le nombre de lignes développées par champ n'est pas limité. Toutefois, le volume total des données renvoyées pour tous les champs et toutes les lignes est plafonné à environ 50 Mo. Si ce plafond est dépassé, seuls les résultats partiels déjà traités sont renvoyés. Les valeurs individuelles des champs ne sont pas tronquées. Remarque
La valeur qui déclenche le plafond est incluse dans le résultat, de sorte que les données réellement renvoyées peuvent légèrement dépasser 50 Mo. La troncature due au plafond est silencieuse et ne génère aucune erreur ni aucun avertissement. |
|
keep |
Bool |
Non |
Indique s'il faut conserver le champ d'origine après le développement. Par défaut, le champ d'origine n'est pas conservé. Ajoutez ce paramètre pour conserver le champ d'origine. |
|
field |
Field |
Oui |
Le nom du champ d'origine à développer. Le type pris en charge est |
|
output |
Field |
Non |
Le nom du champ cible pour le développement. S'il n'est pas spécifié, le résultat est envoyé par défaut vers le champ d'entrée. La logique de développement du contenu d'origine est la suivante : Tableau JSON : Développe chaque élément du tableau. Dictionnaire JSON : Développe chaque paire clé-valeur du dictionnaire. Autres types JSON : Renvoie la valeur initiale. JSON non valide : Renvoie |
Exemples
Exemple 1 : Développer un tableau pour produire plusieurs résultats de données. Exemple 2 : Développer un dictionnaire pour produire plusieurs résultats de données. Exemple 3 : Développer le contenu d'un chemin JSON spécifié et l'envoyer vers un nouveau champ.
-
Instruction SPL
* | expand-values y -
Données d'entrée
x: 'abc' y: '[0,1,2]' -
Données de sortie
# Entry 1 x: 'abc' y: '0' # Entry 2 x: 'abc' y: '1' # Entry 3 x: 'abc' y: '2'
-
Instruction SPL
* | expand-values y -
Données d'entrée
x: 'abc' y: '{"a": 1, "b": 2}' -
Données de sortie
# Entry 1 x: 'abc' y: '{"a": 1}' # Entry 2 x: 'abc' y: '{"b": 2}'
-
Instruction SPL
* | expand-values -path='$.body' -keep content as body -
Données d'entrée
content: '{"body": [0, {"a": 1, "b": 2}]}' -
Données de sortie
# Entry 1 content: '{"body": [1, 2]}' body: '0' # Entry 2 content: '{"body": [1, 2]}' body: '{"a": 1, "b": 2}'
-