

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Tinjau komponen API Tabel
<a name="how-table"></a>

Aplikasi Apache Flink Anda menggunakan [API Tabel Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/table/tableapi/) untuk berinteraksi dengan data dalam aliran menggunakan model relasional. Anda menggunakan API Tabel untuk mengakses data menggunakan sumber Tabel, lalu menggunakan fungsi Tabel untuk mengubah dan memfilter data tabel. Anda dapat mengubah dan memfilter data tabel menggunakan fungsi API atau perintah SQL. 

Bagian ini berisi topik berikut:
+ [Konektor API tabel](how-table-connectors.md): Komponen ini memindahkan data antara aplikasi Anda dan sumber serta tujuan data eksternal.
+ [Atribut waktu API tabel](how-table-timeattributes.md): Topik ini menjelaskan bagaimana Managed Service for Apache Flink melacak peristiwa saat menggunakan Table API.

# Konektor API tabel
<a name="how-table-connectors"></a>

Dalam model pemrograman Apache Flink, konektor adalah komponen yang digunakan aplikasi Anda untuk membaca atau menulis data dari sumber eksternal, seperti layanan lain AWS .

Dengan API Tabel Apache Flink, Anda dapat menggunakan tipe konektor berikut:
+ [Sumber API tabel](#how-table-connectors-source): Anda menggunakan konektor sumber API Tabel untuk membuat tabel dalam `TableEnvironment` Anda menggunakan panggilan API atau kueri SQL.
+ [Tabel API tenggelam](#how-table-connectors-sink): Anda menggunakan perintah SQL untuk menulis data tabel ke sumber eksternal seperti topik Amazon MSK atau bucket Amazon S3.

## Sumber API tabel
<a name="how-table-connectors-source"></a>

Anda membuat sumber tabel dari aliran data. Kode berikut membuat tabel dari topik 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);
```

Untuk informasi selengkapnya tentang sumber tabel, lihat [Konektor Tabel & SQL di Dokumentasi](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/connectors/table/overview/) Apache Flink.

## Tabel API tenggelam
<a name="how-table-connectors-sink"></a>

Untuk menulis data tabel ke sink, Anda membuat sink di SQL, lalu jalankan sink berbasis SQL di objek `StreamTableEnvironment`.

Contoh kode berikut mendemonstrasikan cara menulis data tabel ke sink 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");
```

 Anda dapat menggunakan `format` parameter untuk mengontrol format Managed Service untuk Apache Flink yang digunakan untuk menulis output ke wastafel. Untuk informasi tentang format, lihat [Konektor yang Didukung](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/connectors/table/overview/) di Dokumentasi Apache Flink.

## Sumber dan sink yang ditentukan pengguna
<a name="how-table-connectors-userdef"></a>

Anda dapat menggunakan konektor Apache Kafka yang ada untuk mengirim data ke dan dari layanan AWS lainnya, seperti Amazon MSK dan Amazon S3. Untuk berinteraksi dengan sumber data dan tujuan lainnya, Anda dapat menentukan sumber dan sink Anda sendiri. Untuk informasi selengkapnya, lihat [Sumber dan Tenggelam yang ditentukan pengguna](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/table/sourcessinks/) di Dokumentasi Apache Flink.

# Atribut waktu API tabel
<a name="how-table-timeattributes"></a>

Setiap catatan dalam aliran data memiliki beberapa stempel waktu yang menentukan kapan peristiwa yang terkait dengan catatan terjadi:
+ **Event Time** (Waktu Peristiwa): Stempel waktu yang ditetapkan pengguna yang menentukan kapan peristiwa yang dibuat catatan terjadi.
+ **Ingestion Time** (Waktu Penyerapan): Waktu ketika aplikasi Anda mengambil catatan dari aliran data.
+ **Processing Time** (Waktu pemrosesan): Waktu ketika aplikasi Anda memproses catatan.

Saat Apache Flink Table API membuat jendela berdasarkan waktu rekaman, Anda menentukan stempel waktu mana yang digunakan dengan menggunakan metode ini. `setStreamTimeCharacteristic` 

Untuk informasi selengkapnya tentang penggunaan stempel waktu dengan API Tabel, lihat [Atribut Waktu](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/table/concepts/time_attributes/) dan [Pemrosesan Stream Tepat Waktu di Dokumentasi](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/concepts/time/) Apache Flink.