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

Simple Log Service:あるログストアからデータをプルして、別のログストアのログデータを強化する

最終更新日:Jan 02, 2025

このトピックでは、リソース関数を使用して別のログストアからデータをプルし、ログストア内のログデータをエンリッチする方法について説明します。

背景情報

ホテルは、user_logstoreという名前のログストアにゲストの個人情報を格納し、check-in_logstoreという名前のログストアにゲストのチェックイン情報を格納します。 ホテルは、チェックイン_logstoreログストアからいくつかのフィールドを取得し、それらのフィールドをuser_logstoreログストア内のフィールドと連結したいと考えています。 ホテルは、res_log_logstore_pull関数を使用してチェックイン_logstoreからデータをプルし、e_table_map関数を使用してデータをマップできます。 res_log_logstore_pull関数の詳細については、「res_log_logstore_pull」をご参照ください。 e_table_map関数の詳細については、「e_table_map」をご参照ください。

データ変換

  • 生データ

    • 個人情報の保存に使用されるuser_logstoreという名前のlogstore

      topic:xxx
      city:xxx
      cid:12345
      name:maki
      
      
      topic:xxx
      city:xxx
      cid:12346
      name:vicky
      
      topic:xxx
      city:xxx
      cid:12347
      name:mary
    • チェックイン情報の保存に使用される、check-in_logstoreという名前のlogstore

      time:1567038284
      status:check in
      cid:12345
      name:maki
      room_number:1111
      
      time:1567038284
      status:check in
      cid:12346
      name:vicky
      room_number:2222
      
      time:1567038500
      status:check in
      cid:12347
      name:mary
      room_number:3333
      
      time:1567038500
      status:leave
      cid:12345
      name:maki
      room_number:1111
  • 変換ルール

    説明

    res_log_logstore_pull関数を使用すると、データ強化の時間範囲または開始時間を設定できます。

    • 変換ルールで時間範囲を設定した場合 (たとえば、from_time=1567038284およびto_time=1567038500) 、Simple Log Serviceによって指定された時間範囲内に受信されたデータは、データ強化のためにプルされます。

    • 変換ルールで開始時間を設定した場合 (例: from_time="begin") 、Simple Log Serviceによって指定された時間から受信されたデータは、データエンリッチメントのためにプルされます。

    res_log_logstore_pull関数のフィールドの詳細については、「res_log_logstore_pull」をご参照ください。

    • e_table_map関数

      この関数は、cidフィールドを使用して2つのログエントリをマッピングします。 2つのログエントリのcidフィールドの値が互いに等しい場合、データマッピングは成功します。 room_numberフィールドとフィールド値が返され、チェックイン_logstoreログストアのログエントリと連結されます。

      e_table_map(res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, 
              fields=["cid","room_number"],
              from_time="begin",
              ), "cid","room_number")
  • 結果

    • e_table_map関数

      topic:xxx
      city:xxx
      cid:12345
      name:maki
      room_nuber:1111
      
      topic:xxx
      city:xxx
      cid:12346
      name:vicky
      room_number:2222
      
      topic:xxx
      city:xxx
      cid:12347
      name:mary
      room_number:3333

ホワイトリストルールとブラックリストルールを設定してデータをフィルタリングする

  • ホワイトリストルールの設定

    • 変換ルール

      fetch_include_dataフィールドを使用して、ホワイトリストルールを設定します。 この例では、fetch_include_data="room_number:1111" 式がres_log_logstore_pull関数に含まれています。 この式は、room_numberフィールドの値が1111のログエントリのみがプルされることを示します。

      res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, ["cid","name","room_number","status"],from_time=1567038284,to_time=1567038500,fetch_include_data="room_number:1111")
    • 取得したデータ

      status: check in
      cid:12345
      name:maki
      room_number:1111
      
      status:leave
      cid:12345
      name:maki
      room_number:1111
  • ブラックリストルールの設定

    • 変換ルール

      ブラックリストルールを設定するには、fetch_exclude_dataフィールドを使用します。 この例では、fetch_exclude_data="room_number:1111" 式がres_log_logstore_pull関数に含まれています。 この式は、room_numberフィールドの値が1111のログエントリのみが削除されることを示します。

      res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, ["cid","name","room_number","status"],from_time=1567038284,to_time=1567038500,fetch_exclude_data="room_number:1111")
    • 取得したデータ

      status:check in
      cid:12346
      name:vicky
      room_number:2222
      
      
      status:check in
      cid:12347
      name:mary
      room_number:3333
  • ブラックリストルールとホワイトリストルールの設定

    • 変換ルール

      ブラックリストルールとホワイトリストルールを設定する場合、最初にブラックリストルールが適用され、次にホワイトリストルールが適用されます。 この例では、fetch_exclude_data="time:1567038285",fetch_include_data="status:check In" 式がres_log_log_logstore_pull関数に含まれています。 この式は、timeフィールド値が最初にドロップされ1567038285ログエントリが、statusフィールド値がチェックインされたログエントリがプルされることを示します。

      res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, ["cid","name","room_number","status"],from_time=1567038284,to_time=1567038500,fetch_exclude_data="time:1567038285",fetch_include_data="status:check in")
    • 取得したデータ

      status:check in
      cid:12345
      name:maki
      room_number:1111
      
      
      status:check in
      cid:12346
      name:vicky
      room_number:2222
      
      
      status:check in
      cid:12347
      name:mary
      room_number:3333

プライマリキーメンテナンスを有効にして、宛先ログストアからデータをプルする

データを変換する前に破棄するには、主キーメンテナンス機能を有効にします。 たとえば、チェックインしたがチェックアウトしていない顧客のチェックインデータを、check-in_logstoreという名前のログストアから取得したいとします。 顧客のプルされたログエントリにstatus:leaveフィールドが含まれている場合、顧客はチェックアウト済みです。 res_log_logstore_pull関数のprimer_keysパラメーターを設定でき、ログエントリは変換されません。

説明
  • 1つのフィールドをprimary_keysパラメーターの値として設定できます。 フィールドはfieldsフィールドに存在する必要があります。

  • 主キーのメンテナンス機能を有効にする前に、データを取得するログストアに1つのシャードしかないことを確認してください。

  • 主キーメンテナンス機能を有効にした場合、delete_dataフィールドをNoneに設定することはできません。

  • 変換ルール

    res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, ["cid","name","room_number","status","time"],from_time=1567038284,to_time=None,primary_keys="cid",delete_data="status:leave")
  • データの取得

    上記のログエントリのstatus:leaveフィールドは、namemakiである顧客がチェックアウトしたことを示します。 したがって、このログエントリは変換されません。

    time:1567038284
    status:check in
    cid:12346
    name:vicky
    room_number:2222
    
    time:1567038500
    status:check in
    cid:12347
    name:mary
    room_number:3333