Datagen

本文为您介绍如何使用Datagen连接器。

背景信息

Datagen是主要用于调试的连接器,可以周期性地生成Datagen源表对应类型的随机数据。如果您在开发或测试时,需要使用一些测试数据来快速验证业务逻辑,您可以使用Datagen连接器来生成随机数据。

Datagen支持计算列语法Computed Column syntax,使它可以灵活地生成数据。

Datagen连接器支持的信息如下。

类别

详情

支持类型

源表

运行模式

批模式和流模式

数据格式

暂不适用

特有监控指标

暂无

API种类

SQL

是否支持更新或删除结果表数据

不涉及

使用限制

仅Flink计算引擎VVR 2.0.0及以上版本支持Datagen连接器。

语法结构

CREATE TABLE datagen_source (
  name VARCHAR,
  score BIGINT
) WITH (
  'connector' = 'datagen'
);

WITH参数

参数

说明

数据类型

是否必填

默认值

备注

connector

源表类型。

String

固定值为datagen

rows-per-second

生成随机数据的速率。

Long

10000(条/秒)

无。

number-of-rows

生成数据的总条数。

Long

默认生成的是无界数据源表。如果任意字段生成器类型为序列生成器,则当某一字段的序列全部生成后,Source结束,生成有界表。

fields.<field>.kind

为<field>生成数据的生成器类型。

String

random

参数可选值:

  • random:随机生成器。

  • sequence:序列生成器。

关于生成器详情请参见生成器

fields.<field>.min

生成随机数的最小值。

与<field>类型相同

<field>类型的最小值

fields.<field>.kind参数设置为random时,该参数配置有效。只支持数字类型。

fields.<field>.max

生成随机数的最大值。

与<field>类型相同

<field>类型的最大值

fields.<field>.min

fields.<field>.max-past

生成随机时间戳时,相对于本地机器当前时间戳的最大过去时间。

Duration

0

只支持时间戳类型。

fields.<field>.length

生成随机字符串的长度或者生成集合的容量。

Integer

100

支持以下任意一种类型:

  • char

  • varchar

  • binary

  • varbinary

  • string

  • array

  • map

  • multiset

fields.<field>.start

序列生成器的起始值。

与<field>类型相同

fields.<field>.kind参数设置为sequence时,该参数配置有效。

fields.<field>.end

序列生成器的结束值。

与<field>类型相同

fields.<field>.kind参数设置为sequence时,该参数配置有效。

说明

参数中的<field>需要替换为您在DDL中定义的目标字段名。

生成器

当前Datagen可以使用两种生成器生成随机数据:

  • 随机生成器(random):生成随机值。您可以指定随机生成数据的最大值和最小值。

  • 序列生成器(sequence):在一定范围内生成有序值,当生成序列达到结束值时结束,因此使用序列生成器将生成有界表。您可以指定序列的起始值和结束值。

各种数据类型支持的生成器如下所示。

类型

支持的生成器

备注

BOOLEAN

random

无。

CHAR

random/sequence

无。

VARCHAR

random/sequence

无。

BINARY

random/sequence

无。

VARBINARY

random/sequence

无。

STRING

random/sequence

无。

DECIMAL

random/sequence

无。

TINYINT

random/sequence

无。

SMALLINT

random/sequence

无。

INT

random/sequence

无。

BIGINT

random/sequence

无。

FLOAT

random/sequence

无。

DOUBLE

random/sequence

无。

DATE

random

始终使用本地机器的当前日期。

TIME

random

始终使用本地机器的当前时间。

TIMESTAMP

random

在相对于本地机器当前时间戳的最大过去时间范围内生成。

TIMESTAMP_LTZ

random

同TIMESTAMP。

ROW

random

生成随机子字段。

ARRAY

random

生成随机元素。

MAP

random

生成随机(key,value)。

MULTISET

random

生成随机元素。

使用示例

Datagen通常与LIKE子句一起使用来模拟一个表,如下所示。

CREATE TABLE datagen_source (
 id INT,
 score INT
) WITH (
 'connector' = 'datagen',
 'fields.id.kind'='sequence',
 'fields.id.start'='1',
 'fields.id.end'='50',
 'fields.score.kind'='random',
 'fields.score.min'='70',
 'fields.score.max'='100'
);