You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by Arthur Li <li...@126.com> on 2022/04/30 14:47:06 UTC

Table API filter scala表达方式提示类型不匹配

Hi all,

我在使用filter scala表达方式时,提示需要Expression类型,但是实际是String类型,但是这种写法在源码文档里是推荐的。

我的代码:
sensorTab
  // 使用Expression方式,例如 tab.select($"key", $"value".avg + " The average" as "average")
  .select($"id", $"temperature")
  // 使用Expression方式
  //      .filter($("id").isEqual("sensor_1"))
  // 使用这种方式,类型不匹配
  // Required Expression, Found String
  .filter($"id" === "sensor_1”) // error
  .toDataStream
  .print("select sensor_1")


源码文档:

Filters out elements that don't pass the filter predicate. Similar to a SQL WHERE clause.
Example:
 
 tab.filter($("name").isEqual("Fred"));
 
Scala Example:
 
 tab.filter($"name" === "Fred”)

 Table filter(Expression predicate);


Re: Table API filter scala表达方式提示类型不匹配

Posted by Arthur Li <li...@126.com>.
没有问题了,因为隐式转换问题。

> 2022年4月30日 22:47,Arthur Li <li...@126.com> 写道:
> 
> Hi all,
> 
> 我在使用filter scala表达方式时,提示需要Expression类型,但是实际是String类型,但是这种写法在源码文档里是推荐的。
> 
> 我的代码:
> sensorTab
>   // 使用Expression方式,例如 tab.select($"key", $"value".avg + " The average" as "average")
>   .select($"id", $"temperature")
>   // 使用Expression方式
>   //      .filter($("id").isEqual("sensor_1"))
>   // 使用这种方式,类型不匹配
>   // Required Expression, Found String
>   .filter($"id" === "sensor_1”) // error
>   .toDataStream
>   .print("select sensor_1")
> 
> 
> 源码文档:
> 
> Filters out elements that don't pass the filter predicate. Similar to a SQL WHERE clause.
> Example:
>  
>  tab.filter($("name").isEqual("Fred"));
>  
> Scala Example:
>  
>  tab.filter($"name" === "Fred”)
> 
>  Table filter(Expression predicate);
>