Skip to content

GENESIS Use Cases

Michael Aydinbas edited this page May 5, 2022 · 17 revisions

Szenario: Finde Ölimport pro Land von 2015-2021 (only API)

  1. /find

a) Tabellen

  • Suchwort: Öl* => keine Resultate, Stern funktioniert nicht
  • Suchwort: Oel => Alle möglichen (irrelevanten) Ergebnisse
  • Suchwort: Öl=> Alle möglichen (irrelevanten) Ergebnisse
  • Suchwort: Ölimporte => keine Resultate

b) Merkmale

  • Suchwort: Öl => alle möglichen Merkmale, die (wahrscheinlich) Öl als Ausprägung haben, z.B. Abfallarten, Einfuhrpreise
  • Suchwort: Ölimport => keine Resultate

c) Statistiken

  • Suchwort: Öl => alle möglichen Statistiken, die (wahrscheinlich) Öl als haben.

=> Über find ist es fast unmöglich die gesuchten Daten zu finden, entweder zu viele Treffer (auch super irrelevante Sachen) oder gar keine Treffer, wenn Formulierung unscharf

=> Frage: Kombination von mehren Suchbegriffen möglich? Wie Suchbegriffe kombinieren?

=> Antwort: "Öl Import" liefert relevantere Tabellen

  • Mehrere Tabellen mit verschiedener Granularität (Fortführung mit Tabelle 51000-0007: Alle Ex-und Importe nach Jahr und Land)

=> Idee: Falls nicht vorhanden, können wir selber eine fortgeschrittene Suche einführen. Bsp. "Öl+Import" ist gemeinsames subset der beiden Individualergebnisse.

  1. /data/table
  • Tabelle 51000-0007: Tabelle zu groß, um abgerufen zu werden

Option 1: Als Job starten => Empfehlung der API; parameter auftrag = True; klappte nicht

  • Parameter job = true; Resultat = 51000-0007_494780303
  • Endpoint /data/results gibt korrekte Ergebnisse zurück

Option 2: Merkmale einschränken

  • Mit /metadata Merkmale herausfinden, gibt Spalten und Reihen zurück
  • Warenverzeichnis hat den Code: WAM2
  • Herausfinden der Merkmalsausprägungen mit /catalogue/values2variable (Resultat: 95 Ausprägungen, Selection Öl funktioniert nicht)

=> Problem: Kein Öl im Warenverzeichnis (WAM2), in der UI kann andere Systematik verwendet werden, die Öl enthält. Warum ist das so? Wie kann man das mit API ändern?


Alternativer Prozess:

  1. /catalogue/statistics

1.1) /catalogue/statistics

  • Alle Statistiken sind zuviel, ca 100 Ergebnisse
  • Suchwort: Öl => keine Treffer
  • Suchwort: Export => keine Treffer
  • Suchwort: Außenhandel => Treffer: Code 51000

1.2) /catalogue/tables

  • Suchwort: 51000* => Gibt alles Außenhandelsstatistiken zurück
  1. /catalogue/values (Merkmalsausprägungen)
  • Suchwort: Öl => Irrelevante Ergebnisse

=> Frage: Können wir die Themenhierarchie aus der UI abbilden? Diese ist gröber (10 Ausprägungen) als statistics (~100) und eignet sich eher für eine hierachische Suche.

Anderes: Wenn nach Text gesucht wird, muss "searchcriterion = Inhalt" sein. Suchfunktion: Immer "Öl" nutzen Über Google gefunden: https://www.destatis.de/DE/Themen/Wirtschaft/Aussenhandel/Tabellen/rohoel-jaehrlich.html (bearbeitet)

Szenario: Finde Anzahl Bachelorabschlüsse pro Studiengang für 2021

  1. /find
  • Suchwort: Bachelor+Abschluss => ca. 20 resultate, aber keine Dimension Studiengang
  • Suchwort: Abschluss+Studiengang => keine Resultate

