Découvrez l'utilisation et les exemples des instructions de transformation des données (nouvelle version).
pack-fields
Regroupe plusieurs champs dans un nouveau champ sous la forme d'une chaîne sérialisée en JSON. Cette fonction convient aux scénarios de transmission structurée, tels que la construction de corps de requête API.
Par défaut, les champs qui ne sont pas de type Varchar ne sont pas traités. Cela inclut les champs
__time__et__time_ns_part__.Par défaut, les données source ne sont pas conservées.
Syntaxe
| pack-fields -keep -ltrim -include=<include> -exclude=<exclude> as <output>
Paramètres
|
Paramètre |
Type |
Obligatoire |
Description |
|
output |
String |
Oui |
Nom du champ de sortie après regroupement. La valeur du champ est au format JSON. |
|
include |
RegExp |
Non |
Configuration de la liste d'autorisation. Les champs correspondant à l'expression régulière sont regroupés. La valeur par défaut est « .* », ce qui correspond à tous les champs. Pour plus d'informations, consultez la rubrique Expressions régulières. |
|
exclude |
RegExp |
Non |
Configuration de la liste de blocage, prioritaire sur la liste d'autorisation. Les champs correspondant à l'expression régulière ne sont pas regroupés. La valeur par défaut est vide, ce qui signifie qu'aucune correspondance n'est effectuée. Pour plus d'informations, consultez la rubrique Expressions régulières. |
|
ltrim |
String |
Non |
Supprime le préfixe du nom du champ de sortie. |
|
keep |
Bool |
Non |
Indique s'il faut conserver les données source après le regroupement. True : conserve les données source regroupées dans la sortie. False (par défaut) : ne conserve pas les données source regroupées dans la sortie. |
Exemples
-
Exemple 1 : regroupez tous les champs de journal dans le champ test. Par défaut, les champs d'origine regroupés sont supprimés.
-
Instruction SPL
* | pack-fields -include='\w+' as test -
Données d'entrée
test1:123 test2:456 test3:789 -
Sortie
test:{"test1": "123", "test2": "456", "test3": "789"}
-
-
Exemple 2 : regroupez tous les champs de journal dans le champ test sans supprimer les champs d'origine regroupés.
-
Instruction SPL
* | pack-fields -keep -include='\w+' as test -
Données d'entrée
test1:123 test2:456 test3:789 -
Sortie
test:{"test1": "123", "test2": "456", "test3": "789"} test1:123 test2:456 test3:789
-
-
Exemple 3 : regroupez les champs test et abcd dans le champ content et conservez les champs d'origine.
-
Instruction SPL
* | pack-fields -keep -include='\w+' as content -
Données d'entrée
abcd@#%:123 test:456 abcd:789 -
Sortie
abcd:789 abcd@#%:123 content:{"test": "456", "abcd": "789"} test:456
-
-
Exemple 4 : regroupez tous les champs sauf les champs test et abcd dans le champ content et supprimez les champs d'origine regroupés.
-
Instruction SPL
* | pack-fields -exclude='\w+' as content -
Données d'entrée
abcd@#%:123 test:456 abcd:789 -
Sortie
abcd:789 content:{"abcd@#%": "123"} test:456
-
-
Exemple 5 : extrayez toutes les paires clé-valeur correspondant à l'expression régulière spécifiée à partir d'une valeur de champ, puis regroupez-les dans le champ name.
-
Instruction SPL
* | parse-kv -prefix='k_' -regexp dict, '(\w+):(\w+)' | pack-fields -include='k_.*' -ltrim = 'k_' as name -
Données d'entrée
dict: x:123, y:456, z:789 -
Sortie
dict:x:123, y:456, z:789 name:{"x": "123", "y": "456", "z": "789"}
-
log-to-metric
Transforme les journaux au format requis pour le stockage des données de séries temporelles.
Par défaut, les données de journal qui ne répondent pas aux exigences des Métriques sont ignorées.
L'unité de temps du champ d'horodatage dans les données de journal brutes est détectée automatiquement. Les unités prises en charge incluent les secondes, les millisecondes, les microsecondes et les nanosecondes.
L'écriture basée sur le hachage est utilisée par défaut.
Syntaxe
| log-to-metric -wildcard -format -names=<names> -labels=<labels> -time_field=<time_field> -buckets=<buckets>
Paramètres
|
Paramètre |
Type |
Obligatoire |
Description |
|
wildcard |
Bool |
Non |
Indique s'il faut activer la correspondance avec caractères génériques pour les noms de champs spécifiés par Par défaut, la correspondance exacte des champs est utilisée. Pour activer la correspondance avec caractères génériques, ajoutez ce paramètre. |
|
format |
Bool |
Non |
Indique s'il faut activer le formatage automatique. Par défaut, cette option est désactivée et les données de libellé non valides sont ignorées lors de la transformation. Si elle est activée, les données de libellé non valides sont formatées. Les valeurs de libellé ne peuvent pas contenir de caractères tels que |
|
names |
FieldList |
Oui |
Liste des champs de journal utilisés pour générer les points de données de métrique correspondants. Si un champ des données d'entrée correspond à au moins l'un des noms de champ ou modèles avec caractères génériques spécifiés, un point de données de métrique est généré pour ce champ. Le nom de la métrique correspond au nom du champ et la valeur de la métrique à la valeur du champ. Par exemple, Important
Pour connaître le format des données de série temporelle, consultez la rubrique Données de série temporelle (métrique). |
|
labels |
FieldList |
Non |
Liste des champs de journal utilisés pour construire les informations de libellé de série temporelle correspondantes. Si un champ des données d'entrée correspond à au moins l'un des noms de champ ou modèles avec caractères génériques spécifiés, le champ est ajouté aux libellés du point de données. Le nom du libellé correspond au nom du champ et la valeur du libellé à la valeur du champ. Par exemple, Important
Pour connaître le format des données de série temporelle, consultez la rubrique Données de série temporelle (métrique). |
|
time_field |
String |
Non |
Champ d'heure pour les données de série temporelle. Par défaut, le champ Important
Le champ d'entrée doit être un horodatage. Le type de données correspondant doit être BIGINT ou VARCHAR. Si le champ est de type texte VARCHAR, sa valeur doit être convertible en un type BIGINT valide. |
|
buckets |
Integer |
Non |
La valeur par défaut est 32. Définissez ce paramètre sur le nombre de shards cibles. Il ajuste la plage de hachage pour optimiser les performances d'écriture de l'opérateur log-to-metric. Ce paramètre contrôle le nombre de compartiments de hachage, ce qui affecte la distribution des données et les performances des requêtes dans le metricstore. |
Exemples
-
Exemple 1 : transformez un journal contenant le champ rt au format de données de série temporelle.
-
Instruction SPL
* | log-to-metric -names='["rt"]' -
Données d'entrée
__time__: 1614739608 rt: 123 -
Sortie
__labels__: __name__:rt __time_nano__:1614739608 __value__:123
-
-
Exemple 2 : transformez un journal contenant le champ rt au format de données de série temporelle et utilisez le champ host comme nouveau libellé.
-
Instruction SPL
* | log-to-metric -names='["rt"]' -labels='["host"]' -
Données d'entrée
__time__: 1614739608 rt: 123 host: myhost -
Sortie
__labels__:host#$#myhost __name__:rt __time_nano__:1614739608 __value__:123
-
-
Exemple 3 : transformez un journal contenant les champs
rtetqpsau format de données de série temporelle et utilisez le champ host comme libellé.-
Instruction SPL
* | log-to-metric -names='["rt", "qps"]' -labels='["host"]' -
Données d'entrée
__time__: 1614739608 rt: 123 qps: 10 host: myhost -
Sortie
__labels__:host#$#myhost __name__:rt __time_nano__:1614739608 __value__:123 __labels__:host#$#myhost __name__:qps __time_nano__:1614739608 __value__:10
-
-
Exemple 4 : utilisez la correspondance avec caractères génériques pour transformer un journal contenant les champs rt1 et rt2 au format de données de série temporelle et utilisez le champ host comme nouveau libellé.
-
Instruction SPL
* | log-to-metric -wildcard -names='["rt*"]' -labels='["host"]' -
Données d'entrée
__time__: 1614739608 rt1: 123 rt2: 10 host: myhost -
Sortie
__labels__:host#$#myhost __name__:rt1 __time_nano__:1614739608 __value__:123 __labels__:host#$#myhost __name__:rt2 __time_nano__:1614739608 __value__:10
-
-
Exemple 5 : transformez un journal contenant les champs
rtetqpsau format de données de série temporelle, utilisez le champhostcomme nouveau libellé et formatez automatiquement la valeur du nouveau libellé.-
Instruction SPL
* | log-to-metric -format -names='["rt", "qps"]' -labels='["host"]' -
Données d'entrée
__time__: 1614739608 rt: 123 qps: 10 host: myhost1|myhost2 -
Sortie
__labels__:host#$#myhost1_myhost2 __name__:rt __time_nano__:1614739608 __value__:123 __labels__:host#$#myhost1_myhost2 __name__:qps __time_nano__:1614739608 __value__:10
-
-
Exemple 6 : transformez un journal contenant les champs
rtetqpsau format de données de série temporelle. Remplacez les noms de champs parmax_rtettotal_qpset utilisez le champhostcomme nouveau libellé.-
Instruction SPL
* | project-rename max_rt = rt, total_qps = qps| log-to-metric -names='["max_rt", "total_qps"]' -labels='["host"]' -
Données d'entrée
__time__: 1614739608 rt: 123 qps: 10 host: myhost -
Sortie
__labels__:host#$#myhost __name__:max_rt __time_nano__:1614739608 __value__:123 __labels__:host#$#myhost __name__:total_qps __time_nano__:1614739608 __value__:10
-
-
Exemple 7 : transformez un journal contenant les champs
rtetqpsau format de données de série temporelle. Les champs sont renommés en max_rt et total_qps, et le champ host est renommé en hostname pour servir de nouveau libellé.-
Instruction SPL
* | project-rename max_rt = rt, total_qps = qps, hostname=host| log-to-metric -names='["max_rt", "total_qps"]' -labels='["hostname"]' -
Données d'entrée
__time__: 1614739608 rt: 123 qps: 10 host: myhost -
Sortie
__labels__:hostname#$#myhost __name__:max_rt __time_nano__:1614739608 __value__:123 __labels__:hostname#$#myhost __name__:total_qps __time_nano__:1614739608 __value__:10
-
-
Exemple 8 : transformez un journal contenant le champ remote_user au format de données de série temporelle. Utilisez le champ status comme nouveau libellé et le champ time comme horodatage pour les données de série temporelle.
-
Instruction SPL
* | log-to-metric -names='["remote_user"]' -labels='["status"]' -time_field='time' -
Données d'entrée
time:1652943594 remote_user:89 request_length:4264 request_method:GET status:200 -
Sortie
__labels__:status#$#200 __name__:remote_user __time_nano__:1652943594 __value__:89
-
metric-to-metric
Transforme davantage les données de série temporelle existantes en ajoutant, modifiant ou supprimant des libellés.
Le nom du champ d'entrée doit correspondre à l'expression régulière
[a-zA-Z_][a-zA-Z0-9_]*. Sinon, le libellé du point de série temporelle généré n'inclura pas ce champ.Si les trois paramètres d'option contiennent le même champ, la priorité est la suivante : add_labels > del_labels > rename_labels.
Pour plus d'informations sur le format des données de série temporelle en sortie, consultez la rubrique Données de série temporelle (métrique).
Syntaxe
| metric-to-metric -format -add_labels=<add_labels> -del_labels=<del_labels> -rename_labels=<rename_labels> -buckets=<buckets>
Paramètres
|
Paramètre |
Type |
Obligatoire |
Description |
|
add_labels |
Array |
Non |
Liste des champs de libellé à ajouter. Elle sert à construire de nouvelles informations de libellé de série temporelle. Ajoute les données brutes aux libellés du point de série temporelle. Seul le type VARCHAR est pris en charge. Par exemple, si les données brutes sont |
|
del_labels |
Array |
Non |
Liste des champs de libellé à supprimer. Elle sert à construire de nouvelles informations de libellé de série temporelle. Si un nom de champ dans l'entrée correspond à un nom de champ dans les libellés d'origine, le champ correspondant est supprimé des libellés d'origine. Par exemple, si la valeur du libellé d'origine est |
|
rename_labels |
Map |
Non |
Liste des champs de libellé à renommer. Elle sert à construire de nouvelles informations de libellé de série temporelle. Met à jour les libellés du point de série temporelle d'origine en fonction des informations de la map. La clé correspond au nom du champ d'origine et la valeur au nouveau nom du champ. Par exemple, |
|
format |
Bool |
Non |
Indique s'il faut activer le formatage automatique. Par défaut, cette option est désactivée et les données non valides sont ignorées lors de la transformation. Si elle est activée :
|
|
buckets |
Integer |
Non |
La valeur par défaut est 32. Définissez ce paramètre sur le nombre de shards cibles. Il ajuste la plage de hachage pour optimiser les performances d'écriture de l'opérateur metric-to-metric. Ce paramètre contrôle le nombre de compartiments de hachage, ce qui affecte la distribution des données et les performances des requêtes dans le metricstore. |
Exemples
-
Exemple 1 : ajoutez un libellé.
-
Instruction SPL
* | extend qps = '10'|metric-to-metric -add_labels='["qps"]' -
Données d'entrée
__labels__:host#$#myhost __name__:rt __time_nano__:1614739608 __value__:123 -
Sortie
__labels__:host#$#myhost|qps#$#10 __name__:rt __time_nano__:1614739608 __value__:123
-
-
Exemple 2 : supprimez un libellé.
-
Instruction SPL
* | metric-to-metric -del_labels='["qps"]' -
Données d'entrée
__labels__:host#$#myhost|qps#$#10 __name__:rt __time_nano__:1614739608 __value__:123 -
Sortie
__labels__:host#$#myhost __name__:rt __time_nano__:1614739608 __value__:123
-
-
Exemple 3 : renommez un libellé.
-
Instruction SPL
* | metric-to-metric -rename_labels='{"host":"etl_host"}' -
Données d'entrée
__labels__:host#$#myhost|qps#$#10 __name__:rt __time_nano__:1614739608 __value__:123 -
Sortie
__labels__:etl_host#$#myhost|qps#$#10 __name__:rt __time_nano__:1614739608 __value__:123
-
-
Exemple 4 : formatez les données non valides.
-
Instruction SPL
* | metric-to-metric -format -
Données d'entrée
__labels__:host#$#myhost|qps#$#10|asda$cc#$#j|ob|schema#$#|#$#|#$#xxxx __name__:rt __time_nano__:1614739608 __value__:123 -
Sortie
__labels__:asda_cc#$#j|host#$#myhost|qps#$#10 __name__:rt __time_nano__:1614739608 __value__:123
-