すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:ログストアと OSS 外部テーブルを関連付けてクエリと分析を実行する

最終更新日:Apr 07, 2025

シナリオによっては、外部テーブルを使用してログのクエリと分析を実行する必要があります。このトピックでは、ログストアを Object Storage Service (OSS) 外部テーブルに関連付けてクエリと分析を実行する方法について説明します。

背景情報

A 社は電子決済会社です。A 社は、ユーザーの年齢、地理的な場所、および性別が支払プリファレンスに与える影響を分析したいと考えています。A 社は、Simple Log Service を使用して支払行動ログを収集し、ユーザーのプロパティ情報を OSS バケットに保存しています。支払行動ログには、請求書と支払方法が含まれています。ユーザーのプロパティ情報には、ユーザーの地理的な場所、年齢、および性別の情報が含まれています。Simple Log Service のクエリおよび分析エンジンを使用すると、ログストアを外部ストアに関連付けてクエリと分析を実行できます。外部ストアには、MySQL データベースと OSS バケットが含まれます。ユーザーのプロパティに関連するメトリックを分析するには、SQL JOIN 構文を使用して、支払行動ログをユーザーのプロパティ情報に関連付けることができます。

Simple Log Service を OSS バケットに関連付けてクエリと分析を実行すると、次の利点があります。

  • 費用対効果: 更新頻度の低いデータを OSS バケットに保存する場合、データは内部ネットワーク経由で読み取ることができます。この場合、ストレージサービスの料金のみを支払う必要があり、インターネットトラフィックの料金は発生しません。

  • O&M ワークロードの削減: すべてのデータを 1 つのストレージシステムに保存する必要なく、軽量な関連付け分析を実行できます。

  • 高効率: SQL 文を使用してデータを分析し、分析結果を数秒以内に表示できます。また、一般的にクエリされる分析結果に基づいてチャートを作成することもできます。次に、チャートをクリックして分析結果を表示できます。

前提条件

  • ログは継続的に収集されます。詳細については、「データ収集の概要」をご参照ください。

  • インデックスが作成されます。詳細については、「インデックスの作成」をご参照ください。

  • OSS バケットが作成されます。詳細については、「バケットの作成」をご参照ください。

制限事項

  • 複数の OSS オブジェクトを関連付けることができます。

  • 単一オブジェクトの最大サイズは 50 MB です。

  • オブジェクトを圧縮することはできません。

  • 関連パラメーターに正規表現を指定することはできません。

手順

  1. CSV ファイルを作成し、OSS バケットにアップロードします。

    1. 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
    2. user.csv ファイルを OSS バケットにアップロードします。詳細については、「オブジェクトのアップロード」をご参照ください。

  2. Simple Log Service コンソール にログオンします。

  3. [プロジェクト] セクションで、管理するプロジェクトをクリックします。

    image

  4. [ログストレージ] > [ログストア] タブで、管理するログストアをクリックします。

    image

  5. 表示されるページで、検索ボックスにクエリ文を入力し、クエリ時間範囲を選択します。

    次の SQL 文を実行して、user_meta1 という名前の仮想外部テーブルを作成し、テーブルを OSS オブジェクト user.csv にマッピングします。

    * | create table user_meta1 ( userid bigint, nick varchar, gender varchar, province varchar, age bigint) with ( endpoint='oss-cn-hangzhou.aliyuncs.com',accessid='LTAI****************',accesskey='yourAccessKeySecret',bucket='testoss',objects=ARRAY['user.csv'],type='oss')

    出力の [結果][true] の場合、SQL 文が実行され、外部ストアが作成されます。

    外部存储

    SQL 文で外部ストアの名前とテーブルスキーマを定義し、WITH 句で OSS オブジェクトにアクセスするために必要な情報を定義します。次の表にパラメーターを示します。

    パラメーター

    説明

    外部ストア名

    外部ストアの名前。名前は仮想外部テーブルの名前と同じです。

    user_meta1

    テーブルスキーマ

    仮想外部テーブルのプロパティ。列名とデータ型が含まれます。

    (userid bigint, nick varchar, gender varchar, province varchar, age bigint)

    endpoint

    OSS のエンドポイント。詳細については、「リージョンとエンドポイント」をご参照ください。

    説明

    パブリックエンドポイントと内部エンドポイントの両方がサポートされています。Simple Log Service プロジェクトと OSS バケットが同じリージョンにある場合は、内部エンドポイントをお勧めします。

    oss-ap-southeast-1-internal.aliyuncs.com

    accessid

    Alibaba Cloud アカウントの AccessKey ID と AccessKey シークレット。Simple Log Service プロジェクトへの書き込み権限が付与されている RAM ユーザーの AccessKey ペアを使用することをお勧めします。詳細については、「カスタムポリシーを使用して RAM ユーザーに権限を付与する例」および「AccessKey ペア」をご参照ください。

    LTAI****************

    accesskey

    yourAccessKeySecret

    bucket

    CSV オブジェクトが保存されている OSS バケット。

    examplebucket

    objects

    CSV オブジェクトのパス。

    説明

    objects パラメーターの値は配列です。配列には複数の要素を含めることができます。各要素は OSS オブジェクトを表します。

    user.csv

    type

    外部ストアのタイプ。値を oss に設定します。

    oss

  6. 外部ストアが作成されているかどうかを確認します。

    次の文を実行します。定義したテーブルの内容が返された場合、外部ストアは作成されています。user_meta1 は外部ストアの名前です。ビジネスシナリオに基づいてこのパラメーターを設定します。

    * | select * from user_meta1

    验证结果

  7. Simple Log Service と OSS で JOIN クエリを実行します。

    次の文を実行して JOIN クエリを実行します。ログストアは、ログストアの ID フィールドと OSS オブジェクトの userid フィールドに基づいて OSS オブジェクトに関連付けられます。test_accesslog はログストアの名前です。l はログストアのエイリアスです。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

      时间访问