Mapeamento de elementos de fonte de streaming para colunas de entrada do SQL - Guia do desenvolvedor do Amazon Kinesis Data Analytics SQL para aplicativos

Para novos projetos, recomendamos que você use o novo Managed Service para Apache Flink Studio em vez do Kinesis Data Analytics for Applications. SQL O Managed Service for Apache Flink Studio combina facilidade de uso com recursos analíticos avançados, permitindo que você crie aplicativos sofisticados de processamento de stream em minutos.

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á.

Mapeamento de elementos de fonte de streaming para colunas de entrada do SQL

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.

Com o Amazon Kinesis Data Analytics, é possível processar e analisar dados de streaming nos formatos JSON ou CSV usando o SQL padrão.

  • Para processar e analisar dados CSV de streaming, atribua nomes de colunas e tipos de dados às colunas do stream de entrada. O aplicativo importa uma coluna do stream de entrada por definição de coluna, em ordem.

    Não é necessário incluir todas as colunas do stream de entrada de aplicativo, mas você não pode ignorar colunas do stream de origem. Por exemplo, é possível importar as três primeiras colunas de um stream de entrada que contém cinco elementos, mas não importar apenas as colunas 1, 2 e 4.

  • Para processar e analisar os dados JSON do streaming, use as expressões JSONPath para mapear elementos JSON de uma fonte de streaming para colunas SQL em um stream de entrada. Para obter mais informações sobre JSONPath com Amazon Kinesis Data Analytics, consulte Trabalho com JSONPath. As colunas na tabela SQL têm tipos de dados que são mapeados de tipos de JSON. Para obter os tipos de dados compatíveis, consulte Tipos de dados. Para obter detalhes sobre como converter dados JSON em dados SQL, consulte Mapeamento de tipos de dados JSON para tipos de dados SQL.

Para obter mais informações sobre como configurar fluxos de entrada, consulte Configuração de entrada do aplicativo.

Mapeamento de dados JSON para colunas SQL

Você pode mapear elementos JSON para colunas de entrada usando a API Kinesis Data AWS Management Console Analytics ou a Kinesis Data Analytics.

  • Para mapear elementos para colunas usando o console, consulte Trabalho com o editor de esquema.

  • Para mapear elementos para colunas usando a API do Kinesis Data Analytics, consulte a seção a seguir.

Para mapear elementos JSON para colunas no stream de entrada no aplicativo, você precisa de um esquema com as seguintes informações para cada coluna:

  • Expressão de origem: a expressão JSONPath que identifica o local dos dados para a coluna.

  • Nome da coluna: o nome que as consultas do SQL usam para referenciar os dados.

  • Tipo de dados: o tipo de dados do SQL para a coluna.

Uso da API

Para mapear elementos de uma fonte de streaming para colunas de entrada, use a ação CreateApplication da API do Kinesis Data Analytics. Para criar o stream no aplicativo, especifique um esquema para transformar seus dados em uma versão esquematizada usada no SQL. A ação CreateApplication configura o aplicativo para receber a entrada de uma única fonte de streaming. Para mapear elementos JSON ou colunas CSV para colunas SQL, crie um objeto RecordColumn na matriz SourceSchema RecordColumns. O objeto RecordColumn tem o seguinte esquema:

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

Os campos do objeto RecordColumn têm os seguintes valores:

  • Mapping: a expressão JSONPath que identifica o local dos dados no registro de stream de entrada. Esse valor não está presente em um esquema de entrada para um stream de origem no formato CSV.

  • Name: o nome da coluna no streaming de dados SQL no aplicativo.

  • SqlType: o tipo de dados dos dados no stream de dados SQL no aplicativo.

Exemplo de esquema de entrada JSON

O exemplo a seguir demonstra o formato do valor InputSchema para um 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" }

Exemplo de esquema de entrada CSV

O exemplo a seguir demonstra o formato do valor InputSchema para um esquema no formato CSV (valores separados por vírgulas).

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

Mapeamento de tipos de dados JSON para tipos de dados SQL

