このトピックでは、Fakerコネクタの使用方法について説明します。
背景情報
Fakerコネクタは、Realtime Compute for Apache Flinkの組み込みコネクタです。このコネクタは、テーブルの各フィールドに提供されるJava Faker式に基づいてテストデータを生成します。デプロイメントの開発またはテスト中にテストデータを使用してビジネスロジックを検証する場合は、Fakerコネクタを使用することをお勧めします。
次の表に、Fakerコネクタでサポートされている機能を示します。
項目 | 説明 |
テーブルタイプ | ソーステーブルとディメンションテーブル |
実行モード | バッチモードとストリーミングモード |
データ形式 | 該当なし |
メトリック | 該当なし |
APIタイプ | SQL API |
シンクテーブルでのデータの更新または削除 | 該当なし |
前提条件
該当なし
制限事項
Ververica Runtime(VVR)4.0.12以降を使用するRealtime Compute for Apache Flinkのみが、Fakerコネクタをサポートしています。
Fakerコネクタは、CHAR(n)、VARCHAR(n)、STRING、TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL、BOOLEAN、TIMESTAMP、ARRAY、MAP、MULTISET、およびROWのデータ型のみをサポートしています。
FakerコネクタがディメンションテーブルでJOIN操作を実行する場合、ディメンションテーブルでクエリは実行されません。出力は、ソーステーブルのルックアップキーに基づいて生成されます。
構文
CREATE TABLE faker_source (
`name` STRING,
`age` INT
) WITH (
'connector' = 'faker',
'fields.name.expression' = '#{superhero.name}',
'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'
);WITH句のパラメーター
カテゴリ | パラメーター | 説明 | データ型 | 必須 | デフォルト値 | 備考 |
共通パラメーター | connector | テーブルのタイプ。 | String | はい | なし | パラメーターの値はfakerです。 |
fields.<field>.expression | フィールドの値を生成するJava Faker式。 | String | はい | なし | 詳細については、このトピックのフィールド式セクションをご参照ください。 | |
fields.<field>.null-rate | このフィールドの値がNULLになる割合。 | Float | いいえ | 0.0 | 該当なし | |
fields.<field>.length | ARRAY、MAP、またはMULTISETデータ型のフィールドの長さ。 | Integer | いいえ | 1 | 該当なし | |
ソーステーブル専用のパラメーター | number-of-rows | 生成されるデータの行数。 | Integer | いいえ | -1 | このパラメーターを指定すると、ソーステーブルは有界になります。このパラメーターを指定しない場合、ソーステーブルは無界になります。 |
rows-per-second | ランダムデータが生成されるレート。 | Integer | いいえ | 10000 | デフォルト値: 10000 。単位: レコード/秒。 |
例
ディメンションテーブルを作成する
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;
フィールド式
操作
Fakerコネクタを使用する場合は、DDLステートメントの各フィールドに対してWITH句で式を定義する必要があります。式は、'fields.<field>.expression' = '#{className.methodName ''parameter'', ...}'形式です。次の表に、式のパラメーターを示します。
パラメーター
説明
field
DDLステートメントのフィールド名。
className
Fakerクラスの名前。
Java Fakerは、フィールド式を生成するために約80個のFakerクラスを提供しています。ビジネス要件に基づいてクラスを選択できます。
説明Fakerクラス名は大文字と小文字を区別しません。
methodName
メソッドの名前。
説明メソッド名は大文字と小文字を区別しません。
parameter
メソッドの入力パラメーター。
説明メソッドの各入力パラメーターは、単一引用符(')で囲む必要があります。
複数の入力パラメーターはコンマ(,)で区切ります。
例
この例では、構文のageフィールドの'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'式は、次の手順を実行することで、Java Faker APIドキュメントに基づいて生成されます。
Java Faker APIドキュメントでNumberクラスを見つけます。

NumberクラスでnumberBetweenメソッドを見つけ、メソッドの説明を表示します。

numberBetweenメソッドは、戻り値が含まれる数値を指定します。
Numberクラスと、numberBetweenメソッドで指定された値 0 と 1000 に基づいて、ageフィールドのSQL式'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'を取得します。
この式は、生成されるageフィールドの値が 0 ~ 1000 の範囲内にあることを示します。