1. 计算列(日期)
计算列是指在数据集中定义的计算列,它可以是简单的常量值,也可以是复杂的表达式,用于从表中提取特定的值。Flink 中的计算列使用 SQL 语句定义,可以在结果集中返回结果。
2. 元数据列(kafka分区)
元数据列是指存储在数据集中的基础列,它们不包含任何计算。它们可以是字符串、数字、日期或其他类型的列。Flink 中的元数据列使用 SQL 语句定义,可以在结果集中返回结果。
以下是一个示例:
CREATE TABLE kafka_table (
name STRING,
age INT,
salary DOUBLE,
partition_metadata STRING METADATA VIRTUAL
) WITH (
'connector' = 'kafka',
'topic' = 'your_topic',
'properties.bootstrap.servers' = 'your_bootstrap_servers',
'properties.group.id' = 'your_group_id',
'scan.startup.mode' = 'earliest-offset',
'format' = 'json'
)
在上述示例中,我们为kafka_table
定义了一个名为partition_metadata
的元数据列。该列的类型为STRING,并且使用了METADATA VIRTUAL
属性来指定它是一个虚拟的元数据列。
通过这种方式,您可以在读取Kafka数据时将分区信息作为元数据列添加到结果集中。
3. 区别
计算列和元数据列之间的区别如下:
-
计算列是通过对现有列进行计算或表达式求值得到的新列,而元数据列是作为固定值或常量添加到结果集中的列。
-
计算列根据数据集中的实际值进行计算,而元数据列是预定义的固定值。
-
计算列通常用于执行各种计算操作、转换数据或生成新的衍生指标,而元数据列主要用于向结果集中添加静态值或标记。
4. 官方链接
官方链接:Flink Table API