=> Aus der UI geht hervor, dass es wohl eine Sonderauswertung Bachelorabschluss im Jahr 2018 gab

=> Sonderauswertung über API nicht auffindbar

=> Desweiteren hätte es wieder ein Problem mit dem Wording gegeben, die "Studiengang" nennt sich in Destatis "Fächergruppe"

Szenario: Cube zur Statistik Todesursachenstatistik

  1. Nutze /metadata/statistic, um Metadaten zur Statistik abzufragen:
    • Liefert die folgende Information:
    "Object": {
         "Code": "23211",
         "Content": "Todesursachenstatistik",
         "Cubes": "2",
         "Variables": "6",
         "Frequency": [
             {
                 "From": "01.01.1950",
                 "To": null,
                 "Type": "Jährlich"
             }
         ],
         "Information": null,
         "Updated": "26.04.2017 11:56:42h"
     }
    => Sagt uns, dass es in der Statistik wohl 6 Variablen gibt, und 2 Cubes die Daten enthalten, aber nicht, welche Cubes und welche Variablen! Immerhin aber informiert frequency darüber, dass die Statistik jährlich erhoben wird und wann sie zuletzt aktualisiert wurde.

neu:

  1. nutze catalogue/cubes2statistic um an eine Liste von cubes zu kommen.
  2. will man jetzt die Variablen verstehen, die in der Statistik vorkommen, dann
  • catalogue/variables2statistic -> gibt alle Variablen zu einer Statistik
  • catalogue/values2variable -> gibt alle Variablen zu einer Statistik

