Cette rubrique explique comment utiliser les fonctions de ressource pour récupérer des données depuis un autre Logstore afin d'enrichir vos journaux.
Informations générales
Un hôtel stocke les informations personnelles de ses clients dans un Logstore nommé user_logstore et les informations d'enregistrement dans un Logstore nommé check-in_logstore. L'hôtel souhaite extraire certains champs du check-in_logstore et les joindre aux données du user_logstore. À cette fin, Simple Log Service met à disposition la fonction res_log_logstore_pull pour récupérer les données du check-in_logstore, ainsi que la fonction e_table_map pour enrichir les données.
Joindre les journaux de différents Logstores
-
Données brutes
-
Logstore contenant les informations personnelles (user_logstore)
topic:xxx city:xxx cid:12345 name:maki topic:xxx city:xxx cid:12346 name:vicky topic:xxx city:xxx cid:12347 name:mary -
Logstore contenant les informations d'enregistrement (check-in_logstore)
time:1567038284 status:check in cid:12345 name:maki room_number:1111 time:1567038284 status:check in cid:12346 name:vicky room_number:2222 time:1567038500 status:check in cid:12347 name:mary room_number:3333 time:1567038500 status:leave cid:12345 name:maki room_number:1111
-
-
Règle de transformation
RemarqueLa fonction res_log_logstore_pull permet de définir une plage horaire. Vous pouvez spécifier un intervalle de temps ou uniquement une heure de début.
Dans la règle de transformation, le paramétrage from_time=1567038284,to_time=1567038500 récupère uniquement les données du Logstore comprises dans cette plage horaire.
Dans la règle de transformation, le paramétrage from_time="begin" récupère en continu les données du Logstore.
Pour plus d'informations sur les paramètres de la fonction res_log_logstore_pull, consultez la documentation relative à res_log_logstore_pull.
-
Fonction e_table_map
Cette fonction fait correspondre les journaux en se basant sur le champ commun
cidprésent dans les deux Logstores. La correspondance aboutit uniquement si les valeurs du champcidsont identiques. En cas de succès, le champroom_numberet sa valeur sont renvoyés depuis le check-in_logstore et joints aux données du user_logstore pour générer de nouvelles données.e_table_map(res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, fields=["cid","room_number"], from_time="begin", ), "cid","room_number")
-
Résultat de la transformation
-
Fonction e_table_map
topic:xxx city:xxx cid:12345 name:maki room_nuber:1111 topic:xxx city:xxx cid:12346 name:vicky room_number:2222 topic:xxx city:xxx cid:12347 name:mary room_number:3333
-
Filtrer les données à l'aide de listes d'autorisation et de listes de blocage
Configurer une liste d'autorisation
-
Règle de transformation
Utilisez le paramètre fetch_include_data pour configurer une liste d'autorisation. Par exemple, fetch_include_data="room_number:1111" récupère uniquement les données dont la valeur du champ room_number est 1111.
res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, ["cid","name","room_number","status"],from_time=1567038284,to_time=1567038500,fetch_include_data="room_number:1111") -
Données récupérées
status: check in cid:12345 name:maki room_number:1111 status:leave cid:12345 name:maki room_number:1111
Configurer une liste de blocage
-
Règle de transformation
Utilisez le paramètre fetch_exclude_data pour configurer une liste de blocage. Par exemple, fetch_exclude_data="room_number:1111" exclut les données dont la valeur du champ room_number est 1111.
res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, ["cid","name","room_number","status"],from_time=1567038284,to_time=1567038500,fetch_exclude_data="room_number:1111") -
Données récupérées
status:check in cid:12346 name:vicky room_number:2222 status:check in cid:12347 name:mary room_number:3333
Configurer simultanément une liste de blocage et une liste d'autorisation
-
Règle de transformation
Lorsque vous configurez à la fois une liste de blocage et une liste d'autorisation, la liste de blocage s'applique en premier, suivie de la liste d'autorisation. Par exemple,
fetch_exclude_data="time:1567038285",fetch_include_data="status:check in"exclut d'abord les données dont la valeurtimeest1567038285. Ensuite, elle récupère les données dont la valeur du statut est 'check in'.res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, ["cid","name","room_number","status"],from_time=1567038284,to_time=1567038500,fetch_exclude_data="time:1567038285",fetch_include_data="status:check in") -
Données récupérées
status:check in cid:12345 name:maki room_number:1111 status:check in cid:12346 name:vicky room_number:2222 status:check in cid:12347 name:mary room_number:3333
Activer la gestion des clés primaires pour récupérer des données depuis le Logstore de destination
Si vous souhaitez supprimer les données récupérées avant leur transformation, activez la fonctionnalité de gestion des clés primaires. Par exemple, vous pouvez vouloir récupérer les informations d'enregistrement des clients qui se sont enregistrés mais n'ont pas encore effectué leur départ depuis le check-in_logstore. Si les données récupérées contiennent status:leave, cela indique que le client a effectué son départ. Définissez le paramètre primary_keys de la fonction res_log_logstore_pull pour spécifier une clé primaire et empêcher la transformation de ces données.
Le paramètre primary_keys accepte uniquement une chaîne unique, laquelle doit également être spécifiée dans le paramètre fields.
Lorsque vous activez la gestion des clés primaires, le Logstore depuis lequel les données sont extraites ne doit comporter qu'un seul shard.
Lorsque vous activez la gestion des clés primaires, le paramètre delete_data ne peut pas être défini sur None.
-
Règle de transformation
res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, ["cid","name","room_number","status","time"],from_time=1567038284,to_time=None,primary_keys="cid",delete_data="status:leave") -
Données récupérées
Pour le client dont le name est maki, le statut final est status:leave. Cela indique que le client a effectué son départ. Par conséquent, les données relatives à ce client ne sont pas transformées.
time:1567038284 status:check in cid:12346 name:vicky room_number:2222 time:1567038500 status:check in cid:12347 name:mary room_number:3333