JSON-Daten mit Postgres abfragen

Einführung in NoSQL

Jake Roach

Data Engineer

JSON-Daten mit Postgres abfragen

Zwei Tabellen: eine mit einer einzelnen Spalte vom Typ JSON, die andere mit dem Ergebnis der Abfrage, die Informationen aus der Spalte parent_meta extrahiert.

Operator ->

  • Nimmt einen Schlüssel, gibt Feld als JSON zurück

Operator ->>

  • Nimmt einen Schlüssel, gibt Feld als Text zurück

$$

SELECT
    parent_meta -> 'guardian' AS guardian
    parent_meta ->> 'status' AS status
FROM student;
Einführung in NoSQL

Verschachtelte JSON-Objekte abfragen

Zwei Tabellen: eine mit einer einzelnen Spalte vom Typ JSON, die andere mit dem Ergebnis der Abfrage, die Informationen aus der Spalte parent_meta extrahiert.

Verschachtelte JSON-Objekte abfragen:

  • -> und ->> zusammen verwenden
  • Zuerst verschachteltes Objekt zurückgeben
  • Dann das Feld extrahieren

$$

SELECT
    parent_meta -> 'jobs' ->> 'P1' AS jobs_P1,
    parent_meta -> 'jobs' ->> 'P2' AS jobs_P2
FROM student;
Einführung in NoSQL

JSON-Arrays abfragen

Zwei Tabellen: eine mit einer einzelnen Spalte vom Typ JSON, die andere mit dem Ergebnis der Abfrage, die Informationen aus der Spalte parent_meta extrahiert.

Elemente aus JSON-Arrays lesen:

  • INT an -> übergeben, gibt Feld als JSON zurück
  • INT an ->> übergeben, gibt Feld als Text zurück

$$

SELECT
    parent_meta -> 'educations' ->> 0
    parent_meta -> 'educations' ->> 1
FROM student;
Einführung in NoSQL

Den Datentyp in JSON-Objekten ermitteln

Zwei Tabellen: eine mit einer einzelnen Spalte vom Typ JSON, die andere mit dem Typ des JSON-Objekts als Ausgabe in einer Spalte.

Funktion json_typeof

  • Liefert den Typ des äußersten Objekts
  • Mit -> verwenden
  • Nützlich zum Debuggen und für Abfragen
  • Typisch nicht mit dem Operator ->> genutzt

$$

SELECT
    json_typeof(parent_meta -> 'jobs')
FROM students;
Einführung in NoSQL

Wiederholung

SELECT
    -- Felder auf oberster Ebene
    <column-name> -> '<field-name>' AS <alias>,
    <column-name> ->> '<field-name>' AS <alias>,

    -- Verschachtelte Felder
    <column-name> -> '<parent-field-name>' ->> '<nested-field-name>' AS <alias>,

    -- Arrays
    <column-name> -> '<parent-field-name>' -> 0 AS <alias>,
    <column-name> -> '<parent-field-name>' ->> 1 AS <alias>,

    -- Typ ermitteln
    json_typeof(<column-name> -> <field-name>) AS <alias>
FROM <table-name>;
Einführung in NoSQL

Lass uns üben!

Einführung in NoSQL

Preparing Video For Download...