週期性專案的規則要在第一次就定好

一次性擷取和週期性更新是兩種不同的專案。

一次性擷取只需要回答「現在是什麼樣」。週期性更新要回答的是「和上次比變了什麼」,而這個問題需要一整套規則支撐。這些規則如果第一次沒定,後面補的代價很高——因為首次擷取的資料結構可能根本不支援做比較。

週期更新流程:建立基準、重複擷取、與上期比較、交付兩份檔案,並循環 首次擷取 固定擷取參數 定死去重與增量規則 依週期重複擷取 沿用同一套參數 頻率符合決策頻率 與上期比較 新增/本次未出現 欄位變化前後值 交付兩份 變化對照表 去重後最新全量 進入下一週期 唯一無法提前避免的風險:目標網站改版 表現為某個欄位突然大面積為空,或筆數異常。每次更新會比較欄位完整率,異常會主動告知。 結構小改包含在維護範圍內;大改單獨說明並確認後再做,不會先做完再加價。 若擷取參數需要調整,會作為新基準重新開始,不與舊資料混在一起比較。
參數在首次擷取時固定下來,之後每期沿用。參數一變,兩批資料就失去可比性——而這種差異從資料表面看不出來。

牆上翻頁日曆的照片,上方懸浮著四個立體方塊

需要提前確認的四件事

節拍器的特寫,背景虛化

一、更新頻率

依資料的變化速度定,而不是依越勤越好定。

商家名單這類資訊變化緩慢,依月或依季更新通常足夠。商品價格變化頻繁,但更新頻率應該符合你的決策頻率而不是資料的變化頻率——如果調價決策每週做一次,那麼每天擷取並不會帶來額外價值,只會增加成本。

有一類例外是需要還原變化過程的場景,比如觀察競品在促銷期間的調價節奏。這種情況下高頻擷取有意義,但應該限定在特定時間窗口內,而不是全年高頻。

倉庫貨架上一排庫存標籤卡的特寫

二、增量規則

明確用什麼判斷一筆記錄是新增、消失還是變化。

這需要一個穩定的識別欄位。商品有商品編號,貼文有連結,商家則往往沒有天然的唯一識別碼——這時候就要用名稱加地址的組合,或者電話、網站網域來判斷。這個判斷規則和去重規則應該是同一套。

還要約定「消失」怎麼處理。一家商家這次沒擷取到,可能是歇業了,也可能是搜尋結果排序變化導致這次沒涵蓋到。前者應該標記為已歇業,後者只是涵蓋波動。區分不了的時候,標記為「本次未出現」比直接刪除更安全。

並排放置的兩張白紙,上方懸浮著一個高亮的立體方框

三、欄位變化怎麼標記

交付時建議給兩份檔案:

  • 變化對照表:標記哪些是新增記錄、哪些本次未出現、哪些記錄的哪些欄位發生了變化(含變化前後的值)
  • 最新全量表:去重後的當前狀態,可以直接使用

這兩份用途不同。前者用於觀察趨勢和觸發動作(比如競品降價了要不要跟進),後者用於直接進入業務流程。

對於價格這類快照欄位,我們預設保留每次快照而不是覆蓋。覆蓋式更新會讓歷史無法追溯,而價格資料的價值恰恰在於變化過程。

建築工地的鷹架與圍籬

四、目標網站改版後怎麼辦

這是週期性專案裡唯一無法提前避免的風險。

目標網站調整頁面結構後,原有的擷取規則可能部分或全部失效。可能的表現是某個欄位突然大面積為空,或者筆數明顯異常。

需要提前約定三件事:誰負責監測這種情況(我們會在每次更新時比較欄位完整率,異常會主動告知)、重新適配的成本怎麼算(結構小改通常包含在維護範圍內,大改會單獨說明並確認後再做)、適配期間的交付怎麼處理(是暫停一期還是交付部分欄位)。

把這三點寫清楚,改版發生時就不會變成爭執。

並排的兩台相同儀器,上方懸浮著兩條平行的立體橫桿

關於資料一致性

週期性專案有一個容易被忽略的要求:擷取參數必須固定

地區、語言、排序方式、篩選條件,任何一項在第二次擷取時發生變化,兩批資料就失去了可比性——而且這種差異從資料表面完全看不出來,只會表現為「資料好像變化很大」。

我們會把首次擷取使用的全部參數寫進交付說明,後續更新沿用同一套參數。如果確實需要調整參數(比如擴大地區範圍),會作為一次新的基準重新開始,而不是和舊資料混在一起比較。