Vereinfacht bzw. löst zusammengesetzte Werte in mehrere Zeilen auf.
FLATTEN ist eine Tabellenfunktion, die eine VARIANT-, OBJECT- oder ARRAY-Spalte nutzt, um eine laterale Ansicht zu erzeugen. Dies ist eine Inline-Ansicht, die Korrelation bezüglich anderer Tabellen enthält, die ihr in der FROM-Klausel vorangehen.
FLATTEN kann verwendet werden, um semistrukturierte Daten in eine relationale Darstellung zu konvertieren.
Der Ausdruck, der in Zeilen vereinfacht werden soll. Der Ausdruck muss den Datentyp VARIANT, OBJECT oder ARRAY aufweisen.
Optional:
PATH=>constant_expr
Der Pfad zu dem Element in einer VARIANT-Datenstruktur, das vereinfacht werden soll. Kann eine Zeichenfolge der Länge null (d. h ein leerer Pfad) sein, wenn das äußerste Element vereinfacht werden soll.
Standard: Zeichenfolge der Länge null (d. h. leerer Pfad)
OUTER=>TRUE|FALSE
Bei FALSE werden alle Eingabezeilen, die sich nicht erweitern lassen, entweder weil auf sie im Pfad nicht zugegriffen werden kann oder weil sie keine Felder oder Einträge enthalten, in der Ausgabe vollständig weggelassen.
Bei TRUE wird für Null-Zeilen-Erweiterungen genau eine Zeile generiert (mit NULL in den Spalten KEY, INDEX und VALUE).
Standard: FALSE
Bemerkung
Eine Null-Zeilen-Erweiterung eines leeren Verbunds zeigt in der NULL-Ausgabespalte THIS an. Dadurch wird vom Versuch unterschieden, eine nicht vorhandene oder falsche Art von Verbund zu erweitern.
RECURSIVE=>TRUE|FALSE
Bei FALSE wird nur das von PATH referenzierte Element erweitert.
Bei TRUE wird die Erweiterung für alle Unterelemente rekursiv ausgeführt.
Standard: FALSE
MODE=>'OBJECT'|'ARRAY'|'BOTH'
Gibt an, ob nur Objekte, Arrays oder beide vereinfacht werden sollen.
Die zurückgegebenen Zeilen bestehen aus einer festen Menge von Spalten:
+-----+------+------+-------+-------+------+| SEQ | KEY | PATH | INDEX | VALUE | THIS ||-----+------+------+-------+-------+------|
SEQ:
Eine eindeutige Sequenznummer, die dem Eingabedatensatz zugeordnet ist; es ist nicht garantiert, dass die Sequenz lückenlos ist oder auf eine bestimmte Weise angeordnet wird.
KEY:
Bei Karten oder Objekten enthält diese Spalte den Schlüssel für den aufgelösten Wert.
PATH:
Der Pfad zu dem Element in einer Datenstruktur, das vereinfacht werden soll.
INDEX:
Der Index des Elements, wenn es sich um ein Array handelt; sonst NULL.
VALUE:
Der Wert des Elements des vereinfachten Arrays/Objekts.
THIS:
Das Element, das vereinfacht wird (nützlich für das rekursive Vereinfachen).
Bemerkung
Die Spalten der ursprünglichen (korrelierten) Tabelle, die als Datenquelle für FLATTEN verwendet wurde, sind ebenfalls aufrufbar. Wenn eine einzelne Zeile der ursprünglichen Tabelle in der vereinfachten Ansicht zu mehreren Zeilen führt, werden die Werte in dieser Eingabezeile entsprechend der Zahl der von FLATTEN erzeugten Zeilen repliziert.
Bei einstufigen Arrays führen TABLE(FLATTEN(...)) und LATERALFLATTEN(...) zu demselben Ergebnis. Verwenden Sie für verschachtelte Datenstrukturen, bei denen Sie mehrere FLATTEN-Aufrufe verketten müssen, LATERAL, sodass jeder nachfolgende FLATTEN-Aufruf die Ausgabe des vorherigen referenzieren kann.
+-----+-----+------+-------+-------+------+| SEQ | KEY | PATH | INDEX | VALUE | THIS ||-----+-----+------+-------+-------+------|+-----+-----+------+-------+-------+------+
Die folgende Abfrage verwendet mehrere LATERAL FLATTEN-Aufrufe. LATERAL ist hier erforderlich, weil der zweite FLATTEN-Aufruf die Ausgabe des ersten Aufrufs (f.value:business) referenziert. Ohne LATERAL könnte der zweite FLATTEN-Aufruf nicht auf die Spalten des ersten Aufrufs zugreifen.