Hi! 你看的是阿里云 Blink 的文档。Blink 是阿里原来基于 Flink 1.5 开发的产品,所以一些语法与现在的 Flink 有些不同。period for system_time 是以前 blink 定义维表的语法,现在不需要写了。另外 datagen 确实不能作为维表的数据来源,可以尝试用文件作为维表来源,比如 csv 文件。
目前 Blink 的大部分代码已贡献回 Flink(Flink 1.14 默认 planner 就是原来的 Blink planner),建议直接看 Flink 官网的文档学习[1]。 如果想要了解商业化的内容,应该看阿里云 Flink 全托管的文档[2]。 [1] https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/dev/table/sql/queries/joins/#temporal-joins [2] https://help.aliyun.com/document_detail/169590.html 段泽炳 <duanzeb...@foxmail.com> 于2022年2月7日周一 10:17写道: > 大家好: 我是一个flink初学者,刚学到维表join的部分,在维表join的部分遇到了困难。我在阿里云( > https://help.aliyun.com/document_detail/62506.html)flink sql上找到维表 ddl如下: > create table phoneNumber( name VARCHAR, phoneNumber bigint, primary > key(name), PERIOD FOR SYSTEM_TIME )with( type='rds' ); > > > 而我自己写的如下: > create table source_1( > id int, > data TINYINT, > primary key (id), > PERIOD FOR SYSTEM_TIME > )with( > 'connector' = 'datagen', > 'fields.id.kind'='sequence', > 'fields.id.start'='5', > 'fields.id.end'='8', > 'fields.data.kind'='sequence', > 'fields.data.start'='4', > 'fields.data.end'='11' > )结果在执行的时候报错: > py4j.protocol.Py4JJavaError: An error occurred while calling o1.executeSql. > : org.apache.flink.table.api.SqlParserException: SQL parse failed. > Incorrect syntax near the keyword 'PERIOD' at line 6, column 9. > Was expecting one of: > "CONSTRAINT" ... > "PRIMARY" ... > > …… > > > 而这个疑惑在我查看flink官网的时候变的更大,因为官网的例子是这样的: > CREATE TABLE currency_rates ( currency STRING, conversion_rate > DECIMAL(32, 2), update_time TIMESTAMP(3) METADATA FROM > `values.source.timestamp` VIRTUAL, WATERMARK FOR update_time AS > update_time, PRIMARY KEY(currency) NOT ENFORCED ) WITH ( > 'connector' = 'kafka', 'value.format' = 'debezium-json', /* ... */ > );基于以上,我的疑惑共有几点:1.是维表不能使用‘datagen’数据来源吗?还是pyflink 1.14 > 目前不支持维表ddl?2.阿里云的维表ddl语句和官网的维表ddl语句有什么区别吗?他们的使用场景是什么?3.如何能够让我在练习的时候正确使用维表join请大家指点一下,感激不尽