本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
日志服务支持通过SDK方式将本地CSV文件上传到日志服务进行托管,并建立Logstore与CSV文件的关联。本文介绍如何在日志服务Logstore中联合托管的CSV文件进行数据分析。
前提条件
已采集日志。更多信息,请参见数据采集。
已配置索引。更多信息,请参见创建索引。
已创建CSV文件。
已安装日志服务Python SDK。更多信息,请参见安装Python SDK。
支持aliyun-log-python-sdk 0.7.3及以上版本,您可以通过pip install aliyun-log-python-sdk -U命令进行升级。
使用限制
仅支持关联一个CSV文件。
最大支持50 MB的CSV文件。CSV文件经SDK压缩后被上传至日志服务,压缩后的大小需小于9.9 MB。
数据样例
例如Logstore用于记录用户的登录操作,CSV文件用于记录用户的基本信息(性别、年龄等)。关联Logstore和CSV文件后,可用于分析与用户属性相关的指标。
Logstore
userid:100001 action:login __time__:1637737306
CSV文件
操作步骤
通过Python SDK创建外部存储(ExternalStore)。
关于Python SDK的更多信息,请参见Python SDK概述。
from aliyun.log import * endpoint='cn-shanghai.log.aliyuncs.com' accessKeyId='test-project' accessKey='TAI****YDw' project='lr****VM' ext_logstore='user_meta' csv_file='./user.csv' client = LogClient(endpoint, accessKeyId, accessKey) res = client.create_external_store(project, ExternalStoreCsvConfig(ext_logstore, csv_file, [ {"name" : "userid", "type" : "bigint"}, {"name" : "nick", "type" : "varchar"}, {"name" : "gender", "type" : "varchar"}, {"name" : "province", "type" : "varchar"}, {"name" : "age", "type" : "bigint"} ])) res.log_print()
参数
说明
endpoint
日志服务的域名。更多信息,请参见服务入口。
accessKeyId
阿里云访问密钥AccessKey ID。更多信息,请参见访问密钥。
警告建议您使用RAM用户的AccessKey进行操作,有效降低AccessKey泄露的风险。
accessKey
阿里云访问密钥AccessKey Secret。更多信息,请参见访问密钥。
project
目标Logstore所在的Project。
ext_logstore
外部存储名称,即虚拟表的名称。命名规则如下:
仅支持小写字母、数字、短划线(-)和下划线(_)。
必须以小写字母或数字开头和结尾。
名称长度为3~63个字符。
csv_file
本地CSV文件所在路径及文件名。
表的Schema
用于定义虚拟表的属性,包括表的列名及格式。例如下述脚本表示表的Schema,请根据实际情况替换。
[ {"name" : "userid", "type" : "bigint"}, {"name" : "nick", "type" : "varchar"}, {"name" : "gender", "type" : "varchar"}, {"name" : "province", "type" : "varchar"}, {"name" : "age", "type" : "bigint"} ]
登录日志服务控制台。
在Project列表区域,单击目标Project。
在控制台左侧,单击日志存储,在日志库列表中单击目标Logstore。
执行如下语句,验证是否成功创建外部存储。
其中
user_meta
为外部存储的名称,请根据实际情况替换。* | SELECT * FROM user_meta
如果返回结果为CSV文件的内容,则表示创建外部存储成功。
执行如下语句,建立Logstore与CSV文件的联合查询。
本案例中通过Logstore中的userid字段和CSV文件中的userid字段,建立联合查询。其中,website_log为Logstore名称,user_meta为您定义的外部存储,请根据实际情况替换。
* | SELECT * FROM website_log JOIN user_meta ON website_log.userid = user_meta.userid