Mapeo de elementos de origen de streaming a columnas de entrada de SQL - Guía para desarrolladores de Amazon Kinesis Data Analytics SQL para aplicaciones

Tras considerarlo detenidamente, hemos decidido interrumpir Amazon Kinesis Data Analytics SQL para aplicaciones en dos pasos:

1. A partir del 15 de octubre de 2025, no podrá crear nuevos Kinesis Data Analytics SQL para aplicaciones.

2. Eliminaremos sus aplicaciones a partir del 27 de enero de 2026. No podrá iniciar ni utilizar Amazon Kinesis Data Analytics SQL para aplicaciones. A partir de ese momento, el soporte para Amazon Kinesis Data Analytics dejará SQL de estar disponible. Para obtener más información, consulte Suspensión de Amazon Kinesis Data Analytics SQL for Applications.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Mapeo de elementos de origen de streaming a columnas de entrada de SQL

nota

Después del 12 de septiembre de 2023, no podrá crear nuevas aplicaciones con Kinesis Data Firehose como origen si aún no utiliza Kinesis Data Analytics para SQL. Para obtener más información, consulte Límites.

Con Amazon Kinesis Data Analytics, puede procesar y analizar datos de streaming en formatos JSON o CSV mediante SQL estándar.

  • Para procesar y analizar los datos CSV de streaming, debe asignar los nombres de columna y los tipos de datos para las columnas de la secuencia de entrada. Su aplicación importa una columna de la secuencia de entrada por definición de columna, en orden.

    No tiene que incluir todas las columnas en la secuencia de entrada de la aplicación, pero no puede omitir columnas de la secuencia de origen. Por ejemplo, puede importar las primeras tres columnas de una secuencia de entrada que contiene cinco elementos, pero no puede importar solo las columnas 1, 2 y 4.

  • Para procesar y analizar los datos de JSON de streaming, debe utilizar las expresiones JSONPath para asignar elementos JSON de un origen de streaming a las columnas de SQL en una secuencia de entrada. Para obtener más información sobre el uso de JSONPath con Amazon Kinesis Data Analytics, consulte Trabajar con JSONPath. Las columnas en la tabla SQL poseen los tipos de datos que se asignan a partir de tipos de JSON. Para conocer los tipos de datos compatibles, consulte Tipos de datos. Para obtener más información sobre la conversión de datos JSON en datos SQL, consulte Mapeo de tipos de datos JSON para los tipos de datos SQL.

Para obtener más información sobre cómo configurar las secuencias de entrada, consulte Configuración de entrada de la aplicación.

Mapeo de datos JSON a las columnas SQL

Puede asignar elementos JSON a columnas de entrada mediante la API de Kinesis Data Analytics AWS Management Console o la API.

  • Para asignar elementos a columnas con la consola, consulte Uso del editor de esquemas.

  • Para asignar elementos a columnas mediante API de Kinesis Data Analytics, consulte la siguiente sección.

Para asignar elementos JSON a columnas en la secuencia de entrada en la aplicación, necesita un esquema con la siguiente información para cada columna:

  • Expresión de origen: la expresión JSONPath que identifica la ubicación de los datos para la columna.

  • Nombre de la columna: el nombre que las consultas SQL utilizan para hacer referencia a los datos.

  • Tipo de datos: el tipo de datos SQL para la columna.

Uso de la API

Para asignar elementos de un origen de streaming a columnas de entrada, puede utilizar la acción CreateApplication de API de Kinesis Data Analytics. Para crear la secuencia en la aplicación, especifique un esquema para transformar los datos en una versión esquematizada utilizada en SQL. La CreateApplication acción configura su aplicación para que reciba entradas de un solo origen de streaming. Para asignar elementos JSON o columnas CSV a las columnas SQL, debe crear un RecordColumn objeto en la SourceSchema RecordColumns matriz. El RecordColumn objeto tiene el siguiente esquema:

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

Los campos en el RecordColumn objeto tienen los siguientes valores:

  • Mapping: la expresión JSONPath que identifica la ubicación de los datos en el registro de secuencia de entrada. Este valor no está presente para un esquema de entrada para una secuencia de origen en formato CSV.

  • Name: el nombre de columna en el flujo de datos SQL en la aplicación.

  • SqlType: el tipo de datos de los datos en el flujo de datos SQL en la aplicación.

Ejemplo del esquema de entrada JSON

El siguiente ejemplo ilustra el formato del InputSchema valor para un esquema JSON.

