Tras considerarlo detenidamente, hemos decidido retirar las aplicaciones de Amazon Kinesis Data Analytics para SQL en dos pasos:
1. A partir del 15 de octubre de 2025, no podrá crear nuevas aplicaciones de Kinesis Data Analytics para SQL.
2. Eliminaremos sus aplicaciones a partir del 27 de enero de 2026. No podrá iniciar ni utilizar sus aplicaciones de Amazon Kinesis Data Analytics para SQL. A partir de ese momento, el servicio de soporte de Amazon Kinesis Data Analytics para SQL dejará de estar disponible. Para obtener más información, consulte Retirada de las aplicaciones de Amazon Kinesis Data Analytics para SQL.
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.
Trabajando con JSONPath
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.
JSONPath es una forma estandarizada de consultar los elementos de un objeto JSON. JSONPath utiliza expresiones de ruta para navegar por los elementos, los elementos anidados y las matrices de un documento JSON. Para obtener más información acerca de JSON, consulte Introducing JSON
Amazon Kinesis Data Analytics JSONPath utiliza expresiones en el esquema de origen de la aplicación para identificar los elementos de datos de una fuente de streaming que contiene datos en formato JSON.
Para obtener más información sobre cómo mapear los datos de streaming al flujo de entrada de la aplicación, consulte Mapeo de elementos de origen de streaming a columnas de entrada de SQL.
Acceder a JSON Elements con JSONPath
A continuación, encontrará información sobre cómo usar JSONPath expresiones para acceder a varios elementos de datos con formato JSON. Para los ejemplos de esta sección, suponga que la secuencia de origen contiene el siguiente registro de JSON:
{ "customerName":"John Doe", "address": { "streetAddress": [ "number":"123", "street":"AnyStreet" ], "city":"Anytown" } "orders": [ { "orderId":"23284", "itemName":"Widget", "itemPrice":"33.99" }, { "orderId":"63122", "itemName":"Gadget", "itemPrice":"22.50" }, { "orderId":"77284", "itemName":"Sprocket", "itemPrice":"12.00" } ] }
Acceso a los elementos de JSON
Para consultar un elemento de los datos de JSON JSONPath, utilice la siguiente sintaxis. A continuación, $
representa la raíz de la jerarquía de datos y elementName
es el nombre del nodo del elemento de consulta.
$.
elementName
La siguiente expresión consulta el customerName
elemento en el ejemplo de JSON anterior.
$.customerName
La expresión anterior devuelve lo siguiente del registro de JSON anterior.
John Doe
nota
Las expresiones de ruta distinguen entre mayúsculas y minúsculas. La expresión $.customername
vuelve null
desde el anterior ejemplo de JSON.
nota
Si no aparece el elemento en la ubicación donde se especifica la expresión de la ruta, la expresión devuelve null
. La siguiente expresión vuelve null
desde el ejemplo anterior de JSON, ya que no existe ningún elemento coincidente.
$.customerId
Acceso a los elementos de JSON anidados
Para consultar un elemento de JSON anidado, utilice la siguiente sintaxis.
$.
parentElement
.element
La siguiente expresión consulta el city
elemento en el ejemplo de JSON anterior.
$.address.city
La expresión anterior devuelve lo siguiente del registro de JSON anterior.
Anytown
Puede consultar más niveles de subelementos utilizando la siguiente sintaxis.
$.
parentElement
.element
.subElement
La siguiente expresión consulta el street
elemento en el ejemplo de JSON anterior.
$.address.streetAddress.street
La expresión anterior devuelve lo siguiente del registro de JSON anterior.
AnyStreet
Acceso a matrices
Puede obtener acceso a los datos de una matriz JSON de las siguientes maneras:
Recuperar todos los elementos de la matriz en una sola fila.
Recuperar cada elemento de la matriz como una fila independiente.
Recuperar todos los elementos de una matriz en una sola fila
Para consultar todo el contenido de una matriz como una sola fila, utilice la siguiente sintaxis.
$.
arrayObject
[0:]
La siguiente expresión consulta todos los contenidos del orders
elemento en el ejemplo de JSON anterior que se usa en esta sección. Devuelve los contenidos del arreglo en una única columna en una sola fila.
$.orders[0:]
La expresión anterior devuelve lo siguiente del registro de JSON de ejemplo que se usa en esta sección.
[{"orderId":"23284","itemName":"Widget","itemPrice":"33.99"},{"orderId":"61322","itemName":"Gadget","itemPrice":"22.50"},{"orderId":"77284","itemName":"Sprocket","itemPrice":"12.00"}]
Recuperar todos los elementos de una matriz en filas independientes
Para consultar los elementos individuales en una matriz como filas distintas, utilice la siguiente sintaxis.
$.
arrayObject
[0:].element
La siguiente expresión consulta los orderId
elementos en la expresión JSON anterior y devuelve cada elemento de matriz como una fila distinta.
$.orders[0:].orderId
La expresión anterior devuelve lo siguiente del registro de JSON anterior, con cada elemento de datos devuelto como una fila distinta.
23284 |
63122 |
77284 |
nota
Si expresiones que consulta elementos no de matriz se incluyen en un esquema que consulta los elementos de matriz individuales, los elementos no de matriz se repiten para cada elemento de la matriz. Por ejemplo, suponga que un esquema para el ejemplo anterior JSON incluye las siguientes expresiones:
-
$.customerName
-
$.orders[0:].orderId
En este caso, las filas de datos devueltas del elemento de la secuencia de entrada de muestra se parecen a lo siguiente, con el name
elemento repetido para cada orderId
elemento.
John Doe |
23284 |
John Doe |
63122 |
John Doe |
77284 |
nota
Las siguientes limitaciones se aplican a las expresiones de matriz en Amazon Kinesis Data Analytics:
-
Solo un nivel de cancelación de referencias es compatible con una matriz de expresión. No se admite el siguiente formato de expresión.
$.
arrayObject
[0:].element
[0:].subElement
-
Solo una matriz puede aplanarse en un esquema. Se puede hacer referencia a varias matrices: se devuelven como una fila que contiene todos los elementos de la matriz. Sin embargo, solo una matriz puede tener cada uno de sus elementos devueltos como filas individuales.
Un esquema que contienen elementos en el siguiente formato es válido. Este formato devuelve los contenidos de la segunda matriz como una única columna, repetida para cada elemento en la primera matriz.
$.arrayObjectOne
[0:].element
$.arrayObjectTwo
[0:]Un esquema que contiene elementos en el siguiente formato no es válido.
$.arrayObjectOne
[0:].element
$.arrayObjectTwo
[0:].element
Otras consideraciones
Las consideraciones adicionales para trabajar con JSONPath él son las siguientes:
-
Si un elemento individual de las JSONPath expresiones del esquema de la aplicación no accede a ninguna matriz, se crea una sola fila en el flujo de entrada de la aplicación para cada registro JSON procesado.
-
Cuando se aplana una matriz (es decir, sus elementos se devuelven como filas individuales), cualquier elemento que fata genera la creación de un valor nulo en el flujo de la aplicación.
-
Una matriz siempre se aplana a al menos una fila. Si no se devuelven valores (es decir, la matriz está vacía o ninguno de sus elementos se ha consultado), se devuelve una sola fila con todos los valores nulos.
En la siguiente expresión devuelve los registros con valores nulos del ejemplo de JSON anterior, ya que no existe ningún elemento coincidentes en la ruta especificada.
$.orders[0:].itemId
La expresión anterior devuelve lo siguiente del registro de ejemplo de JSON anterior.
null
nulo
null