Após uma análise cuidadosa, decidimos descontinuar o Amazon Kinesis Data Analytics SQL para aplicativos em duas etapas:
1. A partir de 15 de outubro de 2025, você não poderá criar um novo Kinesis Data Analytics SQL para aplicativos.
2. Excluiremos seus aplicativos a partir de 27 de janeiro de 2026. Você não poderá iniciar ou operar seu Amazon Kinesis Data Analytics SQL para aplicativos. O suporte não estará mais disponível para o Amazon Kinesis Data Analytics SQL a partir desse momento. Para obter mais informações, consulte Descontinuação do Amazon Kinesis Data Analytics SQL para aplicativos.
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Trabalho com JSONPath
nota
Depois de 12 de setembro de 2023, você não poderá criar novos aplicativos usando o Kinesis Data Firehose como fonte se ainda não estiver usando o Kinesis Data Analytics for SQL. Para obter mais informações, consulte Limites.
JSONPath é uma maneira padronizada de consultar elementos de um objeto JSON. O JSONPath usa expressões de caminho para navegar elementos, elementos aninhados e matrizes em um documento JSON. Para obter mais informações sobre JSON, consulte Introdução ao JSON
O Amazon Kinesis Data Analytics usa expressões JSONPath no esquema de origem do aplicativo para identificar elementos de dados em uma fonte de streaming que contém dados no formato JSON.
Para obter mais informações sobre como mapear dados de streaming para o fluxo de entrada do aplicativo, consulte Mapeamento de elementos de fonte de streaming para colunas de entrada do SQL.
Acesso a elementos JSON com JSONPath
A seguir, veja como usar expressões JSONPath para acessar diversos elementos em dados formatados pelo JSON. Para os exemplos nesta seção, suponha que o stream de origem contenha o seguinte registro 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" } ] }
Acesso a elementos JSON
Para consultar um elemento em dados JSON usando JSONPath, use a seguinte sintaxe. Aqui, $
representa a raiz da hierarquia de dados e elementName
é o nome do nó do elemento de consulta.
$.
elementName
A expressão a seguir consulta o elemento customerName
no exemplo de JSON anterior.
$.customerName
A expressão anterior retorna o seguinte do registro de JSON anterior.
John Doe
nota
As expressões do caminho diferenciam maiúsculas e minúsculas. A expressão $.customername
retorna null
do exemplo de JSON anterior.
nota
Se nenhum elemento aparecer no local onde a expressão do caminho especifica, a expressão retornará null
. A expressão a seguir retorna null
do exemplo de JSON anterior, porque não há elemento correspondente.
$.customerId
Acesso a elementos JSON aninhados
Para consultar um elemento JSON aninhado, use a seguinte sintaxe.
$.
parentElement
.element
A expressão a seguir consulta o elemento city
no exemplo de JSON anterior.
$.address.city
A expressão anterior retorna o seguinte do registro de JSON anterior.
Anytown
Você pode consultar mais níveis de subelementos usando a sintaxe a seguir.
$.
parentElement
.element
.subElement
A expressão a seguir consulta o elemento street
no exemplo de JSON anterior.
$.address.streetAddress.street
A expressão anterior retorna o seguinte do registro de JSON anterior.
AnyStreet
Acesso a matrizes
Você pode acessar os dados em uma matriz JSON das seguintes formas:
Recupere todos os elementos na matriz como uma única linha.
Recupere cada elemento na matriz como uma linha separada.
Recuperar todos os elementos em uma matriz em uma única linha
Para consultar todo o conteúdo de uma matriz como uma única linha, use a sintaxe a seguir.
$.
arrayObject
[0:]
A expressão a seguir consulta todo o conteúdo do elemento orders
no exemplo de JSON anterior usado nesta seção. Ela retorna o conteúdo da matriz em uma única coluna em uma única linha.
$.orders[0:]
A expressão anterior retorna o seguinte do registro JSON de exemplo usado nesta seção.
[{"orderId":"23284","itemName":"Widget","itemPrice":"33.99"},{"orderId":"61322","itemName":"Gadget","itemPrice":"22.50"},{"orderId":"77284","itemName":"Sprocket","itemPrice":"12.00"}]
Recuperar todos os elementos em uma matriz em linhas separadas
Para consultar os elementos individuais em uma matriz como linhas separadas, use a seguinte sintaxe.
$.
arrayObject
[0:].element
A expressão a seguir consulta os elementos orderId
no exemplo de JSON anterior e retorna cada elemento de matriz como uma linha separada.
$.orders[0:].orderId
A expressão anterior retorna o seguinte do registro de JSON anterior, com cada item de dados retornado como uma linha separada.
23284 |
63122 |
77284 |
nota
Se expressões que consultam elementos não matriz estiverem incluídos em um esquema que consulta elementos de matriz individuais, os elementos não matriz serão repetidos para cada elemento na matriz. Por exemplo, suponha que um esquema para o exemplo de JSON anterior inclua as seguintes expressões:
-
$.customerName
-
$.orders[0:].orderId
Nesse caso, as linhas de dados retornados do elemento de stream de entrada de amostra se parecem com o seguinte, com o elemento name
repetido para cada elemento orderId
.
John Doe |
23284 |
John Doe |
63122 |
John Doe |
77284 |
nota
As seguintes limitações se aplicam a expressões em matriz no Amazon Kinesis Data Analytics:
-
Apenas um nível de deferência conta com suporte em uma expressão. O formato de expressão a seguir não conta com suporte.
$.
arrayObject
[0:].element
[0:].subElement
-
Apenas uma matriz pode ser achatada em um esquema. Várias matrizes podem ser referenciadas-retornadas como uma linha contendo todos os elementos na matriz. No entanto, apenas uma matriz pode ter cada um de seus elementos retornados como linhas individuais.
Um esquema que contém elementos no seguinte formato é válido. Este formato retorna o conteúdo da segunda matriz como uma única coluna, repetido para cada elemento na primeira matriz.
$.arrayObjectOne
[0:].element
$.arrayObjectTwo
[0:]Um esquema que contém elementos no seguinte formato não é válido.
$.arrayObjectOne
[0:].element
$.arrayObjectTwo
[0:].element
Outras considerações
As considerações adicionais para trabalhar com JSONPath são as seguintes:
-
Se nenhuma matriz for acessada por um elemento individual nas expressões JSONPath no esquema do aplicativo, uma única linha será criada no fluxo de entrada de aplicativo para cada registro JSON processado.
-
Quando uma matriz é achatada (ou seja, seus elementos são retornados como linhas individuais), quaisquer elementos ausentes resultam na criação de um valor nulo no stream no aplicativo.
-
Uma matriz é sempre achatada para pelo menos uma linha. Se nenhum valor for retornado (ou seja, a matriz estiver vazia ou nenhum de seus elementos for consultado), uma única linha com todos os valores nulos será retornada.
A expressão a seguir retorna registros com valores nulos de exemplo de JSON anterior, porque não há elemento correspondente no caminho especificado.
$.orders[0:].itemId
A expressão anterior retorna o seguinte do registro de exemplo de JSON anterior.
nulo
nulo
nulo