Gen DSPL

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

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:

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