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

需要提前確認的四件事

一、更新頻率
依資料的變化速度定,而不是依越勤越好定。
商家名單這類資訊變化緩慢,依月或依季更新通常足夠。商品價格變化頻繁,但更新頻率應該符合你的決策頻率而不是資料的變化頻率——如果調價決策每週做一次,那麼每天擷取並不會帶來額外價值,只會增加成本。
有一類例外是需要還原變化過程的場景,比如觀察競品在促銷期間的調價節奏。這種情況下高頻擷取有意義,但應該限定在特定時間窗口內,而不是全年高頻。

二、增量規則
明確用什麼判斷一筆記錄是新增、消失還是變化。
這需要一個穩定的識別欄位。商品有商品編號,貼文有連結,商家則往往沒有天然的唯一識別碼——這時候就要用名稱加地址的組合,或者電話、網站網域來判斷。這個判斷規則和去重規則應該是同一套。
還要約定「消失」怎麼處理。一家商家這次沒擷取到,可能是歇業了,也可能是搜尋結果排序變化導致這次沒涵蓋到。前者應該標記為已歇業,後者只是涵蓋波動。區分不了的時候,標記為「本次未出現」比直接刪除更安全。

三、欄位變化怎麼標記
交付時建議給兩份檔案:
- 變化對照表:標記哪些是新增記錄、哪些本次未出現、哪些記錄的哪些欄位發生了變化(含變化前後的值)
- 最新全量表:去重後的當前狀態,可以直接使用
這兩份用途不同。前者用於觀察趨勢和觸發動作(比如競品降價了要不要跟進),後者用於直接進入業務流程。
對於價格這類快照欄位,我們預設保留每次快照而不是覆蓋。覆蓋式更新會讓歷史無法追溯,而價格資料的價值恰恰在於變化過程。

四、目標網站改版後怎麼辦
這是週期性專案裡唯一無法提前避免的風險。
目標網站調整頁面結構後,原有的擷取規則可能部分或全部失效。可能的表現是某個欄位突然大面積為空,或者筆數明顯異常。
需要提前約定三件事:誰負責監測這種情況(我們會在每次更新時比較欄位完整率,異常會主動告知)、重新適配的成本怎麼算(結構小改通常包含在維護範圍內,大改會單獨說明並確認後再做)、適配期間的交付怎麼處理(是暫停一期還是交付部分欄位)。
把這三點寫清楚,改版發生時就不會變成爭執。

關於資料一致性
週期性專案有一個容易被忽略的要求:擷取參數必須固定。
地區、語言、排序方式、篩選條件,任何一項在第二次擷取時發生變化,兩批資料就失去了可比性——而且這種差異從資料表面完全看不出來,只會表現為「資料好像變化很大」。
我們會把首次擷取使用的全部參數寫進交付說明,後續更新沿用同一套參數。如果確實需要調整參數(比如擴大地區範圍),會作為一次新的基準重新開始,而不是和舊資料混在一起比較。
