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

Simple Log Service:データ強化のため、ApsaraDB RDS for MySQLデータベースからデータを取得する

最終更新日:Aug 28, 2024

Simple Log Serviceのデータ変換機能を使用すると、ApsaraDB RDS for MySQLデータベースからデータを取得し、データ変換ルールに基づいてデータを強化できます。

背景情報

データを分析するときは、さまざまなストレージソースからデータを取得する必要があります。 たとえば、ユーザー操作とユーザー行動のデータはSimple Log Serviceに保存され、ユーザープロパティと登録のデータはApsaraDB RDS For MySQLデータベースに保存されます。 この場合、データ変換機能を使用してデータベースからデータを取得し、そのデータをLogstoreに保存できます。

res_rds_mysql関数を使用してApsaraDB RDS for MySQLデータベースからデータを取得し、e_table_mapまたはe_search_table_map関数を使用してデータをエンリッチします。

説明
  • ApsaraDB RDS for MySQLデータベースが作成されるインスタンスは、Simple Log Serviceプロジェクトと同じリージョンに存在する必要があります。 そうしないと、データベースからデータを取得できません。

  • データベースが作成されたインスタンスの内部エンドポイントを使用して、ApsaraDB RDS for MySQLデータベースにアクセスし、そこからデータを取得できます。 詳細については、「内部ネットワーク経由のApsaraDB RDS For MySQLデータベースからのデータの取得」をご参照ください。

e_table_map関数を使用してデータをエンリッチする

この例では、e_table_map関数とres_rds_mysql関数を使用してデータをエンリッチします。

  • 生データ

    • ApsaraDB RDS for MySQLデータベースのテーブル内のサンプルデータレコード

      人口

      cid

      eid

      上海

      上海

      2000

      1

      00001

      天津

      天津

      800

      1

      00002

      北京

      北京

      4000

      1

      00003

      河南省

      鄭州

      3000

      2

      00004

      江蘇

      南京

      1500

      2

      00005

    • Simple Log Service Logstoreのサンプルログ

      time:"1566379109"
      data:"test-one"
      cid:"1"
      eid:"00001"
      
      time:"1566379111"
      data:"test_second"
      cid:"1"
      eid:"12345"
      
      time:"1566379111"
      data:"test_three"
      cid:"2"
      eid:"12345"
      
      time:"1566379113"
      data:"test_four"
      cid:"2"
      eid:"12345"
  • 変換ルール

    変換ルールを設定して、Logstoreのcidフィールドをテーブルのcidフィールドと一致させることができます。 cidフィールドの値がLogstoreとテーブルで同じ場合、ログはデータレコードと一致します。 次に、テーブル内の一致したデータレコードのprovincecitypopulationフィールドとフィールド値を返し、返されたデータをLogstore内の一致したログと連結して新しいログを生成します。

    説明
    • フィールドの複数の値がテーブルで一致する場合、e_table_map関数は最初のデータレコードのみを取得します。 この例では、テーブルのcidフィールドに1の複数の値があります。

    • e_table_map関数は、単一行一致のみをサポートします。 複数行の一致を実装し、一致したデータを新しいログに結合する場合は、e_search_table_map関数を使用できます。 詳細については、「e_search_map_table関数を使用したデータのエンリッチ」をご参照ください。

    e_table_map(res_rds_mysql(address="rds-host", username="mysql-username",password="xxx",database="xxx",table="xx",refresh_interval=60),"cid",["province","city","population"])

    res_rds_mysql関数でApsaraDB RDS For MySQLデータベースを設定する方法の詳細については、「res_rds_mysql」をご参照ください。

  • 変換結果

    time:"1566379109"
    data:"test-one"
    cid:"1"
    eid:"00001"
    province:"Shanghai"
    city:"Shanghai"
    population:"2000"
    
    time:"1566379111"
    data:"test_second"
    cid:"1"
    eid:"12345"
    province:"Shanghai"
    city:"Shanghai"
    population:"2000"
    
    time:"1566379111"
    data:"test_three"
    cid:"2"
    eid:"12345"
    province:"Henan"
    city:"Zhengzhou"
    population:"3000"
    
    time:"1566379113"
    data:"test_four"
    cid:"2"
    eid:"12345"
    province:"Henan"
    city:"Zhengzhou"
    population:"3000"

e_search_map_table関数を使用してデータをエンリッチする

この例では、e_search_map_table関数とres_rds_mysql関数を使用してデータをエンリッチします。

  • 生データ

    • ApsaraDB RDS for MySQLデータベースのテーブル内のサンプルデータレコード

      コンテンツ

      name

      年齢

      city~=n*

      aliyun

      10

      province~=su$

      Maki

      18

      city:nanjing

      vicky

      20

    • Simple log Service Logstoreのサンプルログ

      time:1563436326
      data:123
      city:nanjing
      province:jiangsu
  • 変換ルール

    変換ルールを設定して、テーブルのcontentフィールドの値をLogstoreのログと一致させることができます。 値はキーと値のペアです。 キーは、ログ内のフィールド名に対応する。 値はログ内のフィールド値に対応し、正規表現です。 システムは、ログとの一致結果に基づいて、テーブル内の関連フィールドとフィールド値を連結して、新しいログを生成します。

    説明
    • res_rds_mysql関数でApsaraDB RDS For MySQLデータベースを設定する方法の詳細については、「res_rds_mysql」をご参照ください。

    • contentフィールドはテーブルに含まれています。 システムがフィールドの値をログと照合すると、正規表現一致、完全一致、ファジー一致などのさまざまな照合モードがサポートされます。 一致ルールの詳細については、「e_search」をご参照ください。

    • 単一行マッチング

      テーブル内の1つのデータレコードがログと一致すると、システムは変換結果を返します。

      e_search_table_map(res_rds_mysql(address="rds-host", username="mysql-username",password="xxx",database="xxx",table="xx",refresh_interval=60),"content","name")
    • 複数行マッチング

      システムはテーブル内のすべてのデータレコードをトラバースし、一致したすべてのデータを指定されたフィールドに追加します。

      説明

      次のパラメーター設定が必要です。

      • multi_match=True: 複数行のマッチングを有効にします。

      • multi_join=,": 複数の一致した値をコンマ (,) で連結します。

      e_search_table_map(res_rds_mysql(address="rds-host", username="mysql-username",password="xxx",database="xxx",table="xx",refresh_interval=60),"content","name",multi_match=True,multi_join=",")
  • 変換結果

    • 単一行マッチング

      この例では、ログのcityフィールドの値がn * 式と一致するかどうかを確認します。 一致が成功した場合、システムはテーブル内の一致したデータレコードの名前フィールドとフィールド値を返し、新しいログを生成します。

      time:1563436326
      data:123
      city:nanjing
      province:jiangsu
      name:aliyun
    • 複数行マッチング

      この例では、ログのcityフィールドの値がn * 式と一致するかどうか、ログのprovinceフィールドの値がsu$ 式と一致するかどうか、ログのcityフィールドの値にnanjingが含まれているかどうかを確認します。 この例では、正規表現の前に ~=が付いています。 コロン (:) は、続く文字列が含まれるかどうかを示します。 一致が成功した場合、システムはnameフィールドとテーブル内のフィールドの3つの値を返し、返されたデータをログと連結して新しいログを生成します。 値はコンマ (,) で区切ります。

      time:1563436326
      data:123
      city:nanjing
      province:jiangsu
      name:aliyun,Maki,vicky