DSPL Gen adalah utilitas command line yang membantu mengonversi Tabel data CSV ke dalam set data DSPL sederhana. Alat ini mengurai input membuat semua tabel data yang diperlukan, dan mengatur tata letak file XML DSPL. Hasilnya adalah {i>dataset<i} yang hampir lengkap "template" yang hanya memerlukan sedikit penyempurnaan sebelum mengunggah dan visualisasi.
Asumsi dasar di balik DSPL Gen adalah bahwa setiap kolom dalam file CSV input sesuai dengan konsep DSPL tunggal dan setiap baris merupakan observasi tunggal untuk kombinasi dimensi. Alat ini berfungsi dengan melakukan iterasi melalui kolom, menetapkan {i>metadata<i} yang sesuai untuk masing-masing kolom / konsep (mis., ID, jenis, apakah itu dimensi atau metrik, dll.), lalu menghasilkan semua definisi dan Slice konsep yang diperlukan tabel sementara.
Menjalankan DSPL Gen
Sintaksis
Catatan: Petunjuk ini mengasumsikan bahwa Anda sudah mengikuti petunjuk penginstalan yang diberikan di halaman Alat DSPL.
Untuk menjalankan DSPL Gen, buka terminal / prompt di sistem Anda dan ketik:
python dsplgen.py -o [output path] [path to CSV file]
mana istilah dalam tanda kurung diganti sebagai berikut:
[output path]
: Jalur ke direktori yang diinginkan file {i>output<i} Anda untuk ditempatkan; direktori ini harus sudah ada di sistem file Anda.[path to CSV file]
: Jalur ke file CSV input Anda. Lihat di bawah ini untuk detail selengkapnya tentang cara melakukan format pada file ini.
Komponen -o [output path]
bersifat opsional; jika dihilangkan,
file {i>output<i} akan ditempatkan
di direktori saat ini.
Alat tersebut kemudian berjalan, melakukan iterasi melalui file CSV Anda, mengekstrak konsep definisi dan menghasilkan tabel slice. Kecuali ada kesalahan ditemukan, sebuah XML dan satu atau beberapa file CSV ditulis ke direktori {i>output<i}.
Terakhir, buka file XML di editor teks pilihan Anda, dan buat
setiap perubahan yang
diinginkan. Paling tidak, 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 diperinci menurut bulan, negara, dan kelompok usia. Untuk mempermudah, mari kita asumsikan ada 2 nilai untuk 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
: Nilaicountry
konsepage_group_table.csv
: Nilaiage_group
konsepslice_0_table.csv
: Tabel untuk irisan set data (identik dengan tabel input, kecuali untuk pengurutan)
Dalam kasus khusus ini, alat ini mampu menebak dengan benar semua jenis kolom dan format. Jadi, Anda hanya perlu masuk ke file XML dan mengedit berbagai nama, deskripsi, dan URL dalam metadata {i>dataset<i}.
Membuat Anotasi CSV Input
Opsi Dasar
Dalam banyak kasus, seperti contoh di atas, DSPL Gen dapat menebak metadata untuk setiap kolom, mis. jenis, format, dan apakah itu merupakan dimensi atau metrik. Namun, di kasus lain, alat itu mungkin tidak bisa menebak ini, mungkin salah menebak, atau mungkin menebak dengan benar tapi tetap, meskipun demikian, tidak mengikuti perilaku yang diinginkan.
Untuk menangani kasus ini, alat ini mendukung penambahan pembuatan DSPL opsi / "petunjuk" di baris header CSV. {i>Syntax<i} untuk ini adalah sebagai berikut ini:
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 opsi berurutan setelan 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 salah satu dari date ,
float , integer , atau string . |
Dapat ditebak dari data |
format |
Format kolom tanggal ini; seperti dalam DSPL, format ini harus dienkode menggunakan atribut Joda DateTime standar. | Dapat ditebak dari data |
slice_role |
Peran kolom ini dalam setiap irisan; harus salah satu
dimension atau metric . |
dimension jika kolom berjenis date atau
string , atau metric |
concept |
Konsep kanonis yang diwakili kolom ini, misalnya
geo:country ; jika diberikan, maka konsep akan diimpor dan tidak
akan dibuat dalam file XML. |
Tidak ada |
extends |
Konsep kanonis yang diperluas kolom ini, mis.
entity:entity . |
Tidak ada |
parent |
Konsep induk untuk kolom ini. Induk ini harus berupa dimensi konsep yang ditentukan di dalam set data (yaitu, tidak diimpor); jika diberikan, informasi ini akan digunakan untuk mendefinisikan hierarki konsep dalam {i>dataset<i} aslinya. Perhatikan bahwa setiap instance turunan hanya dapat memiliki satu induk. Jika lebih dari satu nilai induk terdeteksi maka alat akan menghasilkan error. |
Tidak ada |
Gabungan Nilai
Selain "petunjuk" dasar, opsi yang dijelaskan di atas,
DSPL Gen juga mendukung penggabungan slice: jika satu tabel diberi satu tabel
input, alat ini dapat secara otomatis membuat tabel tambahan dengan
{i>subset <i}dari dimensi. Jadi, misalnya, jika tabel
input Anda sesuai dengan
irisan dengan tiga dimensi non-waktu (mis., dimension1
,
dimension2
, dan dimensions3
), alat ini dapat
membuat beberapa irisan tambahan juga: hanya dimension1
,
hanya dimension2
, hanya dimension1
dan
dimension2
, dll.
Menambahkan irisan tambahan ini dapat membuat {i>dataset<i} Anda lebih mudah dijelajahi karena mengurangi jumlah filter dimensi yang diperlukan untuk menghasilkan visualisasi. Di sisi lain, proses ini dapat menimbulkan data yang tidak ditemukan dalam file asli, sehingga juga dapat menimbulkan kesalahan jika tidak digunakan dengan benar; periksa dengan cermat angka yang diakumulasikan sebelum memublikasikan {i>dataset<i} aslinya.
Proses penggabungan dipicu dengan menyertakan beberapa opsi tambahan di {i>header<i} CSV input:
Opsi | Deskripsi | Default |
---|---|---|
aggregation |
Metode agregasi yang akan digunakan saat menggabungkan beberapa nilai
kolom ini; harus salah satu dari AVG , COUNT ,
MAX , MIN , atau SUM ; hanya
berguna untuk metrik. |
SUM |
rollup |
Jika nilainya true , konsep untuk
kolom ini "digulung" (yaitu, digabungkan);
hanya berguna untuk konsep dimension. |
Salah |
total_val |
Nilai dalam kolom ini yang menunjukkan baris yang akan dipertahankan saat digulung; hanya berguna untuk konsep dimensi. | None |
DSPL Gen kemudian menghitung properti gabungan menggunakan algoritma berikut:
- Dengan menggunakan nilai tag
rollup
, hitung semua kemungkinan kombinasi kolom - Untuk setiap kombinasi:
- Jika kolom yang digabungkan memiliki parameter
total_val
set, lalu filter baris berdasarkan nilai ini; jika tidak, pilih semua baris - Lepaskan kolom yang digulung
- Kelompokkan baris menurut nilai kolom dimensi yang tersisa
- Gabungkan setiap metrik menggunakan metode yang ditentukan dalam
Parameter
aggregation
- Buat irisan dan tabel terkait untuk hasil
- Jika kolom yang digabungkan memiliki parameter
Perhatikan bahwa jika hanya ada satu nilai dalam setiap pengelompokan dan
fungsi agregat disetel ke SUM
(nilai default), lalu
nilai metrik di tabel sumber dan yang dihasilkan akan sama, yaitu tidak ada nilai baru
akan dibuat. Dengan demikian, menggunakan parameter total_val
dan memastikan
bahwa hanya ada satu
"total" (total) baris untuk setiap kombinasi
memungkinkan Anda menyimpan agregat yang telah dihitung sebelumnya langsung di sumbernya.
Peringatan: Jumlah slice yang dihasilkan sama dengan 2kolom yang digulung. Menerapkan opsi ini ke jumlah kolom dapat menghasilkan waktu yang sangat lama dan/atau {i>dataset<i} aslinya.
Contoh Lanjutan
Misalkan kita memiliki data {i>input<i} yang sama seperti pada contoh sebelumnya, tetapi sekarang mencakup 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
Jumlah total untuk setiap kelompok usia mungkin tidak sama dengan jumlah nilai negara karena, misalnya, perbedaan dalam metodologi atau keberadaan negara lain yang tidak disebutkan dalam daftar.
Sekarang kita akan membuat set data DSPL yang memiliki fitur:
- "Gabung" negara sehingga kita mendapatkan total penyakit kasus berdasarkan kelompok usia saja
- Menggunakan
geo:country
kanonis untuk kolomcountry
, sehingga kita bisa secara otomatis dapatkan nama lengkap, lokasi, dll. untuk - Buat konsep
disease_cases
memperluasquantity:amount
, sehingga kita dapat (secara manual) menambahkan informasi unit ke dalam file XML
Untuk melakukannya, kita ubah baris header CSV input sebagai berikut:
date,country[concept=geo:country;rollup=true;total_val=total],age_group,disease_cases[extends=quantity:amount]
Dengan menjalankan alat itu lagi, kita sekarang mendapatkan tabel irisan tambahan, menghilangkan 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 belum
memasukkan nilai total dan
total_val
di 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
, sesuai keinginan. Tujuan
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 file {i>zip<i} paket {i>dataset<i} itu dan mengunggahnya ke Penjelajah Data Publik untuk visualisasi.