本文为您介绍如何使用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 | 是 | 无 | 固定值为 | 
| rows-per-second | 生成随机数据的速率。 | Long | 否 | 10000(条/秒) | 无。 | 
| number-of-rows | 生成数据的总条数。 | Long | 否 | 无 | 默认生成的是无界数据源表。如果任意字段生成器类型为序列生成器,则当某一字段的序列全部生成后,Source结束,生成有界表。 | 
| fields.<field>.kind | 为<field>生成数据的生成器类型。 | String | 否 | random | 参数可选值: 
 关于生成器详情请参见生成器。 | 
| 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 | 支持以下任意一种类型: 
 | 
| 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'
);