全部產品
Search
文件中心

Simple Log Service:使用資源函數增量擷取資料

更新時間:Aug 29, 2025

使用增量拉模數式擷取資料時,Log Service每次只拉取新增或更新的資料,效率高。本文介紹如何使用res_rds_mysql函數增量擷取RDS MySQL資料庫中的資料。

前提條件

背景資訊

某科技公司將客戶資訊儲存在雲資料庫RDS MySQL資料庫中,將客戶維護記錄儲存在Log Service的Logstore中,兩種資料都在持續更新。現在該公司希望將兩種資料JOIN後儲存到一個新的Logstore中。

Log Service提供res_rds_mysql函數,可從RDS MySQL資料庫中拉取資料,儲存到目標Logstore中。增量拉模數式下,在加工任務運行過程中,Log Service根據資料庫中的時間戳記欄位增量拉取資料,只拉取更新或新增的資料,效率高。適用於資料庫中的資料量大、更新頻繁、刪除資料較少、資料加工即時性要求高的情境。

其他拉模數式以及增量拉取的更多資訊,請參見res_rds_mysql

資源資訊與資料樣本

  • Log Service資源

    • Project:client-project

    • 源Logstore:client-log

      資料範例如下所示:

      Logstore

    • 目標Logstore:client-information

  • RDS資源

    • 資料庫:client-db

    • 資料庫表:client

      資料範例如下所示:

      RDS資料庫

    • 資料庫使用者名稱和密碼:test/test1234@@

    • 資料庫外網地址:rm-bp1k****tp8o.mysql.rds.aliyuncs.com

操作步驟

  1. 登入Log Service控制台

  2. 進入資料加工頁面。

    1. 在Project列表中,單擊目標Project(client-project)。

    2. 日誌儲存 > 日誌庫頁簽中,單擊目標Logstore(client-log)。

    3. 在查詢和分析頁面,單擊資料加工

  3. 在頁面右上方,選擇資料的時間範圍。

    請確保在原始日誌頁簽中有日誌資料。

  4. 在編輯框中,輸入資料加工語句。

    詳細的參數說明,請參見res_rds_mysql

    e_table_map(
        res_rds_mysql(
            "rm-bp1k****tp8o.mysql.rds.aliyuncs.com",     
            "test",
            "test1234@@",
            "client-db",
            table="client",
            fields=["c_id", "name", "telephone", "update_time"],
            refresh_interval=1,
            primary_keys="c_id",
            update_time_key="update_time",
            deleted_flag_key=None,
        ),
        "c_id",
        ["name", "telephone"],
    )
  5. 快速預覽資料。

    使用快速預覽,確保加工語句填寫正確。更多資訊,請參見快速預覽

    1. 單擊快速

    2. 測試資料 > 資料頁簽中輸入如下內容。

      {
        "__source__": "192.0.2.0",
        "__time__": 1624956516,
        "__topic__": "log",
        "__tag__:__client_ip__":"192.0.2.2",
        "c_id": "1",
        "staff_id": "002",
        "status": "持續跟進",
        "tag": "二次回訪",
      }
    3. 測試資料 > 維表頁簽中輸入如下內容。

      c_id,name,telephone,update_time,delete_flag
      1,maki,010-123,1606358931,false
    4. 單擊預覽資料

      查看預覽結果。快速預覽結果

  6. 進階預覽資料。

    使用進階預覽,確保Log Service串連RDS MySQL資料庫成功。更多資訊,請參見進階預覽

    1. 單擊進階

    2. 單擊預覽資料

    3. 添加預覽配置面板中,配置授權方式,然後單擊確定

      授權

    4. 查看預覽結果。

      進階預覽結果

      如果提示運行出錯,請參見擷取RDS MySQL資料語法錯誤

  7. 建立資料加工任務。

    1. 單擊儲存資料加工

    2. 建立資料加工任務面板中,配置相關資訊,然後單擊確定

      具體參數說明,請參見建立資料加工任務加工規則

      建立資料加工任務後,您可以在目標Logstore中查看已加工的日誌。加工結果

常見問題

如何使用累加式更新模式中的刪除功能?

累加式更新模式下,Log Service會根據資料庫表中的主鍵和時間,只拉取更新或新增的資料。如果您在資料庫表中將某條資料標記為刪除(例如delete_flag=true),Log Service依舊會拉取該資料繼續加工。針對該情況時,Log Service在res_rds_mysql函數中新增了deleted_flag_key參數。在加工語句中配置deleted_flag_key參數後,加工任務在擷取資料庫表更新的資料後,會將讀取到的delete_flagtrue的資料行從加工任務的記憶體維表中刪除(不影響資料庫表的內容)。在加工任務記憶體維表中被刪除的資料行將不再參與後續與日誌資料JOIN的操作。

重要
  • delete_flag設定為true1等值時,都表示刪除。更多資訊,請參見res_rds_mysql

  • 如果在加工語句中配置了deleted_flag_key參數,則還需配置update_time_key參數。

例如在RDS MySQL資料庫表中新增兩條資料(name=mia,name=tom),其中name=mia這條資料被標記為刪除,即設定delete_flagtrue。則Log Service記憶體維表更新時,name=mia這條資料在維表中被刪除,不會被加工。

加工語句樣本如下:

e_table_map(
    res_rds_mysql(
        "rm-bp1****l3tp.mysql.rds.aliyuncs.com",     
        "test",
        "test1234@@",
        "client-db",
        table="client",
        fields=["c_id", "name", "telephone", "update_time"],
        refresh_interval=1,
        primary_keys="c_id",
        update_time_key="update_time",
        deleted_flag_key="delete_flag",
    ),
    "c_id",
    ["name", "telephone"],
)