

Após uma análise cuidadosa, decidimos descontinuar o Amazon Kinesis Data Analytics para aplicativos SQL:

1. A partir de **1º de setembro de 2025,** não forneceremos nenhuma correção de bug para aplicativos do Amazon Kinesis Data Analytics para SQL porque teremos suporte limitado para ele, devido à próxima descontinuação.

2. A partir **de 15 de outubro de 2025,** você não poderá criar novos aplicativos Kinesis Data Analytics para SQL.

3. Excluiremos as aplicações a partir de **27 de janeiro de 2026**. Você não poderá mais iniciar nem operar as aplicações do Amazon Kinesis Data Analytics para SQL. A partir dessa data, não haverá mais suporte ao Amazon Kinesis Data Analytics para SQL. Para obter mais informações, consulte [Descontinuação de aplicações do Amazon Kinesis Data Analytics para SQL](discontinuation.md).

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
<a name="sch-mapping"></a>

**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 para SQL. Para saber mais, consulte [Limites](https://docs.aws.amazon.com//kinesisanalytics/latest/dev/limits.html).

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 dados JSON de streaming, você usa JSONPath expressões para mapear elementos JSON de uma fonte de streaming para colunas SQL em um fluxo de entrada. Para obter mais informações sobre o uso JSONPath com o Amazon Kinesis Data Analytics, [Trabalhando com JSONPath](about-json-path.md) consulte. 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](https://docs.aws.amazon.com/kinesisanalytics/latest/sqlref/sql-reference-data-types.html). Para obter detalhes sobre como converter dados JSON em dados SQL, consulte [Mapeamento de tipos de dados JSON para tipos de dados SQL](#sch-mapping-datatypes).

Para obter mais informações sobre como configurar fluxos de entrada, consulte [Configuração de entrada do aplicativo](how-it-works-input.md).

## Mapeamento de dados JSON para colunas SQL
<a name="sch-mapping-json"></a>

 Você pode mapear elementos JSON para colunas de entrada usando a API Kinesis Data Console de gerenciamento da AWS Analytics ou a Kinesis Data Analytics. 
+ Para mapear elementos para colunas usando o console, consulte [Trabalho com o editor de esquema](console-summary-edit-schema.md).
+ 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 JSONPath expressão que identifica a localização dos dados da 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.

## Usar a API
<a name="sf-map-api"></a>

Para mapear elementos de uma fonte de streaming para colunas de entrada, use a ação [CreateApplication](API_CreateApplication.md) 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](API_CreateApplication.md) 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](API_RecordColumn.md) na matriz [SourceSchema](API_SourceSchema.md) `RecordColumns`. O objeto [RecordColumn](API_RecordColumn.md) tem o seguinte esquema:

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

Os campos do objeto [RecordColumn](API_RecordColumn.md) têm os seguintes valores:
+ `Mapping`: a JSONPath expressão que identifica a localização dos dados no registro do fluxo 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
<a name="sf-map-api-json-example"></a>

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
<a name="sf-map-api-csv-example"></a>

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
<a name="sch-mapping-datatypes"></a>

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](https://docs.aws.amazon.com/kinesisanalytics/latest/sqlref/sql-reference-data-types.html). O Amazon Kinesis Data Analytics converte tipos de dados JSON em tipos de dados SQL de acordo com as seguintes regras.

### Nulo literal
<a name="sch-mapping-datatypes-null"></a>

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
<a name="sch-mapping-datatypes-boolean"></a>

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
<a name="sch-mapping-datatypes-number"></a>

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
<a name="sch-mapping-datatypes-string"></a>

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
<a name="sch-mapping-datatypes-array"></a>

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](about-json-path.md#about-json-path-arrays).
+ 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 [Trabalhando com JSONPath](about-json-path.md).

## Related Topics
<a name="sch-mapping.Related"></a>
+ [Configuração de entrada do aplicativo](how-it-works-input.md)
+ [Tipos de dados](https://docs.aws.amazon.com/kinesisanalytics/latest/sqlref/sql-reference-data-types.html)
+ [Trabalho com o editor de esquema](console-summary-edit-schema.md)
+ [CreateApplication](API_CreateApplication.md)
+ [RecordColumn](API_RecordColumn.md)
+ [SourceSchema](API_SourceSchema.md)