ログの情報が不完全であるシナリオは、ログ分析では一般的です。 たとえば、ログにはユーザーのクリックに関する情報は含まれているが、登録情報や資金情報などのユーザーの属性が含まれていないことがあります。 ユーザーの支払い習慣に対する地域の影響の分析など、ログ分析シナリオの中では往々にして、ユーザーの特性と行動を分析する必要があります。

このタスクについて

Log Service は、Object Storage Service (OSS) と連携して、次の利点を持つアソシエーション分析機能を提供しています。
  • 低価格
    • Log Service は、各種のデータソースをサポートしています。 データは、データの特性に基づいて異なるストレージシステムに保存することができます。 これはコストを下げます。 変更の頻度が低いデータは、OSS バケットに保存することができます。 この場合、ストレージサービスの料金を支払うだけです。 データが ApsaraDB RDS for MySQL インスタンスに保存されている場合は、コンピューティングサービスの料金も支払う必要があります。
    • OSS は、Alibaba Cloud が提供するストレージサービスです。 イントラネットを介して OSS バケットからデータを読み取る場合、トラフィック料金はかかりません。
  • 小さいワークロード

    軽量のアソシエーション分析プラットフォームでは、1 つのストレージシステムに全データを移動・集中させる必要はありません。 これはワークロードを減らします。

  • 効率
    • SQL 文を実行してデータを分析すると、数秒で結果を得ることができます。
    • 共通ビューをレポートとして定義することができ、結果を直接表示できるようになります。

手順

  1. CSV ファイルを OSS にアップロードします。
    1. ユーザー ID、ニックネーム、性別、居住地、年齢のプロパティを含むプロパティファイルを定義します。
    2. ファイルを保存し、user.csv という名前を付けます。 ossutil を使用して、ファイルを OSS にアップロードします。
      osscmd put ~/user.csv oss:/testossconnector/user.csv
  2. ExternalStore を定義します。
    次の SQL 文を実行して、user_meta という名前の仮想外部テーブルを定義します。
    * | create table user_meta ( userid bigint, nick varchar, gender varchar, province varchar, age bigint) with ( endpoint='example.com',accessid='<youraccessid>',accesskey='<accesskey>',bucket='testossconnector',objects=ARRAY['user.csv'],type='oss')
    • 上記の SQL 文では、次の情報を指定する必要があります。
      • テーブルスキーマ:テーブルに含まれる列と各列のプロパティです。
      • OSS アクセス情報:OSSドメイン名、AccessKey ID、および AcccessKey シークレットです。
      • OSS オブジェクト情報:user.csv オブジェクトが保存されているバケットとオブジェクトパスです。
    • objects プロパティの値は、複数のオブジェクトの配列です。
    結果が true の場合、外部テーブルが作成されたことを示します。

    SQL 文 select * from user_meta を実行してテーブルのデータを表示します。

  3. アソシエーション分析を実行します。
    生ログには、ユーザー ID 情報が含まれています。 次の SQL 文を実行して、ログの ID フィールドを OSS オブジェクトの userid フィールドに関連付け、ログの情報を完成させることができます。
    * | select * from chiji_accesslog l join user_meta1 u on l.userid = u.userid
    • ユーザーの性別でのアクセス情報を分析します。
      * | select u.gender, count(1) from chiji_accesslog l join user_meta1 u on l.userid = u.userid group by u.gender
    • ユーザーの年齢別のアクセス情報を分析します。
      * | select u.age, count(1) from chiji_accesslog l join user_meta1 u on l.userid = u.userid group by u.age
    • ユーザーの年齢別・期間別のアクセス傾向を分析します。
      * | selectdate_trunc('minute',__time__) as minute, count(1) ,u.age from chiji_accesslog l join user_meta1 u on l.userid = u.userid group by u.age,minute