一部のシナリオでは、外部テーブルを使用してログをクエリおよび分析する必要があります。 このトピックでは、LogstoreをObject Storage Service (OSS) 外部テーブルに関連付けてクエリと分析を実行する方法について説明します。
前提条件
ログは継続的に収集されます。 詳細については、「データ収集の概要」をご参照ください。
インデックスが作成されます。 詳細については、「インデックスの作成」をご参照ください。
OSSバケットが作成されます。 詳細については、「バケットの作成」をご参照ください。
最大サイズが10 MBのOSSオブジェクトを1つだけ関連付けることができます。 オブジェクトは圧縮できません。 関連パラメーターに正規表現を指定することはできません。
背景情報
会社Aは電子決済会社です。 会社Aは、ユーザの年齢、地理的位置、および性別が支払いの好みに与える影響を分析したいと考えている。 A社は、Simple Log Serviceを使用して支払い行動ログを収集し、ユーザープロパティ情報をOSSバケットに保存しています。 支払い動作ログには、請求書と支払い方法が含まれます。 ユーザプロパティ情報は、ユーザに関する地理的位置、年齢、および性別情報を含む。 Simple Log Serviceのクエリおよび分析エンジンを使用すると、Logstoreを外部ストアに関連付けてクエリおよび分析を実行できます。 外部ストアには、MySQLデータベースとOSSバケットが含まれます。 ユーザープロパティに関連するメトリックを分析するには、SQL JOIN構文を使用して支払い動作ログをユーザープロパティ情報に関連付けることができます。
Simple Log ServiceをOSSバケットに関連付けてクエリと分析を実行すると、次のメリットが得られます。
費用対効果: 更新頻度の低いデータをOSSバケットに保存すると、内部ネットワーク経由でデータを読み取ることができます。 この場合、ストレージサービスの料金のみを支払う必要があり、インターネットトラフィックの料金はかかりません。
O&Mワークロードの削減: すべてのデータを1つのストレージシステムに保存することなく、軽量な関連付け分析を実行できます。
高効率: SQL文を使用して、数秒以内にデータを分析し、分析結果を表示できます。 よく照会される分析結果に基づいてグラフを作成することもできます。 次に、グラフをクリックして分析結果を表示できます。
手順
CSVファイルを作成し、OSSバケットにアップロードします。
という名前のファイルを作成します。user.csv.
userid,nick,gender,province,age 1,User A,male,Shanghai,18 2,User B,female,Zhejiang,19 3,User C,male,Guangdong,18
user.csvファイルをOSSバケットにアップロードします。 詳細については、「オブジェクトのアップロード」をご参照ください。
にログインします。Simple Log Serviceコンソール.
[プロジェクト] セクションで、管理するプロジェクトをクリックします。
左側のナビゲーションウィンドウで、[ログストレージ] をクリックします。 Logstoreリストで、管理するLogstoreをクリックします。
表示されるページで、検索ボックスにクエリステートメントを入力し、クエリ時間範囲を選択します。
次のSQL文を実行して、user_meta1という名前の仮想外部テーブルを作成し、そのテーブルをOSSオブジェクトuser.csvにマップします。 出力のresultがtrueの場合、SQL文が実行され、外部ストアが作成されます。
* | create table user_meta1 ( userid bigint, nick varchar, gender varchar, province varchar, age bigint) with ( endpoint='oss-cn-hangzhou.aliyuncs.com',accessid='LTAI5t8y9c113M7V****',accesskey='Y45H7bqvvgapWZR****',bucket='testoss',objects=ARRAY['user.csv'],type='oss')
'
SQL文で外部ストアの名前とテーブルスキーマを定義し、WITH句でOSSオブジェクトにアクセスするために必要な情報を定義します。 下表に、各パラメーターを説明します。
パラメーター
説明
例
外部ストア名
外部ストアの名前。 この名前は、仮想外部テーブルの名前と同じです。
user_meta1
テーブルのスキーマ
列名とデータ型を含む、仮想外部テーブルのプロパティ。 例: (userid bigint, nick varchar, gender varchar, province varchar, age bigint)
(userid bigint、nick varchar、gender varchar、province varchar、age bigint)
エンドポイント
OSSの内部エンドポイント。 詳細は、「リージョンとエンドポイント」をご参照ください。
oss-cn-hangzhou.aliyuncs.com
accessid
OSSバケットへのアクセスに使用されるAccessKey ID。 詳細は、「AccessKeyペア」をご参照ください。
LT **** 7V
accesskey
OSSバケットへのアクセスに使用されるAccessKeyシークレット。 詳細は、「AccessKeyペア」をご参照ください。
Y4 **** ZR
バケット
CSVオブジェクトが保存されているOSSバケット。
testoss
オブジェクト
CSVオブジェクトのパス。
説明objectsパラメーターの値は配列です。 配列には1つの要素のみを含めることができます。 要素はOSSオブジェクトを表します。
user.csv
タイプ
外部ストアのタイプ。 値をossに設定します。
oss
外部ストアが作成されているかどうかを確認します。
次のステートメントを実行します。 定義したテーブルコンテンツが返されると、外部ストアが作成されます。 user_meta1は外部ストアの名前です。 ビジネスシナリオに基づいてこのパラメーターを設定します。
* | select * from user_meta1
Simple Log ServiceとOSSでJOINクエリを実行します。
次のステートメントを実行してJOINクエリを実行します。 Logstoreは、LogstoreのIDフィールドとOSSオブジェクトのuseridフィールドに基づいてOSSオブジェクトに関連付けられます。 test_accesslogはLogstoreの名前です。 lはLogstoreのエイリアスです。 user_meta1は、定義する外部ストアの名前です。 ビジネスシナリオに基づいてパラメーターを設定できます。
* | select * from test_accesslog l join user_meta1 u on l.userid = u.userid
例:
さまざまな性別のユーザーからのアクセス要求を分析します。
* | select u.gender, count(1) from test_accesslog l join user_meta1 u on l.userid = u.userid group by u.gender
さまざまな年齢のユーザーからのアクセス要求を分析します。
* | select u.age, count(1) from test_accesslog l join user_meta1 u on l.userid = u.userid group by u.age
さまざまな年齢のユーザーのさまざまな時間範囲のアクセス傾向を分析します。
* | select date_trunc('minute',__time__) as minute, count(1) ,u.age from test_accesslog l join user_meta1 u on l.userid = u.userid group by u.age,minute