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

Realtime Compute for Apache Flink:Faker

最終更新日:Mar 10, 2026

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

背景情報

Faker コネクタは、テーブル内の各フィールドに対して Java Faker 式に基づいてテストデータを生成する組み込みコネクタです。Faker コネクタを使用すると、開発やテストの際にビジネスロジックを検証するためのテストデータを取得できます。

シミュレーションデータジェネレーターコネクタは、以下をサポートします。

カテゴリ

詳細

サポートされるタイプ

ソーステーブルとディメンションテーブル

実行モード

バッチモードとストリームモード

データフォーマット

該当なし

特定の監視メトリクス

なし

API タイプ

SQL

結果テーブルでのデータ更新または削除のサポート

該当なし

前提条件

なし

制限事項

  • Faker コネクタは、Flink コンピュートエンジンバージョン VVR 4.0.12 以降でのみサポートされます。

  • サポートされているデータ型は、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

デフォルト値は 10,000 行/秒です。

ディメンションテーブルの例

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

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

    説明
    • 各入力パラメーターは、2 つの単一引用符 ('') で囲む必要があります。

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

  • このセクションでは、「構文」セクションの `age` フィールドの式 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}' を例として使用します。次の手順では、Java Faker API ドキュメントを使用して、DDL フィールドの有効な SQL 式を作成する方法について説明します。

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

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

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

    3. クラス名 `Number`、メソッド名 `numberBetween`、および入力パラメーター `0` と `1000` に基づいて、`age` フィールドの SQL 式は次のように作成されます:'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'

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