SDK を使用してローカルの CSV ファイルを Simple Log Service にアップロードし、Logstore に関連付けます。このトピックでは、フェデレーテッドクエリを実行して、管理された CSV ファイルのデータを分析する方法について説明します。
前提条件
-
ログデータが収集済みであること。詳細については、「データ収集」をご参照ください。
-
インデックスが設定済みであること。詳細については、「インデックスの作成」をご参照ください。
-
CSV ファイルが作成済みであること。
-
Simple Log Service Python SDK がインストール済みであること。詳細については、「Simple Log Service Python SDK のインストール」をご参照ください。
Simple Log Service では、aliyun-log-python-sdk 0.7.3 以降が必要です。pip install aliyun-log-python-sdk -U コマンドを実行して SDK をアップグレードできます。
制限事項
-
1 つの Logstore に関連付けできる CSV ファイルは 1 つだけです。
-
元の CSV ファイルは最大 50 MB です。SDK は、Simple Log Service にアップロードする前にファイルを圧縮します。圧縮後のファイルは 9.9 MB 未満である必要があります。
サンプルデータ
例えば、ある Logstore がユーザーのログインイベントを記録し、CSV ファイルが性別や年齢などの基本的なユーザー情報を格納しているとします。Logstore を CSV ファイルに関連付けると、ユーザー属性に関連するメトリックを分析できます。
-
Logstore
userid:100001 action:login __time__:1637737306 -
CSV ファイルには、
userid、nick、gender、province、ageの 5 つのフィールドを持つユーザーデータテーブルが含まれています。サンプルデータには、100001/User_A/male/Liaoning/24、100002/User_B/male/Beijing/23、100003/User_C/female/Zhejiang/22、100004/User_D/female/Jiangxi/21、100005/User_E/male/Guangxi/20 が含まれます。
操作手順
-
Python SDK を使用して ExternalStore を作成します。
Python SDK の詳細については、「Python SDK の概要」をご参照ください。
from aliyun.log import * # Simple Log Service のエンドポイント。 endpoint='cn-shanghai.log.aliyuncs.com' # 認証用の AccessKey ID と AccessKey Secret。 accessKeyId='test-project' accessKey='TAI****YDw' # プロジェクトと ExternalStore の名前。 project='lr****VM' ext_logstore='user_meta' # ローカル CSV ファイルのパス。 csv_file='./user.csv' client = LogClient(endpoint, accessKeyId, accessKey) # ExternalStore を作成し、そのテーブルスキーマを定義します。 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
Simple Log Service のサービスエンドポイント。詳細については、「エンドポイント」をご参照ください。
accessKeyId
Alibaba Cloud アカウントの AccessKey ID。詳細については、「AccessKey ペア」をご参照ください。
警告【注意】セキュリティリスクを最小限に抑えるために、RAM ユーザーの AccessKey ペアを使用することを推奨します。
accessKey
Alibaba Cloud アカウントの AccessKey Secret。詳細については、「AccessKey ペア」をご参照ください。
project
送信先の Logstore を含むプロジェクト。
ext_logstore
ExternalStore の名前。これは仮想テーブルの名前でもあります。名前は次の要件を満たす必要があります。
-
名前には、小文字、数字、ハイフン (-)、アンダースコア (_) のみを含めることができます。
-
名前は小文字または数字で開始および終了する必要があります。
-
名前の長さは 3~63 文字である必要があります。
csv_file
ローカル CSV ファイルのパスとファイル名。
テーブルスキーマ
テーブルスキーマは、仮想テーブルの列とデータの型を定義します。次のスクリプトは一例です。ビジネス要件に合わせて変更してください。
[ {"name" : "userid", "type" : "bigint"}, {"name" : "nick", "type" : "varchar"}, {"name" : "gender", "type" : "varchar"}, {"name" : "province", "type" : "varchar"}, {"name" : "age", "type" : "bigint"} ] -
Simple Log Service コンソールにログインします。
[プロジェクト] セクションで、目的のプロジェクトをクリックします。

タブで、目的の Logstore をクリックします。

-
次のクエリを実行して ExternalStore を検証します。
ここで、
user_metaは外部ストレージの名前です。実際の名前で置き換えてください。* | SELECT * FROM user_meta返された結果が CSV ファイルの内容である場合、ExternalStore は正常に作成されています。このクエリ文を実行すると、
userid、nick、gender、province、ageなどのフィールドを含む、user_meta テーブルから関連付けられたデータが返されます。 -
次のクエリを実行して、Logstore と CSV ファイルを結合するフェデレーテッドクエリを実行します。
この例では、Logstore の userid フィールドと CSV ファイルの userid フィールドを使用して、フェデレーテッドクエリを設定します。この場合、
website_logは Logstore 名、user_metaはユーザー定義の ExternalStore です。実際の設定に基づいてこれらの名前を置き換えてください。* | SELECT * FROM website_log JOIN user_meta ON website_log.userid = user_meta.useridJOIN 文を実行すると、クエリ結果には
website_logとuser_metaからマージされたフィールドが表示されます。これには、action、userid、__time__、nick、gender、province、ageなどの列が含まれます。