Lors de l'interrogation et de l'analyse des données de journal, il est souvent nécessaire de les croiser avec des données provenant de tables externes pour enrichir votre analyse. Cette rubrique explique comment exécuter une requête JOIN sur les données d'un LogStore Simple Log Service et d'une table externe dans Object Storage Service (OSS).
Prérequis
La collecte des données de journal est continue. Pour plus d'informations, consultez la rubrique Collecte de données.
Des index ont été créés pour les données de journal. Pour plus d'informations, consultez la rubrique Créer des index.
Un bucket OSS a été créé. Pour plus d'informations, consultez la rubrique Créer des buckets.
Contexte
Prenons l'exemple d'une entreprise de paiement souhaitant analyser l'influence de facteurs tels que l'âge, la région et le sexe des utilisateurs sur leurs habitudes de paiement. L'entreprise utilise Simple Log Service pour collecter en temps réel les journaux de comportement de paiement, qui incluent les méthodes de paiement et les montants. Elle stocke les données attributaires des utilisateurs, telles que la région, l'âge et le sexe, dans OSS. Pour répondre à ce scénario, le moteur de requête et d'analyse de Simple Log Service vous permet d'exécuter une requête JOIN sur les données d'un LogStore et d'une source de données externe, telle qu'une base de données MySQL ou OSS. Vous pouvez utiliser la syntaxe SQL JOIN pour combiner les données attributaires des utilisateurs avec les données comportementales afin d'analyser les métriques liées aux attributs des utilisateurs.
L'association des données de journal avec les données stockées dans OSS présente les avantages suivants :
Réduction des coûts : stockez les données rarement mises à jour dans OSS pour réduire les coûts de stockage. Lisez également les données via un réseau interne pour éviter les frais de trafic sortant.
Diminution de la charge opérationnelle : aucune migration des données vers un système de stockage unique n'est nécessaire.
Gain de temps : utilisez SQL pour analyser les données et obtenir des résultats en quelques secondes. Enregistrez également les requêtes fréquemment utilisées sous forme de graphiques pour accéder rapidement aux résultats.
Procédure
-
Créez un fichier CSV et téléchargez-le dans OSS.
ImportantVous pouvez associer plusieurs fichiers OSS. La taille maximale d'un seul fichier est de 50 Mo. Les fichiers compressés ne sont pas pris en charge. Les expressions régulières ne sont pas prises en charge dans les paramètres.
-
Créez un fichier nommé
user.csvet collez-y le contenu suivant.userid,nick,gender,province,age 1,User A,male,Shanghai,18 2,User B,female,Zhejiang,19 3,User C,male,Guangdong,18 Téléchargez le fichier
user.csvdans OSS. Pour plus d'informations, consultez la rubrique Télécharger des objets.
-
Connectez-vous à la console Simple Log Service.
-
Dans la section Projects, cliquez sur le projet souhaité.

-
Sous l'onglet , cliquez sur le LogStore souhaité.

-
Saisissez une instruction de requête et d'analyse, puis sélectionnez une plage de temps.
Utilisez une instruction SQL pour définir une table externe virtuelle qui mappe un objet OSS. Dans cet exemple, la table externe est nommée
user_meta1.* | create table user_meta1 ( userid bigint, nick varchar, gender varchar, province varchar, age bigint) with ( endpoint='oss-cn-hangzhou-internal.aliyuncs.com',accessid='<your AccessKey ID>',accesskey='<your AccessKey secret>',bucket='testoss',objects=ARRAY['user.csv'],type='oss')Si la requête renvoie un result de true, l'instruction a été exécutée avec succès.
Dans l'instruction de requête, définissez le nom de la table externe, le schéma de la table et d'autres paramètres. Utilisez la clause
WITHpour spécifier les détails de connexion à OSS et les informations sur le fichier cible. Le tableau suivant décrit les paramètres.Paramètre
Description
Exemple
Nom de la table externe
Le nom de la table externe. Il s'agit du nom de la table virtuelle.
user_meta1
Schéma
Définit les propriétés de la table, y compris les noms des colonnes et les types de données. Les types de colonne pris en charge sont bigint, boolean, double et varchar.
(userid bigint, nick varchar, gender varchar, province varchar, age bigint)
Endpoint
L'endpoint pour accéder à OSS. Pour plus d'informations, consultez la rubrique Régions et endpoints.
ImportantVous devez utiliser un endpoint interne. Les endpoints publics ne sont pas pris en charge.
oss-cn-hangzhou-internal.aliyuncs.com
Accessid
L'AccessKey ID et l'AccessKey secret de votre compte Alibaba Cloud. Nous vous recommandons d'utiliser la paire de clés d'accès d'un utilisateur RAM disposant des autorisations nécessaires pour accéder aux données OSS. Pour savoir comment accorder des autorisations à un utilisateur RAM, consultez la rubrique Accorder des autorisations à un utilisateur RAM. Pour savoir comment obtenir une paire de clés d'accès, consultez la rubrique Paire de clés d'accès.
LTAI
Accesskey
yourAccessKeySecret
Bucket
Le nom du bucket OSS qui stocke le fichier CSV.
examplebucket
Objects
Les fichiers ou répertoires cibles dans le bucket. Le paramètre objects est de type
ARRAYet peut contenir plusieurs fichiers ou répertoires. Notez les points suivants :-
Lorsque vous spécifiez un répertoire, celui-ci doit se terminer par un
/. Si vous spécifiez un répertoire tel quetest_dir/, la table externe est associée à tous les fichiers CSV présents dans ce répertoire OSS sous le bucket correspondant. -
Limitation : le nombre total de fichiers ne peut pas dépasser 100.
-
'user.csv'
-
'test_dir/'
-
'user.csv','test_dir/','my_dir/'
Type
Définissez la valeur sur oss, ce qui indique que le type de table externe est Object Storage Service (OSS).
oss
-
-
Vérifiez que le magasin externe est défini.
Exécutez l'instruction suivante. Si le résultat renvoyé correspond au contenu de la table que vous avez précédemment définie, le magasin externe est correctement défini. Dans cette instruction, user_meta1 représente le magasin externe que vous avez défini. Adaptez-le selon votre situation réelle.
* | select * from user_meta1Par exemple, si le résultat contient des champs tels que
userid,nick,gender,provinceetageainsi que leurs données correspondantes, le magasin externe est défini avec succès. -
Exécutez une requête JOIN sur le LogStore et la table externe OSS.
Exécutez l'instruction de requête et d'analyse suivante pour associer l'ID de journal dans Simple Log Service à l'userid dans le fichier OSS afin d'enrichir les informations du journal. Dans l'instruction, test_accesslog est le nom du LogStore, l est l'alias du LogStore et user_meta1 est la table du magasin externe que vous avez définie. Remplacez-les par vos valeurs réelles.
* | select * from test_accesslog l join user_meta1 u on l.userid = u.useridExemples de requêtes JOIN :
-
Comptez les requêtes d'accès par sexe.
* | select u.gender, count(1) from test_accesslog l join user_meta1 u on l.userid = u.userid group by u.gender
-
Comptez les requêtes d'accès par tranche d'âge.
* | select u.age, count(1) from test_accesslog l join user_meta1 u on l.userid = u.userid group by u.age
-
Analysez les tendances d'accès au fil du temps par tranche d'âge.
* | select date_trunc('minute',__time__) as minute, count(1) ,u.age from test_accesslog l join user_meta1 u on l.userid = u.userid group by u.age,minute
-