Os tipos de dados JSON são convertidos em tipos de dados SQL correspondentes de acordo com o esquema de entrada do aplicativo. Para obter informações sobre os tipos de dados SQL com suporte, consulte Tipos de dados. O Amazon Kinesis Data Analytics converte tipos de dados JSON em tipos de dados SQL de acordo com as seguintes regras.

Nulo literal

Um nulo literal no stream de entrada JSON (ou seja, "City":null) é convertido em um SQL nulo, independentemente do tipo de dados de destino.

Booleano literal

Um Booleano literal no stream de entrada JSON (ou seja, "Contacted":true) é convertido nos seguintes dados SQL:

  • Numérico (DECIMAL, INT e assim por diante): true é convertido em 1; false é convertido em 0.

  • Binário (BINARY ou VARBINARY):

    • true: o resultado tem o menor conjunto de bits e os bits restantes são desmarcados.

    • false: o resultado tem todos os bits desmarcados.

    A conversão em VARBINARY resulta em um valor de 1 byte de comprimento.

  • BOOLEANO: é convertido no valor SQL BOOLEAN correspondente.

  • Caractere (CHAR ou VARCHAR): é convertido no valor da string correspondente (true ou false). O valor é truncado para se ajustar ao tamanho do campo.

  • Data e hora (DATE, TIME ou TIMESTAMP): a conversão falha e um erro de coerção é gravado no stream de erro.

Número

Um número literal no stream de entrada JSON (ou seja, "CustomerId":67321) é convertido nos seguintes dados SQL:

  • Numérico (DECIMAL, INT e assim por diante): é convertido diretamente. Se o valor convertido exceder o tamanho ou a precisão do tipo de dados de destino (ou seja, convertendo 123.4 em INT), a conversão falha e um erro de coerção é gravado no stream de erro.

  • Binário (BINARY ou VARBINARY): a conversão falha e um erro de coerção é gravado no stream de erro.

  • BOOLEAN:

    • 0: é convertido em false.

    • Todos os outros números: são convertidos em true.

  • Caractere (CHAR ou VARCHAR): é convertido em uma representação do número em string.

  • Data e hora (DATE, TIME ou TIMESTAMP): a conversão falha e um erro de coerção é gravado no stream de erro.

String

O valor de uma string no stream de entrada JSON (ou seja, "CustomerName":"John Doe") é convertido nos seguintes dados SQL:

  • Numérico (DECIMAL, INT e assim por diante): o Amazon Kinesis Data Analytics tenta converter o valor no tipo de dados de destino. Se o valor não puder ser convertido, a conversão falha e um erro de coerção será gravado no stream de erro.

  • rio (BINARY ou VARBINARY): se a string de origem for um binário literal (ou seja, X'3F67A23A', com um número par de f), o valor será convertido no tipo de dados de destino. Caso contrário, a conversão falha e um erro de coerção será gravado no stream de erro.

  • BOOLEANO: se a string de origem for "true", será convertida em true. Essa comparação diferencia maiúsculas de minúsculas. Caso contrário, será convertida em false.

  • Caractere (CHAR ou VARCHAR): é convertido no valor da string na entrada. Se o valor for maior do que o tipo de dados de destino, ele estará truncado e nenhum erro será gravado no stream de erro.

  • Data e hora (DATE, TIME ou TIMESTAMP): se a string de origem estiver em um formato que pode ser convertido no valor de destino, o valor será convertido. Caso contrário, a conversão falha e um erro de coerção será gravado no stream de erro.

    Os formatos de data e hora válidos incluem:

    • "1992-02-14"

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

Matriz ou objeto

Uma matriz ou objeto no stream de entrada JSON é convertido em dados SQL da seguinte forma:

  • Caractere (CHAR ou VARCHAR): é convertido no texto de origem da matriz ou objeto. Consulte Acesso a matrizes.

  • Todos os outros tipos de dados: a conversão falha e um erro de coerção é gravado no stream de erro.

Para obter um exemplo de uma matriz JSON, consulte Trabalho com JSONPath.

Related Topics