本文為您介紹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;
文檔內容是否對您有幫助?