本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
日志服務支持通過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