毎日スケジュールしている、BigQuery集計クエリでエラーが発生した
failed with error INVALID_ARGUMENT: Bad int64 value: NULL
int64へのCASTで失敗している。
対象コードは以下
CREATE TEMPORARY FUNCTION
getValue()
...
return value ? value : 'NULL';
}
CAST(getValue() AS INT64) AS user_id FROM ~~~
getValue で valueを取り出すが、無理だった場合に 'NULL' を返す仕様。
文字列の 'NULL' は、 INT64 にCASTできないためエラーになっている。
SELECT CAST(NULL, AS INT64) FROM ~~~
-> 通る
SELECT CAST('NULL', AS INT64) FROM ~~~
-> エラー
-> Could not cast literal "NULL" to type INT64
文字列ではないNULLに変えてあげればOKだと思い変更したが、エラー。
CREATE TEMPORARY FUNCTION
getValue()
...
return value ? value : NULL;
}
-> Uncaught ReferenceError: NULL is not defined
TEMPORARY FUNCTION
は、Javascriptで動いている。
Javascriptでは、 NULL は変数名とみなして null でヌルの挙動をする
最終的に以下で修正。再集計完了。
CREATE TEMPORARY FUNCTION
getValue()
...
return value ? value : null;
}