本文为您介绍Where修改的可兼容性和不可兼容性详情。
Where的计算不涉及到状态,因此它的修改不会影响自身算子的状态兼容,但它的修改会影响其输出算子的兼容性。
如果需要通过修改Where条件来修正作业数据(例如过滤脏数据),在其他配置中添加如下配置,具体操作请参见如何配置作业运行参数?。添加以下配置后,如果您修改了Where条件后,则系统会忽略该修改对下游算子状态的兼容性判断的影响。
table.optimizer.state-compatibility.ignore-filter=true
说明
该参数默认值为false。
-- 原始SQL。
select a, sum(b), max(c) from MyTable group by a;
-- 添加Where并且设置table.optimizer.state-compatibility.ignore-filter=false,该修改属于不兼容修改。
select a, sum(b), max(c) from (select * from MyTable where a > 10) group by a;
-- 添加Where并且设置table.optimizer.state-compatibility.ignore-filter=true,该修改属于完全兼容修改。
select a, sum(b), max(c) from (select * from MyTable where a > 10) group by a;