DSPL Gen to narzędzie wiersza poleceń, które ułatwia przekształcanie tabeli danych CSV w prosty zbiór danych DSPL. Narzędzie analizuje plik wejściowy, tworzy wszystkie niezbędne tabele danych i układa plik XML DSPL. Wynikiem jest niemal kompletny „szablon”, który przed przesłaniem i wizualizacją wymaga tylko niewielkiego ulepszenia.
Podstawową założeniaą DSPL Gen jest to, że każda kolumna w wejściowym pliku CSV odpowiada pojedynczej koncepcji DSPL, a każdy wiersz to jedna obserwacja dla kombinacji wymiarów. Narzędzie korzysta z tego iteracji, określając odpowiednie kolumny dla każdej kolumny lub koncepcji (np. podając jej identyfikator, typ, wymiar lub dane), a potem generują wszystkie niezbędne definicje koncepcji i tabele wycinków.
Uruchamianie DSPL Gen
Składnia
Uwaga: te instrukcje zakładają, że zostały już wykonane instrukcje instalacji podane na stronie narzędzi DSPL.
Aby uruchomić DSPL Gen, przejdź do terminala / wiersza i wpisz:
python dsplgen.py -o [output path] [path to CSV file]
gdzie hasła w nawiasach są zastępowane w następujący sposób:
[output path]
: ścieżka do katalogu, w którym mają zostać umieszczone pliki wyjściowe. Musi on już istnieć w Twoim systemie plików.[path to CSV file]
: ścieżka do wejściowego pliku CSV. Więcej informacji o formatowaniu tego pliku znajdziesz w sekcji poniżej.
Komponent -o [output path]
jest opcjonalny. Jeśli go nie znajdziesz, pliki wyjściowe zostaną umieszczone w bieżącym katalogu.
Następnie narzędzie działa, powielając plik CSV, wyodrębniając definicje pojęć i generują tabele wycinków. Jeśli nie zostaną wykryte żadne błędy, w katalogu wyjściowym zostanie zapisany plik XML i co najmniej 1 plik CSV.
Na koniec otwórz plik XML w dowolnym edytorze tekstu i wprowadź zmiany. Musisz podać przynajmniej nazwy, opisy i inne wartości oznaczone przez narzędzie wartością ** INSERT ... **
.
Prosty przykład
Załóżmy, że mamy plik CSV, który zawiera łączną liczbę przypadków choroby z podziałem na miesiące, kraje i grupy wiekowe. Dla uproszczenia załóżmy, że są 2 wartości każdego wymiaru:
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
Uruchomienie narzędzia dla powyższych danych wejściowych daje 4 pliki:
dataset.xml
: szablon XML DSPLcountry_table.csv
: wartości koncepcjicountry
age_group_table.csv
: wartości koncepcjiage_group
slice_0_table.csv
: tabela wycinka zbioru danych (tak samo, jak w przypadku tabeli wejściowej, z wyjątkiem sortowania)
W takim przypadku narzędzie potrafi poprawnie odgadnąć wszystkie typy i formaty kolumn. Teraz wystarczy, że otworzysz plik XML i zmienisz nazwy, opisy i adresy URL w metadanych zbioru danych.
Dodaj adnotacje do CSV
Opcje podstawowe
W wielu przypadkach, tak jak w przykładzie powyżej, DSPL Gen może zgadywać podstawowe metadane każdej kolumny, np. typ, format i czy jest to wymiar czy dane. W innych przypadkach narzędzie może nie być w stanie odgadnąć poprawnie lub odgadnąć poprawnie, ale mimo to nie musi postępować zgodnie z oczekiwaniami.
Aby umożliwić Ci obsługę takich przypadków, narzędzie obsługuje dodawanie opcji generowania podpowiedzi/wskazówek w DSPL w wierszu nagłówka CSV. Składnia tych elementów wygląda tak:
column1[option1=value1;option2=value2;...],column2[option1=value1;option2=value2;...],column3[...],...
Zwróć szczególną uwagę na to, że lista opcji znajduje się w nawiasach po prawej stronie nazwy kolumny, a kolejne ustawienia opcji są rozdzielone półprzezroczystymi. Każda opcja składa się z nazwy opcji, znaku równości i wartości opcji.
DSPL Gen obsługuje obecnie te opcje podstawowe:
Option | Opis | Domyślna |
---|---|---|
type |
Typ danych DSPL dla tej kolumny; musi to być date , float , integer lub string . |
Na podstawie danych |
format |
Format tej kolumny daty. Tak jak w DSPL, należy go zakodować według standardu Joda DateTime. | Na podstawie danych |
slice_role |
Rola tej kolumny we wszystkich wycinkach. Musi to być wartość dimension lub metric . |
dimension , jeśli kolumna jest typu date lub string . W przeciwnym razie metric |
concept |
Kanoniczna koncepcja, którą reprezentuje ta kolumna, np.geo:country . Jeśli ją podasz, koncepcja zostanie zaimportowana, a w pliku XML nie zostanie utworzona żadna definicja. |
Brak |
extends |
Kanoniczna koncepcja, którą rozszerza ta kolumna, np. entity:entity . |
Brak |
parent |
Pojęcie nadrzędne tej kolumny. Ten element nadrzędny musi być koncepcją wymiaru zdefiniowaną w zbiorze danych (tj.niezaimportowana). Jeśli zostanie podana, te informacje będą używane do definiowania hierarchii koncepcji w zbiorze danych. Pamiętaj, że każda instancja podrzędna może mieć tylko 1 nadrzędną instancję. Jeśli wykryjemy wiele wartości nadrzędnych, narzędzie wyświetli błąd. |
Brak |
Pełny zakres wartości
Oprócz podstawowych opcji „wskazówek” opisanych powyżej DSPL obsługuje też wycinki zbiorczych: na podstawie danych wejściowych pojedynczej tabeli narzędzie może automatycznie tworzyć dodatkowe tabele z ograniczonymi podzbiorami wymiarów. Jeśli na przykład tabela wejściowa odpowiada wycinkowi z 3 wymiarami innymi niż czas (np. dimension1
, dimension2
i dimensions3
), narzędzie może też utworzyć dodatkowe wycinki: dimension1
, tylko dimension2
, tylko dimension1
,
dimension2
itd.
Dodanie tych dodatkowych wycinków może ułatwić przeglądanie zbioru danych, ponieważ ogranicza liczbę filtrów wymiarów wymaganych do tworzenia wizualizacji. Z drugiej strony ten proces może wprowadzić „nowe” dane, których nie ma w pierwotnym pliku, więc jeśli nie są prawidłowo używane, mogą też pojawiać się błędy. Przed opublikowaniem zbioru danych dokładnie sprawdź zsumowane dane.
Proces o pełnym zakresie jest wywoływany przez podanie dodatkowych opcji w wejściowym nagłówku CSV:
Option | Opis | Domyślna |
---|---|---|
aggregation |
Metoda agregacji, która ma być używana do łączenia różnych wartości w tej kolumnie. Musi to być wartość AVG , COUNT , MAX , MIN lub SUM . Ma znaczenie tylko w przypadku danych. |
SUM |
rollup |
Jeśli wartość to true , koncepcja tej kolumny ma postać „z górą” (tj.agregowana z powrotem). Ma znaczenie tylko w przypadku pojęć wymiar. |
Fałsz |
total_val |
Wartość w tej kolumnie oznacza, że wiersze mają być zachowywane, gdy jest ona zsumowana, co ma znaczenie tylko w przypadku pojęć związanych z wymiarami. | None |
Następnie DSPL oblicza dane zbiorcze za pomocą tego algorytmu:
- Użyj wartości tagów
rollup
, aby obliczyć wszystkie możliwe kombinacje kolumn - Dla każdej kombinacji:
- Jeśli jakieś kolumny o pełnym zakresie mają parametr
total_val
, przefiltruj wiersze według tej wartości. W przeciwnym razie wybierz wszystkie wiersze. - Upuść kolumny zwinięte
- Pogrupuj wiersze według wartości pozostałych kolumn wymiarów
- Zbieraj dane za pomocą metody określonej w parametrze
aggregation
- Utwórz wycinek i powiązaną tabelę dla wyniku
- Jeśli jakieś kolumny o pełnym zakresie mają parametr
Pamiętaj, że jeśli w każdej grupie obowiązuje tylko jedna wartość, a funkcja agregacji ma wartość SUM
(domyślną), wartości wskaźników w tabeli źródłowej i wygenerowanej są takie same (tzn. nie będą generowane żadne nowe wartości). Oznacza to, że za pomocą parametru total_val
można mieć tylko jeden wiersz „łącznie” dla każdej kombinacji innych wymiarów, aby mieć możliwość przechowywania wstępnie obliczonych danych bezpośrednio w źródle.
Ostrzeżenie: liczba wygenerowanych wycinków jest równa 2 pełnym kolumnom. Zastosowanie tej opcji do dużej liczby kolumn może spowodować bardzo długi czas działania lub duże zbiory danych.
Przykład zaawansowany
Załóżmy, że mamy te same dane wejściowe co w poprzednim przykładzie, ale teraz zagregowane dane pochodzą z różnych krajów:
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
Suma w każdej grupie wiekowej może być niezgodna z sumą wartości krajów, np. z powodu różnic w metodologii lub istnienia innych krajów, których nie ma na liście.
Teraz chcemy utworzyć zbiór danych DSPL z tymi dodatkowymi funkcjami:
- Podsumuj kraje, abyśmy mogli obliczyć łączną liczbę przypadków choroby według grupy wiekowej.
- Używaj kanonicznego atrybutu
geo:country
w kolumniecountry
, abyśmy mogli automatycznie uzyskiwać pełne nazwy, lokalizacje itp. - Rozszerz koncepcję
disease_cases
oquantity:amount
, tak abyśmy mogli (ręcznie) dodać informacje o jednostce do pliku XML
Aby to zrobić, modyfikujemy wiersz nagłówka wejściowego pliku CSV w następujący sposób:
date,country[concept=geo:country;rollup=true;total_val=total],age_group,disease_cases[extends=quantity:amount]
Ponownie uruchamiając narzędzie, otrzymujemy dodatkową tabelę wycinków, która pozwala wyeliminować różnice w poszczególnych krajach:
date,age_group,disease_cases 01/2000,old,152012 02/2000,old,211310 01/2000,young,241011 02/2000,young,240131
Gdybyśmy nie uwzględniali łącznych wartości i tagu total_val
w tabeli źródłowej, wysłalibyśmy obliczoną sumę dla każdej grupy wiekowej.
Oprócz tego definicja disease_cases
w pliku XML zawiera teraz rozszerzenie z quantity:amount
. Definicja pliku country
jest usuwana z pliku XML, ponieważ używamy do tego celu zaimportowanej koncepcji.
Po wpisaniu różnych nazw, opisów i informacji o jednostce możemy skompresować pakiet danych i przesłać go do Eksploratora danych publicznych w celu wizualizacji.