Zuweisung von Streaming-Quellenelementen zu SQL-Eingabespalten - Entwicklerhandbuch für Amazon Kinesis Data Analytics for SQL Applications

Für neue Projekte empfehlen wir, den neuen Managed Service für Apache Flink Studio anstelle von Kinesis Data Analytics for SQL Applications zu verwenden. Der Managed Service für Apache Flink Studio kombiniert Benutzerfreundlichkeit mit fortschrittlichen Analysefunktionen, sodass Sie in wenigen Minuten anspruchsvolle Anwendungen zur Stream-Verarbeitung erstellen können.

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.

Zuweisung von Streaming-Quellenelementen zu SQL-Eingabespalten

Anmerkung

Nach dem 12. September 2023 können Sie keine neuen Anwendungen mit Kinesis Data Firehose als Quelle erstellen, wenn Sie Kinesis Data Analytics für SQL nicht bereits verwenden. Weitere Informationen finden Sie unter Limits.

Mit Amazon Kinesis Data Analytics können Sie mithilfe von Standard-SQL Streaming-Daten im JSON- oder CSV-Format verarbeiten und analysieren.

  • Um Streaming-CSV-Daten zu verarbeiten und zu analysieren, weisen Sie den Spalten im Eingabe-Stream Spaltennamen und Datentypen zu. Ihre Anwendung importiert pro Spaltendefinition der Reihe nach eine einzelne Spalte aus dem Eingabe-Stream.

    Sie müssen nicht alle Spalten im Anwendungs-Eingabe-Stream einschließen. Sie können jedoch keine Spalten aus dem Quell-Stream überspringen. Sie können beispielsweise die ersten drei Spaltenaus einem Eingabe-Stream mit fünf Elemente importieren. Sie können jedoch nicht nur die Spalten 1, 2 und 4 importieren.

  • Um Streaming-JSON-Daten zu verarbeiten und zu analysieren, verwenden Sie JSONPath Ausdrücke, um JSON-Elemente aus einer Streaming-Quelle zu SQL-Spalten in einem Eingabe-Stream zuzuordnen. Weitere Informationen über die Benutzung von JSONPath mit Amazon Kinesis Data Analytics finden Sie unter Arbeiten mit JSONPath. Die Spalten in der SQL-Tabelle haben Datentypen, die von JSON-Typen zugeordnet wurden. Weitere Informationen zu unterstützten Datentypen finden Sie unter Datentypen. Weitere Informationen zum Umwandeln von JSON-Daten in SQL-Daten finden Sie unter Zuweisung von JSON-Datentypen zu SQL-Datentypen.

Weitere Informationen zum Konfigurieren von Eingabe-Streams finden Sie unter Konfigurieren der Anwendungseingabe.

Zuweisung von JSON-Daten zu SQL-Spalten

Sie können JSON-Elemente Eingabespalten mithilfe der AWS Management Console oder der Kinesis Data Analytics API zuordnen.

  • Informationen zum Zuordnen von Elementen zu Spalten mithilfe der Konsole finden Sie unter Arbeiten mit dem Schema-Editor.

  • Informationen zum Zuordnen von Elementen zu Spalten mithilfe der Kinesis Data Analytics-API finden Sie im folgenden Abschnitt.

Um JSON-Elemente zu Spalten im In-Application-Eingabe-Stream zuzuordnen, benötigen Sie ein Schema die folgenden Informationen für jede Spalte:

  • Quellausdruck: Der JSONPath-Ausdruck, der den Speicherort der Daten für die Spalte bezeichnet.

  • Spaltenname: Der Name, den Ihre SQL-Abfragen verwenden, um die Daten zu referenzieren.

  • Datentyp: Der SQL-Datentyp der Spalte.

Verwenden der API

