开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

flink1.14.4 在 FlinkSQL里面使用 窗口,where里面 使用in语法,() 圆括

flink1.14.4 在 FlinkSQL里面使用 窗口,where里面 使用in语法,() 圆括号里面的值的数量放一个以上就会报这个错,有大佬知道为啥吗? 129d3f3b5032e886c0b400b1c2a0fd18.png

展开
收起
十一0204 2023-04-11 09:38:56 304 0
3 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    在阿里云Flink 1.14.4 中,如果在FlinkSQL中使用窗口,并在WHERE子句中使用 IN 语法,圆括号中的值数量大于1时,可能会出现错误。

    这是因为在FlinkSQL中,IN 语法只支持一个参数。如果您需要使用多个参数,可以使用 OR 连接它们,例如:

    SELECT * FROM <table-name>
    WHERE col1 IN ('val1', 'val2', 'val3')
    OR col2 IN ('val4', 'val5', 'val6')
    

    这将查询 <table-name> 表中 col1 列或 col2 列中包含 val1, val2, val3, val4, val5, val6 的数据行。

    如果您仍然想使用 IN 语法并且需要支持多个参数,您可以尝试使用 VALUES 关键字来创建一个值列表,例如:

    SELECT * FROM <table-name>
    WHERE col1 IN (VALUES 'val1', 'val2', 'val3')
    

    这将查询 <table-name> 表中 col1 列中包含 val1, val2, val3 的数据行。

    2023-04-26 22:21:25
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    根据报错信息"Currently Flink doesn't support individual window table-valued function",可以推断出这是Flink目前不支持的窗口表值函数造成的。具体来说,这个错误可能是因为你在窗口函数中使用了in语法,而in语法要求括号中至少要有一个元素,当你在括号中放入一个以上的元素时,Flink就会认为你使用的是“窗口表值函数”,从而报错。

    目前解决这个问题的方法可能是避免在窗口函数中使用in语法,或者使用其他类似功能的语法,或者等待Flink在未来的版本中更新这个问题。

    2023-04-17 16:41:28
    赞同 展开评论 打赏
  • 存在即是合理

    FlinkSQL中使用窗口并在WHERE子句中使用IN语法时,可能会出现TableException异常,错误消息是"Currently Flink doesn't support individual window table-valued function"。该异常是由于Flink当前不支持在窗口表值函数中使用IN语法导致的。

    为了解决这个问题,可以尝试将IN语法替换为多个OR条件,如下所示:

    SELECT *
    FROM myTable
    WHERE col1 = 'value1' AND (col2 = 'value2' OR col2 = 'value3' OR col2 = 'value4')
      AND time_col BETWEEN TIMESTAMP '2022-04-10 00:00:00' AND TIMESTAMP '2022-04-11 00:00:00'
      GROUP BY TUMBLE(time_col, INTERVAL '1' DAY), col1, col2
    
    

    在上述示例中,将IN('value2', 'value3', 'value4')条件替换为OR col2 = 'value2' OR col2 = 'value3' OR col2 = 'value4'条件,可以避免使用窗口表值函数时出现异常。

    如果条件中有多个IN语句,则需要将它们全部替换为OR条件。另外,如果在Flink SQL中使用的是事件时间(event time)窗口,还需要确保窗口大小与窗口表值函数中的窗口大小一致。

    2023-04-13 20:24:24
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 热门讨论

    热门文章

    相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载