すべてのプロダクト
Search
ドキュメントセンター

Realtime Compute for Apache Flink:Faker コネクタ

最終更新日:Jun 22, 2026

このトピックでは、Faker コネクタを使用してテストデータを生成する方法について説明します。

背景情報

Faker コネクタは、Realtime Compute for Apache Flink の組み込みコネクタです。テーブルの各フィールドに指定した Java Faker 式に基づいてテストデータを生成します。このコネクタを使用して、開発またはテスト中にビジネスロジックを検証するためのテストデータを生成できます。

次の表に、Faker コネクタの機能を示します。

項目

詳細

サポートされるテーブルタイプ

ソーステーブルおよびディメンションテーブル

実行モード

バッチモードおよびストリーミングモード

データ形式

該当なし

コネクタ固有のメトリクス

なし

API タイプ

SQL

シンクテーブルでのデータ更新または削除のサポート

該当なし

前提条件

なし

制限

  • Faker コネクタは、Realtime Compute for Apache Flink VVR 4.0.12 以降でのみサポートされています。

  • このコネクタは、次のデータ型のみをサポートしています:CHAR(n)、VARCHAR(n)、STRING、TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL、BOOLEAN、TIMESTAMP、ARRAY、MAP、MULTISET、ROW。

  • JOIN 操作でディメンションテーブルとして使用する場合、Faker コネクタは実際のディメンションテーブルルックアップを実行しません。代わりに、ソーステーブルから渡されたルックアップキーに基づいて直接結果を生成します。

構文

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

ARRAYMAP、または MULTISET データ型のコレクションサイズ。

Integer

いいえ

1

なし

ソーステーブル固有

number-of-rows

生成する行数。

Integer

いいえ

-1

このパラメーターを設定すると、ソーステーブルは有界になります。設定しない場合は無界になります。

rows-per-second

データ生成レート。

Integer

いいえ

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.character}'
);
    
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;

フィールド式

  • 形式

    DDL ステートメントで定義された各フィールドには、WITH 句に対応する式が必要です。式は 'fields.<field>.expression' = '#{className.methodName ''parameter'', ...}' の形式で指定します。次の表に、この形式のコンポーネントを示します。

    パラメーター

    説明

    field

    DDL ステートメント内のフィールドの名前。

    className

    Faker クラスの名前。

    Java Faker は、フィールド式を生成するための約 80 個の Faker クラスを提供しています。ビジネス要件に基づいてクラスを選択してください。

    説明

    Faker クラス名では大文字と小文字は区別されません。

    methodName

    メソッドの名前。

    説明

    メソッド名では大文字と小文字は区別されません。

    parameter

    メソッドの入力パラメーター。

    説明
    • 式文字列内で正しくエスケープするには、メソッドの入力パラメーターを 2 つの連続した単一引用符 ('') で囲みます。

    • 複数のパラメーターはカンマ (,) で区切ります。

  • 次の手順では、「構文」セクションの age フィールド式 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}' を例として、フィールド式の構築方法を示します。

    1. Java Faker API ドキュメントで、Number クラスを見つけます。

    2. Number クラスで、numberBetween メソッドを見つけて、その説明を確認します。

      このメソッドは、指定された数値範囲内の値を返します。

    3. クラス名 (Number)、メソッド名 (numberBetween)、および入力パラメーター (01000) に基づいて、age フィールドの SQL 式を構築します:'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'

      この式は、age フィールドに 0 から 1000 までの値を生成します。