Cette rubrique explique comment créer une table externe pour associer Simple Log Service (SLS) à Object Storage Service (OSS).
Prérequis
Vous avez collecté des journaux. Pour plus d'informations, consultez la section Collecte de données.
Vous avez activé et configuré un index. Pour plus d'informations, consultez la section Créer un index.
Vous avez créé un compartiment OSS. Pour plus d'informations, consultez la section Créer un compartiment.
-
Un fichier CSV a été téléchargé vers un compartiment OSS. Pour plus d'informations, consultez la section Télécharger des fichiers.
ImportantVous pouvez associer plusieurs fichiers OSS. La taille maximale d'un seul fichier est de 50 Mo. La compression n'est pas prise en charge. Les expressions régulières ne sont pas prises en charge pour les paramètres.
Avantages
Les requêtes fédérées sur les données stockées dans Object Storage Service (OSS) offrent les avantages suivants :
Réduction des coûts : stockez les données rarement mises à jour dans OSS afin de minimiser les coûts de stockage. Vous pouvez également lire les données via le réseau interne pour éviter les frais de transfert de données.
Diminution de la charge opérationnelle : utilisez une plateforme d'analyse fédérée légère sans avoir à migrer les données vers un système de stockage unique.
Gain de temps : analysez les données à l'aide du langage SQL et obtenez des résultats en quelques secondes. Enregistrez les requêtes fréquemment utilisées sous forme de rapport pour accéder directement aux résultats.
Procédure
Connectez-vous à la console Simple Log Service.
-
Dans la section Projects, cliquez sur le projet souhaité.

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

-
Saisissez une instruction de requête, puis cliquez sur Search & Analyze.
Utilisez une instruction SQL pour définir une table externe virtuelle qui correspond à un fichier OSS.
* | create table <foreign table> (<Schema>) with (endpoint='oss-cn-${your_region_name}-internal.aliyuncs.com',accessid='yourAccessKeyID',accesskey ='yourAccessKeySecret',bucket='<your bucket name>',objects=ARRAY['my.csv'],type='oss')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 WITH pour spécifier les informations d'accès à OSS et les informations relatives au fichier. Le tableau suivant décrit les paramètres.
Parameter
Description
Example
Nom de la table externe
Le nom de la table externe virtuelle.
user_meta1
Schéma de la table
Les noms des colonnes et les types de données de la table.
(userid bigint, nick varchar, gender varchar, province varchar, age bigint)
Endpoint
L'endpoint permettant d'accéder à OSS. Pour plus d'informations, consultez la section Régions et endpoints.
ImportantVous devez utiliser un endpoint de réseau interne. Les endpoints publics ne sont pas pris en charge.
oss-cn-hangzhou-internal.aliyuncs.com
Accessid
L'AccessKey ID et l'AccessKey Secret d'un 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 à la source de données OSS. Pour savoir comment accorder des autorisations à un utilisateur RAM, consultez la section Accorder des autorisations à un utilisateur RAM. Pour savoir comment obtenir une paire de clés d'accès, consultez la section Paire de clés d'accès.
LTAI
Accesskey
yourAccessKeySecret
Bucket
Le nom du compartiment OSS où le fichier CSV est stocké.
examplebucket
Objects
Les fichiers CSV ou les répertoires OSS à interroger. Le paramètre objects est un tableau pouvant contenir plusieurs fichiers ou répertoires. Tenez compte des points suivants :
-
Lorsque vous spécifiez un répertoire, son nom doit se terminer par une barre oblique (
/). Par exemple, si vous spécifieztest_dir/, la table externe est associée à tous les fichiers CSV du répertoire test_dir/ du compartiment spécifié. -
Limitation : le nombre total de fichiers ne peut pas dépasser 100.
-
'user.csv'
-
'test_dir/'
-
'user.csv','test_dir/','my_dir/'
Type
Le type de la source de données externe. La valeur doit être oss.
oss
Exemple de commande :
* | 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')Si la valeur du champ result dans la sortie est true, l'instruction a bien été exécutée.
-
-
Vérifiez que la table externe a bien été créée.
Exécutez l'instruction suivante, où External storage correspond au nom de la table externe que vous avez défini à l'étape Étape 4. Si la commande renvoie le contenu de la table précédemment définie, cela signifie que la table externe a été correctement définie.
* | select * from <foreign table> -
Utilisez la clause JOIN pour effectuer une requête fédérée sur les données provenant de SLS et d'OSS.
Par exemple, exécutez la requête suivante pour joindre le champ userid de vos journaux au champ userid du fichier OSS afin d'enrichir les données des journaux.
RemarqueLes journaux collectés doivent inclure le champ userid.
* | select * from <logstore> l join <foreign table> u on l.userid = u.useridParameter
Description
Example
Logstore
Le nom du Logstore que vous souhaitez interroger.
test_logstore
Nom de la table externe
Le nom de la table externe que vous avez défini à l'étape Étape 4.
user_meta1
Après avoir exécuté la requête fédérée, les résultats contiennent à la fois les champs des journaux (tels que
action,blood,magic,money,network,payment,statusetuseragent) et les champs d'attributs utilisateur provenant de la table externe (tels quenick,gender,provinceetage). Cela indique que les données des journaux ont été correctement enrichies grâce à la jointure sur le champuserid.
Pour un exemple de bonnes pratiques, consultez la section Interroger et analyser des données en associant un Logstore à une table externe OSS.