"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" }

Ejemplo de esquema de entrada de CSV

El siguiente ejemplo ilustra el formato del InputSchema valor de un esquema en formato de valor separado por coma (CSV).

"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" }

Mapeo de tipos de datos JSON para los tipos de datos SQL

Los tipos de datos JSON se convierten en tipos de datos SQL correspondientes en función del esquema de entrada de la aplicación. Para obtener información acerca de los tipos de datos de SQL compatibles, consulte Tipos de datos. Amazon Kinesis Data Analytics convierte los tipos de datos de JSON en tipos de datos SQL conforme a las reglas siguientes.

Literal nulo

Un literal nulo en la secuencia de entrada de JSON (es decir, "City":null) se convierte en un SQL nulo independientemente del tipo de datos de destino.

Literal booleano

Un literal booleano en la secuencia de entrada de JSON (es decir, "Contacted":true) se convierte en datos SQL de la siguiente manera:

  • Numérico, (DECIMAL, INT, etc.): true se convierte en 1; false se convierte en 0.

  • Binario (BINARY o VARBINARY):

    • true: El resultado tiene un conjunto de bits más bajo y ha borrado bits restantes.

    • false: El resultado ha borrado todos los bits.

    La conversión a VARBINARY genera un valor 1 bit de largo.

  • BOOLEAN: se convierte al correspondiente valor BOOLEANO SQL correspondiente.

  • Carácter (CHAR o VARCHAR): se convierte al valor de cadena correspondiente (true o false). El valor está truncado para adaptarse a la longitud del campo.

  • Datetime (DATE, TIME o TIMESTAMP): falla la conversión y un error de coerción se escribe en la secuencia de errores.

Número

Un literal de número en la secuencia de entrada de JSON (es decir, "CustomerId":67321) se convierte en datos SQL de la siguiente manera:

  • Numérico (DECIMAL, INT, etc.): se convierte directamente. Si el valor convertido supera el tamaño o precisión del tipo de datos de destino (es decir, convertir 123.4 a INT), falla la conversión y se genera un error de coerción en la secuencia de errores.

  • Binario (BINARY o VARBINARY): falla la conversión y se genera un error de coerción en la secuencia de errores.

  • BOOLEAN:

    • 0: se convierte en false.

    • Todos otros números: se convierten en true.

  • Carácter (CHAR o VARCHAR): se convierte en una representación de cadena del número.

  • Datetime (DATE, TIME o TIMESTAMP): falla la conversión y un error de coerción se escribe en la secuencia de errores.

Cadena

Un valor de cadena en la secuencia de entrada de JSON (es decir, "CustomerName":"John Doe") se convierte en datos SQL de la siguiente manera:

  • Numérico (DECIMAL, INT, etc.): Amazon Kinesis Data Analytics intenta convertir el valor en el tipo de datos de destino. Si el valor no se puede convertir, falla la conversión y se genera un error de coerción en la secuencia de errores.

  • Binario (BINARY o VARBINARY): Si la cadena de origen es literal binaria válida (es decir, X'3F67A23A'con un número par de f), el valor se convierte en el tipo de datos de destino. De lo contrario, falla la conversión y se genera un error de coerción en la secuencia de errores.

  • BOOLEAN: Si la cadena de origen es "true", se convierte en true. Esta comparación distingue entre mayúsculas y minúsculas. De lo contrario, se convierte en false.

  • Carácter (CHAR o VARCHAR): se convierte en el valor de cadena en la entrada. Si el valor es mayor que el tipo de datos de destino, es truncado y no se escribe ningún error en la secuencia de errores.

  • Datetime (DATE, TIME o TIMESTAMP): si la cadena de origen está en un formato que puede convertirse en el valor de destino, el valor se convierte. De lo contrario, falla la conversión y se genera un error de coerción en la secuencia de errores.

    Los formatos de marca temporal válidos son:

    • "1992-02-14"

    • "1992-02-14 18:35:44.0"

Matriz u objeto

Una matriz u objeto en la secuencia de entrada de JSON se convierte en datos SQL de la siguiente manera:

  • Carácter (CHAR o VARCHAR): se convierte en el texto de origen de la matriz u objeto. Consulte Acceso a matrices.

  • Todos los otros tipos de datos: falla la conversión y se genera un error de coerción en la secuencia de errores.

Para ver un ejemplo de la matriz de JSON, consulte Trabajar con JSONPath.

Temas relacionados