关联托管的CSV数据源

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

日志服务支持通过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文件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

    日志服务的域名。更多信息,请参见服务入口

    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。

    image

  4. 在控制台左侧,单击日志存储,在日志库列表中单击目标Logstore。

    image

  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

    关联查询