Halbstrukturierte Daten in Amazon Redshift - Amazon Redshift

Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting.

Halbstrukturierte Daten in Amazon Redshift

Durch die Unterstützung halbstrukturierter Daten in Amazon Redshift können Sie halbstrukturierte Daten in Ihren Data Warehouses von Amazon Redshift erfassen und speichern. Mithilfe des SUPER-Datentyps und der PartiQL-Sprache erweitert Amazon Redshift die Data-Warehouse-Funktion, um sowohl SQL- als auch NoSQL-Datenquellen zu integrieren. Auf diese Weise ermöglicht Amazon Redshift effiziente Analytik von relationalen und halbstrukturierten gespeicherten Daten wie etwa JSON. Informationen zur Amazon-Redshift-Integration mit PartiQL finden Sie unter PartiQL – eine SQL-kompatible Abfragesprache für Amazon Redshift.

Amazon Redshift unterstützt halbstrukturierte Daten auf zwei Weisen: den SUPER-Datentyp und Amazon Redshift Spectrum.

Sie können halbstrukturierte Daten abfragen, indem Sie sie in Amazon Redshift aufnehmen und im SUPER-Datentyp speichern, oder Amazon Redshift Spectrum verwenden, um die in Amazon S3 gespeicherten Daten abzufragen.

Bewährte Methoden für die Arbeit mit halbstrukturierten Daten

Verwenden Sie die folgenden bewährten Methoden bei der Arbeit mit halbstrukturierten Daten.

  • Wir empfehlen, die Konfigurationsoptionen enable_case_sensitive_super_attribute und enable_case_sensitive_identifier auf „true“ zu setzen, wenn Sie mit SUPER-Daten arbeiten. Weitere Informationen finden Sie unter enable_case_sensitive_super_attribute und enable_case_sensitive_identifier.

  • Verwenden Sie den Befehl COPY, um Daten aus Amazon-S3-Buckets in SUPER-Spalten von Amazon Redshift zu laden.

  • Verwenden Sie die dynamische Typisierung von PartiQL und Lax-Semantik, um Ad-hoc-Abfragen für SUPER-Datenwerte auszuführen, ohne dass Sie vor der Abfrage ein Schema vorschreiben müssen. Hinweise zur dynamischen Typisierung finden Sie unter Dynamische Typisierung. Informationen zur Lax-Semantik finden Sie unter Lax-Semantik.

  • Unterteilen Sie schemalose und halbstrukturierte Daten mit PartiQL in materialisierte Ansichten, wenn Sie die Daten häufig abfragen möchten. Wenn Sie Analysen für die aufgeteilten Daten durchführen, bietet die spaltenförmige Organisation der materialisierten Ansichten von Amazon Redshift eine bessere Leistung. Darüber hinaus können Benutzer und Business Intelligence (BI)-Tools, die ein konventionelles Schema für aufgenommene Daten erfordern, Ansichten (entweder materialisiert oder virtuell) als konventionelle Schemadarstellung der Daten verwenden.

    Nachdem Ihre mit PartiQL materialisierten Ansichten die in JSON oder SUPER gefundenen Daten in konventionelle spaltenförmige materialisierte Ansichten extrahiert haben, können Sie die materialisierten Ansichten abfragen. Informationen zu materialisierten Ansichten finden Sie unter Materialisierte Ansichten in Amazon Redshift. Weitere Informationen über die Funktionsweise des SUPER-Datentyps mit materialisierten Ansichten finden Sie unter SUPER-Datentyp mit materialisierten Ansichten.

Konzepte zur Verwendung des SUPER-Datentyps

Im Folgenden finden Sie einige Konzepte zum SUPER-Datentyp in Amazon Redshift.

Verstehen des SUPER-Datentyps in Amazon Redshift – Der SUPER-Datentyp ist ein Amazon-Redshift-Datentyp, der die Speicherung von schemalosen Arrays und Strukturen ermöglicht, die Amazon-Redshift-Skalare und möglicherweise verschachtelte Arrays und Strukturen enthalten. Der SUPER-Datentyp kann nativ verschiedene Formate von halbstrukturierten Daten speichern, z. B. JSON oder Daten, die aus dokumentorientierten Quellen stammen. Sie können eine neue SUPER-Spalte hinzufügen, um halbstrukturierte Daten zu speichern und Abfragen zu schreiben, die auf die SUPER-Spalte zugreifen, zusammen mit den üblichen skalaren Spalten. Weitere Informationen zum SUPER-Datentyp finden Sie unter Typ SUPER.

