本文為您介紹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;