La transformation des données utilise plusieurs structures pour traiter les journaux, notamment des types de base, des types d'événements, des identifiants fixes et des objets JSON.
Structures de données de base
Le tableau suivant répertorie les types de structures de données de base.
|
Type |
Description |
|
Integer |
Définit les valeurs des champs ou transmet des paramètres aux fonctions. Exemple : |
|
Float |
Définit les valeurs des champs ou transmet des paramètres aux fonctions. Exemple : |
|
String |
Les chaînes de caractères respectent les conventions suivantes :
Remarque
Utilisez des guillemets simples pour la chaîne externe et des guillemets doubles pour la valeur de recherche interne. |
|
Bytes |
Diffère de l'encodage mémoire des chaînes. |
|
empty |
Remarque
Une chaîne vide possède un type de données différent de None ou null. |
|
List |
Un tableau, tel que
|
|
Tuple |
Fonctionne comme une liste. Exemple : |
|
Dictionary (Dict) |
Une collection de paires clé-valeur au format
|
|
Boolean (Bool) |
Par exemple, |
|
Table |
Structure de table multicolumnne. Créez des tables en chargeant du contenu CSV multiligne à partir de ressources externes ou en récupérant des données multicolumnnes depuis ApsaraDB RDS ou un Logstore. Les tables servent principalement aux mappages d'enrichissement de données ou à d'autres scénarios de configuration avancée. |
|
Datetime object |
Représente une date et une heure en mémoire. Convertissable en une chaîne d'horodatage Unix ou en une chaîne de temps formatée, ou transmissible aux fonctions |
Types d'événements
La transformation des données prend en charge les types d'événements suivants.
-
Type primitif
La transformation des données traite les données de journal sous forme de dictionnaire, par exemple
{"__topic__": "access_log", "content": "....."}.Les clés et les valeurs du dictionnaire correspondent aux champs et aux valeurs du journal.
RemarqueLes clés et les valeurs des événements sont toutes deux des chaînes, et les clés doivent être uniques.
-
Champs méta
Les champs méta incluent :
Champ temporel
__time__: l'horodatage Unix (secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC) au moment de l'écriture du journal. Stocké sous forme de chaîne entière.Sujet
__topic__: organise les journaux dans un Logstore par sujet. Spécifiez un sujet lors de l'écriture ou de l'interrogation des journaux.Source
__source__: la source du journal, telle que l'adresse IP de la machine qui a généré le journal.
-
Modification du champ temporel
Modifiez la valeur du champ temporel pour changer l'heure de l'événement. Utilisez également des fonctions datetime pour effectuer d'autres opérations sur ce champ.
RemarqueSi le champ temporel est supprimé, le système utilise l'heure de traitement comme heure de l'événement lors de l'envoi du journal vers la destination.
-
Tags
Un tag est une étiquette de journal utilisée pour la classification, au format
__tag__:name.Si l'enregistrement de l'adresse IP publique est activé pour le Logstore source, les journaux incluent le tag
tag:__tag__:__receive_time__.Les journaux Container Service contiennent plusieurs tags liés aux conteneurs, tels que
__tag__:__container_name__.Ajoutez ou modifiez des tags. Pour ajouter un tag nommé type, utilisez
e_set("__tag__:type", "access_log").
-
Conversion automatique lors de l'affectation
Les clés et les valeurs des événements sont des chaînes. Lorsque vous affectez une valeur ou définissez un nouveau champ, les clés et les valeurs sont automatiquement converties en chaînes. Exemple :
e_set("v1", 12.3) e_set("v2", True)Cela définit
v1sur la chaîne "12.3" etv2sur la chaîne "true".Le tableau suivant montre comment les différents types de données sont convertis en chaînes.
Type
Exemple
Type converti
Exemple converti
Integer
1String
"1"Float
1.2String
"1.2"Boolean
TrueString
"true"Bytes
b"123"Décodé en une chaîne à l'aide de UTF-8
"123"Tuple
-
Exemple 1 :
(1, 2, 3) -
Exemple 2 :
("a", 1)
Chaîne d'une liste
-
Exemple 1 :
"[1, 2, 3]" -
Exemple 2 :
"[\"a\", 1]"
List
-
Exemple 1 :
[1,2,3] -
Exemple 2 :
["a", 1]
String
-
Exemple 1 :
"[1, 2, 3]" -
Exemple 2 :
"[\"a\", 1]"
Dictionary
{"1":2, "3":4}String
"{\"1\": 2, \"3\": 4}"Datetime
datetime(2018, 10, 10, 10, 10, 10)Chaîne au format ISO
2018-10-10 10:10:10 -
Identifiants fixes
La transformation des données fournit des identifiants fixes pour simplifier le code et améliorer la lisibilité.
|
Identifiant |
Type |
Description |
||
|
true |
Boolean |
Équivalent à |
||
|
false |
Boolean |
Équivalent à |
||
|
null |
None |
Équivalent à |
||
|
F_TAGS |
String |
Expression régulière pour les champs |
||
|
F_META |
String |
Expression régulière pour les champs |
__topic__ |
__source__`. |
|
F_TIME |
String |
Nom du champ |
||
|
F_PACK_META |
String |
Expression régulière pour les champs |
__tag__:__pack_id__"`. |
|
|
F_RECEIVE_TIME |
String |
Champ |
||
|
C_JOB_REGION |
String |
ID de région de la tâche de transformation des données, par exemple |
||
|
C_JOB_PROJECT |
String |
Nom du projet de la tâche de transformation des données, par exemple |
||
|
C_JOB_NAME |
String |
Nom de la configuration de la tâche de transformation des données, par exemple |
||
|
C_JOB_ID |
String |
ID d'exécution de la tâche de transformation des données, par exemple |
Objets JSON
Une fonction json_select ou json_parse analyse un objet JSON à partir d'une chaîne. Il est composé de structures de données de base. Le tableau suivant montre comment les chaînes d'entrée sont converties en objets JSON.
|
Chaîne |
Objet JSON |
Type réel |
|
|
|
Integer |
|
|
|
Float |
|
|
|
Boolean |
|
|
|
Boolean |
|
|
|
String |
|
|
|
None |
|
|
|
List |
|
|
|
List |
|
|
|
Dictionary |
|
|
|
Dictionary |