Tous les produits
Search
Centre de documentation

Simple Log Service:Syntaxe de transformation des données

Dernière mise à jour :Sep 12, 2026

Le langage DSL (Domain Specific Language) de Log Service (SLS) est basé sur Python et propose plus de 200 fonctions intégrées pour simplifier les tâches de transformation des données. Cette rubrique décrit les modes linguistiques, les catégories de fonctions et les principes d'exécution du DSL.

Modes linguistiques

Le DSL SLS est compatible avec Python. En mode standard, le DSL SLS constitue un sous-ensemble de Python. À l'exception des structures de données de base et des expressions, toutes les autres règles syntaxiques reposent sur des fonctions.

Catégorie

Syntaxe Python

Mode standard

Structure de données

Nombre, chaîne et booléen

Pris en charge.

Les chaînes qui commencent ou se terminent par """ ne sont pas prises en charge.

Tuple, liste, ensemble et dictionnaire

Pris en charge.

La structure set n'est pas prise en charge, par exemple {1,2,3}.

Objet

Seules les structures de données étendues intégrées, telles que les objets table et datetime, sont prises en charge.

Syntaxe de base

Opérateurs tels que le signe plus (+), le signe moins (-), le signe de multiplication (×) et l'opérateur de division (/)

Seuls les opérateurs de comparaison, tels que ==, !=, >, et les opérateurs logiques, tels que and, or et not, peuvent être utilisés directement dans le code. Pour utiliser d'autres opérateurs, appelez des fonctions.

Commentaires

Pris en charge.

Affectation de variable

Non pris en charge. Transmettez la valeur via un appel de fonction.

Conditions préalables

Pris en charge. Fonctions : e_if, e_if_else et e_switch.

Boucles

Prises en charge indirectement. Utilisez des fonctions intégrées imbriquées pour implémenter des boucles. Les exemples de fonctions suivants montrent comment parcourir les éléments d'un tableau :

e_if(op_ge(op_len(json_parse(v("x"))), 1), e_set("x0", lst_get(v("x"), 0)))
e_if(op_ge(op_len(json_parse(v("x"))), 2), e_set("x1", lst_get(v("x"), 1)))

Fonction

Fonctions intégrées standard de Python

Non pris en charge. Utilisez plutôt les plus de 200 fonctions intégrées fournies par le DSL SLS.

Appels de fonction

Pris en charge. Les appels de fonction utilisant le déballage de paramètres ne sont pas pris en charge.

Fonctions définies par l'utilisateur telles que def ou lambda

Non pris en charge. Toutefois, le système propose plus de 200 fonctions d'opération globale et d'expression que vous pouvez combiner librement.

Module

Importation et utilisation de la bibliothèque standard Python

Non pris en charge.

Création de threads et de processus

Non pris en charge.

Importation de bibliothèques tierces

Non pris en charge.

Connexion au réseau externe ou appel de commande externe

Comprend des connecteurs de ressources intégrés.

Catégories de fonctions

En mode standard, le DSL SLS effectue toutes les opérations en appelant des fonctions. Le DSL propose plus de 200 fonctions intégrées, réparties en fonctions de traitement global et fonctions d'expression.

  • Fonctions de traitement global

    Les fonctions de traitement global servent à recevoir, traiter et renvoyer des journaux. Seules ces fonctions permettent de construire chaque étape d'une règle de transformation.

  • Fonctions d'expression

    Ces fonctions polyvalentes acceptent des paramètres spécifiques. Leur invocation combinée et leur transmission en tant que paramètres à une fonction d'opération globale permettent de définir une logique plus flexible.

Le tableau suivant compare les capacités de ces deux types de fonctions.

Type de fonction

Étapes globales

Réception

Renvoi

Modification du journal

Appels combinés

Opérations et fonctions globales

Pris en charge

Réception automatique des journaux

Zéro à plusieurs journaux

Pris en charge dans la plupart des cas

Pris en charge

Fonctions d'expression

Non pris en charge

Seules quelques fonctions prennent en charge le traitement direct des journaux.

Structures de données spécifiques

Non pris en charge

Pris en charge

Fonctions de traitement global

Une fonction qui accepte et renvoie des journaux.

Remarque

Seule une fonction de traitement global peut figurer sur la première ligne de chaque étape.

Une règle de transformation dans le DSL SLS utilise la syntaxe suivante :

GlobalFunction1(..parameters....)
GlobalFunction2(..parameters....)
GlobalFunction3(..parameters....)
GlobalFunction4(..parameters....)

Les fonctions de traitement global se divisent en deux catégories :

Classification fonctionnelle

Description

Exemple

Fonctions de contrôle de flux

Ces fonctions gèrent le flux de processus, reçoivent des journaux et appellent conditionnellement d'autres fonctions pour traiter les journaux.

e_if, e_switch et e_if_else.

Fonctions de traitement d'événements

Ces fonctions transforment les journaux et renvoient de zéro à plusieurs journaux.

Voici un exemple de fonction :

  • e_drop_fields : supprime des champs de journal.

  • e_kv : extrait et ajoute des paires clé-valeur à partir des journaux.

  • e_dict_map : enrichit les journaux.

Logique de transformation :

  • Traitement de base

    La fonctionnalité de transformation des données lit les données du Logstore source en continu. Elle transmet chaque journal sous forme de dictionnaire à la règle de transformation. Le système traite ensuite les données du journal séquentiellement selon les fonctions définies dans la règle. Enfin, le système envoie le résultat de la transformation vers le Logstore de destination.

    Remarque

    Tous les champs et valeurs d'un journal sont envoyés sous forme de chaînes. Par exemple, le journal brut {"__time__": "1234567", "__topic__": "", "k1": "test"} est traité par la fonction e_set("f1", 200). La fonction ajoute le champ f1 avec la valeur 200. Après traitement, le journal devient {"__time__": "1234567", "__topic__": "", "k1": "test", "f1": "200"}. Dans ce journal, le champ f1 et la valeur 200 sont tous deux des chaînes.

    Les fonctions de traitement d'événements spécifiées dans une règle de transformation sont appelées séquentiellement. Chaque fonction reçoit un journal, le traite, puis renvoie le journal traité.

    Par exemple, la fonction e_set("type", "test") ajoute le champ type avec la valeur test à un journal. La fonction suivante reçoit et traite le journal modifié.

  • Évaluation des conditions

    • e_if : La fonction e_if vous permet d'ajouter des expressions conditionnelles pour traiter les journaux. Si un journal ne remplit pas la condition spécifiée, l'opération correspondante est ignorée. La fonction e_if implémente la logique if.

      Par exemple, la fonction e_if(e_match("status", "200"), e_regex("data", "ret: \d+", "result")) vérifie si la valeur du champ status est 200. Si c'est vrai, la fonction extrait le champ result du champ data à l'aide de l'expression régulière spécifiée. Sinon, aucune opération n'est effectuée.

    • e_if_else : Cette fonction fonctionne de manière similaire à l'opération if_else.

  • Arrêt du traitement

    • Une étape d'une règle de transformation peut ne renvoyer aucun journal, ce qui indique que le journal a été supprimé.

      Par exemple, la fonction e_if(str_islower(v("result")), e_drop()) vérifie si la valeur du champ result est une chaîne en minuscules. Si c'est vrai, le journal est ignoré et les étapes suivantes ne sont pas exécutées sur ce journal. Le système traite automatiquement le journal suivant.

    • L'écriture d'un journal dans un Logstore de destination met fin au traitement. Par exemple, si la fonction e_output écrit un journal dans un Logstore de destination et le supprime, les étapes suivantes ne sont pas exécutées sur ce journal.

      Remarque

      La fonction e_coutput copie le journal de sortie et poursuit le traitement des étapes suivantes.

  • Fractionnement parallèle :

    Une étape d'une règle de transformation peut renvoyer plusieurs journaux, ce qui indique que le journal a été fractionné.

    Par exemple, la fonction e_split(data) divise un journal en deux journaux en fonction de la valeur du champ data. Si la valeur du champ data est "abc, xyz", le journal est divisé en deux journaux. Dans l'un des journaux, la valeur du champ data est abc. Dans l'autre journal, la valeur est xyz.

    Les journaux générés après le fractionnement sont traités lors des étapes suivantes.

Pour plus d'informations, consultez Fonctions d'opération globale.

Fonctions d'expression

Outre les fonctions de traitement global, le DSL SLS propose 200 fonctions d'expression qui acceptent des paramètres spécifiques et renvoient des valeurs spécifiques. Appelez une fonction d'expression ou une combinaison de fonctions d'expression au sein d'une fonction de traitement global. La syntaxe est la suivante :

Global Processing Function 1(Expression Function 1(...), ...)
Global Processing Function 2(..., Expression Function 2(...), Expression Function 3(...), ...)

Les fonctions d'expression se divisent en quatre catégories :

Classification fonctionnelle

Description

Exemple

Fonctions de vérification d'événements

Ces fonctions reçoivent des journaux, extraient ou récupèrent des informations spécifiques et renvoient ces informations sans modifier les journaux.

La fonction v renvoie la valeur d'un champ de journal. Les fonctions e_search et e_match vérifient si un journal remplit une condition spécifiée.

Fonctions de ressource

Ces fonctions se connectent à des ressources locales ou externes, utilisent des paramètres spécifiques et renvoient des données telles que des dictionnaires ou des tables.

Fonctions de ressource OSS, RDS et Logstore.

Fonctions de contrôle

Ces fonctions effectuent des opérations logiques sur des expressions. Elles utilisent des paramètres spécifiques, appliquent un contrôle conditionnel et appellent d'autres fonctions d'expression pour renvoyer des résultats.

op_and, op_or, op_not, op_if et op_coalesce.

Autres fonctions d'expression

Ces fonctions acceptent des valeurs fixes ou les résultats d'autres appels de fonction et renvoient des valeurs spécifiques.

Fonctions de chaîne, de date et heure, et de conversion de type.

Pour plus d'informations, consultez Fonctions d'expression.