Aufnehmen von JSON ohne Schema in SUPER – Mit dem flexiblen halbstrukturierten SUPER-Datentyp kann Amazon Redshift JSON ohne Schema in Spalten mit dem Datentyp SUPER aufnehmen. Sie können den JSON-Wert [10.5, “first”] beispielsweise mit dem Befehl COPY in eine Spalte mit dem Datentyp SUPER aufnehmen. Die Spalte würde dann einen SUPER-Wert von [10.5, ‘first’] enthalten. Sie können JSON auch mit Funktion JSON_PARSE aufnehmen. Sowohl COPY als auch json_parse erfassen JSON standardmäßig mit strikter Parsing-Semantik. Sie können auch SUPER-Werte einschließlich Arrays und Strukturen erstellen, indem Sie die Datenbankdaten selbst verwenden.

Die SUPER-Spalte erfordert keine Schemaänderungen, während die flexiblen Strukturen von schemalosem JSON aufgenommen werden. Wenn Sie beispielsweise einen Clickstream analysieren, speichern Sie zunächst in der SUPER-Spalte „Click“-Strukturen mit den Attributen „IP“ und „Zeit“. Sie können ein Attribut „Kunden-ID“ hinzufügen, ohne Ihr Schema zu ändern, um solche Änderungen aufzunehmen.

Das native Format, das für den Datentyp SUPER verwendet wird, ist ein Binärformat, das weniger Platz benötigt als der JSON-Wert in seiner Textform. Dies ermöglicht eine schnellere Erfassung und Laufzeitverarbeitung von SUPER-Werten bei der Abfrage.

Abfragen von SUPER-Daten mit PartiQL – PartiQL ist eine abwärtskompatible Erweiterung von SQL-92, die viele AWS-Services derzeit verwenden. Mit der Verwendung von PartiQL verbinden vertraute SQL-Konstrukte nahtlos den Zugriff auf die klassischen, tabellarischen SQL-Daten und die halbstrukturierten Daten von SUPER. Sie können Objekt- und Array-Navigation und unnest-Arrays durchführen. PartiQL erweitert die SQL-Standardsprache, um verschachtelte und mehrwertige Daten deklarativ auszudrücken und zu verarbeiten.

PartiQL ist eine Erweiterung von SQL, bei der verschachtelte und schemalose Daten aus SUPER-Spalten als First-Class-Objekte gelten. PartiQL erfordert nicht, dass alle Abfrageausdrücke bei der Abfragekompilierung typgeprüft werden. Mit diesem Ansatz können Abfrageausdrücke, die den SUPER-Datentyp enthalten, während der Abfrageausführung dynamisch typisiert werden, wenn auf die tatsächlichen Datentypen innerhalb der SUPER-Spalten zugegriffen wird. Außerdem arbeitet PartiQL in einem Lax-Modus, in dem Typ-Inkonsistenzen keine Fehler verursachen, sondern Nullwerte zurückgeben. Die Kombination aus schemaloser und Lax-Abfrageverarbeitung macht PartiQL ideal für ELT-Anwendungen (Extract, Load, Transform), bei denen Ihre SQL-Abfrage die JSON-Daten auswertet, die in den SUPER-Spalten aufgenommen werden.

Weitere Informationen zu PartiQL für Amazon Redshift finden Sie unter PartiQL – eine SQL-kompatible Abfragesprache für Amazon Redshift. Hinweise zur dynamischen Typisierung finden Sie unter Dynamische Typisierung. Informationen zur Verarbeitung von Lax-Abfragen finden Sie unter Lax-Semantik.

Integration mit Redshift Spectrum – Amazon Redshift unterstützt mehrere Aspekte von PartiQL beim Ausführen von Redshift-Spectrum-Abfragen über JSON, Parquet und andere Formate, die verschachtelte Daten aufweisen. Redshift Spectrum unterstützt nur verschachtelte Daten mit Schemata. Mit Redshift Spectrum können Sie beispielsweise deklarieren, dass Ihre JSON-Daten das Attribut nested_schemaful_example im Schema ARRAY<STRUCT<a:INTEGER, b:DECIMAL(5,2)>> haben. Das Schema dieses Attributs bestimmt, dass die Daten immer ein Array enthalten, das eine Struktur mit Integer a und Dezimalwert b enthält. Wenn sich die Daten so ändern, dass sie weitere Attribute enthalten, ändert sich auch der Typ. Im Gegensatz dazu benötigt der SUPER-Datentyp kein Schema. Sie können Arrays mit Strukturelementen speichern, die unterschiedliche Attribute oder Typen haben. Außerdem können Werte außerhalb von Arrays gespeichert werden.

Überlegungen zur Verwendung von Daten des Typs SUPER

Bei der Arbeit mit SUPER-Daten sollten Sie Folgendes berücksichtigen:

Weitere Informationen zu SUPER-Konfigurationen finden Sie unter SUPER-Konfigurationen.