DSPL Gen adalah utilitas command line yang membantu mengonversi tabel data CSV menjadi set data DSPL sederhana. Alat ini mengurai file input, membuat semua tabel data yang diperlukan, dan menata letak file XML DSPL. Hasilnya adalah "template" set data hampir selesai yang hanya memerlukan sedikit penyempurnaan sebelum mengupload dan memvisualisasikan.
Asumsi dasar di balik DSPL Gen adalah bahwa setiap kolom dalam file CSV input sesuai dengan satu konsep DSPL dan setiap baris adalah satu pengamatan untuk kombinasi dimensi. Alat ini berfungsi dengan melakukan iterasi melalui kolom, membuat metadata yang sesuai untuk setiap kolom / konsep (misalnya, ID, jenis, apakah itu dimensi atau metrik, dll.), lalu membuat semua definisi konsep dan tabel irisan yang diperlukan.
Menjalankan DSPL Gen
Sintaksis
Catatan: Rute ini mengasumsikan bahwa Anda telah mengikuti petunjuk penginstalan yang diberikan di halaman DSPL Tools.
Untuk menjalankan DSPL Gen, buka terminal / perintah pada sistem Anda dan ketik:
python dsplgen.py -o [output path] [path to CSV file]
dengan istilah dalam tanda kurung diganti sebagai berikut:
[output path]
: Jalur ke direktori tempat Anda ingin menempatkan file output; direktori ini harus sudah ada di sistem file Anda.[path to CSV file]
: Jalur ke file CSV input Anda. Lihat bagian di bawah untuk detail selengkapnya tentang cara memformat file ini.
Komponen -o [output path]
bersifat opsional; jika dihilangkan, file output akan ditempatkan di direktori saat ini.
Alat ini kemudian menjalankan, melakukan iterasi melalui file CSV Anda, mengekstrak definisi konsep dan membuat tabel slice. File XML dan satu atau beberapa file CSV akan ditulis ke direktori output, kecuali jika ditemukan error.
Terakhir, buka file XML di editor teks pilihan Anda, dan buat perubahan apa pun yang diinginkan. Setidaknya, Anda harus mengisi nama,
deskripsi, dan nilai lain yang telah ditandai oleh alat dengan
notasi ** INSERT ... **
.
Contoh Sederhana
Misalkan kita memiliki CSV yang memberikan jumlah total kasus untuk penyakit, yang dikelompokkan berdasarkan bulan, negara, dan kelompok usia. Untuk mempermudah, mari kita asumsikan ada 2 nilai dari setiap dimensi:
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
Menjalankan alat pada input di atas akan menghasilkan 4 file:
dataset.xml
: Template XML DSPLcountry_table.csv
: Nilai konsepcountry
age_group_table.csv
: Nilai konsepage_group
slice_0_table.csv
: Tabel untuk potongan set data (identik dengan tabel input, kecuali untuk pengurutan)
Dalam kasus khusus ini, alat ini dapat menebak semua jenis dan format kolom dengan benar. Jadi, Anda hanya perlu membuka file XML lalu mengedit berbagai nama, deskripsi, dan URL di metadata set data.
Menganotasi CSV Input
Opsi Dasar
Dalam banyak kasus, seperti contoh di atas, DSPL Gen dapat menebak metadata dasar untuk setiap kolom, mis. jenis, format, dan apakah dimensi atau metrik tersebut. Namun, dalam kasus lain, alat ini mungkin tidak dapat menebaknya, mungkin salah menebak, atau dapat menebaknya dengan benar, tetapi tetap tidak mengikuti perilaku yang diinginkan.
Untuk menangani kasus ini, alat tersebut mendukung penambahan opsi pembuatan / "petunjuk" DSPL di baris header CSV. Sintaksis untuk ini adalah sebagai berikut:
column1[option1=value1;option2=value2;...],column2[option1=value1;option2=value2;...],column3[...],...
Secara khusus, perhatikan bahwa daftar opsi ditempatkan di dalam tanda kurung di sebelah kanan nama kolom, dan setelan opsi berturut-turut dipisahkan dengan titik koma. Setiap opsi terdiri dari nama opsi, tanda sama dengan, dan nilai opsi.
DSPL Gen saat ini mendukung opsi dasar berikut:
Opsi | Deskripsi | Default |
---|---|---|
type |
Jenis data DSPL untuk kolom ini; harus berupa salah satu dari date ,
float , integer , atau string . |
Tebakan dari data |
format |
Format kolom tanggal ini; seperti dalam DSPL, format ini harus dienkode menggunakan standar Joda DateTime. | Tebakan dari data |
slice_role |
Peran kolom ini dalam setiap irisan; harus berupa dimension atau metric . |
dimension jika kolom berjenis date atau string , jika tidak, metric |
concept |
Konsep kanonis yang diwakili oleh kolom ini, misalnya
geo:country ; jika diberikan, konsep tersebut akan diimpor dan tidak ada
definisi yang dihasilkan dalam file XML. |
Tidak ada |
extends |
Konsep kanonis yang diperluas oleh kolom ini, misalnya
entity:entity . |
Tidak ada |
parent |
Konsep induk untuk kolom ini. Induk ini harus berupa konsep dimensi yang ditentukan di dalam set data (yaitu, tidak diimpor); jika diberikan, informasi ini akan digunakan untuk menentukan hierarki konsep dalam set data. Perhatikan bahwa setiap instance turunan hanya dapat memiliki satu induk. Jika beberapa nilai induk terdeteksi, alat akan menghasilkan error. |
Tidak ada |
Gabungan Nilai
Selain opsi dasar "petunjuk" yang dijelaskan di atas,
DSPL Gen juga mendukung roll-up slice: dengan satu input tabel,
alat ini dapat otomatis membuat tabel tambahan dengan subset
dimensi yang terbatas. Jadi, misalnya, jika tabel input Anda sesuai dengan
irisan dengan tiga dimensi non-waktu (mis., dimension1
,
dimension2
, dan dimensions3
) alat ini juga dapat
membuat beberapa potongan tambahan: hanya dimension1
,
hanya dimension2
, hanya dimension1
dan
dimension2
, dll.
Menambahkan bagian-bagian tambahan ini dapat mempermudah set data Anda untuk dijelajahi karena mengurangi jumlah filter dimensi yang diperlukan untuk menghasilkan visualisasi. Di sisi lain, proses ini dapat memunculkan data "baru" yang tidak ditemukan dalam file asli, sehingga juga dapat menimbulkan error jika tidak digunakan dengan benar; periksa jumlah yang diakumulasikan dengan cermat sebelum memublikasikan set data Anda.
Proses penggabungan dipicu dengan menyertakan beberapa opsi tambahan di header CSV input:
Opsi | Deskripsi | Default |
---|---|---|
aggregation |
Metode agregasi yang akan digunakan saat menggabungkan beberapa nilai kolom ini; harus berupa salah satu dari AVG , COUNT , MAX , MIN , atau SUM ; hanya berarti untuk metrik. |
SUM |
rollup |
Jika nilainya true , konsep untuk kolom ini "digabungkan" (yaitu digabungkan jauhnya); hanya bermakna untuk konsep dimensi. |
Salah |
total_val |
Nilai di kolom ini yang menunjukkan baris yang harus dipertahankan saat kolom ini digabungkan; hanya bermakna untuk konsep dimensi. | None |
DSPL Gen kemudian menghitung roll-up menggunakan algoritme berikut:
- Dengan menggunakan nilai tag
rollup
, hitung semua kemungkinan kombinasi kolom - Untuk setiap kombinasi:
- Jika ada kolom yang dihimpun yang memiliki parameter
total_val
, lalu filter baris menurut nilai tersebut; jika tidak, pilih semua baris - Lepaskan kolom yang digabungkan
- Kelompokkan baris menurut nilai kolom dimensi yang tersisa
- Gabungkan setiap metrik menggunakan metode yang ditentukan dalam parameter
aggregation
-nya - Membuat bagian dan tabel terkait untuk hasil
- Jika ada kolom yang dihimpun yang memiliki parameter
Perhatikan bahwa jika hanya ada satu nilai di setiap pengelompokan dan
fungsi agregasi ditetapkan ke SUM
(nilai default), nilai
metrik di sumber dan tabel yang dihasilkan akan sama, yaitu tidak ada nilai baru
yang dihasilkan. Dengan demikian, menggunakan parameter total_val
dan memastikan
bahwa hanya ada satu baris "total" untuk setiap kombinasi dimensi
lainnya yang memungkinkan Anda menyimpan agregat yang telah dihitung sebelumnya secara langsung di sumber.
Peringatan: Jumlah irisan yang dihasilkan sama dengan 2kolom gabungan. Menerapkan opsi ini ke sejumlah besar kolom dapat mengakibatkan waktu proses yang sangat lama dan/atau set data yang besar.
Contoh Lanjutan
Misalkan kita memiliki data input yang sama seperti dalam contoh sebelumnya, tetapi sekarang menyertakan agregat di seluruh negara:
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
Total untuk setiap kelompok usia mungkin tidak sama dengan jumlah nilai negara karena, misalnya, perbedaan metodologi atau adanya negara lain yang tidak disebutkan dalam daftar.
Sekarang kita ingin membuat set data DSPL yang memiliki fitur tambahan berikut:
- "Gabungkan" negara sehingga kami mendapatkan total kasus penyakit menurut kelompok usia saja
- Gunakan konsep
geo:country
kanonis untuk kolomcountry
, sehingga kita bisa secara otomatis mendapatkan nama lengkap, lokasi, dll. untuk ini - Buat konsep
disease_cases
memperluasquantity:amount
, sehingga kita dapat (secara manual) menambahkan informasi unit ke dalam file XML
Untuk melakukannya, kami mengubah baris header CSV input dengan cara berikut:
date,country[concept=geo:country;rollup=true;total_val=total],age_group,disease_cases[extends=quantity:amount]
Setelah menjalankan alat ini lagi, sekarang kita mendapatkan tabel slice tambahan, yang menghapus perbedaan berdasarkan negara:
date,age_group,disease_cases 01/2000,old,152012 02/2000,old,211310 01/2000,young,241011 02/2000,young,240131
Perhatikan bahwa jika kita tidak menyertakan nilai total dan tag
total_val
dalam tabel sumber, maka kita akan mendapatkan
jumlah yang dihitung untuk setiap kelompok usia.
Selain itu, definisi disease_cases
dalam file XML
kini menyertakan ekstensi dari quantity:amount
, seperti yang diinginkan. Definisi
country
dihapus dari file XML karena
kita menggunakan konsep yang diimpor untuk ini.
Setelah mengisi berbagai nama, deskripsi, dan informasi unit, kami dapat membuat zip paket set data dan menguploadnya ke Penjelajah Data Publik untuk visualisasi.