Um Elemente aus einer Streaming-Quelle zu Eingabespalten zuzuordnen, können Sie die Kinesis Data Analytics-API-Aktion CreateApplication verwenden. Um den In-Application-Stream zu erstellen, geben Sie ein Schema für die Umwandlung Ihrer Daten in eine schematisierte Version an, die in SQL verwendet wird. Die Aktion CreateApplication konfiguriert Ihre Anwendung für den Empfang von Eingaben aus einer einzelnen Streaming-Quelle. Um JSON-Elemente oder CSV-Spalten zu SQL-Spalten zuzuordnen, erstellen Sie ein RecordColumn-Objekt im SourceSchema RecordColumns-Array. Das RecordColumn-Objekt hat das folgende Schema:

{ "Mapping": "String", "Name": "String", "SqlType": "String" }

Die Felder im RecordColumn-Objekt haben die folgenden Werte:

  • Mapping: Der JSONPath-Ausdruck, der den Speicherort der Daten im Eingabe-Stream-Datensatz angibt. Dieser Wert ist für ein Eingabeschema für einen Quell-Stream im CSV-Format nicht vorhanden.

  • Name: der Spaltenname im In-Application-SQL-Daten-Stream.

  • SqlType: der Datentyp der Daten im In-Application-SQL-Daten-Stream.

Beispiel für ein JSON-Eingabeschema

Das folgende Beispiel zeigt das Format des InputSchema-Werts für ein JSON-Schema.

"InputSchema": { "RecordColumns": [ { "SqlType": "VARCHAR(4)", "Name": "TICKER_SYMBOL", "Mapping": "$.TICKER_SYMBOL" }, { "SqlType": "VARCHAR(16)", "Name": "SECTOR", "Mapping": "$.SECTOR" }, { "SqlType": "TINYINT", "Name": "CHANGE", "Mapping": "$.CHANGE" }, { "SqlType": "DECIMAL(5,2)", "Name": "PRICE", "Mapping": "$.PRICE" } ], "RecordFormat": { "MappingParameters": { "JSONMappingParameters": { "RecordRowPath": "$" } }, "RecordFormatType": "JSON" }, "RecordEncoding": "UTF-8" }

Beispiel für ein CSV-Eingabeschema

Das folgende Beispiel zeigt das Format des InputSchema-Werts für ein Schema im CSV-Format (durch Komma getrennte Werte).

"InputSchema": { "RecordColumns": [ { "SqlType": "VARCHAR(16)", "Name": "LastName" }, { "SqlType": "VARCHAR(16)", "Name": "FirstName" }, { "SqlType": "INTEGER", "Name": "CustomerId" } ], "RecordFormat": { "MappingParameters": { "CSVMappingParameters": { "RecordColumnDelimiter": ",", "RecordRowDelimiter": "\n" } }, "RecordFormatType": "CSV" }, "RecordEncoding": "UTF-8" }

Zuweisung von JSON-Datentypen zu SQL-Datentypen

JSON-Datentypen werden entsprechend dem Eingabeschema der Anwendung in die entsprechenden SQL-Datentypen umgewandelt. Weitere Informationen zu unterstützten SQL-Datentypen finden Sie unter Datentypen. Amazon Kinesis Data Analytics wandelt JSON-Datentypen entsprechend den folgenden Regeln in SQL-Datentypen um.

Null-Literal

Ein Null-Literal im JSON-Eingabe-Stream (d. h. "City":null) wird unabhängig vom Zieldatentyp in einen SQL-Nullwert umgewandelt.

Boolesches Literal

Ein boolesches Literal im JSON-Eingabe-Stream (d. h. "Contacted":true) wird wie folgt in SQL-Daten umgewandelt:

  • Numerisch (DECIMAL, INT usw.): true wird in 1, false wird in 0 umgewandelt.

  • Binär (BINARY oder VARBINARY):

    • true: Ergebnis hat den niedrigsten Bitsatz und die verbleibenden Bits sind gelöscht.

    • false: Alle Bits im Ergebnis sind gelöscht.

    Die Umwandlung in VARBINARY führt zum Längenwert 1 Byte.

  • BOOLEAN: wird in den entsprechenden SQL BOOLEAN-Wert umgewandelt.

  • Zeichen (CHAR oder VARCHAR): wird in den entsprechenden Zeichenfolgenwert (true oder false) umgewandelt. Der Wert wird abgeschnitten, um an die Feldlänge angepasst zu werden.

  • Datum/Uhrzeit (DATE, TIME oder TIMESTAMP): Die Umwandlung schlägt fehl und es wird ein Erzwingungsfehler in den Fehler-Stream geschrieben.

