Zum Inhalt springen

Die Funktion JQ ist eine mengenliefernde SQL-Funktion, mit der Sie jq-Filter auf JSON-Daten in Variant-Spalten anwenden können. Damit verarbeiten Sie JSON-Daten, indem Sie einen angegebenen jq-Filter anwenden und die Ergebnisse als Menge von Zeilen zurückgeben.

JQ (<jq_expression>, <json_data>)
Parameter Beschreibung
jq_expression Ein jq-Filterausdruck, der mit der jq-Syntax festlegt, wie JSON-Daten verarbeitet und umgewandelt werden. Der Ausdruck kann angeben, wie Daten in JSON-Objekten und -Arrays ausgewählt, geändert und bearbeitet werden. Informationen zu Syntax, Filtern und Funktionen, die jq unterstützt, finden Sie im jq-Handbuch.
json_data Die JSON-formatierte Eingabe, die Sie mit dem jq-Filterausdruck verarbeiten oder umwandeln möchten. Es kann ein JSON-Objekt, ein Array oder eine beliebige gültige JSON-Datenstruktur sein.

Die Funktion JQ gibt eine Menge von JSON-Werten zurück. Jeder Wert entspricht einem Element des umgewandelten oder extrahierten Ergebnisses auf Basis von <jq_expression>.

Zunächst erstellen wir eine Tabelle namens customer_data mit den Spalten id und profile, wobei profile ein JSON-Typ zum Speichern von Benutzerinformationen ist:

CREATE TABLE customer_data (
id INT,
profile JSON
);
INSERT INTO customer_data VALUES
(1, '{"name": "Alice", "age": 30, "city": "New York"}'),
(2, '{"name": "Bob", "age": 25, "city": "Los Angeles"}'),
(3, '{"name": "Charlie", "age": 35, "city": "Chicago"}');

Dieses Beispiel extrahiert bestimmte Felder aus den JSON-Daten:

SELECT
id,
jq('.name', profile) AS customer_name
FROM
customer_data;
┌─────────────────────────────────────┐
│ id │ customer_name │
├─────────────────┼───────────────────┤
│ 1 │ "Alice" │
│ 2 │ "Bob" │
│ 3 │ "Charlie" │
└─────────────────────────────────────┘

Dieses Beispiel wählt die Benutzer-ID und das um 1 erhöhte Alter jedes Benutzers aus:

SELECT
id,
jq('.age + 1', profile) AS updated_age
FROM
customer_data;
┌─────────────────────────────────────┐
│ id │ updated_age │
├─────────────────┼───────────────────┤
│ 1 │ 31 │
│ 2 │ 26 │
│ 3 │ 36 │
└─────────────────────────────────────┘

Dieses Beispiel wandelt Städtenamen in Großbuchstaben um:

SELECT
id,
jq('.city | ascii_upcase', profile) AS city_uppercase
FROM
customer_data;
┌─────────────────────────────────────┐
│ id │ city_uppercase │
├─────────────────┼───────────────────┤
│ 1 │ "NEW YORK" │
│ 2 │ "LOS ANGELES" │
│ 3 │ "CHICAGO" │
└─────────────────────────────────────┘