如何為流程圖整理 CSV 檔案結構
如何把一個 CSV 整理成可以匯入為流程圖:標題列放第一行、按標題名稱而不是欄位置比對、一個步驟一列,以及決定它解析得到與否的分隔符、編碼與引號規則。
當一個 CSV 的第一行是一行指名 QueryChart 欄名的標題列、下面每一行都是一個步驟,而檔案是以逗號分隔的 UTF-8、任何含有逗號的欄位都用引號包起,它就會匯入成一張流程圖。
簡而言之
- 標題列必須是檔案的第一行——不是第三行,坐在一個報表標題下面。
- 比對的是標題名稱,不是欄的位置;不獲認得的欄會被帶過並忽略。
- 一個步驟一列,不是一筆紀錄一列。一份匯出檔通常是一份日誌,不是一份定義。
- 以逗號分隔的 UTF-8。一個來自歐洲地區設定的分號檔案會變成單獨一個欄。
- 任何含有逗號、引號或換行的欄位都要用引號包起;一個實際的引號寫成兩個引號。
檔案就是介面,所以檔案本身必須寫對
CSV 不是試算表。它是一個純文字檔,一列一行,欄位之間有一個分隔符,而且不帶儲存格類型、不帶格式、不帶公式、不帶第二個分頁。這正是每一套系統都匯出它的原因——一個服務台、一套 ERP、一個人力資源系統與一個資料庫主控台全部都產生它,而它們除了逗號以外幾乎沒有共識。這也正是為甚麼一次匯入要麼立刻成功,要麼以一種看上去像甚麼都沒發生過的方式失敗。
QueryChart 是按標題名稱讀這個檔案的。第一行必須是標題列,而上面那些名稱是拿去與編輯器自己的欄比對的——#、「形狀」、「方框文字」、「連線至」、「連線文字」、「橫向泳道」、「縱向泳道」——而不是與位置比對,所以你的欄是甚麼次序都無關緊要,而 QueryChart 不認得的欄會原封帶過並被忽略。把 .csv 拖到一張圖表的試算表區域,或者把那些列貼進去。不會出現匯入精靈,也沒有要逐個欄對應的畫面,這就是那個交換:對應關係活在你的標題列裡,而不是活在一個對話框裡。
其餘的部分才是令人白白花掉一個下午的地方,而且沒有一項與圖有關。一個在清單分隔符為分號的機器上儲存的檔案,不是一個逗號分隔的檔案。一個含有逗號的欄位必須用引號包起,否則它會變成兩個欄位。一個位元組順序標記在任何編輯器裡都是隱形的,卻照樣附在第一個標題名稱上。一個寫成 007 的步驟引用,在試算表裡走一轉再出來就變成 7。這些都是檔案的問題,值得在你考慮形狀之前先修好——一旦檔案本身解析得到,/yue/guides/在csv裡定義連接 會處理連接那幾個欄要填甚麼。
下面的示例是一個以正確方式匯出的客服工單分流:十八列,一個步驟一列,一個欄一個欄地建起來。把它當成一個檔案而不是一張圖去讀——那張圖是你把欄寫對之後所得到的東西,不是你要動手做出來的東西。如果你想要一個已經正確、可以照抄結構的檔案,就由 /yue/templates/csv轉流程圖 拿一個。
同一個 CSV,一個欄一個欄地讀
一個客服工單分流,十八列。打開試算表面板,看看每個階段填的是檔案的哪一個欄。
標題列,加上一個步驟一行
檔案的第一行指名那些欄;下面每一行都是一個步驟。第 1 至 6 列由「提交一張工單」走到「按影響與緊急程度訂定優先次序」,每一個各佔一行,除了一個標籤以外甚麼都沒有。這是一個檔案要能夠匯入的最低要求,也正是大部分匯出檔已經出錯的地方,因為它們放的是一張工單一行,而不是一個步驟一行。
「形狀」欄
「形狀」是一個由解析器比對的值,所以它的寫法一字不差:第 1 列 Start、第 2 列 Process、第 3、5、7、9 列 Decision。「資料是否足夠處理這張工單?」與「解決方法是否有效?」之所以是菱形,是因為儲存格寫著 Decision,不是因為有一個問號。一個解析器不認得的值會悄悄退回 Process,一個判斷就是這樣變成一個矩形,而分支標籤照樣掛在它身上。
「連線至」與「連線文字」,用引號包起
第 5 列「催辦期限屆滿前是否收到回覆?」的「連線至」是 6,18,「連線文字」是 已收到回覆,沒有回覆——兩個按位置配對的清單,兩者都含有逗號,所以兩個欄位在檔案裡都要用引號包起。第 13 列的「方框文字」寫著「是徹底修好,還是暫時繞過?」,用的是全形逗號,所以它安然無事;同一句若以半形逗號寫成,那個逗號就屬於標籤而不屬於格式,也一樣要包起來。把那些引號脫掉,這一列就多出一個欄位,整行往左移一格。
泳道欄與完成的檔案
最後兩個欄與其他每一個欄一樣是按名稱比對的:「橫向泳道」承載提交、分流、一線、升級與結案,「縱向泳道」承載申請人、服務台與專責團隊。填好之後,同樣那十八行渲染成一張泳道圖,結束在第 17 列的「工單已結案」與第 18 列的「申請人沒有回覆而結案」。這個檔案除了多兩個純文字欄以外,甚麼都沒有變。
運作方式
匯出一張乾淨的表格
無論資料來自哪一套系統,只匯出那個格線,其他一概不要。報表標題、一個日期戳記、一行標誌、合併的標題、小計列與最底一行空行,全部都會變成檔案裡的一行,而每一行都會被讀成一個步驟。如果匯出功能有「原始資料」或者「不含格式」的選項,那就是要選的那個。
令標題列成為第一行
用文字編輯器而不是試算表打開這個檔案,看一看第一行。它必須是標題。開頭有兩三行中繼資料的匯出檔常見到值得把這件事放在第一個檢查,而刪掉那幾行就是全部的修法。
把標題改成 QueryChart 的欄名
把標題儲存格設為「形狀」、「方框文字」、「連線至」、「連線文字」、「橫向泳道」與「縱向泳道」。比對是按名稱做的,所以這些欄可以是任何次序,而你自己的欄——工單編號、系統、周期時間——可以原封留在檔案裡;它們會被帶過並忽略,而不是被拒絕。
把那些列收攏成一個步驟一列
一份匯出檔通常是一份日誌:一張工單、一條訂單、一宗個案一行。一張流程圖需要的是一個不重複的步驟一行,所以先做一次樞紐分析或去除重複,並把數量留待日後分析。一個四千行的檔案是一份資料集,不是一條流程,而匯入它會得到四千個方框。
為步驟編號並填「連線至」
「連線至」放的是目標行以 1 起計的位置,而且只數資料行,所以標題下面第一個步驟是 1。它不是工單編號、步驟代碼,也不是來源系統的任何東西。一個步驟通向兩處時,把兩個數字放進同一個欄位並以逗號分隔,再把那個欄位用引號包起。
修好分隔符與編碼,然後把檔案拖進去
以逗號分隔的 UTF-8 儲存,然後把 .csv 拖到一張新圖表的試算表區域。把第一次渲染當成對這個檔案的一次檢查:列數應該與你的步驟數相符,而每一個欄都應該落在你預期的位置。一個到埗時變成一個很闊的單欄的檔案,是分隔符的問題,不是匯入失敗。
應避免的錯誤
一個副檔名為 .csv 的分號檔案
在一部地區清單分隔符為分號的機器上,「另存為 CSV」寫出來的是分號,而檔案結尾照樣是 .csv。它到埗時是一個欄,所有值都在裡面。用逗號重新匯出一次,或者匯入之前在文字編輯器裡把分隔符換掉。
標題列不在第一行
報表匯出檔習慣在資料上方放一個標題、一個日期範圍與一行空行。QueryChart 把第一行讀成標題,所以那幾行變成了欄名,而你真正的標題變成了一個步驟。把標題以上的東西全部刪掉。
分支標籤裡有一個逗號
引號保護一個欄位不被 CSV 解析器拆開,但「連線文字」本身也會按逗號拆開,好把標籤與目的地配對。所以一個以半形逗號標成「是,須經批准」的分支,無論怎樣加引號都會變成兩個標籤。改個名字算了,或者用全形逗號——短標籤放在圖上本來就更好。
在試算表裡走一轉之後的前置零與長數字
CSV 沒有類型,所以是打開它的那個程式去決定。在試算表裡打開再另存一次,007 就變成 7,一個十六位的引用編號變成 4.12346E+15,而 3/4 變成一個日期。用文字編輯器編輯這個檔案,或者把那個欄以文字方式匯入,然後檢查那些本來是代碼而不是數字的值。
把你的 CSV 匯入成流程圖
打開客服分流示例,下載它的 CSV 看清楚確切的欄名與引號用法,然後把你自己的檔案拖上去覆蓋它。
相關指南
常見問題
我的 CSV 裡欄的次序要緊嗎?
不要緊。比對是按標題名稱做的,所以「方框文字」可以是第四個欄,「形狀」可以是最後一個。要緊的是那些名稱正是編輯器所用的那幾個——「形狀」、「方框文字」、「連線至」、「連線文字」、「橫向泳道」、「縱向泳道」——並且它們坐在檔案的第一行。QueryChart 不認得的欄會被帶過並忽略,所以不需要事先把你的工單編號、系統或時間欄剔走。
這個檔案應該用哪個分隔符與編碼?
逗號與 UTF-8。分號是慣常的失敗原因:在一部地區清單分隔符為歐式的機器上,Excel 的「CSV」是分號分隔的,而這個檔案匯入之後就是單獨一個欄。編碼問題顯示出來的樣子是帶重音的字元變成亂碼——請另存為「CSV UTF-8」而不是普通 CSV。如果除了第一個欄以外全部都對應到了,就懷疑是一個位元組順序標記:它在編輯器裡隱形,卻附在第一個標題名稱上,於是那個名稱再也比對不上。
含有逗號的欄位該怎樣寫?
把整個欄位用雙引號包起,例如一個寫成 6,18 的「連線至」值。一個引號本身出現在被引號包起的欄位裡時,寫成兩個引號。被引號包起的欄位裡放換行也是合法的,不過一個方框標籤很少需要。連接那兩個欄幾乎一定需要引號,因為「6,18」與「已收到回覆,沒有回覆」按設計本來就含有那個分隔符——正是它把標籤與目的地配起對來。
我的匯出檔是一張工單一列,不是一個步驟一列。可以用嗎?
不能直接用。一份交易日誌描述的是發生了幾千次的事;一張流程圖描述的是本來應該發生一次的事。先把它收攏成不重複的步驟——通常按活動欄或狀態欄做一次樞紐分析就夠——並把數量另外保存,因為那是一次流程分析裡有趣的另一半。/yue/guides/csv轉流程地圖 在一份形狀完全相同的匯出檔上走了一次這個收攏過程。
到底哪些欄是必需的?
單有「方框文字」就匯入得到:你會得到一直行互不相連的方框。加上「連線至」,它就成為一張流程圖,因為那是承載關係的欄。「形狀」、「連線文字」與兩個泳道欄屬於精修——判斷畫成菱形、分支加上標籤、步驟歸入階段與負責人。如果你寧願由一個已經結構正確的檔案開始,/yue/templates/csv轉流程圖 就是一張可用圖表連同它背後的那些列。