Hi Jun Zou.
tEnv.createTemporaryView("`Word-Count`", input, $("word"), $("frequency"));
加上 ` 试一下。Jun Zou <[email protected]> 于2021年5月26日周三 下午4:33写道: > 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语句中操作的字段名不一致报错。 > > 有什么方法能够处理这种情况么? >
