日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

模擬數據生成Faker

本文為您介紹如何使用模擬數據生成Faker連接器。

背景信息

模擬數據生成Faker是系統內置的連接器,它根據表中每個字段提供的Java Faker表達式生成測試數據。當您在開發或測試時,需要使用一些測試數據來驗證業務邏輯時,推薦您使用模擬數據生成連接器。

模擬數據生成連接器支持的信息如下。

類別

詳情

支持類型

源表和維表

運行模式

批模式和流模式

數據格式

不適用

特有監控指標

API種類

SQL

是否支持更新或刪除結果表數據

不涉及

前提條件

使用限制

  • 僅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時,并不執行實際的維表查找動作,而是根據源表傳入的lookup key直接生成返回結果。

語法結構

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

該字段值為空的占比。

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;

字段表達式

  • 操作方法

    使用模擬數據生成連接器時,DDL中定義的每個字段,都需要在WITH語句中提供具體的表達式。表達式的固定格式為'fields.<field>.expression' = '#{className.methodName ''parameter'', ...}'。相關的參數說明如下表所示。

    參數

    說明

    field

    表示DDL中具體的字段名。

    className

    表示Faker類的類名。

    Java Faker提供了大約80個Faker類用于生成您需要的字段表達式,您可以根據需要選擇對應的類。

    說明

    Faker類的類名不區分大小寫。

    methodName

    表示方法名。

    說明

    方法名不區分大小寫。

    parameter

    表示方法的入參。

    說明
    • 方法的入參需要使用兩個半角單引號(' )括起來。

    • 多個參數使用半角逗號(,)進行分隔。

  • 示例

    本文結合Java Faker API文檔和語法結構部分中的age字段表達式'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}' 為例,為您介紹如何為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''}'

      表示生成的age字段的值在0到1000范圍內。