veraltet:

  1. Nutze /metadata/cube um Cubes zu finden -> nicht möglich, da der Endpunkt immer nur einen Treffer zurückgibt, hier kann man nicht nach mehreren gleichzeitig suchen
  2. Nutze find/, um die Cubes zu finden:
    1. Vorgehen mit term=Todesursache und category=cubes nicht zielführend, zu viele Treffer
    2. Vorgehen mit term=Todesursachenstatistik und category=cubes ergibt richtige Treffer
    3. Vorgehen mit term=23211 (ID der Statistik aus UI) und category=cubes bringt die richtigen Treffer:
    "Cubes": [
         {
             "Code": "23211BJ001",
             "Content": "Todesursachenstatistik, Gestorbene, Deutschland insgesamt, Geschlecht, Altersgruppen (u1-85m, unbekannt), Todesursachen, Jahr",
             "State": "vollständig mit Werten",
             "Time": "1980-2020",
             "LatestUpdate": "12.01.2022 15:11:23h",
             "Information": "false"
         },
         {
             "Code": "23211BJ002",
             "Content": "Todesursachenstatistik, Gestorbene, Deutschland insgesamt, Geschlecht, Todesursachen, Jahr",
             "State": "vollständig mit Werten",
             "Time": "1980-2020",
             "LatestUpdate": "08.11.2021 13:58:42h",
             "Information": "false"
         }
     ]
    => ID und Suchbegriff kann beide zum Ziel führen, natürlich muss der Suchbegriff aber genau so in Content vorkommen und muss eindeutig sein, ID ist immer vorzuziehen
  3. Alternativ nutze /catalogue/cubes um Cubes zu finden: Suche mit selection=23211* (wir wissen, dass es zwei gibt und ich weiß, dass Cubes auch die Nummer der Statistik haben, aber eigentlich müsste man das erst herausfinden) ergibt tatsächlich genau zwei Treffer:
    "List": [
         {
             "Code": "23211BJ001",
             "Content": "Todesursachenstatistik, Gestorbene, Deutschland insgesamt, Geschlecht, Altersgruppen (u1-85m, unbekannt), Todesursachen, Jahr",
             "State": "vollständig mit Werten",
             "Time": "1980-2020",
             "LatestUpdate": "12.01.2022 15:11:23h",
             "Information": "false"
         },
         {
             "Code": "23211BJ002",
             "Content": "Todesursachenstatistik, Gestorbene, Deutschland insgesamt, Geschlecht, Todesursachen, Jahr",
             "State": "vollständig mit Werten",
             "Time": "1980-2020",
             "LatestUpdate": "08.11.2021 13:58:42h",
             "Information": "false"
         }
    => Führt auch zum Ziel, Nachteil: Unterstützt nur ID als Wert für Selection, keine bel. Suchtexte, daher weniger geeignet als /find
  4. Metadaten zum Cube abfragen:
    1. Abfrage mittels /metadata/cube und name=23211BJ001 liefert:
    "Object": {
         "Code": "23211BJ001",
         "Content": "Todesursachenstatistik, Gestorbene, Deutschland insgesamt, Geschlecht, Altersgruppen (u1-85m, unbekannt), Todesursachen, Jahr",
         "State": "undefiniert",
         "Timeslices": [
             "1980",
             "1981",
             "1982",
             "1983",
             "1984",
             "1985",
             "1986",
             "1987",
             "1988",
             "1989",
             "1990",
             "1991",
             "1992",
             "1993",
             "1994",
             "1995",
             "1996",
             "1997",
             "1998",
             "1999",
             "2000",
             "2001",
             "2002",
             "2003",
             "2004",
             "2005",
             "2006",
             "2007",
             "2008",
             "2009",
             "2010",
             "2011",
             "2012",
             "2013",
             "2014",
             "2015",
             "2016",
             "2017",
             "2018",
             "2019",
             "2020"
         ],
         "Values": "0",
         "Statistic": {
             "Code": "23211",
             "Content": "Todesursachenstatistik",
             "Updated": "26.04.2017 11:56:42h"
         },
         "Structure": {
             "Axis": [
                 {
                     "Code": "DINSG",
                     "Content": "Deutschland insgesamt",
                     "Type": "klassifizierend",
                     "Updated": "25.01.2016 13:54:17h"
                 },
                 {
                     "Code": "GES",
                     "Content": "Geschlecht",
                     "Type": "klassifizierend",
                     "Updated": "25.01.2016 13:54:45h"
                 },
                 {
                     "Code": "ALT027",
                     "Content": "Altersgruppen (u1-85m, unbekannt)",
                     "Type": "klassifizierend",
                     "Updated": "25.01.2016 13:55:03h"
                 },
                 {
                     "Code": "TODUR1",
                     "Content": "Todesursachen",
                     "Type": "klassifizierend",
                     "Updated": "20.09.2021 12:51:51h"
                 },
                 {
                     "Code": "JAHR",
                     "Content": "Jahr",
                     "Type": "zeitidentifizierend",
                     "Updated": "25.01.2016 13:53:47h"
                 }
             ],
             "Contents": [
                 {
                     "Code": "BEV002",
                     "Content": "Gestorbene",
                     "Type": "Ganzzahl",
                     "Unit": "Anzahl",
                     "Values": "",
                     "Timeslices": null,
                     "Updated": "20.10.2017 13:10:34h"
                 }
             ]
         },
         "Updated": "12.01.2022 15:11:23h"
    => Interessant sind hier vor allem Structure, was uns die Merkmale verrät (oder Axen), sowie Contents, was den Wert/value wiederspiegelt, der letztendlich gemessen wurde.
  5. Jetzt wollte ich herausbekommen, welche Merkmalsausprägungen das Merkmal TODUR1 (Todesursachen) besitzt. Da dies eine Variable ist, habe ich es über /metadata/variable probiert mit name=TODUR1:
     "Object": {
         "Code": "TODUR1",
         "Content": "Todesursachen",
         "Type": "sachlich",
         "Values": "82",
         "Validity": {
             "From": "01.01.1950",
             "To": null
         },
         "Information": null,
         "Updated": "20.09.2021 12:51:51h"
     }
    => Die Information ist leider sehr dünn, immerhin erfahren wir, dass es 82 Ausprägungen für das Merkmal gibt, aber nicht ,wie diese heißen. Und jetzt komme ich auch nicht ohne Nachschauen weiter. Für die einzelnen Werte gibt es den Endpunkt /metadata/variable, aber hier muss man den Namen der Variablen kennen und den habe ich nicht, nur den Namen für das Merkmal. /find könnte helfen, erlaubt aber nur die Suche nach Variablen, NICHT nach Werten (value). Was ich gerne herausbekommen hätte, ist dass die Werte TODESURS01 - TODESURS82 als Code haben.
  6. Letztendlich musste ich mir die Metadaten des cubes über /data/cubefile ziehen mit name=23211BJ001, values=true, additionals=true
    D;TODESURS01;Insgesamt;;;N;N;N;J;Total;;;;
    D;TODESURS02;Bestimmte infektiöse und parasitäre Krankheiten;;;N;N;N;J;Certain infectious and parasitic diseases;;;;
    D;TODESURS03;Tuberkulose einschließlich ihrer Folgezustände;;;N;N;N;J;Tuberculosis, including its sequelae;;;;
    D;TODESURS04;Meningokokkeninfektion;;;N;N;N;J;Meningococcal infection;;;;
    ...

Update:

Habe eben nochmal mit /find als term=TODESURS01 direkt die Variable ausprobiert und da tauchen interessante Dinge auf:

"Cubes": [
        {
            "Code": "23211BJ001",
            "Content": "Todesursachenstatistik, Gestorbene, Deutschland insgesamt, Geschlecht, Altersgruppen (u1-85m, unbekannt), Todesursachen, Jahr",
            "State": "vollständig mit Werten",
            "Time": "1980-2020",
            "LatestUpdate": "12.01.2022 15:11:23h",
            "Information": "false"
        },
        {
            "Code": "23211BJ002",
            "Content": "Todesursachenstatistik, Gestorbene, Deutschland insgesamt, Geschlecht, Todesursachen, Jahr",
            "State": "vollständig mit Werten",
            "Time": "1980-2020",
            "LatestUpdate": "08.11.2021 13:58:42h",
            "Information": "false"
        }
    ],
    "Statistics": [
        {
            "Code": "23211",
            "Content": "Todesursachenstatistik",
            "Cubes": "2",
            "Information": "true"
        }
    ],
    "Tables": [
        {
            "Code": "23211-0001",
            "Content": "Gestorbene: Deutschland, Jahre, Todesursachen",
            "Time": ""
        },
        {
            "Code": "23211-0002",
            "Content": "Gestorbene: Deutschland, Jahre, Todesursachen, Geschlecht",
            "Time": ""
        },
        {
            "Code": "23211-0003",
            "Content": "Gestorbene: Deutschland, Jahre, Todesursachen, Altersgruppen",
            "Time": ""
        },
        {
            "Code": "23211-0004",
            "Content": "Gestorbene: Deutschland, Jahre, Todesursachen, Geschlecht,\nAltersgruppen",
            "Time": ""
        }
    ],
    "Timeseries": null,
    "Variables": [
        {
            "Code": "TODUR1",
            "Content": "Todesursachen",
            "Type": "sachlich",
            "Values": "82",
            "Information": "false"
        }
    ]

=> Man sieht wieder, dass values nicht unter find zu finden sind, d.h. man kann die Merkmalsausprägungen nicht darüber finden, aber er listet interessanterweise alle Treffer auf, die das Merkmal bzw. den Code enthalten, das ist hilfreich!

Update2:

Mein Use Case lässt sich doch direkt lösen, danke an Frederik:

  • catalogue/variables2statistic -> gibt alle Variablen zu einer Statistik
  • catalogue/values2variable -> gibt alle Variablen zu einer Statistik

Diese sollten wir also gut implementieren!

Clone this wiki locally