- Kategorien:
Funktionen für semistrukturierte und strukturierte Daten (Erstellung und Bearbeitung von Arrays/Objekten)
ARRAYS_ZIP¶
Gibt ein Array von Objekten zurück, von denen jedes Schlüssel-Wert-Paare für ein n-tes Element in den Eingabearrays enthält. Im zurückgegebenen Array enthält das erste Objekt zum Bespiel Schlüssel-Wert-Paare für jedes erste Element in den Eingabearrays, das zweite Objekt enthält -für jedes zweite Element in den Eingabearrays und so weiter.
Syntax¶
ARRAYS_ZIP( <array> [ , <array> ... ] )
Argumente¶
array
Ein Eingabearray.
Die Eingabearrays können unterschiedlich lang sein.
Wenn eines der Eingabearrays ein strukturiertes Array ist, müssen alle Eingabearrays strukturierte Arrays sein.
Rückgabewerte¶
Gibt einen Wert eines der folgenden Typen zurück:
Wenn es sich bei den Eingaben um semistrukturierte Arrays handelt, gibt die Funktion ein semistrukturiertes Array mit strukturierten Objekten zurück.
Wenn die Eingaben strukturierte Arrays sind, gibt die Funktion ein strukturiertes Array mit strukturierten Objekten zurück. Die Definition des strukturierten Objekts hängt von der Anzahl der Eingabearrays und den Typen von Werten in den Arrays ab.
Wenn eines der Eingabearrays NULL ist, gibt die Funktion NULL zurück.
Jedes Objekt enthält die Schlüssel-Wert-Paare für die Werte eines n-ten Elements in den Eingabearrays. Der Schlüssel ($1
, $2
, und so weiter) steht für die Position des Eingabearrays.
Nehmen wir zum Beispiel an, dass Sie folgende Arrays übergeben:
SELECT ARRAYS_ZIP(
[1, 2, 3],
['first', 'second', 'third'],
['i', 'ii', 'iii']
) AS zipped_arrays;
Die Funktion gibt das folgende Array von Objekten zurück:
+---------------------+
| ZIPPED_ARRAYS |
|---------------------|
| [ |
| { |
| "$1": 1, |
| "$2": "first", |
| "$3": "i" |
| }, |
| { |
| "$1": 2, |
| "$2": "second", |
| "$3": "ii" |
| }, |
| { |
| "$1": 3, |
| "$2": "third", |
| "$3": "iii" |
| } |
| ] |
+---------------------+
In dem zurückgegebenen Array:
Das erste Objekt enthält die ersten Elemente aller Eingabearrays.
Das zweite Objekt enthält die zweiten Elemente aller Eingabearrays.
Das dritte Objekt enthält die dritten Elemente aller Eingabearrays.
Die Schlüssel in den Objekten identifizieren das Eingabearray:
Die
$1
-Schlüssel-Wert-Paare enthalten die Werte aus dem ersten Eingabearray.Die
$2
-Schlüssel-Wert-Paare enthalten die Werte aus dem zweiten Eingabearray.Die
$3
-Schlüssel-Wert-Paare enthalten die Werte aus dem dritten Eingabearray.
Nutzungshinweise¶
Das zurückgegebene Array ist so lang wie das längste Eingabearray. Wenn einige Eingabearrays kürzer sind, verwendet die Funktion eine JSON-Null für die verbleibenden Elemente, die in den kürzeren Arrays fehlen.
Wenn das Eingabearray ein NULL-Element enthält, gibt die Funktion eine JSON-Null für dieses Element zurück.
Beispiele¶
Die folgenden Beispiele zeigen, wie die Funktion funktioniert:
Einzelnes Eingabearray¶
Das folgende Beispiel gibt ein Array von Objekten zurück, das das erste, zweite und dritte Element in einem einzigen Array enthält:
SELECT ARRAYS_ZIP(
[1, 2, 3]
) AS zipped_array;
+--------------+
| ZIPPED_ARRAY |
|--------------|
| [ |
| { |
| "$1": 1 |
| }, |
| { |
| "$1": 2 |
| }, |
| { |
| "$1": 3 |
| } |
| ] |
+--------------+
Mehrere Eingabearrays¶
Das folgende Beispiel gibt ein Array von Objekten zurück, das das erste, zweite und dritte Element in den Eingabearrays enthält:
SELECT ARRAYS_ZIP(
[1, 2, 3],
[10, 20, 30],
[100, 200, 300]
) AS zipped_array;
+---------------+
| ZIPPED_ARRAY |
|---------------|
| [ |
| { |
| "$1": 1, |
| "$2": 10, |
| "$3": 100 |
| }, |
| { |
| "$1": 2, |
| "$2": 20, |
| "$3": 200 |
| }, |
| { |
| "$1": 3, |
| "$2": 30, |
| "$3": 300 |
| } |
| ] |
+---------------+
Eingabe von Arrays mit unterschiedlichen Längen¶
Das folgende Beispiel übergibt Eingabearrays unterschiedlicher Länge. Für die Werte, die in den kürzeren Arrays fehlen, verwendet die Funktion eine JSON-Null im Objekt.
SELECT ARRAYS_ZIP(
[1, 2, 3],
['one'],
['I', 'II']
) AS zipped_array;
+------------------+
| ZIPPED_ARRAY |
|------------------|
| [ |
| { |
| "$1": 1, |
| "$2": "one", |
| "$3": "I" |
| }, |
| { |
| "$1": 2, |
| "$2": null, |
| "$3": "II" |
| }, |
| { |
| "$1": 3, |
| "$2": null, |
| "$3": null |
| } |
| ] |
+------------------+
Verarbeitung von NULL und leeren Arrays¶
Wie im folgenden Beispiel gezeigt, führt die Übergabe von NULL für ein Eingabearray dazu, dass die Funktion SQL NULL zurückgibt:
SELECT ARRAYS_ZIP(
[1, 2, 3],
NULL,
[100, 200, 300]
) AS zipped_array;
+--------------+
| ZIPPED_ARRAY |
|--------------|
| NULL |
+--------------+
Im folgenden Beispiel sind alle Eingabearrays leer, was dazu führt, dass die Funktion ein leeres Objekt zurückgibt:
SELECT ARRAYS_ZIP(
[], [], []
) AS zipped_array;
+--------------+
| ZIPPED_ARRAY |
|--------------|
| [ |
| {} |
| ] |
+--------------+
Im folgenden Beispiel sind einige der Elemente in den Eingabearrays NULL. In den zurückgegebenen Objekten sind die Werte für diese Elemente JSON-Nullen:
SELECT ARRAYS_ZIP(
[1, NULL, 3],
[NULL, 20, NULL],
[100, NULL, 300]
) AS zipped_array;
+-----------------+
| ZIPPED_ARRAY |
|-----------------|
| [ |
| { |
| "$1": 1, |
| "$2": null, |
| "$3": 100 |
| }, |
| { |
| "$1": null, |
| "$2": 20, |
| "$3": null |
| }, |
| { |
| "$1": 3, |
| "$2": null, |
| "$3": 300 |
| } |
| ] |
+-----------------+