接手別人的試算表,最花時間的不是學公式,是猜每一欄到底裝什麼。狀態欄的已結案,是付款了還是交付了。資料字典就是用來終結這種猜測的文件。問題是,怎麼寫才不會淪為沒人打開的附件。
一份有人用的資料字典,每個欄位寫八項:欄位名稱、白話定義、資料型別與格式、允許值、是否必填、資料來源、負責人、最後修改日期。它要放在資料表同一個檔案裡,定義用一句完整的話寫,並附一個正確範例與一個錯誤範例。寫到這個程度,新同事不必開口問,就能填對。
資料字典,是描述資料的資料。它不放任何一筆業務紀錄,只說明每一欄裝什麼、怎麼裝。以下用決策表的方式,一項一項看:這一項要不要寫、怎麼寫、最常寫錯在哪裡。
兩個都寫,分兩欄。第一欄照資料表上的實際欄名,一字不差,包含大小寫與底線。第二欄寫給人看的顯示名稱。
只寫中文說明的字典,使用者要自己去對是哪一欄,對錯了也不知道。實際欄名一字不差,才能用搜尋功能直接找到。這一項的取捨很小,沒有理由省。
一句完整的話,外加什麼不算。例如成交日期的定義寫成:款項實際入帳的日期,不是簽約日期,也不是開立請款單的日期。
後半句比前半句重要。欄位會被誤用,幾乎都是因為有一個很像的概念混進來。寫定義的時候,回想這一欄曾經被填錯成什麼,把那個東西點名排除。這是第一線才知道的細節,也是資料字典最有價值的部分。
常見的錯誤寫法是把欄名再講一次。客戶類型的定義寫成客戶的類型。這種定義寫了等於沒寫。
資料型別,是這一欄的值屬於哪一種,例如文字、整數、小數、日期、是非。格式,是同一種型別底下的具體寫法。
日期一定要寫格式,例如四位數年份、兩位數月份、兩位數日期,中間用連字號。金額要寫是否含稅、小數幾位、幣別記在哪一欄。電話要寫是否含國碼。這三種欄位最常在合併資料時出事,值得多寫兩行。其他文字欄位,寫文字與長度上限就夠了。
選項在二十個以內的,全部列出,並為每個選項寫一句判定條件。選項更多的,例如國家或產業代碼,就寫明參照哪一張代碼表,不必在字典裡重列一次。
判定條件是重點。案件狀態有洽談中、已報價、已成交、已結案四個值。光列出四個詞沒有用。要寫明從已成交變成已結案的條件是什麼,是交付完成,還是尾款入帳。兩個人理解不同,報表上的已結案件數就會差一截。
要。必填與否只是一半。另一半是空白代表什麼。空白可能是還沒發生、不適用、或是忘了填。三種意思在分析時的處理方式完全不同。
我們的做法是,對容易混淆的欄位,規定不適用要明確填入一個代碼,真正的空白只代表尚未填寫。這條規則寫在字典裡,並搭配資料驗證執行。
寫到能回頭查證的程度。人工填寫的欄位,寫由哪個角色、在哪個時間點、根據什麼文件填。系統匯入的欄位,寫來自哪個工具的哪一份報表、多久匯一次。計算欄位,寫完整的計算方式與引用的欄位。
計算欄位最容易被忽略。一欄毛利的公式裡扣了哪些成本,一年後沒有人記得。把公式用文字寫一遍,放進字典。公式改了,字典同步改,並更新修改日期。
寫角色,再由另一張小表把角色對到人。人會調動,角色比較穩。字典裡寫業務主管,比寫某位同事的名字耐用。
負責人的意思是:這一欄的定義有爭議時,由他決定;這一欄的資料有錯時,由他修正或指派修正。沒有負責人的欄位,出錯的時候所有人都會以為別人會處理。
每個欄位留一格最後修改日期。完整的修改紀錄另開一個工作表,記錄日期、哪一欄、改了什麼、為什麼改、誰核准。
定義改過的欄位,前後期的資料不能直接比較。分析的人需要知道切換點在哪一天。這張修改紀錄,就是用來回答為什麼這個數字從某個月開始突然變了。
字典越短,越有人看。每多放一類內容,就多一個讓它過期的理由。
第五步是驗收。字典寫得好不好,不由作者判斷,由第一次看到它的人能不能填對來判斷。最容易卡住的是第七步,沒有人排時間維護。把它綁在每季固定的資料整理日,一起做。
一個專業服務團隊的案件表有一欄狀態,其中一個選項是已結案。業務認為報告交出去就算結案。負責收款的同事認為尾款入帳才算。主管每個月看已結案件數來估算收入。
三個人看同一欄,心裡是三個定義。有一季,主管發現已結案件數與實際入帳差了不少。追查之後才知道,有一批案件交付了但尾款還沒收,在表上早就被標成已結案。
解法不是爭論誰的定義對。解法是把一個狀態拆成兩個:已交付與已收訖,各自寫明判定條件與由誰更新。然後在資料字典記下拆分的日期,並註明在那之前的已結案,意義等同於現在的已交付。
這個例子說明資料字典的實際用途。它不是一份為了完整而寫的文件。它是用來讓分歧浮上檯面的工具。寫定義的過程中,團隊會發現原來大家想的不一樣,這個發現本身就值回時間。
寫字典時,總有幾個欄位卡住。問了三個人,得到三種說法,或是沒有人說得出來。這有三種可能。
不要為了讓字典看起來完整,硬寫一個模糊的定義蓋過去。寫上定義待確認,並標上負責人與預定確認日期,比一句含糊的話誠實,也更有用。
除了請新同事試填,還有兩個檢查。第一,從資料表隨機抽二十列,逐欄對照字典,看實際的值是否都落在允許值之內。不符合的,要嘛是資料錯,要嘛是字典漏寫了一個合法的值。兩種都要修。
第二,把字典的欄位數與資料表的欄位數對一次。資料表新增了欄位而字典沒有跟上,是字典開始失效的第一個徵兆。這個檢查只要一分鐘,放進每季的固定流程。
這套寫法適合用試算表管理業務資料、欄位數在一百個以內的團隊。重點在讓人填對與讀對。
它不適合有正式資料庫與資料工程團隊的組織。那種環境需要與資料庫結構連動的中繼資料管理方式,由工程端維護,試算表式的字典會很快與實際結構脫節。
一次性的分析檔,例如只用一次就封存的問卷結果,也不必寫完整字典。在檔案第一頁寫幾行欄位說明就夠了。字典是為了會長期使用、會換手的資料而寫的。