《Using OpenRefine》翻譯~4

上一篇:《Using OpenRefine》翻譯~3

要點5:使用項目操作歷史

本點中,你將學習到如何返回到任一個項目歷史操作點,並且學習如何在項目重新打開後查看歷史操作信息。

OpenRefine一個特別有用的功能是可以在項目創建後保存所有的操作步驟。這也就意味着你不需要害怕做數據變換嘗試:你可以隨意按照自己的想法變換數據,因爲一旦你發覺做錯了(即使是幾個月前做的),你也可以撤銷該操作以恢復數據。

爲了使用項目操作歷史功能,請單擊左側頂部Facet / Filter 旁邊的Undo / Redo 標籤頁,如下圖所示:


爲了恢復歷史數據,單擊你想保留的最近一個步驟操作。比如,爲了取消上圖第3步及以後的操作,可以單擊第2步使其高亮顯示,這樣第3~5步就會變灰。這意味着選中項後的操作都將取消。如果點擊第0步,那麼所有操作都將取消。點擊第4步,那麼第3和第4步的操作將被執行,而第5步將撤銷。

請注意,撤銷某幾步操作後再做出新的操作的話,原來的後續操作內容會丟失.比如,如果你從第5步回退到第2步,然後對Description 列執行左移操作,那麼會顯示第3步操作3. Move column description to position 1 ,而先前的灰色操作項(第3-5步)會丟失:因爲我們不能在同時擁有兩種互相矛盾的操作歷史記錄。記得多嘗試下上面的步驟,省的以後帶來嚴重的困擾。

記住,只有對數據有實際影響的操作纔會出現在項目歷史操作表中。數據透視比如:交換行列視角、在一頁中改變顯示數目、隱藏或展開列並不改變原來數據,所以也就不會出現在操作歷史表中。以上操作也就無法隨着項目信息傳遞:當你重新打開一個項目,無論原來是否隱藏,這時所有的列默認都是展開的,但是對於重命名列和刪除列這類操作會出現在操作歷史表中。在第二章,分析和修改數據中,我們會看到還有一些類型的操作會存在在操作歷史表中:比如單元格和列的變換、但是過濾和透視操作則不會。

操作歷史也可以以JSON格式導出,可以點擊Undo / Redo頁中的Extract...

,在打開界面中可以選擇需要導出的步驟(注意只有通用的操作才能夠導出,而對某個特定單元格的操作則無法導出)。上述操作能夠獲得JSON格式代碼從而可以讓你複製粘帖到他處。第1和第2步操作的代碼如下:

[

{

"op": "core/column-move",

"description": "Move column Registration Number to position

1",

"columnName": "Registration Number",

"index": 1

},

{

"op": "core/column-rename",

"description": "Rename column Description. to Description",

"oldColumnName": "Description.",

"newColumnName": "Description"

}

在上面代碼中,op代表操作,description描述了具體操作是什麼,餘下的是操作用到的參數。我們可以點擊Undo / Redo頁中的Apply...按鈕,然後將先前保存的JSON格式的操作代碼粘帖上去,從而可以在不同的項目之間傳遞操作。最後,如果你已經有成百上千個操作記錄,你可以在Filter輸入框中輸入字符來查找某個操作。比如輸入remove或者rem就能夠定位到第3步和第5步。



要點6:導出項目

本點中,我們將學習如何將修改後的數據用到其他項目中,包括將導出的格式定製爲模板。

雖然你可能已經移動、重命名或者刪除了列,但其實原始數據並沒有被修改(也就是要點1:安裝OpenRefine中的文件chapter1.tsv並沒有被修改)。事實上,不像有些電子表格軟件直接將改動寫進文件,OpenRefine只是對數據文件的一份拷貝進行操作。因爲存在這個保險措施,所以你在需要將數據導出分享或者嵌入其他應用程序時,你只需要在界面右上角點擊Export按鈕進行操作:


大部分彈出的選項能夠讓你將數據導出爲常用格式,比如csv、tsv、excel和open document格式、還有不常用的RDF格式。讓我們往下看:

• Export project: 這個選項能讓你導出OpenRefine格式的壓縮包,你可以用來和其他人共享或者僅僅用來備份。

• HTML table: 這個選項可以讓你方便的將文件發佈到互聯網。

• Triple loader 和MQLWrite: 這個選項有一些擴展功能,能夠讓你將數據轉換成支持Freeebase規則的樣式(參照附錄:正則表達式和GREL)

• Custom tabular exporter and templating:可能這是最吸引你的部分。OpenRefine可以讓你對你的數據導出有更精細的控制,比如對列進行選擇和排序、忽略空白行、正確選擇日期格式以得到更有效的數據(參見附錄:正則表達式和GREL)。如下圖所示:


• Templating...爲了獲得更多的控制,你可以使用你自己的代碼來限定格式,其會作用到所有的單元格。如代碼cells["Record ID"].value表示Record ID列的值,下面的代碼表示將列值轉換成JSON格式:

{

"Record ID" : {{jsonize(cells["Record ID"].value)}},

"Object Title" : {{jsonize(cells["Object

Title"].value)}},

"Registration Number" : {{jsonize(cells["Registration

Number"].value)}},

"Description. " : {{jsonize

(cells["Description. "].value)}},

"Marks" : {{jsonize(cells["Marks"].value)}},

"Production Date" : {{jsonize(cells["Production

Date"].value)}},

}



下一篇:《Using OpenRefine》翻譯~5


發佈了15 篇原創文章 · 獲贊 16 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章