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语句中操作的字段名不一致报错。 有什么方法能够处理这种情况么?