Zahl

Ein numerisches Literal im JSON-Eingabe-Stream (d. h. "CustomerId":67321) wird wie folgt in SQL-Daten umgewandelt:

  • Numerisch (DECIMAL, INT usw.): wird direkt umgewandelt. Wenn der umgewandelte Wert die Größe oder Genauigkeit des Zieldatentyps überschreitet (d. h. 123.4 wird in INT umgewandelt), schlägt die Umwandlung fehl und es wird ein Erzwingungsfehler in den Fehler-Stream geschrieben.

  • Binär (BINARY oder VARBINARY): Die Umwandlung schlägt fehl und es wird ein Erzwingungsfehler in den Fehler-Stream geschrieben.

  • BOOLESCH:

    • 0: wird in false umgewandelt.

    • Alle anderen Zahlen: werden in true umgewandelt.

  • Zeichen (CHAR oder VARCHAR): wird in eine Zeichenfolgendarstellung der Zahl umgewandelt.

  • Datum/Uhrzeit (DATE, TIME oder TIMESTAMP): Die Umwandlung schlägt fehl und es wird ein Erzwingungsfehler in den Fehler-Stream geschrieben.

String

Ein Zeichenfolgenwert im JSON-Eingabe-Stream (d. h. "CustomerName":"John Doe") wird wie folgt in SQL-Daten umgewandelt:

  • Numerisch (DECIMAL, INT usw.): Amazon Kinesis Data Analytics versucht, den Wert in den Zieldatentyp umzuwandeln. Wenn der Wert nicht umgewandelt werden kann, schlägt die Umwandlung fehl und es wird ein Erzwingungsfehler in den Fehler-Stream geschrieben.

  • Binär (BINARY oder VARBINARY): Wenn die Quellzeichenfolge ein gültiges binäres Literal ist (d. h. X'3F67A23A' mit einer geraden Anzahl von f), wird der Wert in den Zieldatentyp umgewandelt. Andernfalls schlägt die Umwandlung fehl und es wird ein Erzwingungsfehler in den Fehler-Stream geschrieben.

  • BOOLEAN: Wenn die Quellzeichenfolge "true" ist, wird sie in true umgewandelt. Bei diesem Vergleich wird die Groß-/Kleinschreibung nicht beachtet. Andernfalls wird sie in false umgewandelt.

  • Zeichen (CHAR oder VARCHAR): wird in den Zeichenfolgenwert in der Eingabe umgewandelt. Wenn der Wert länger als der Zieldatentyp ist, wird er abgeschnitten und es wird kein Fehler in den Fehler-Stream geschrieben.

  • Datum/Uhrzeit (DATE, TIME oder TIMESTAMP): Wenn die Quellzeichenfolge in einem Format erstellt wurde, das in den Zielwert umgewandelt werden kann, wird der Wert umgewandelt. Andernfalls schlägt die Umwandlung fehl und es wird ein Erzwingungsfehler in den Fehler-Stream geschrieben.

    Gültige datetime-Formate sind:

    • „1992-02-14“

    • „1992-02-14 18:35:44.0“

Array oder Object

Ein Array oder Objekt im JSON-Eingabe-Stream wird wie folgt in SQL-Daten umgewandelt:

  • Zeichen (CHAR oder VARCHAR): wandelt den Quelltext des Arrays oder Objekts um. Siehe Zugriff auf Arrays.

  • Alle anderen Datentypen: Die Umwandlung schlägt fehl und es wird ein Erzwingungsfehler in den Fehler-Stream geschrieben.

Ein Beispiel für ein JSON-Array finden Sie unter Arbeiten mit JSONPath.

Verwandte Themen