DSPL steht für Dataset Publishing Language. In DSPL beschriebene Datasets können in den öffentlichen Daten-Explorer von Google importiert werden, ein Tool, das eine umfassende visuelle Untersuchung der Daten ermöglicht.
Hinweis:Wenn Sie Daten mit dem Tool zum Hochladen von öffentlichen Daten in Google Public Data hochladen möchten, benötigen Sie ein Google-Konto.
In dieser Anleitung wird Schritt für Schritt gezeigt, wie Sie ein einfaches DSPL-Dataset vorbereiten.
Ein DSPL-Dataset ist ein Bundle, das eine XML-Datei und eine Reihe von CSV-Dateien enthält. Die CSV-Dateien sind einfache Tabellen mit den Daten des Datasets. In der XML-Datei werden die Metadaten des Datasets beschrieben, einschließlich Informationsmetadaten wie Beschreibungen von Maßnahmen sowie strukturelle Metadaten wie Verweise zwischen Tabellen. Mit den Metadaten können Nicht-Experten Ihre Daten untersuchen und visualisieren.
Die einzige Voraussetzung für das Verständnis dieser Anleitung ist ein gutes Verständnis von XML. Grundkenntnisse grundlegender Datenbankkonzepte (z.B. Tabellen, Primärschlüssel) ist möglicherweise hilfreich, aber nicht unbedingt erforderlich. Die mit dieser Anleitung verknüpfte vollständige XML-Datei und das vollständige Dataset-Bundle können ebenfalls eingesehen werden.
Übersicht
Bevor Sie mit dem Erstellen unseres Datasets beginnen, sehen Sie hier eine allgemeine Übersicht darüber, was ein DSPL-Dataset enthält:
- Allgemeine Informationen: Informationen zum Dataset
- Konzepte: Definitionen von „Dingen“, die im Dataset vorkommen (z. B. Länder, Arbeitslosenquote, Geschlecht)
- Segmente:Kombinationen von Konzepten, für die Daten vorhanden sind
- Tabellen: Daten für Konzepte und Segmente Konzepttabellen enthalten Aufzählungen und Segmenttabellen enthalten statistische Daten.
- Themen: Wird verwendet, um die Konzepte des Datasets durch Labels zu organisieren
Betrachten Sie zur Veranschaulichung dieser eher abstrakten Konzepte das Dataset (mit Dummy-Daten), das in dieser Anleitung verwendet wird: statistische Zeitreihen für Bevölkerung und Arbeitslosigkeit, aggregiert nach verschiedenen Kombinationen von Land, US-Bundesstaat und Geschlecht.
In diesem Beispiel-Dataset werden die folgenden Konzepte definiert:
- country
- gender
- Bevölkerung
- Bundesland
- Arbeitslosenquote
- Jahr
Kategoriale Konzepte wie der Status sind Konzepttabellen zugeordnet, in denen alle möglichen Werte (Kalifornien, Arizona usw.) aufgeführt sind. Konzepte können zusätzliche Spalten für Attribute wie den Namen oder das Land eines Bundesstaates enthalten.
Segmente definieren jede Kombination von Konzepten, für die statistische Daten im Dataset vorhanden sind. Ein Segment enthält Dimensionen und Messwerte. In der Abbildung oben sind die Dimensionen blau und die Messwerte orange. In diesem Beispiel enthält das Segment gender_country_slice
Daten für den Messwert population
und die Dimensionen country
, year
und gender
. Ein weiteres Segment namens country_slice
gibt die jährlichen Gesamtzahlen (Messwert) für Länder an.
Zusätzlich zu Dimensionen und Messwerten beziehen sich Segmente auch auf Tabellen, die die tatsächlichen Daten enthalten.
Sehen wir uns nun Schritt für Schritt an, wie ein solches Dataset in DSPL erstellt wird.
Dataset-Informationen
Zuerst müssen wir eine XML-Datei für unser Dataset erstellen. Hier sehen Sie den Anfang einer DSPL-Beschreibung für unser Beispiel-Dataset:
<?xml version="1.0" encoding="UTF-8"?> <dspl targetNamespace="http://www.stats-bureau.com/mystats" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.google.com/dspl/2010" xmlns:time="http://www.google.com/publicdata/dataset/google/time" xmlns:geo="http://www.google.com/publicdata/dataset/google/geo" xmlns:entity="http://www.google.com/publicdata/dataset/google/entity" xmlns:quantity="http://www.google.com/publicdata/dataset/google/quantity"> <import namespace="http://www.google.com/publicdata/dataset/google/time"/> <import namespace="http://www.google.com/publicdata/dataset/google/entity"/> <import namespace="http://www.google.com/publicdata/dataset/google/geo"/> <import namespace="http://www.google.com/publicdata/dataset/google/quantity"/> <info> <name> <value>My statistics</value> </name> <description> <value>Some very interesting statistics about countries</value> </description> <url> <value>http://www.stats-bureau.com/mystats/info.html</value> </url> </info> <provider> <name> <value>Bureau of Statistics</value> </name> <url> <value>http://www.stats-bureau.com</value> </url> </provider> ... </dspl>
Die Dataset-Beschreibung beginnt mit dem übergeordneten Element <dspl>
. Das Attribut targetNamespace
enthält einen URI, der dieses Dataset eindeutig identifiziert. Der Namespace des Datasets ist besonders wichtig bei der Veröffentlichung des Datasets, da er die globale Kennzeichnung des Datasets und die Möglichkeit für andere ist, darauf zu verweisen.
Das Attribut targetNamespace
kann weggelassen werden. In diesem Fall wird beim Importieren des Datasets automatisch ein eindeutiger Namespace generiert.
Informationen aus anderen Datasets verwenden
Datasets können Definitionen und Daten aus anderen Datasets durch Importieren dieser Datasets wiederverwenden. Jedes <import>
-Element gibt den Namespace eines anderen Datasets an, auf das dieses Dataset verweist.
In unserem Beispiel-Dataset sind einige Definitionen aus http://www.google.com/publicdata/dataset/google/quantity (ein von Google erstelltes Dataset mit Konzepten zum Definieren numerischer Mengen) und aus den Datasets time, entity und geo erforderlich, die Definitionen zu Zeit, Entitäten bzw. Geografie enthalten.
Das oberste <dspl>
-Element bietet eine Namespace-Präfixdeklaration (z.B. xmlns:time="http://..."
) für alle importierten Datasets. Präfixdeklarationen sind erforderlich, um Elemente aus anderen Datasets prägnant zu referenzieren. Beispielsweise verweist time:year
auf die Definition von year
im importierten Dataset, dessen Namespace mit dem Präfix time
verknüpft ist.
Dataset- und Anbieterinformationen
Das Element <info>
enthält allgemeine Informationen zum Dataset: Name, Beschreibung und eine URL, unter der weitere Informationen zu finden sind.
Das Element <provider>
enthält Informationen zum Anbieter des Datasets: seinen Namen und eine URL, über die weitere Informationen verfügbar sind (in der Regel die Startseite des Datenanbieters).
Konzepte definieren
Nachdem Sie ein paar allgemeine Informationen zum Dataset angegeben haben, können Sie mit der Definition des Inhalts beginnen. Unser nächstes Ziel ist es, Bevölkerungsstatistiken für Länder in den letzten 50 Jahren hinzuzufügen.
Zuerst müssen wir einige Definitionen für Werte wie Land, Land und Jahr angeben. In DSPL werden diese Definitionen Konzepte genannt.
Ein Konzept ist eine Definition eines Datentyps, der in einem Dataset angezeigt wird. Die Datenwerte, die einem bestimmten Konzept entsprechen, werden als Instanzen dieses Konzepts bezeichnet.
Bevölkerung
Beginnen wir mit der Definition des Populationskonzepts. In einem DSPL-Dokument werden Konzepte in einem <concepts>
-Element definiert, das direkt auf die Dataset- und Anbieterinformationen folgt.
Hier ist ein Populationskonzept mit nur der minimalen Information, die für jedes Konzept erforderlich ist: id
(eine eindeutige Kennung), name
und type
.
<dspl ...> ... <concepts> <concept id="population"> <info> <name> <value>Population</value> </name> </info> <type ref="integer"/> </concept> ... </concepts>
Erklärung:
- Jedes Konzept muss einen
id
enthalten, der das Konzept innerhalb des Datasets eindeutig identifiziert. Das bedeutet, dass keine zwei im selben Dataset definierten Konzepte dieselbe ID haben dürfen. - Genau wie für das Dataset und seinen Anbieter stellen die
<info>
-Elemente Textinformationen über das Konzept bereit, z. B. den Namen und die Beschreibung. - Das Element
<type>
gibt den Datentyp für die Instanzen des Konzepts (also seine „Werte“) an. In diesem Beispiel istpopulation
der Typinteger
. DSPL unterstützt die folgenden Datentypen:string
integer
float
boolean
date
Land
Lassen Sie uns nun die Definition des Länderkonzepts schreiben:
<concept id="country"> <info> <name><value>Country</value></name> <description> <value>My list of countries.</value> </description> </info> <type ref="string"/> <property id="name"> <info> <name><value>Name</value></name> <description> <value>The official name of the country</value> </description> </info> <type ref="string" /> </property> <table ref="countries_table" /> </concept>
Die Definition des Länderkonzepts beginnt wie im vorherigen Beispiel, mit id
, info
und type
.
Konzeptwerte
Kategoriale Konzepte wie Länder haben eine Aufzählung aller möglichen Instanzen. Sie können also alle möglichen Länder angeben, auf die verwiesen werden kann. Dazu ist jedoch für jedes Land eine eindeutige Kennung erforderlich.
In diesem Beispiel werden ISO-Ländercodes verwendet, um Länder zu identifizieren. Diese Codes haben den Typ string
.
In diesem Beispiel ist der ISO-Code nicht erforderlich. Sie können auch den Ländernamen verwenden. Namen unterscheiden sich jedoch je nach Sprache und können sich im Laufe der Zeit ändern und werden nicht immer einheitlich in Datasets verwendet. Für Länder und für kategoriale Konzepte im Allgemeinen empfiehlt es sich, kurze, stabile, häufig verwendete und sprachunabhängige Kennungen auszuwählen (falls vorhanden).
Konzepteigenschaften
Neben dem id
hat das Länderkonzept ein <property>
-Element, das den Namen des Landes angibt.
Der Ländername („Irland“) ist also eine Property des Landes mit dem IE-Wert id
. Attribute geben an, wie DSPL zusätzliche strukturierte Informationen zu den Instanzen eines Konzepts bereitstellt.
Genau wie beim Konzept selbst haben Properties id
, info
und type
.
Konzeptdaten
Schließlich verfügt das Länderkonzept über ein <table>
-Element.
Dieses Element verweist auf eine Tabelle, in der die Liste aller Länder aufgeführt wird.
Die Verwendung von Tabellen ist für einige Konzepte sinnvoll, für andere jedoch nicht. Zum Beispiel ist es nicht sinnvoll, alle möglichen Werte für die Konzeptpopulation aufzuführen. Wenn Sie jedoch auf eine Tabelle für ein Konzept verweisen, muss diese Tabelle alle Instanzen des Konzepts enthalten, z. B. jedes Land und nicht nur einige Beispiele.
Das Dataset definiert die Tabelle countries_table
so:
... <tables> <table id="countries_table"> <column id="country" type="string"/> <column id="name" type="string"/> <data> <file format="csv" encoding="utf-8">countries.csv</file> </data> </table> ... </tables>
Die Ländertabelle gibt die Spalten der Tabelle und deren Typen an und verweist auf eine CSV-Datei, die die Daten enthält. Diese CSV-Datei kann entweder mit der Dataset-XML-Datei gebündelt und hochgeladen oder über HTTP, HTTPS oder FTP remote abgerufen werden. In letzterem Fall ersetzen Sie countries.csv
durch eine URL, z. B. http://www.myserver.com/mydata/countries.csv
.
Die CSV-Datei hat in jedem Speicherort folgendes Format:
country, name AD, Andorra AF, Afghanistan AI, Anguilla AL, Albania US, United States
In der ersten Zeile der Tabelle sind die Spalten-IDs aufgeführt, wie in der DSPL-Definition table
angegeben. Jede der folgenden Zeilen entspricht einer Instanz des Länderkonzepts. Wenn das Konzept eine Tabelle hat, muss die Tabelle alle Instanzen des Konzepts enthalten – in diesem Fall müssen alle Länder aufgeführt sein.
Die Spalten werden dem Länderkonzept und seinen Eigenschaften anhand ihrer ID zugeordnet. Die ID der ersten Spalte, country
, stimmt mit der Konzept-ID überein. Das bedeutet, dass diese Spalte die eindeutige Länderkennung enthält, die durch das Länderkonzept definiert ist. Die nächste Spalte entspricht der Property name
des Länderkonzepts. Die Werte in dieser Spalte stimmen mit den Werten der Property name
überein.
Die CSV-Daten für die Konzepttabelle müssen einige Anforderungen erfüllen:
- Die Spaltenüberschriften in der ersten Zeile der Datendatei müssen genau mit dem Konzept
id
und dem Attributid
des Konzepts übereinstimmen, mit dem die Daten verknüpft sind (die Reihenfolge kann jedoch variieren). - Jede Zeile muss genau die gleiche Anzahl von Elementen wie die Eigenschaften des Konzepts haben (auch wenn der Wert leer ist).
- Jeder Wert für das Feld
id
des Konzepts (hier der Ländercode) muss eindeutig sein und darf nicht leer sein. Ein leeres Feld enthält nur Null- oder Leerzeichen. - Werte für Attribute, die auf andere Konzepte verweisen, müssen entweder leer sein oder ein gültiger Wert des referenzierten Konzepts sein.
- Werte mit Kommas, doppelten Anführungszeichen oder Zeilenumbrüchen müssen in doppelte Anführungszeichen gesetzt werden.
- Vor einem literalen doppelten Anführungszeichen innerhalb eines Werts muss ein weiteres doppeltes Anführungszeichen stehen.
Jahr
Das letzte Konzept, das wir für unsere Bevölkerungsdaten benötigen, ist ein Konzept, das Jahre darstellt. Anstatt ein neues Konzept zu definieren, verwenden wir das Jahrkonzept aus einem der importierten Datasets: „http://www.google.com/publicdata/dataset/google/time“. Dazu müssen wir auf time:year
verweisen, wobei time
das referenzierte Dataset darstellt und year
das Konzept identifiziert.
Kanonische Konzepte
time:year
ist Teil einer kleinen Gruppe von kanonischen Konzepten, die von Google definiert wurden. Kanonische Konzepte bieten grundlegende Definitionen für Zeit, Geografie, numerische Mengen, Einheiten usw.
Das oben definierte Länderkonzept existiert als kanonisches Konzept. Sie wurde nur zur Veranschaulichung erstellt.
Verwenden Sie nach Möglichkeit kanonische Konzepte in Ihren Datasets, entweder direkt oder durch Erweiterung (siehe Erweiterung unten). Mit kanonischen Konzepten können Sie Ihre Daten mit anderen Datasets vergleichen und Funktionen für Ihre Datasets im Public Data Explorer aktivieren. Wenn Sie beispielsweise Daten im Zeitverlauf animieren oder geografische Daten auf einer Karte darstellen möchten, müssen Sie die kanonischen Konzepte time
bzw. geo
verwenden.
Erster Scheibe
Nachdem wir jetzt Konzepte für Bevölkerung, Land und Jahr haben, ist es an der Zeit, diese zusammenzufassen!
Dazu müssen wir ein Segment erstellen, in dem sie kombiniert sind. Ein Segment in DSPL ist eine Kombination von Konzepten, für die Daten vorhanden sind.
Warum erstellen Sie nicht einfach eine Tabelle mit den richtigen Spalten? Weil Segmente die Informationen des Datasets in Bezug auf ihre Konzepte erfassen. Dies wird deutlicher, je mehr Teile unseres Datasets wir erstellen.
Segmente werden in der DSPL-Datei unter einem <slices>
-Element angezeigt, das direkt nach dem Abschnitt concepts
angezeigt werden muss.
<slices> <slice id="countries_slice"> <dimension concept="country"/> <dimension concept="time:year"/> <metric concept="population"/> <table ref="countries_slice_table"/> </slice> </slices>
Genau wie Konzepte hat jedes Segment ein id
(countries_slice
), das das Segment innerhalb des Datasets eindeutig identifiziert.
Ein Segment enthält zwei Arten von Konzeptverweisen: Dimensionen und Messwerte. Die Werte der Messwerte variieren je nach den Werten der Dimensionen. Hier variiert der Wert von population
(Messwert) je nach Dimension country
und year
.
Genau wie Konzepte enthalten auch Segmente einen Verweis auf eine Tabelle, die die Daten des Segments enthält. Die referenzierte Tabelle muss eine Spalte pro Dimension und Messwert des Segments enthalten. Wie bei Konzepten werden die Dimensionen und Messwerte des Segments den Tabellenspalten mit denselben IDs zugeordnet.
Segmenttabelle
Die Tabelle für unser Bevölkerungssegment wird im Abschnitt tables
der DSPL-Datei angezeigt:
<tables> ... <table id="countries_slice_table"> <column id="country" type="string"/> <column id="year" type="date" format="yyyy"/> <column id="population" type="integer"/> <data> <file format="csv" encoding="utf-8">country_slice.csv</file> </data> </table> ... </tables>
Beachten Sie, dass die Spalte year
ein Attribut format
enthält, das angibt, wie Jahre formatiert sind. Unterstützte Datumsformate sind jene, die im Joda DateTime-Format definiert werden.
Die Tabelle countries_slice
gibt die Spalten der Tabelle und deren Typen an und verweist auf eine CSV-Datei, die die Daten enthält. Die CSV-Datei sieht so aus:
country, year, population AF, 1960, 9616353 AF, 1961, 9799379 AF, 1962, 9989846 AF, 1963, 10188299 ...
Jede Zeile der Datentabelle enthält eine eindeutige Kombination aus den Dimensionen country
und year
sowie dem entsprechenden Wert des Messwerts population
(z. B. der Population – Messwert – Afghanistan im Jahr 1960 – Dimensionen).
Die Werte in der Spalte country
stimmen mit dem Wert bzw. der ID des country
-Konzepts überein. Das ist der zweistellige ISO 3166-Code des Landes.
Die CSV-Daten für ein Segment müssen die folgenden Einschränkungen erfüllen:
- Jeder Wert eines Dimensionsfelds (z. B.
country
undyear
) darf nicht leer sein. Werte für Messwertfelder (z. B.population
) können leer sein. Ein leerer Wert wird durch keine Zeichen dargestellt. - Jeder Wert eines Dimensionsfelds, das auf ein Konzept verweist, muss in den Daten dieses Konzepts vorhanden sein. Beispielsweise muss der Wert
AF
in der Datentabelle des Konzeptscountry
enthalten sein. - Jede eindeutige Kombination von Dimensionswerten, z.B.
AF, 2000
, darf nur einmal verwendet werden. - Die Daten sollten nach den Spalten mit nicht zeitlichen Dimensionen (in beliebiger Reihenfolge) und optional nach einer der anderen Spalten sortiert werden. In einer Tabelle mit den Spalten
[date, dimension1, dimension2, metric1, metric2]
können Sie beispielsweise nachdimension1
, dann nachdimension2
, dann nachdate
, aber nicht nachdate
und dann nach den Dimensionen sortieren.
Zusammenfassung
An diesem Punkt haben wir in unserer DSPL genügend Daten, um die Daten zur Bevölkerung des Landes zu beschreiben. Fassen wir zusammen:
- DSPL-Header und -Beschreibung des Datasets und seines Anbieters erstellen
- Erstellen Sie ein Konzept für die Bevölkerungszahl und ein anderes für Länder mit einer CSV-Datei, in der alle Länder und ihre Namen aufgeführt sind.
- Erstellen Sie ein Segment mit unseren Einwohnerzahlen für Länder im Zeitverlauf und verweisen Sie auf das bereits definierte Jahreskonzept aus dem importierten Zeit-Dataset von Google.
Im weiteren Verlauf dieser Anleitung erweitern wir unser Dataset, indem wir weitere Dimensionen in weiteren Segmenten sowie weitere nach Themen gruppierte Messwerte hinzufügen.
Dimension hinzufügen: USA
Nun bereichern wir unser Dataset, indem wir Bevölkerungsdaten für US-Bundesstaaten hinzufügen. Zuerst müssen wir ein Konzept für Bundesstaaten definieren. Dies ähnelt dem zuvor definierten Länderkonzept.
<concept id="state" extends="geo:location"> <info> <name> <value>state</value> </name> <description> <value>US states, identified by their two-letter code.</value> </description> </info> <property concept="country" isParent="true" /> <table ref="states_table"/> </concept>
Konzepterweiterungen und Attributreferenzen
Das Konzept für den Bundesstaat bietet mehrere neue Funktionen von DSPL.
Zuerst erweitert das andere Konzept geo:location
, das im externen Geo-Dataset definiert ist, das wir am Anfang unseres Datasets importiert haben. Semantisch bedeutet state
eine Art von geo:location
. Dies führt dazu, dass alle Attribute und Attribute von geo:location
übernommen werden. Insbesondere definiert der Standort Attribute für latitude
und longitude
. Durch die Erweiterung des vorherigen Konzepts werden diese Attribute auch auf den Status angewendet. Da der Standort außerdem von entity:entity
übernommen wird, erhält der Status darüber hinaus alle zugehörigen Attribute, einschließlich name
, description
und info_url
.
Hinweis: Das zuvor definierte Länderkonzept sollte technisch gesehen auch von geo:location
erweitert werden.
Der Einfachheit halber wurde dieser Punkt zuvor weggelassen. Wir haben den Standort in die länderspezifische XML-Datei aufgenommen.
Hinweis:Sie können das Konstrukt extends
in Ihren eigenen Datasets verwenden, um durch andere Datasets definierte Informationen wiederzuverwenden.
Wenn Sie extends
verwenden, müssen alle Instanzen Ihres Konzepts gültige Instanzen des Konzepts sein, das Sie erweitern. Mit Erweiterungen können Sie zusätzliche Attribute und Attribute hinzufügen und die Gruppe von Instanzen auf eine Teilmenge der Instanzen des erweiterten Konzepts beschränken.
Außer für die Übernahme umfasst die Zustandseigenschaft auch die Idee von Referenzen für Konzepte.
Insbesondere hat das US-Bundesstaatkonzept das Attribut country
, das auf das oben erstellte Länderkonzept verweist. Dazu wird ein concept
-Attribut verwendet. Diese Property enthält keine ID, sondern nur eine Konzeptreferenz. Dies entspricht der Erstellung einer ID mit demselben Wert wie die ID des referenzierten Konzepts (d.h.
country
. Die hierarchische Beziehung zwischen Bundesstaat und Landkreis wird durch die Verwendung des Attributs isParent="true"
in der Referenz erfasst. Im Allgemeinen sollten Dimensionen mit hierarchischen Beziehungen, wie z. B. Geografien, so dargestellt werden, wobei das untergeordnete Konzept eine Eigenschaft hat, die mit dem Attribut isParent
auf das übergeordnete Konzept verweist.
Die Tabellendefinition für Bundesstaaten sieht so aus:
<tables> ... <table id="states_table"> <column id="state" type="string"/> <column id="name" type="string"/> <column id="country" type="string"> <value>US</value> </column> <column id="latitude" type="float"/> <column id="longitude" type="float"/> <data> <file format="csv" encoding="utf-8">states.csv</file> </data> </table> ... </tables>
Die Länderspalte hat einen konstanten Wert für alle Bundesstaaten. Wenn Sie ihn in der DSPL angeben, müssen Sie diesen Wert nicht für jeden Zustand der Daten wiederholen. Außerdem haben wir Spalten für name
, latitude
und longitude
hinzugefügt, da der Zustand diese Attribute von geo:location
übernommen hat. Andererseits sind einige übernommene Attribute (z.B. description
) keine Spalten haben. Dies ist zulässig.
Die CSV-Datei sieht so aus:
state, name, latitude, longitude AL, Alabama, 32.318231, -86.902298 AK, Alaska, 63.588753, -154.493062 AR, Arkansas, 35.20105, -91.831833 AZ, Arizona, 34.048928, -111.093731 CA, California, 36.778261, -119.417932 CO, Colorado, 39.550051, -105.782067 CT, Connecticut, 41.603221, -73.087749 ...
Da wir bereits Konzepte für Bevölkerung und Jahr haben, können wir diese wiederverwenden, um ein neues Segment für die Einwohnerzahl zu erstellen.
<slices> <slice id="states_slice"> <dimension concept="state"/> <dimension concept="time:year"/> <metric concept="population"/> <table ref="states_slice_table"/> </slice> </slices>
Die Datentabellendefinition sieht so aus:
<tables> ... <table id="states_slice_table"> <column id="state" type="string"/> <column id="year" type="date" format="yyyy"/> <column id="population" type="integer"/> <file format="csv" encoding="utf-8">state_slice.csv</file> </table> ... </tables>
Die CSV-Datei sieht dann so aus:
state, year, population AL, 1960, 9616353 AL, 1961, 9799379 AL, 1962, 9989846 AL, 1963, 10188299
Warum wurde ein neues Segment erstellt, anstatt eine weitere Dimension zur vorherigen hinzuzufügen?
Ein Segment mit Dimensionen für Bundesstaat und Land wäre nicht korrekt, da einige Zeilen für Länderdaten und einige Zeilen für Bundesstaatdaten würden. Die Tabelle hätte für einige Dimensionen "Löcher", was nicht zulässig ist. Fehlende Werte sind nur für Messwerte und nicht für Dimensionen zulässig.
Dimensionen dienen als „primärer Schlüssel“ für das Segment. Das bedeutet, dass jede Datenzeile Werte für alle Dimensionen haben muss und dass keine zwei Datenzeilen für alle Dimensionen exakt dieselben Werte haben dürfen.
Messwert hinzufügen: Arbeitslosenquote
Jetzt fügen wir unserem Dataset einen weiteren Messwert hinzu:
<concept id="unemployment_rate" extends="quantity:rate"> <info> <name> <value>Unemployment rate</value> </name> <description> <value>The percent of the labor force that is unemployed.</value> </description> <url> <value>http://www.bls.gov/cps/cps_htgm.htm</value> </url> </info> <type ref="float/> <attribute id="is_percentage"> <type ref="boolean"/> <value>true</value> </attribute> </concept>
Der Abschnitt info
dieses Messwerts hat einen Namen, eine Beschreibung und eine URL (Link zum US Bureau of Labor Statistics).
Dieses Konzept erweitert auch das kanonische quantity:rate
-Konzept.
Das Mengen-Dataset definiert Kernkonzepte für die Darstellung numerischer Mengen. Im Dataset sollten Sie numerische Konzepte erstellen, indem Sie das entsprechende Mengenkonzept erweitern. Aus diesem Grund sollte das oben definierte Konzept population
aus technischer Sicht von quantity:amount
erweitert worden sein.
Konzeptattribute
Mit diesem Konzept wird auch das Konstrukt eines Attributs eingeführt. In diesem Beispiel wird mit einem Attribut angegeben, dass unemployment_rate
ein Prozentsatz ist. Das Attribut is_percentage
wird aus dem Konzept quantity:rate
übernommen, das dieses Konzept erweitert. Diese Informationen werden vom Public Data Explorer verwendet, um Prozentzeichen in der Visualisierung der Daten anzuzeigen.
Attribute bieten einen allgemeinen Mechanismus zum Anhängen von Schlüssel/Wert-Paaren an ein Konzept (im Gegensatz zu Attributen, die zusätzliche Werte mit Instanzen eines Konzepts verknüpfen). Genau wie Konzepte und Attribute haben Attribute eine id
, eine info
und eine type
. Wie bei Properties können sie auch auf andere Konzepte verweisen.
Attribute sind nicht nur für vordefinierte allgemeine Zwecke wie numerische Attribute vorgesehen. Sie können für Ihre Konzepte eigene Attribute definieren.
Daten zur Arbeitslosenquote für US-Bundesstaaten hinzufügen
Wir sind jetzt bereit, Daten zur Arbeitslosenquote für US-Bundesstaaten hinzuzufügen. Da die Arbeitslosenquote ein Messwert ist und wir bereits Bevölkerungsstatistiken für Bundesstaaten haben, können wir sie einfach dem Segment hinzufügen, das wir bereits für die Bundesstaaten- und Jahresdimensionen erstellt haben:
<slices> ... <slice id="states_slice"> <dimension concept="state"/> <dimension concept="time:year"/> <metric concept="population"/> <metric concept="unemployment_rate"/> <table ref="states_slice_table"/> </slice> ... </slices>
Fügen Sie der Tabellendefinition eine weitere Spalte hinzu:
<tables> ... <table id="states_slice_table"> <column id="state" type="string"/> <column id="year" type="date" format="yyyy"/> <column id="population" type="integer"/> <column id="unemployment_rate" type="float"/> <data> <file format="csv" encoding="utf-8">state_slice.csv</file> </data> </table> ... </tables>
... und in die CSV-Datei:
state, year, population, unemployment_rate AL, 1960, 9616353, 5.1 AL, 1961, 9799379, 5.2 AL, 1962, 9989846, 4.8 AL, 1963, 10188299, 6.9
Wie bereits erwähnt, bilden die Dimensionen für jedes Segment einen Primärschlüssel. Darüber hinaus darf jedes Dataset nur ein Segment für eine bestimmte Kombination von Dimensionen enthalten. Alle für diese Dimensionen verfügbaren Messwerte müssen zum selben Segment gehören.
Weitere Dimensionen: Aufschlüsselung der Bevölkerung nach Geschlecht
Wir bereichern unser Dataset mit einer Aufschlüsselung der Bevölkerung nach Geschlecht für Länder. Mittlerweile beginnt die Aufschlüsselung bereits. Zuerst müssen wir ein Konzept für das Geschlecht hinzufügen:
<concept id="gender" extends="entity:entity"> <info> <name> <value>Gender</value> </name> <description> <value>Gender, Male or Female</value> </description> <pluralName> <value>Genders</value> </pluralName> <totalName> <value>Both genders</value> </totalName> </info> <type ref="string"/> <table ref="genders_table"/> </concept>
Der Abschnitt info
für das Geschlechtskonzept hat einen pluralName
, der den Text enthält, der zum Verweisen auf mehrere Instanzen des Geschlechtskonzepts verwendet werden soll. Der Abschnitt info
enthält auch einen totalName
, der den Text enthält, der verwendet werden soll, um auf alle Instanzen des Geschlechtskonzepts als Ganzes zu verweisen. Beide werden vom Public Data Explorer verwendet, um Informationen zum Geschlechtskonzept anzuzeigen. Im Allgemeinen sollten Sie sie für Konzepte angeben, die als Dimensionen verwendet werden können.
Das Konzept für das Geschlecht erstreckt sich auch von entity:entity
. Dies ist eine gute Vorgehensweise für Konzepte, die als Dimensionen verwendet werden, da Sie damit den verschiedenen Konzeptinstanzen benutzerdefinierte Namen, URLs und Farben hinzufügen können.
Das Geschlechtskonzept bezieht sich auf die Tabelle genders_table
, die die möglichen Werte für das Geschlecht und ihre Anzeigenamen enthält (hier weggelassen).
Um dem Dataset die Population nach Geschlecht hinzuzufügen, müssen Sie ein neues Segment erstellen. Beachten Sie, dass jede verfügbare Kombination von Dimensionen einem Segment im Dataset entspricht.
<slice id="countries_gender_slice"> <dimension concept="country"/> <dimension concept="gender"/> <dimension concept="time:year"/> <metric concept="population"/> <table ref="countries_gender_slice_table"/> </slice>
Die Tabellendefinition für das Segment sieht so aus:
<table id="countries_gender_slice_table"> <column id="country" type="string"/> <column id="gender" type="string"/> <column id="year" type="date" format="yyyy"/> <column id="population" type="integer"/> <data> <file format="csv" encoding="utf-8">gender_country_slice.csv</file> </data> </table>
Die CSV-Datei für die Tabelle sieht so aus:
country, gender, year, population AF, M, 1960, 4808176 AF, F, 1960, 4808177 AF, M, 1961, 4899689 AF, F, 1961, 4899690...
Verglichen mit den vorherigen Ländern, der Bevölkerung und dem Teil der Arbeitslosigkeit hat diese zusätzliche Dimension. Jeder Wert der Bevölkerungszahl entspricht nicht nur einem bestimmten Land und Jahr, sondern auch einem bestimmten Geschlecht.
Beachten Sie, dass wir ein „spärliches“ Dataset erstellt haben. Nicht alle Messwerte sind für alle Dimensionen verfügbar. Die Bevölkerungszahl wird jährlich für Länder und US-Bundesstaaten angegeben, die Arbeitslosenquote nur für Länder. Die Aufschlüsselung nach Geschlecht ist nur für die Bevölkerung nach Land verfügbar. Für den Messwert „Arbeitslosenquote“ ist er nicht verfügbar, nicht für die Dimension „Bundesstaat“. Es können auch Daten auf Datenebene vorhanden sein, wobei bestimmte Messwerte keine Werte für bestimmte Dimensionswerte haben, die in DSPL jedoch nicht dargestellt werden.
Themen
Die letzte Funktion von DSPL, die wir in unserem Dataset verwenden, ist topics. Themen werden verwendet, um Konzepte hierarchisch zu klassifizieren. Sie dienen auch dazu, Anwendungen dabei zu helfen, zu Ihren Daten zu wechseln.
In der DSPL-Datei werden Themen direkt vor Konzepten angezeigt. Hier ist ein Beispiel für eine Hierarchie mit Themen:
<dspl ... > ... <topics> <topic id="geography"> <info> <name> <value>Geography</value> </name> </info> </topic> <topic id="social_indicators"> <info> <name> <value>Social indicators</value> </name> </info> </topic> <topic id="population_indicators"> <info> <name> <value>Population indicators</value> </name> </info> </topic> <topic id="poverty_and_income"> <info> <name> <value>Poverty & income</value> </name> </info> </topic> <topic id="health"> <info> <name> <value>Health</value> </name> </info> </topic> </topics>
Sie können Themen nach Bedarf verschachteln.
Wenn Sie Themen verwenden möchten, verweisen Sie in der Konzeptdefinition einfach darauf:
<concept id="population"> <info> <name> <value>Population</value> </name> <description> <value>Size of the resident population.</value> </description> </info> <topic ref="population_indicators"/> <type ref="integer"/> </concept>
Ein Konzept kann sich auf mehr als ein Thema beziehen.
Dataset einreichen
Nachdem Sie das Dataset erstellt haben, erstellen Sie im nächsten Schritt eine ZIP-Datei und laden Sie die ZIP-Datei in das Google Public Data Explorer-Tool hoch. Falls Probleme auftreten, lesen Sie die FAQs. Hier werden die häufigsten Probleme beim Hochladen erläutert.
Als Referenz können Sie auch die vollständige XML-Datei und das vollständige Dataset-Bundle herunterladen, das mit dieser Anleitung verknüpft ist.
Fortsetzung
Glückwunsch! Sie haben Ihr erstes DSPL-Dataset erstellt. Nachdem Sie nun mit den Grundlagen vertraut sind, sollten Sie den Entwicklerleitfaden lesen. Darin werden unter anderem erweiterte DSPL-Funktionen wie die Unterstützung in mehreren Sprachen und zuordnungsfähige Konzepte dokumentiert.
Sie können sich auch einige Beispieldatensätze ansehen.