赞
踩
在 Flink SQL 中,LATERAL TABLE 是一种用于处理依赖于外部表达式的表值函数(Table-valued Function,简称 TVF)的语法。LATERAL TABLE 用于在查询中扩展表,并将表值函数的结果与查询的其余部分进行连接(LATERAL TABLE 可以用于将表值函数的结果作为新的列添加到原始表中。)
这是通过在查询的 FROM 子句中使用 LATERAL TABLE 关键字来实现的
- SELECT t.name, f.address
- FROM myTable AS t,
- LATERAL TABLE(myFunction(t.id)) AS f(address)
myTable
是原始表,它包含了一个名为 id
的列和一个名为 name
的列。myFunction
是一个表值函数,它接受 id
作为参数,并返回一个包含地址信息的表。
通过使用 LATERAL TABLE,我们可以将 myFunction
的结果作为新的列 address
添加到查询结果中;
疑问:
使用lateral table和直接使用join有什么区别吗
使用LATERAL TABLE可以在查询中实现更复杂的逻辑,可以在SELECT子句中使用LATERAL TABLE关键字并调用表值函数,来查询所需要的列,得到的结果是:原表select查询的数据+LATERAL TABLE查询结果返回的数据,更加灵活;
比如说在flink table api中维表关联 我们可以使用LATERAL TABLE把对应维表数据再Hbase中拼接,再关联原表返回结果数据;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。