Cette rubrique explique comment créer une table externe pour associer Simple Log Service (SLS) à Object Storage Service (OSS).
Prérequis
Les journaux sont collectés. Pour plus d'informations, consultez Collecte des données.
Un index est activé et configuré. Pour plus d'informations, consultez Créer un index.
Un bucket OSS est créé. Pour plus d'informations, consultez Créer un bucket dans la console.
-
Un fichier CSV est importé dans le bucket OSS. Pour plus d'informations, consultez Importer des fichiers.
ImportantVous pouvez associer plusieurs fichiers OSS. La taille maximale d'un fichier unique 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.
Avantages
L'utilisation de requêtes fédérées avec Object Storage Service (OSS) offre les avantages suivants :
Réduction des coûts : stockez les données rarement mises à jour dans OSS. Vous ne payez que pour un stockage peu coûteux et lisez les données via le réseau interne afin d'éviter les frais de transfert.
Diminution de la charge opérationnelle : utilisez une plateforme d'analyse fédérée légère, sans avoir à déplacer les données vers un système de stockage unique.
Gain de temps : analysez vos données en SQL et obtenez les résultats en quelques secondes. Enregistrez les requêtes analytiques fréquentes sous forme de rapports pour consulter les résultats à la demande.
Procédure
Connectez-vous à la console Simple Log Service.
-
Dans la section Projects, cliquez sur celui de votre choix.

-
Dans l'onglet , cliquez sur le logstore souhaité.

-
Saisissez une instruction d'interrogation et d'analyse, puis cliquez sur Search & Analyze.
Utilisez SQL pour définir une table externe virtuelle mappée aux fichiers présents dans OSS.
* | create table <foreign_table_name> (<schema>) with (endpoint='oss-cn-<your_region>-internal.aliyuncs.com',accessid='<your_accesskey_id>',accesskey='<your_accesskey_secret>',bucket='<your_bucket_name>',objects=ARRAY['my.csv'],type='oss')Dans l'instruction d'interrogation, définissez le nom de la table externe, son schéma et les autres paramètres. Utilisez la clause
WITHpour spécifier les informations de connexion à OSS ainsi que celles du fichier cible. Le tableau suivant décrit ces paramètres.Paramètre
Description
Exemple
Nom de la table externe
Le nom de la table externe, c'est-à-dire celui de la table virtuelle.
user_meta1
Schéma
Définit les propriétés de la table, notamment les noms de colonnes et les types de données. Les types de colonnes pris en charge sont bigint, boolean, double et varchar.
(userid bigint, nick varchar, gender varchar, province varchar, age bigint)
Endpoint
L'endpoint permettant d'accéder à OSS. Pour plus d'informations, consultez 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 AccessKey d'un utilisateur RAM disposant des permissions nécessaires pour accéder aux données OSS. Pour savoir comment accorder des permissions à un utilisateur RAM, consultez Accorder des permissions à un utilisateur RAM. Pour savoir comment obtenir une paire AccessKey, consultez Paire AccessKey.
LTAI
Accesskey
yourAccessKeySecret
Bucket
Le nom du bucket OSS contenant le fichier CSV.
examplebucket
Objects
Les fichiers ou dossiers cibles dans le bucket. Le paramètre objects est de type
ARRAYet peut contenir plusieurs fichiers ou dossiers. Tenez compte des points suivants :-
Lorsque vous spécifiez un dossier, son chemin doit se terminer par
/. Si vous indiquez par exempletest_dir/, la table externe s'associe à tous les fichiers CSV présents dans ce dossier OSS du bucket correspondant. -
Limite : le nombre total de fichiers ne peut pas dépasser 100.
-
'user.csv'
-
'test_dir/'
-
'user.csv','test_dir/','my_dir/'
Type
Définissez cette valeur sur oss, ce qui indique que le type de la table externe est Object Storage Service (OSS).
oss
L'exemple de code suivant illustre une commande type :
* | create table user_meta1 ( userid bigint, nick varchar, gender varchar, province varchar, age bigint) with ( endpoint='oss-cn-hangzhou-internal.aliyuncs.com',accessid='yourAccessKeyID',accesskey='yourAccessKeySecret',bucket='examplebucket',objects=ARRAY['my.csv'],type='oss')L'opération réussit si le champ result de la sortie affiche true.

-
-
Vérifiez que la table externe a bien été créée.
Exécutez l'instruction suivante en remplaçant <foreign_table_name> par le nom de table externe défini à l'étape 4. Si la commande renvoie le contenu de la table, la création a réussi.
* | select * from <foreign_table_name> -
Utilisez une clause
JOINpour exécuter une requête fédérée entre SLS et OSS.Par exemple, exécutez la requête ci-dessous pour joindre les journaux d'un Logstore aux données d'un fichier OSS. La jointure s'effectue sur le champ
useridafin d'enrichir vos données de journalisation.RemarqueLes journaux collectés doivent contenir un champ
userid.* | select * from <logstore> l join <foreign_table_name> u on l.userid = u.useridParamètre
Description
Exemple
Logstore
Le nom du Logstore à interroger.
test_LogStore
Table externe
Le nom de la table externe défini à l'étape 4.
user_meta1

Pour découvrir d'autres bonnes pratiques, consultez Associer un Logstore à une table externe OSS pour l'interrogation et l'analyse.