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

Realtime Compute for Apache Flink:Fakerコネクタ

最終更新日:Jan 08, 2025

このトピックでは、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ドキュメントに基づいて生成されます。

    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''}'を取得します。

      この式は、生成されるageフィールドの値が 0 ~ 1000 の範囲内にあることを示します。