このトピックでは、リソース関数を使用して別のLogstoreからデータをプルし、Logstoreのログデータを強化する方法について説明します。
このタスクについて
ホテルは、user_logstoreという名前のLogstoreにゲストの個人情報を保存し、チェックイン_Logstoreという名前のlogstoreにゲストのチェックイン情報を保存します。 The hotel wants to obtain some fields from the check-in_logstore Logstore and concatenate the fields with the fields in the user_logstore Logstore. ホテルはres_log_logstore_pull関数を使用してチェックイン_logstore Logstoreからデータをプルし、e_table_mapまたはe_search_dict_map関数を使用してデータをマップできます。 res_log_logstore_pull関数の詳細については、「res_log_logstore_pull」をご参照ください。 For more information about the e_table_map function, see e_table_map. For more information about the e_search_dict_map function, see e_search_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
チェックイン情報の保存に使用される、チェックイン_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
変換ルール
説明The res_log_logstore_pull function allows you to set a time range or a start time for data enrichment.
If you set a time range in the transformation rule, for example, from_time=1567038284 and to_time=1567038500, data that is received in the specified time range by Log Service is pulled for data enrichment.
変換ルールで開始時間を設定した場合 (例: from_time="begin") 、Log Serviceによって指定された時間から受信されたデータは、データエンリッチメントのためにプルされます。
res_log_logstore_pull関数のフィールドの詳細については、「res_log_logstore_pull」をご参照ください。
e_table_map function
この関数は、cidフィールドを使用して2つのログエントリをマッピングします。 If the value of the cid field in the two log entries equals each other, data mapping succeeds. The room_number field and field value are returned and concatenated with the log entry in the check-in_logstore 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_search_table_map function
この関数は、値がチェックイン_logstore Logstoreで12346されているcidフィールドを検索し、room_numberフィールドとその値を返し、そのフィールドをuser_logstore Logstoreのログエントリのこれらのフィールドと連結します。
e_search_table_map(res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, fields=["cid","room_number"], from_time="begin", ), "cid=12346","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
e_search_table_map関数
topic:xxx city:xxx cid:12346 name:vicky room_number:2222
ホワイトリストルールとブラックリストルールを設定してデータをフィルタリングする
Configure a whitelist rule
変換ルール
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
Configure a blacklist rule
変換ルール
ブラックリストルールを設定するには、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
Configure a blacklist rule and a whitelist rule
変換ルール
ブラックリストルールとホワイトリストルールを設定する場合、最初にブラックリストルールが適用され、次にホワイトリストルールが適用されます。 In this example, the fetch_exclude_data="time:1567038285",fetch_include_data="status:check in" expression is included in the res_log_logstore_pull function. This expression indicates that the log entries whose time field value is 1567038285 dropped first and then the log entries whose status field value is check in are pulled.
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
プライマリキーメンテナンスを有効にして宛先Logstoreからデータをプルする
他のデータを変換する前に、プルされたデータを削除できます。 これを行うには、主キーメンテナンス機能を有効にします。 たとえば、チェックインしたがチェックアウトしていない顧客のチェックインデータを、check-in_Logstoreという名前のlogstoreから取得したいとします。 顧客のプルされたログエントリにstatus:leaveフィールドが含まれている場合、顧客はチェックアウト済みです。 主キーメンテナンス機能を有効にすると、ログエントリは変換されません。
1つのフィールドをprimary_keysパラメーターの値として設定できます。 フィールドはfieldsフィールドに存在する必要があります。
主キーのメンテナンス機能を有効にする前に、データを取得するLogstoreに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フィールドは、nameがmakiである顧客がチェックアウトしたことを示します。 したがって、このログエントリは変換されません。
time:1567038284 status:check in cid:12346 name:vicky room_number:2222 time:1567038500 status:check in cid:12347 name:mary room_number:3333