Trabalho com JSONPath - Guia do desenvolvedor do Amazon Kinesis Data Analytics SQL para aplicativos

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

Related Topics