日志服务支持通过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。
  • 目前,只支持华东2(上海)和俄罗斯西部1(莫斯科)地域。

数据样例

例如Logstore用于记录用户的登录操作,CSV文件用于记录用户的基本信息(性别、年龄等)。关联Logstore和CSV文件后,可用于分析与用户属性相关的指标。

  • Logstore
    userid:100001
    action:login
    __time__:1637737306
  • CSV文件CSV文件

操作步骤

  1. 通过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 日志服务的域名。更多信息,请参见服务入口

    目前,只支持华东2(上海)和俄罗斯西部1(莫斯科)地域。

    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"}
    ]
  2. 登录日志服务控制台
  3. 在Project列表区域,单击目标Project。
  4. 日志存储 > 日志库页签中,单击目标Logstore。
  5. 执行如下语句,验证是否成功创建外部存储。
    其中user_meta为外部存储的名称,请根据实际情况替换。
    * | SELECT * FROM user_meta
    如果返回结果为CSV文件的内容,则表示创建外部存储成功。关联CSV
  6. 执行如下语句,建立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
    关联查询