Topik ini menjelaskan penggunaan Faker connector.
Informasi latar belakang
Faker connector adalah konektor bawaan dari Realtime Compute for Apache Flink. Konektor ini menghasilkan data uji berdasarkan ekspresi Java Faker yang diberikan untuk setiap kolom dalam tabel. Jika Anda ingin menggunakan data uji untuk memverifikasi logika bisnis selama pengembangan atau pengujian, disarankan untuk menggunakan Faker connector.
Tabel berikut menjelaskan kemampuan yang didukung oleh Faker connector.
Item | Deskripsi |
Jenis tabel | Tabel sumber dan tabel dimensi |
Mode operasi | Mode batch dan mode streaming |
Format data | Tidak tersedia |
Metrik | Tidak tersedia |
Jenis API | SQL API |
Pembaruan atau penghapusan data di tabel sink | Tidak tersedia |
Prasyarat
Tidak tersedia.
Batasan
Hanya Realtime Compute for Apache Flink yang menggunakan Ververica Runtime (VVR) 4.0.12 atau versi lebih baru yang mendukung Faker connector.
Faker connector hanya mendukung tipe data berikut: CHAR(n), VARCHAR(n), STRING, TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL, BOOLEAN, TIMESTAMP, ARRAY, MAP, MULTISET, dan ROW.
Jika Faker connector melakukan operasi JOIN pada tabel dimensi, kueri tidak dilakukan pada tabel dimensi. Output dihasilkan berdasarkan lookup key di 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''}'
);Parameter dalam klausa WITH
Kategori | Parameter | Deskripsi | Tipe data | Diperlukan | Nilai default | Catatan |
Parameter umum | connector | Jenis tabel. | String | Ya | Tidak ada | Nilai parameter ini adalah faker. |
fields.<field>.expression | Ekspresi Java Faker yang menghasilkan nilai untuk kolom tersebut. | String | Ya | Tidak ada | Untuk informasi lebih lanjut, lihat bagian Ekspresi kolom dari topik ini. | |
fields.<field>.null-rate | Laju di mana nilai dalam kolom ini bernilai null. | Float | Tidak | 0.0 | Tidak tersedia | |
fields.<field>.length | Panjang kolom dengan tipe data ARRAY, MAP, atau MULTISET. | Integer | Tidak | 1 | Tidak tersedia | |
Parameter hanya untuk tabel sumber | number-of-rows | Jumlah baris data yang dihasilkan. | Integer | Tidak | -1 | Jika Anda menentukan parameter ini, tabel sumber dibatasi. Jika Anda tidak menentukan parameter ini, tabel sumber tidak dibatasi. |
rows-per-second | Laju di mana data acak dihasilkan. | Integer | Tidak | 10000 | Nilai default: 10000. Satuan: rekaman per detik. |
Contoh
Membuat 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 kolom
Operasi
Ketika menggunakan Faker connector, Anda harus mendefinisikan ekspresi dalam klausa WITH untuk setiap kolom dalam pernyataan DDL. Ekspresi tersebut memiliki format 'fields.<field>.expression' = '#{className.methodName ''parameter'', ...}'. Tabel berikut menjelaskan parameter dalam ekspresi.
Parameter
Deskripsi
field
Nama kolom dalam pernyataan DDL.
className
Nama kelas Faker.
Java Faker menyediakan sekitar 80 kelas Faker untuk menghasilkan ekspresi kolom. Anda dapat memilih kelas berdasarkan kebutuhan bisnis Anda.
nullNama kelas Faker tidak peka huruf besar/kecil.
methodName
Nama metode.
nullNama metode tidak peka huruf besar/kecil.
parameter
Parameter input metode.
nullSetiap parameter input metode harus diapit tanda kutip tunggal (').
Pisahkan beberapa parameter input dengan koma (,).
Contoh
Dalam contoh ini, ekspresi 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}' untuk kolom age dalam Sintaksis dihasilkan berdasarkan dokumentasi API Java Faker dengan langkah-langkah berikut:
Temukan kelas Number dalam dokumentasi API Java Faker.

Temukan metode numberBetween dalam kelas Number dan lihat deskripsi metode.

Metode numberBetween menentukan angka antara mana nilai kembali berada.
Dapatkan ekspresi SQL 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}' untuk kolom age berdasarkan kelas Number dan nilai 0 dan 1000 yang ditentukan oleh metode numberBetween.
Ekspresi ini menunjukkan bahwa nilai yang dihasilkan untuk kolom age berada dalam rentang 0 hingga 1000.