DSPL 世代

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.csvcountry 的值 概念
  • 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 資料類型;必須是 datefloatintegerstring 根據資料推測出
format 此日期欄的格式;與 DSPL 中一樣,這個格式應該是 使用 Joda DateTime 標準 根據資料推測出
slice_role 這個資料欄在任何配量中扮演的角色;必須是 dimensionmetric dimension如果資料欄類型為 datestring,否則為 metric
concept 本欄代表的標準概念,例如: geo:country;若有指定,就會匯入概念,而且不會 定義是在 XML 檔案中產生
extends 本欄延伸的標準概念,例如: entity:entity
parent

這一欄的父項概念。這個父項必須是維度 資料集內定義的概念 (即未匯入);若有提供 這項資訊將會用來定義

請注意,每個子項例項都只能有一個父項。如有多個 如果偵測到父項值,此工具就會發生錯誤。

價值綜覽

除了基本「提示」之外,選項 DSPL Gen 也支援配量綜覽:單一資料表 工具可以自動建立額外的資料表 是維度的子集舉例來說,如果您的輸入資料表對應 包含三個非時間維度 (例如dimension1, dimension2dimensions3) 這項工具可以 您也可以建立一些其他配量:僅 dimension1、 只有 dimension2,只有 dimension1 dimension2 等。

新增這些額外的配量,可讓資料集更易於探索 因為這樣可以減少 以圖表呈現另一方面,這個程序可能 在原始檔案中找不到資料,因此如果無資料成功,也可能引發錯誤 ;仔細確認匯總資料後

在以下項目中加入一些額外選項,就會觸發綜覽程序 輸入 CSV 標題:

選項 說明 預設
aggregation 合併多個值時使用的匯總方法 欄位;必須是 AVGCOUNT 其中之一 MAXMINSUM;僅 對指標而言很實用。 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 資料集內, 功能:

  1. 「匯總」好讓我們能抓到 單是按年齡層劃分的案例
  2. 使用標準 geo:countrycountry」欄的概念,所以可以自動 即可取得這些地點的全名和地點等資訊
  3. 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, 圖表