BigQuery エラーフィードバック
ERROR や ASSERT を使う
WHERE ... AND ERROR("...") はダメ
コード書く時のように expect_truethy() && throw (...) のノリでやってはいけない
次の例では、ERROR 関数は条件 x > 0 の前に評価される場合もあれば、後に評価される場合もあります。これは、BigQuery では通常、WHERE 句の条件間の順序が保証されず、ERROR 関数に対する特別な保証もないためです。
WHERE x > 0 AND ERROR('Example error');
WHERE IF(x > 0, true, ERROR(...));' のようにする
SELECT ..., IFNULL(x, x, ERROR(...)) AS x のほうがよくやるかな?
事前条件を WITH 句でチェックできる? → だめ
WITH check AS (SELECT IFNULL(x, x, ERROR(...)) FROM ...) SELECT ... みたいに書けたら面白いと思ったけど
check 参照されないと評価されないからダメやな
ASSERT の用途
scheduled query で定期実行する?
Links