SPL 采用管道式语法,可以通过 | 符号将过滤和投影指令串联实现同时行过滤和列裁剪。在 Flink SLS Connector 的 query 参数中配置组合 SPL 语句即可。
示例 SPL 语句(分行展示,在 Flink 中需单行配置):
*
| where slbid = 'slb-01'
| project request_uri, scheme, slbid, status, __topic__, __source__, "__tag__:__receive_time__"
对应的 Flink 建表语句:
CREATE TEMPORARY TABLE sls_input(
request_uri STRING,
scheme STRING,
slbid STRING,
status STRING,
`__topic__` STRING METADATA VIRTUAL,
`__source__` STRING METADATA VIRTUAL
) WITH (
'connector' = 'sls',
'query' = '* | where slbid = ''slb-01'' | project request_uri, scheme, slbid, status, __topic__, __source__, "__tag__:__receive_time__"'
);
上一条 where 指令的输出作为 project 指令的输入,先过滤行再裁剪列,最终 Flink 只接收到过滤且投影后的精简数据。