All Products
Search
Document Center

Realtime Compute for Apache Flink:Faker connector

Last Updated:Jun 21, 2026

Topik ini menjelaskan cara menggunakan Faker connector untuk menghasilkan data uji.

Informasi latar belakang

Faker connector merupakan connector bawaan Realtime Compute for Apache Flink yang menghasilkan data uji berdasarkan ekspresi Java Faker yang Anda tentukan untuk setiap field dalam tabel. Gunakan connector ini untuk menghasilkan data uji guna memvalidasi logika bisnis selama pengembangan atau pengujian.

Tabel berikut menjelaskan kemampuan Faker connector.

Item

Rincian

Tipe tabel yang didukung

source table dan dimension table

running mode

batch mode dan streaming mode

Data format

Tidak berlaku

Metrik khusus connector

Tidak ada

Tipe API

SQL

Dukungan untuk memperbarui atau menghapus data di sink table

Tidak berlaku

Prasyarat

Tidak ada.

Batasan

  • Faker connector hanya didukung di Realtime Compute for Apache Flink VVR 4.0.12 atau versi yang lebih baru.

  • Connector ini hanya mendukung tipe data berikut: CHAR(n), VARCHAR(n), STRING, TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL, BOOLEAN, TIMESTAMP, ARRAY, MAP, MULTISET, dan ROW.

  • Ketika digunakan sebagai dimension table dalam operasi JOIN, Faker connector tidak melakukan pencarian dimension table secara aktual. Sebagai gantinya, connector ini langsung menghasilkan hasil berdasarkan kunci pencarian (lookup key) yang diteruskan dari source table.

Sintaksis

CREATE TABLE faker_source (
  `name` STRING,
  `age` INT
) WITH (
  'connector' = 'faker',
  'fields.name.expression' = '#{superhero.name}',
  'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'
);

Parameter WITH

Jenis

Parameter

Deskripsi

Tipe

Wajib

Bawaan

Keterangan

Umum

connector

Menentukan jenis connector.

String

Ya

Tidak ada

Nilainya harus faker.

fields.<field>.expression

Menentukan ekspresi Java Faker untuk menghasilkan nilai bagi field ini.

String

Ya

Tidak ada

Untuk informasi lebih lanjut, lihat Field expressions.

fields.<field>.null-rate

Menentukan probabilitas bahwa nilai field tersebut bernilai null.

Float

Tidak

0,0

Tidak ada

fields.<field>.length

Menentukan ukuran koleksi untuk tipe data ARRAY, MAP, atau MULTISET.

Integer

Tidak

1

Tidak ada

Khusus source table

number-of-rows

Menentukan jumlah baris yang akan dihasilkan.

Integer

Tidak

-1

Jika parameter ini diatur, source table bersifat bounded. Jika tidak, maka bersifat unbounded.

rows-per-second

Menentukan laju pembuatan data.

Integer

Tidak

10000

Tidak ada

Contoh

Contoh dimension table

CREATE TEMPORARY TABLE datagen_source (
  `character_id` INT,
  `location` STRING,
  `datagen_name` STRING,
  `user_fullname` ROW<first_name STRING, last_name STRING>,
  `user_data` ARRAY<STRING>,
  `user_score` Map<STRING, INT>,
  `user_books` MULTISET<STRING>,
  `proctime` AS PROCTIME()
) WITH (
  'connector' = 'faker',
  'fields.character_id.expression' = '#{number.numberBetween ''0'',''10000''}',
  'fields.location.expression' = '#{harry_potter.location}',
  'fields.datagen_name.expression' = '#{superhero.name}',
  'fields.user_fullname.first_name.expression' = '#{superhero.prefix}',
  'fields.user_fullname.last_name.expression' = '#{superhero.suffix}',
  'fields.user_data.expression' = '#{harry_potter.character}',
  'fields.user_data.length' = '2',
  'fields.user_score.key.expression' = '#{harry_potter.character}',
  'fields.user_score.value.expression' = '#{number.numberBetween ''10'',''100''}',
  'fields.user_score.length' = '2',
  'fields.user_books.expression' = '#{book.title}',
  'fields.user_books.length' = '2',
  'number-of-rows' = '5'
);

CREATE TEMPORARY TABLE faker_dim (
  `character_id` INT,
  `faker_name` STRING
) WITH (
  'connector' = 'faker',
  'fields.character_id.expression' = '#{number.numberBetween ''0'',''100''}',
  'fields.faker_name.expression' = '#{harry_potter.characters}'
);
    
SELECT
  l.character_id,
  l.location,
  l.datagen_name,
  l.user_fullname,
  l.user_data,
  l.user_score,
  l.user_books,
  c.faker_name
FROM datagen_source AS l
JOIN faker_dim FOR SYSTEM_TIME AS OF proctime AS c
ON l.character_id = c.character_id;

Field expressions

  • Format

    Setiap field yang didefinisikan dalam pernyataan DDL memerlukan ekspresi yang sesuai dalam klausa WITH. Ekspresi tersebut harus dalam format 'fields.<field>.expression' = '#{className.methodName ''parameter'', ...}'. Tabel berikut menjelaskan komponen dalam format ini.

    Parameter

    Deskripsi

    field

    Nama field dalam pernyataan DDL.

    className

    Nama kelas Faker.

    Java Faker menyediakan sekitar 80 kelas Faker untuk menghasilkan ekspresi field. Pilih kelas berdasarkan kebutuhan bisnis Anda.

    Catatan

    Nama kelas Faker tidak peka huruf besar/kecil.

    methodName

    Nama metode.

    Catatan

    Nama metode tidak peka huruf besar/kecil.

    parameter

    Parameter input untuk metode tersebut.

    Catatan
    • Bungkus parameter input metode dengan dua tanda petik tunggal berturut-turut ('') agar dapat diekspresikan dengan benar dalam string ekspresi.

    • Gunakan koma (,) untuk memisahkan beberapa parameter.

  • Contoh

    Langkah-langkah berikut menunjukkan cara membuat ekspresi field, menggunakan ekspresi field age 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}' dari bagian Sintaksis sebagai contoh:

    1. Pada dokumentasi API Java Faker, cari kelas Number.

    2. Pada kelas Number, cari metode numberBetween dan lihat deskripsinya.

      Metode ini mengembalikan nilai dalam rentang numerik tertentu.

    3. Berdasarkan nama kelas (Number), nama metode (numberBetween), dan parameter input (0 dan 1000), buat ekspresi SQL untuk field age: 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'.

      Ekspresi ini menghasilkan nilai antara 0 dan 1000 untuk field age.