Похоже, что BigQuery изменил свое поведение для условий на полях null
: теперь они возвращают значение false
, а не нуль, поскольку раньше оно было не таким длинным go. Я проверил, и поведение изменилось как для Legacy, так и для Standard SQL.
Проверьте этот код:
#standardSQL
With data as (
SELECT safe_cast(null as int64) as int_field
union all
SELECT 5 as int_field
union all
SELECT 10 as int_field
)
SELECT *, if(int_field in (5,7),1,0) as condition
from
data
#legacySQL
SELECT *, if(int_field < 10,1,0) as condition
from
( SELECT *
from
(SELECT null as int_field)
,
(SELECT 5 as int_field)
,
(SELECT 10 as int_field)
)
Теперь это влияет на некоторые существующие представления, избавляясь от null
с - и это не желаемое поведение. Кто-нибудь знает, как я могу переопределить значения по умолчанию, не просматривая каждую строку кода и добавляя if(field is null,null,if(other conditions...
?