? ? 在使用ODPS上的表時,很可能這個表中的數(shù)據(jù)是采用某些同步工具從其他的數(shù)據(jù)源中同步而來的,而當你想過濾某個字段field_name中值為null的數(shù)據(jù)時,往往會在where條件中按照 where field_name is not null來過濾field_name中的null值。
? ? 但是當你按照如上方式過濾后,重新審視過濾后的數(shù)據(jù)你會發(fā)現(xiàn)其實情況并不像你想的一樣:過濾后的filed_name字段中雖說不包括null值,但是會出現(xiàn)一些奇怪的\N,這時該怎么辦呢?
? ? 解決方案:一些同步工具在向ODPS中同步數(shù)據(jù)源(例如MySQL數(shù)據(jù)庫)中的數(shù)據(jù)時,會將一些null字段給賦值為"\N",而這些字段在ODPS的表中很容易被認為是null而忽略,這將影響最終的數(shù)據(jù)質(zhì)量;
? ? 例如:若簡單的在where條件中按照 where field_name is not null來過濾field_name中的null字段,可能最終的field_name字段中會包括"\N"的情況。
? ? 因此,若希望在ODPS表中過濾某個字段中的null數(shù)據(jù),可以按照以下方式:
? ? where (field_name is not null or field_name <>'\\N')
? ? 過濾后field_name字段中就不會存在null或者\N的數(shù)據(jù)了!