Hi,all:
我使用flink1.11.2进行作业开发,由于要兼容内部历史代码,需要把source手动注册成一张表,调用为:

> tableEnv.createTemporaryView(tableSource.getName, source, fields.toArray:
> _*)
>
其中,tableEnv为 StreamTableEnvironment类型,source是 DataStream[Row] 类型,代表source
connector生成的算子,fields是 由处理过的source table的 filed name 转换成的 Expression,将filed
name转换成expression 使用 *ExpressionParser.parseExpression* 这个方法

正常情况下,都能注册成功。
但是,当field name带中横线,如 source中一个字段名称为
“X-Oem”时,经过 ExpressionParser.parseExpression 会被解析为 “minus(X, Model)”
而非预期的“X-Oem”,导致注册成的表与DML语句中操作的字段名不一致报错。

有什么方法能够处理这种情况么?

回复