最近整理一批路線與騎乘紀錄時,我重新確認了一個很基本、卻常被軟體介面模糊掉的事實:把檔案從一種格式轉成另一種格式,不會讓座標更準,也不會憑空長出更可靠的海拔。新格式可能多了轉彎提示、裝置相容性或更方便的欄位結構,但那是使用方式改變,不是原始證據升級。
這個小問題很像企業系統每天發生的事。CSV 匯入資料庫、JSON 轉成事件、報表轉成 API,資料一旦穿上更正式的外衣,就很容易被誤認為更完整、更可信。站在技術主管的位置,我認為格式選擇真正該回答的,不是哪一種「比較高級」,而是這份資料現在要被保存、交換,還是拿去執行。
容器變了,內容不會自動變好
格式轉換最容易製造的錯覺,是輸出檔看起來比輸入檔豐富。
假設原始路線只有經緯度與地形模型估算的高度,轉換工具可以根據幾何關係加入轉彎提示,也可以重新取樣、補齊欄位,甚至畫出更平滑的高度曲線。這些功能都可能有用,但它們沒有回到現場重新量測。多出來的資訊是推導、插值或外部資料補充,不是原始感測器突然變準。
企業資料也一樣。一份試算表匯入正式資料庫後,欄位有了型別、索引與 API,不代表來源裡的缺值、錯字與定義歧義就消失了。舊系統的文字狀態映射成新系統的狀態碼,也不代表流程語意已經一致。PDF 經 OCR 變成結構化 JSON,更不表示每個辨識結果都已經由人確認。
問題不在轉換,而在我們常把「更適合機器使用」誤寫成「更接近事實」。
我會先替三種責任命名
處理跨系統資料時,我現在傾向先分清楚三種角色。
第一種是權威來源。它保留最接近原始事件或量測的資料,也承擔日後重建、查核與爭議處理的責任。實際騎乘時,裝置留下的原始紀錄通常比事後匯出的路線檔更接近現場;企業系統裡,正式交易事件、原始感測資料或經核准的主檔也扮演相同角色。
第二種是交換格式。它的價值是讓不同工具能讀懂同一份內容,因此會追求通用、穩定與容易傳輸。交換格式可以捨棄某些來源特有欄位,也可能用共同欄位近似表達。它是一份互通契約,不一定是完整備份。
第三種是執行產物。它為特定裝置、流程或當下任務最佳化,例如加入導航提示、建立批次匯入檔、把資料整理成模型可讀的上下文。這類產物可能最方便使用,卻也最依賴特定版本、規則與目標環境。
三者可以來自同一份資料,但不能因為副檔名不同,就假設彼此等價。權威來源負責證明,交換格式負責溝通,執行產物負責完成任務。
衍生資料需要攜帶自己的出生證明
只要轉換過程加入了新資訊,就應該留下來源與方法。
我至少會記錄:輸入檔或來源紀錄的識別、轉換工具與版本、執行時間、使用的規則或外部資料、哪些欄位被丟棄、哪些欄位是新推導,以及輸出適用的目標。若有重新取樣、單位換算、時區處理、座標系轉換或缺值補齊,也都應在可查的位置說清楚。
這些 metadata 看起來繁瑣,卻是日後判斷「能不能重做」的關鍵。當裝置不再支援某格式,我們應該能從權威來源重新產生新的執行檔,而不是拿多次轉換後的檔案繼續加工。每多轉一次,遺失欄位、累積誤差與失去來源脈絡的風險就多一層。
因此,我不喜歡把匯出檔命名成 final_v2_new,再由下一個人猜哪份最真。比較成熟的做法,是讓衍生產物可丟棄、可重建,並把轉換流程版本化。真正值得長期保存的,是原始證據、必要的人工修正,以及能穩定重現產物的規則。
先選使用情境,再選格式
很多格式爭論最後會變成規格表比較:哪一種欄位比較多、哪一種裝置支援比較廣、哪一種看起來比較新。但技術選型若離開使用情境,功能愈多不一定愈好。
若目的是保存與分析,我會優先保留資訊完整、來源清楚且能長期解析的格式。若目的是跨系統交換,我會在相容性與語意損失之間取捨,並用契約測試確認必要欄位沒有變形。若目的是送進裝置或工作流執行,我更在意目標端真正使用哪些欄位、失敗時怎麼回報,以及產物能否由來源重新生成。
有時候,同一個流程同時保留三份檔案是合理的:一份原始紀錄、一份通用交換檔,以及一份針對裝置生成的執行檔。重複不是罪,沒有說明哪份負責什麼才是問題。
驗證也要分成兩件事
格式轉換完成後,不能只檢查「檔案打得開」。我會把驗證拆成語法與語意兩層。
語法驗證確認 schema、型別、必要欄位、編碼與檔案完整性;語意驗證則比較關鍵筆數、時間順序、單位、座標範圍、狀態映射與允許誤差。對執行產物,還要在真正的目標裝置或沙箱流程跑一次,因為規格相容不代表實作相容。
同時也要驗證沒有發生的事:沒有原始時間戳,就不該在輸出裡出現看似精確的實際速度;來源是估算高度,就不該被標成感測器量測;缺少正式核准,就不能因為匯入了核心系統而變成已核准狀態。
好的資料管線,不靠副檔名建立信任
資料工程成熟之後,團隊不會只問「這份檔案是什麼格式」,而會問它從哪裡來、經過什麼轉換、為哪個用途產生、遺失了什麼,以及能不能回到權威來源重建。
格式很重要。它決定系統是否能交換、裝置是否能執行、工具是否容易整合。但格式只是資料的容器與契約,不是品質認證。把資料轉進更正式的系統,不會自動修正來源;把它轉成欄位更多的格式,也不會增加從未被量測的事實。
對我來說,最穩健的原則很簡單:原始證據要保留,人工修正要有紀錄,衍生產物要能重建,使用限制要跟著資料走。如此一來,我們才能放心為不同情境產生不同格式,而不會在某次轉檔之後,讓方便使用的副本悄悄取代了真正的來源。