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 |
|
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 |
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.
CatatanNama kelas Faker tidak peka huruf besar/kecil.
methodName
Nama metode.
CatatanNama 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:-
Pada dokumentasi API Java Faker, cari kelas
Number. -
Pada kelas
Number, cari metodenumberBetweendan lihat deskripsinya.Metode ini mengembalikan nilai dalam rentang numerik tertentu.
-
Berdasarkan nama kelas (
Number), nama metode (numberBetween), dan parameter input (0dan1000), buat ekspresi SQL untuk fieldage: 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'.Ekspresi ini menghasilkan nilai antara 0 dan 1000 untuk field
age.
-