DSPL Gen 是一種指令列公用程式,可協助 轉換為簡易的 DSPL 資料集。工具會剖析輸入內容 檔案,建立所有必要的資料表,並安排一個 DSPL XML 檔案。 產出的資料集近乎完整 「範本」只需要微調一些內容 讓我們一起來繪圖
DSPL 產生背後的基本假設是 輸入 CSV 檔案會對應至單一 DSPL 概念,每個資料列都是 單一的觀察結果這項工具的運作方式 疊代各資料欄,為每個資料欄建立適當的中繼資料 欄/概念 (例如欄/概念的 ID、類型、是維度或指標、 然後產生所有必要的概念定義和片段 表格。
執行 DSPL Gen
語法
注意:下列指示均假設 您已經遵循 安裝操作說明 請前往 DSPL 的「工具」頁面
如要執行 DSPL Gen,請前往系統的終端機 / 提示並輸入:
python dsplgen.py -o [output path] [path to CSV file]
其中括號中的字詞會替換為以下格式:
[output path]
:所需目錄的路徑 所需的輸出檔案這個目錄必須已存在 您的檔案系統。[path to CSV file]
:輸入內容 CSV 檔案的路徑。詳情請參閱 請參閱下文,進一步瞭解如何 這個檔案的格式。
-o [output path]
元件為選用元件;省略時,
輸出檔案會存放在目前的目錄中。
接著,工具會執行並疊代 CSV 檔案 以及產生切片表除非發現任何錯誤,否則將顯示 XML 檔案和一或多個 CSV 檔案都會寫入輸出目錄。
最後,使用您選用的文字編輯器開啟 XML 檔案,然後
需要進行任何變更您至少應填寫名稱
以及工具根據
** INSERT ... **
標記法。
簡易範例
假設我們有一個 CSV 檔案,當中列出 按月份、國家/地區和年齡層細分簡單來說 我們假設每個維度都有 2 個值
date,country,age_group,disease_cases 01/2000,US,old,102030 01/2000,MX,old,192939 01/2000,US,young,23131 01/2000,MX,young,12311 02/2000,US,old,143135 02/2000,MX,old,203131 02/2000,US,young,22990 02/2000,MX,young,12591
在上述輸入內容上執行工具會產生 4 個檔案:
dataset.xml
:DSPL XML 範本country_table.csv
:country
的值 概念age_group_table.csv
:如果age_group
概念slice_0_table.csv
:資料集配量資料表 (與 輸入資料表,但排序除外)
在這個特定情況下,工具能夠正確猜測所有 各欄類型和格式接下來就要到 XML 檔案中 ,並編輯資料集中繼資料內的各個名稱、說明和網址。
為輸入內容 CSV 加上註解
基本選項
在許多情況下 (例如上方範例),DSL 產生器都能猜測基本功 中繼資料 (例如類型、格式以及 維度或指標但有些情況下,這項工具可能無法 可能只是猜錯,或猜錯,但也可以 但並未依循期望的行為。
為處理這類情況,這項工具支援新增 DSPL 產生功能 選項 / 「提示」。這些選項的語法為 如下:
column1[option1=value1;option2=value2;...],column2[option1=value1;option2=value2;...],column3[...],...
特別要注意的是,選項清單 資料欄名稱右方的括號,以及連續選項。 以分號分隔每個選項都包含 選項名稱、等號和選項值
DSPL Gen 目前支援下列基本選項:
選項 | 說明 | 預設 |
---|---|---|
type |
這一欄的 DSPL 資料類型;必須是 date 、
float 、integer 或 string 。 |
根據資料推測出 |
format |
此日期欄的格式;與 DSPL 中一樣,這個格式應該是 使用 Joda DateTime 標準。 | 根據資料推測出 |
slice_role |
這個資料欄在任何配量中扮演的角色;必須是
dimension 或 metric 。 |
dimension 如果資料欄類型為 date 或
string ,否則為 metric |
concept |
本欄代表的標準概念,例如:
geo:country ;若有指定,就會匯入概念,而且不會
定義是在 XML 檔案中產生 |
無 |
extends |
本欄延伸的標準概念,例如:
entity:entity 。 |
無 |
parent |
這一欄的父項概念。這個父項必須是維度 資料集內定義的概念 (即未匯入);若有提供 這項資訊將會用來定義 請注意,每個子項例項都只能有一個父項。如有多個 如果偵測到父項值,此工具就會發生錯誤。 |
無 |
價值綜覽
除了基本「提示」之外,選項
DSPL Gen 也支援配量綜覽:單一資料表
工具可以自動建立額外的資料表
是維度的子集舉例來說,如果您的輸入資料表對應
包含三個非時間維度 (例如dimension1
,
dimension2
和 dimensions3
) 這項工具可以
您也可以建立一些其他配量:僅 dimension1
、
只有 dimension2
,只有 dimension1
和
dimension2
等。
新增這些額外的配量,可讓資料集更易於探索 因為這樣可以減少 以圖表呈現另一方面,這個程序可能 在原始檔案中找不到資料,因此如果無資料成功,也可能引發錯誤 ;仔細確認匯總資料後
在以下項目中加入一些額外選項,就會觸發綜覽程序 輸入 CSV 標題:
選項 | 說明 | 預設 |
---|---|---|
aggregation |
合併多個值時使用的匯總方法
欄位;必須是 AVG 或 COUNT 其中之一
MAX 、MIN 或 SUM ;僅
對指標而言很實用。 |
SUM |
rollup |
如果值為 true ,就表示
該欄是「向上捲動」(即匯總);
只有維度概念才有意義 |
否 |
total_val |
這個資料欄中的值表示此時要保留的資料列 只有「維度」概念才有意義 | None |
DSPL Gen 接著使用以下演算法計算綜覽資料:
- 使用
rollup
標記的值,計算出所有可能性 欄組合 - 針對每個組合:
- 如果任何匯總資料欄具有
total_val
參數 ,然後依據這個值篩選資料列:否則,請選取所有列 - 捨棄匯總資料欄
- 按照其他維度欄的值將列分組
- 使用在指標中指定的方法匯總每個指標
aggregation
參數 - 為結果建立配量和相關資料表
- 如果任何匯總資料欄具有
請注意,如果每個分組中只有一個值,且每個群組
匯總函式設為 SUM
(預設值),
來源和所生成資料表中的指標值不會相同,亦即沒有任何新的值
。因此,使用 total_val
參數
如果「總計」中代表每一組
維度,直接在來源中儲存預先計算的匯總資料。
警告:產生的配量為 等於 2 個加速的欄。將這個選項套用到 欄數可能造成執行時間過長和/或產生大型
進階範例
假設輸入資料與上一個範例相同,但 包含各國家/地區的匯總資料:
date,country,age_group,disease_cases 01/2000,US,old,102030 01/2000,MX,old,192939 01/2000,total,old,152012 01/2000,US,young,23131 01/2000,MX,young,12311 01/2000,total,young,241011 02/2000,US,old,143135 02/2000,MX,old,203131 02/2000,total,old,211310 02/2000,US,young,22990 02/2000,MX,young,12591 02/2000,total,young,240131
每個年齡層的總計可能不會與國家/地區值的總和不一致 因為方法或 。
現在,我們要建立在 DSL 資料集內, 功能:
- 「匯總」好讓我們能抓到 單是按年齡層劃分的案例
- 使用標準
geo:country
「country
」欄的概念,所以可以自動 即可取得這些地點的全名和地點等資訊 - 讓
disease_cases
概念延伸quantity:amount
。 這樣我們就能 (手動) 在 XML 檔案中加入單位資訊
做法是按照下列方式修改輸入 CSV 的標題列:
date,country[concept=geo:country;rollup=true;total_val=total],age_group,disease_cases[extends=quantity:amount]
現在再次執行工具,我們得到了一個額外的配量表 排除各國家/地區的區別:
date,age_group,disease_cases 01/2000,old,152012 02/2000,old,211310 01/2000,young,241011 02/2000,young,240131
請注意,如果沒有加入總價值和
來源資料表中的 total_val
標記,我們就能取得
計算每個年齡層的總和
此外,XML 檔案中的 disease_cases
定義
現在視需要包含 quantity:amount
的擴充功能
「country
」的定義已從 XML 檔案捨棄,因為
我們要改用匯入的概念
填入各種名稱、說明和單位資訊後 可以壓縮資料集套件,並將其上傳至 Public Data Explorer, 圖表