Gen DSPL

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 DSPL
  • country_table.csv: Nilai konsep country
  • age_group_table.csv: Nilai konsep age_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

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:

  1. "Gabungkan" negara sehingga kami mendapatkan total kasus penyakit menurut kelompok usia saja
  2. Gunakan konsep geo:country kanonis untuk kolom country, sehingga kita bisa secara otomatis mendapatkan nama lengkap, lokasi, dll. untuk ini
  3. Buat konsep disease_cases memperluas quantity: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.