據(jù)英國BBC報道,由于英國政府的一個“技術故障”,導致9月25日至10月2日期間,有15841例病例沒有被列入英國新增病例統(tǒng)計數(shù)據(jù)之內。
造成這次事故的原因是負責病毒檢測的第三方機構把每日結果用.csv文件(以純文本形式存儲的表格數(shù)據(jù))提交給 PHE(英國公關健康部門)。問題出在PHE的工作人員選擇了老版的.xls文件格式將數(shù)據(jù)匯總到Excel模板中,再上傳到中央系統(tǒng)。
BBC報道截圖,深色部分是遺漏數(shù)據(jù)
而.xls這種老版本文件處理數(shù)據(jù)總行數(shù)上限是65536行256列。這個數(shù)字換算成16進制就是(10000)16行(100)16列。Excel使用這種格式導入.csv數(shù)據(jù)時會直接扔掉超出65536行的數(shù)據(jù)。
從BBC的數(shù)據(jù)圖分析,英國政府應該是使用多行表格存儲一個人的數(shù)據(jù),而每天只要確診數(shù)超出約七千人后,超出的部分就會在匯總時被丟棄,導致英國多達7天的新增確診人數(shù)相近,才發(fā)現(xiàn)了這個大問題。
隨后PHE表示已經及時改正了這個錯誤,改用新版的.xlsx格式處理數(shù)據(jù)!要知道就算是新版的Excel處理數(shù)據(jù)的上限也不夠高啊,這個上限只有16進制的(100000)16行(4000)16列,就是說僅增加了10倍達到1048576行而已。如果按10行存儲一個患者來算也就是存儲10萬人就達到上限了,而英國目前已經有超過70萬確診,只能指望大英帝國的老爺們只是用Excel處理單日數(shù)據(jù)而不會用來匯總全部數(shù)據(jù)了,不然肯定會超。
其實Excel本身就不是處理大數(shù)據(jù)的工具。一般來說超過1000行的數(shù)據(jù)就應該轉為數(shù)據(jù)庫,強行維護一個超大的Excel文件就像用“記事本”寫博士論文一樣,不是不能做,但確實超出工具的使用定位。更重要的是,Excel無法滿足數(shù)據(jù)可靠性、完整性,缺乏數(shù)據(jù)校驗、備份、回溯和權限管理的手段。這個事故就是一個數(shù)據(jù)完整性事故,教科書一般的案例。
類似由于Excel問題引發(fā)的著名案例還有今年國際人類基因命名委員會(HGNC)由于不堪忍受Excel的“智能聯(lián)想”的自作聰明,被迫修改了27個基因的名字。
在研究人類基因組時,科學家給2.5萬個基因起了名字,這些名字一般由字母加數(shù)字組成。但其中27個基因的簡寫名稱剛好與月份的簡寫相同,微軟的Excel在處理表格時會自動將日期簡寫變成日期格式。這個“智能”操作導致在頂級期刊發(fā)表的遺傳學論文中,有20%論文中的基因列表出現(xiàn)了錯誤。
例如某熱門基因叫做Septin 2,常簡寫為“SEPT2”。但當科研人員在Excel中輸入這個基因的時候,智能的Excel就會自動聯(lián)想,幫科研人員修改變成日期格式“2-Sep”(9月2日)。更智能的是,這項功能是沒法關閉的,你唯一能做的就是將存儲格式從一般轉變?yōu)槲谋?。但是如果你導出?shù)據(jù)為txt/csv文件,然后再次用Excel打開,就可能會顯示44076——這是Excel的內部數(shù)字代碼,表示日期為2020年9月2日。
由于生物學家在微軟龐大的用戶群中只占很小的一部分,微軟并不會因此而改變其產品功能。最終國際人類基因命名委員會不得不把SEPT1修改為SEPTIN1,MARCH1修改為MARCHF1,這樣做的目的就是為了避開Excel的自動格式轉換。