Bu konu, test verileri oluşturmak için Faker bağlayıcısının nasıl kullanılacağını açıklar.
Arka plan bilgileri
Faker bağlayıcısı, Realtime Compute for Apache Flink içinde yerleşik olarak bulunan bir bağlayıcıdır. Tablodaki her alan için sağladığınız Java Faker ifadelerine göre test verileri oluşturur. Geliştirme veya test aşamalarında iş mantığını doğrulamak amacıyla test verisi üretmek için bu bağlayıcıyı kullanın.
Aşağıdaki tabloda Faker bağlayıcısının özellikleri açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ön koşullar
Yok
Sınırlamalar
Faker bağlayıcısı yalnızca Realtime Compute for Apache Flink VVR 4.0.12 ve sonraki sürümlerde desteklenir.
Bağlayıcı yalnızca aşağıdaki veri türlerini destekler: CHAR(n), VARCHAR(n), STRING, TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL, BOOLEAN, TIMESTAMP, ARRAY, MAP, MULTISET ve ROW.
Bir JOIN işleminde boyut tablosu olarak kullanıldığında, Faker bağlayıcısı gerçek bir boyut tablosu araması gerçekleştirmez. Bunun yerine, kaynak tablodan gelen arama anahtarına dayanarak doğrudan bir sonuç üretir.
Söz dizimi
CREATE TABLE faker_source (
`name` STRING,
`age` INT
) WITH (
'connector' = 'faker',
'fields.name.expression' = '#{superhero.name}',
'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'
);
WITH parametreleri
|
Tür |
Parametre |
Açıklama |
Tür |
Gerekli |
Varsayılan |
Açıklamalar |
|
Genel |
connector |
Bağlayıcı türünü belirtir. |
String |
Evet |
Yok |
Değer |
|
fields.<field>.expression |
Bu alan için değerler üretecek Java Faker ifadesini belirtir. |
String |
Evet |
Yok |
Daha fazla bilgi için bkz. Alan ifadeleri. |
|
|
fields.<field>.null-rate |
Alanın değerinin null olma olasılığını belirtir. |
Float |
Hayır |
0.0 |
Yok |
|
|
fields.<field>.length |
|
Integer |
Hayır |
1 |
Yok |
|
|
Kaynak tabloya özgü |
number-of-rows |
Oluşturulacak satır sayısını belirtir. |
Integer |
Hayır |
-1 |
Bu parametre ayarlandığında kaynak tablo sınırlı olur. Aksi takdirde sınırsızdır. |
|
rows-per-second |
Veri üretim hızını belirtir. |
Integer |
Hayır |
10000 |
Yok |
Örnekler
Boyut tablosu örneği
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;
Alan ifadeleri
-
Biçim
DDL deyimiyle tanımlanan her alan, WITH yan tümcesinde karşılık gelen bir ifade gerektirir. İfade, 'fields.<field>.expression' = '#{className.methodName ''parameter'', ...}' biçiminde olmalıdır. Aşağıdaki tabloda bu biçimin bileşenleri açıklanmaktadır.
Parametre
Açıklama
field
DDL deyimindeki bir alanın adı.
className
Faker sınıfının adı.
Java Faker, alan ifadeleri oluşturmak için yaklaşık 80 Faker sınıfı sağlar. İş gereksinimlerinize göre bir sınıf seçin.
NotFaker sınıf adları büyük/küçük harfe duyarlı değildir.
methodName
Yöntemin adı.
NotYöntem adları büyük/küçük harfe duyarlı değildir.
parameter
Yöntem için giriş parametreleri.
Not-
İfade dizesi içinde doğru şekilde kaçış yapmak için yöntem giriş parametrelerini iki ardışık tek tırnak içine alın (
''). -
Birden çok parametreyi virgülle (,) ayırın.
-
-
Örnek
Aşağıdaki adımlar, Söz dizimi bölümündeki
agealan ifadesi 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}' örneğini kullanarak bir alan ifadesinin nasıl oluşturulacağını göstermektedir:Java Faker API belgelerinde
Numbersınıfını bulun.-
NumbersınıfındanumberBetweenyöntemini bulup açıklamasını görüntüleyin.Yöntem, belirtilen bir sayısal aralık içinde bir değer döndürür.
-
Sınıf adına (
Number), yöntem adına (numberBetween) ve giriş parametrelerine (0ve1000) dayanarakagealanı için SQL ifadesini oluşturun: 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'.Bu ifade,
agealanı için 0 ile 1000 arasında bir değer üretir.