DSPL-Anleitung

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 ist population der Typ integer. 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 Attribut id 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 und year) 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 Konzepts country 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 nach dimension1, dann nach dimension2, dann nach date, aber nicht nach date 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.