SUPER-Konfigurationen - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

SUPER-Konfigurationen

Beachten Sie die folgenden Überlegungen zu SUPER-Konfigurationen, wenn Sie den SUPER-Datentyp von Amazon Redshift und PartiQL verwenden.

Lax und strenge Modi für SUPER

Wenn Sie SUPER-Daten abfragen, stimmt der Pfadausdruck möglicherweise nicht mit der tatsächlichen SUPER-Datenstruktur überein. Wenn Sie versuchen, auf ein nicht vorhandenes Mitglied eines Objekts oder Elements eines Arrays zuzugreifen, gibt Amazon Redshift einen NULL-Wert zurück, wenn Ihre Abfrage im Standard-Lax-Modus. Wenn Sie Ihre Abfrage im strikten Modus ausführen, gibt Amazon Redshift einen Fehler zurück. Die folgenden Sitzungsparameter können eingestellt werden, um den Lax-Modus ein- oder auszuschalten.

Im folgenden Beispiel werden Sitzungsparameter verwendet, um den Lax-Modus zu aktivieren.

SET navigate_super_null_on_error=ON; --default lax mode for navigation SET cast_super_null_on_error=ON; --default lax mode for casting SET parse_super_null_on_error=OFF; --default strict mode for ingestion

Zugriff auf JSON-Felder mit Feldnamen oder Attributen in Großschreibung und gemischter Groß-/Kleinschreibung

Wenn Ihre JSON-Attributnamen Groß- oder gemischte Groß-/Kleinschreibung aufweisen, müssen Sie in der Lage sein, unter Beachtung der Groß- und Kleinschreibung in SUPER-Typstrukturen zu navigieren. Dazu können Sie enable_case_sensitive_identifier auf TRUE setzen und die Attributnamen in Groß- und gemischter Groß-/Kleinschreibung in doppelte Anführungszeichen setzen. Sie können auch enable_case_sensitive_super_attribute auf TRUE setzen. In diesem Fall können Sie in Ihren Abfragen Attributnamen in Großschreibung und gemischter Groß-/Kleinschreibung verwenden, ohne sie in doppelte Anführungszeichen zu setzen.

Das folgende Beispiel zeigt, wie Sie enable_case_sensitive_identifier festlegen, um Daten abzufragen.

SET enable_case_sensitive_identifier to TRUE; -- Accessing JSON attribute names with uppercase and mixedcase names SELECT json_table.data."ITEMS"."Name", json_table.data."price" FROM (SELECT json_parse('{"ITEMS":{"Name":"TV"}, "price": 345}') AS data) AS json_table; Name | price ------+------- "TV" | 345 (1 row) RESET enable_case_sensitive_identifier; -- After resetting the above configuration, the following query accessing JSON attribute names with uppercase and mixedcase names should return null (if in lax mode). SELECT json_table.data."ITEMS"."Name", json_table.data."price" FROM (SELECT json_parse('{"ITEMS":{"Name":"TV"}, "price": 345}') AS data) AS json_table; name | price ------+------- | 345 (1 row)

Das folgende Beispiel zeigt, wie Sie enable_case_sensitive_super_attribute festlegen, um Daten abzufragen.

SET enable_case_sensitive_super_attribute to TRUE; -- Accessing JSON attribute names with uppercase and mixedcase names SELECT json_table.data.ITEMS.Name, json_table.data.price FROM (SELECT json_parse('{"ITEMS":{"Name":"TV"}, "price": 345}') AS data) AS json_table; name | price -----+------- "TV" | 345 (1 row) RESET enable_case_sensitive_super_attribute; -- After resetting enable_case_sensitive_super_attribute, the query now returns NULL for ITEMS.Name (if in lax mode). SELECT json_table.data.ITEMS.Name, json_table.data.price FROM (SELECT json_parse('{"ITEMS":{"Name":"TV"}, "price": 345}') AS data) AS json_table; name | price -----+------- | 345 (1 row)

Parsing-Optionen für SUPER

Wenn Sie die Funktion JSON_PARSE zum Parsing von JSON-Zeichenfolgen in SUPER-Werte verwenden, gelten bestimmte Einschränkungen:

  • Derselbe Attributname kann nicht in demselben Objekt vorkommen, aber in einem verschachtelten Objekt verwendet werden. Die Konfigurationsoption json_parse_dedup_attributes bietet JSON_PARSE die Möglichkeit, nur das letzte Auftreten doppelter Attribute beizubehalten, anstatt einen Fehler zurückzugeben.

  • Zeichenfolgenwerte dürfen die maximale Varchar-Größe des Systems von 65535 Byte nicht überschreiten. Die Konfigurationsoption json_parse_truncate_strings bietet JSON_PARSE() die Möglichkeit, Zeichenfolgen, die länger als dieser Grenzwert sind, automatisch zu verkürzen, ohne einen Fehler zurückzugeben. Dieses Verhalten wirkt sich nur auf Zeichenfolgenwerte und nicht auf Attributnamen aus.

Weitere Informationen zur Funktion JSON_PARSE finden Sie unter Funktion JSON_PARSE.

Im folgenden Beispiel wird gezeigt, wie Sie für die Konfigurationsoption json_parse_dedup_attributes das Standardverhalten, also die Rückgabe eines Fehlers bei doppelten Attributen, festlegen.

SET json_parse_dedup_attributes=OFF; --default behavior of returning error instead of de-duplicating attributes

Im folgenden Beispiel wird gezeigt, wie Sie für die Konfigurationsoption json_parse_truncate_strings das Standardverhalten, also die Rückgabe eines Fehlers bei Zeichenfolgen, die diesen Grenzwert überschreiten, festlegen.

SET json_parse_truncate_strings=OFF; --default behavior of returning error instead of truncating strings