Log Service支援通過SDK方式將本地CSV檔案上傳到Log Service進行託管,並建立Logstore與CSV檔案的關聯。本文介紹如何在Log ServiceLogstore中聯合託管的CSV檔案進行資料分析。
前提條件
已採集日誌。更多資訊,請參見資料擷取。
已配置索引。更多資訊,請參見建立索引。
已建立CSV檔案。
已安裝Log ServicePython SDK。更多資訊,請參見安裝Python SDK。
支援aliyun-log-python-sdk 0.7.3及以上版本,您可以通過pip install aliyun-log-python-sdk -U命令進行升級。
使用限制
僅支援關聯一個CSV檔案。
最大支援50 MB的CSV檔案。CSV檔案經SDK壓縮後被上傳至Log Service,壓縮後的大小需小於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
Log Service的網域名稱。更多資訊,請參見服務入口。
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