

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

# Analisar os componentes da API Table
<a name="how-table"></a>

Seu aplicativo Apache Flink usa a [API de tabela do Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/table/tableapi/) para interagir com dados em um fluxo usando um modelo relacional. Você usa a API de tabela para acessar dados usando fontes de tabela e, em seguida, usa funções de tabela para transformar e filtrar dados da tabela. Você pode transformar e filtrar dados tabulares usando funções de API ou comandos SQL. 

Esta seção contém os seguintes tópicos:
+ [Conectores da API Table](how-table-connectors.md): esses componentes movem dados entre seu aplicativo e fontes de dados e destinos externos.
+ [Atributos de tempo da API Table](how-table-timeattributes.md): este tópico descreve como o Managed Service for Apache Flink rastreia eventos ao usar a API de tabela.

# Conectores da API Table
<a name="how-table-connectors"></a>

No modelo de programação do Apache Flink, os conectores são componentes que seu aplicativo usa para ler ou gravar dados de fontes externas, como outros serviços. AWS 

Com a API de tabela do Apache Flink, você pode usar os seguintes tipos de conectores:
+ [Fontes da API Table](#how-table-connectors-source): use conectores de origem da API de tabela para criar tabelas dentro da sua `TableEnvironment` usando chamadas de API ou consultas SQL.
+ [Coletores da API Table](#how-table-connectors-sink): use comandos SQL para gravar dados de tabela em fontes externas, como um tópico do Amazon MSK ou um bucket do Amazon S3.

## Fontes da API Table
<a name="how-table-connectors-source"></a>

Você cria uma fonte de tabela a partir de um fluxo de dados. O código a seguir cria uma tabela a partir de um tópico do Amazon MSK:

```
//create the table
    final FlinkKafkaConsumer<StockRecord> consumer = new FlinkKafkaConsumer<StockRecord>(kafkaTopic, new KafkaEventDeserializationSchema(), kafkaProperties);
    consumer.setStartFromEarliest();
    //Obtain stream
    DataStream<StockRecord> events = env.addSource(consumer);

    Table table = streamTableEnvironment.fromDataStream(events);
```

Para obter mais informações sobre fontes de tabelas, consulte [Tabela e conectores SQL](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/connectors/table/overview/) na Documentação do Apache Flink.

## Coletores da API Table
<a name="how-table-connectors-sink"></a>

Para gravar dados da tabela em um coletor, você cria o coletor em SQL e, em seguida, executa o coletor baseado em SQL no objeto `StreamTableEnvironment`.

O exemplo de código a seguir demonstra como gravar dados de tabela em um coletor do Amazon S3:

```
final String s3Sink = "CREATE TABLE sink_table (" +
    "event_time TIMESTAMP," +
    "ticker STRING," +
    "price DOUBLE," +
    "dt STRING," +
    "hr STRING" +
    ")" +
    " PARTITIONED BY (ticker,dt,hr)" +
    " WITH" +
    "(" +
    " 'connector' = 'filesystem'," +
    " 'path' = '" + s3Path + "'," +
    " 'format' = 'json'" +
    ") ";

    //send to s3
    streamTableEnvironment.executeSql(s3Sink);
    filteredTable.executeInsert("sink_table");
```

 Você pode usar o parâmetro `format` para controlar qual formato o Managed Service for Apache Flink usa para gravar a saída no coletor. Para obter informações sobre formatos, consulte [ Conectores suportados](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/connectors/table/overview/) na Documentação do Apache Flink.

## Fontes e coletores definidos pelo usuário
<a name="how-table-connectors-userdef"></a>

Você pode usar os conectores Apache Kafka existentes para enviar dados de e para outros serviços de AWS , como Amazon MSK e Amazon S3. Para interagir com outras fontes de dados e destinos, você pode definir suas próprias fontes e coletores. Para obter mais informações, consulte [ Fontes e coletores definidos pelo usuário](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/table/sourcessinks/) na Documentação do Apache Flink.

# Atributos de tempo da API Table
<a name="how-table-timeattributes"></a>

Cada registro em um fluxo de dados tem vários timestamps que definem quando os eventos relacionados ao registro ocorreram:
+ **Hora do evento**: um timestamp definido pelo usuário que define quando o evento que criou o registro ocorreu.
+ **Tempo de ingestão**: o momento em que seu aplicativo recuperou o registro do fluxo de dados.
+ **Tempo de processamento**: o momento em que seu aplicativo processou o registro.

Quando a API Table do Apache Flink cria janelas com base nas horas registradas, você define quais desses timestamps ela usa usando o método `setStreamTimeCharacteristic`. 

Para obter mais informações sobre o uso de timestamps com a API Table, consulte [ Atributos de tempo](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/table/concepts/time_attributes/) e [ Processamento oportuno de fluxos](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/concepts/time/) na Documentação do Apache Flink.