Topik ini menjelaskan cara menggunakan konektor Faker untuk menghasilkan data simulasi.
Informasi latar belakang
Konektor Faker adalah konektor bawaan yang menghasilkan data uji berdasarkan ekspresi Java Faker untuk setiap bidang dalam tabel. Anda dapat menggunakan konektor ini untuk memperoleh data uji guna memverifikasi logika bisnis selama pengembangan dan pengujian.
Konektor Simulated Data Generator mendukung hal-hal berikut.
|
Kategori |
Detail |
|
Tipe yang didukung |
tabel sumber dan tabel dimensi |
|
Mode eksekusi |
Mode batch dan stream |
|
Format data |
Tidak berlaku |
|
Metrik pemantauan spesifik |
Tidak ada |
|
Tipe API |
SQL |
|
Mendukung pembaruan atau penghapusan data di tabel sink |
Tidak berlaku |
Prasyarat
Tidak ada.
Batasan
-
Konektor Faker hanya didukung pada versi Mesin komputasi Flink VVR 4.0.12 dan yang lebih baru.
-
Hanya tipe data berikut yang didukung: CHAR(n), VARCHAR(n), STRING, TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL, BOOLEAN, TIMESTAMP, ARRAY, MAP, MULTISET, dan ROW.
-
Saat Anda menggunakan tabel Faker sebagai tabel dimensi dalam operasi JOIN, konektor tidak melakukan pencarian (lookup) aktual. Sebagai gantinya, konektor langsung menghasilkan hasil berdasarkan kunci lookup dari tabel sumber.
Sintaksis
CREATE TABLE faker_source (
`name` STRING,
`age` INT
) WITH (
'connector' = 'faker',
'fields.name.expression' = '#{superhero.name}',
'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'
);
Dengan parameter
|
Kategori |
Parameter |
Deskripsi |
Tipe data |
Wajib |
Nilai default |
Catatan |
|
Umum |
connector |
Tipe tabel. |
String |
Ya |
Tidak ada |
Nilainya harus `faker`. |
|
fields.<field>.expression |
Ekspresi Java Faker yang menghasilkan nilai untuk bidang tersebut. |
String |
Ya |
Tidak ada |
Untuk informasi selengkapnya, lihat Ekspresi bidang. |
|
|
fields.<field>.null-rate |
Peluang bahwa bidang bernilai null. |
Float |
Tidak |
0,0 |
Tidak ada |
|
|
fields.<field>.length |
Ukuran koleksi untuk tipe ARRAY, MAP, atau MULTISET. |
Integer |
Tidak |
1 |
Tidak ada |
|
|
Khusus tabel sumber |
number-of-rows |
Jumlah baris data yang akan dihasilkan. |
Integer |
Tidak |
-1 |
Jika parameter ini ditetapkan, tabel sumber bersifat bounded. Jika tidak, tabel sumber bersifat unbounded. |
|
rows-per-second |
Laju pembuatan data. |
Integer |
Tidak |
10000 |
Nilai default-nya adalah 10.000 baris/detik. |
Contoh
Contoh tabel dimensi
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;
Ekspresi bidang
-
Cara kerja
Saat menggunakan konektor Faker, Anda harus menyediakan ekspresi spesifik dalam klausa WITH untuk setiap bidang yang didefinisikan dalam pernyataan Data Definition Language (DDL). Ekspresi tersebut harus dalam format 'fields.<field>.expression' = '#{className.methodName ''parameter'', ...}'. Tabel berikut menjelaskan parameter-parameternya.
Parameter
Deskripsi
field
Nama bidang dalam pernyataan DDL.
className
Nama kelas Faker.
Java Faker menyediakan sekitar 80 kelas Faker untuk menghasilkan ekspresi bidang yang Anda butuhkan. Anda dapat memilih kelas sesuai kebutuhan.
CatatanNama kelas Faker tidak peka huruf besar/kecil.
methodName
Nama metode.
CatatanNama metode tidak peka huruf besar/kecil.
parameter
Parameter input suatu metode.
Catatan-
Setiap parameter input harus diapit oleh dua tanda kutip tunggal ('').
-
Pisahkan beberapa parameter dengan koma (,).
-
-
Contoh
Bagian ini menggunakan ekspresi untuk bidang `age` dari bagian Sintaksis sebagai contoh: 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'. Langkah-langkah berikut menjelaskan cara membuat ekspresi SQL yang valid untuk bidang DDL menggunakan dokumentasi API Java Faker.
-
Di dokumentasi API Java Faker, temukan kelas Number.

-
Di kelas Number, temukan metode numberBetween dan lihat deskripsinya.

Metode numberBetween mengembalikan nilai dalam rentang angka tertentu.
-
Berdasarkan nama kelas `Number`, nama metode `numberBetween`, dan parameter input `0` serta `1000`, ekspresi SQL untuk bidang `age` dibuat sebagai berikut: 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'.
Ekspresi ini menghasilkan nilai untuk bidang `age` yang berada di antara 0 dan 1000.
-