データサイエンティストの阿部です。読書の秋ですね。今年読んだ教養書では『統計学を哲学する』、『サピエンスの未来』の2冊が印象深いです。
さて、明日から使いたくなるデータハンドリング術を紹介する "Sexy Tech for You" の第7話を配信しました。魂を込めたクエリやシステム運用するクエリが、ゼロ徐算エラーや型変換エラーで停止してしまったことが、皆さんにもあるかと思います。
BigQueryで、そうしたエラーを乗り越えてクエリ結果を得るために、個人的に愛用している関数を紹介しました。エラーを握りつぶしていいかどうか、というのは別議論としてありますが、取り急ぎクエリ結果が必要な局面を想定しています。
動画中に記載したクエリや補足事項を本ブログに掲載しますので、少しでも皆様のお役に立てたら幸いです。
Youtube
BigQuery クエリ
NULLIF 関数:ゼロ徐算エラー対策
WITH sample AS ( SELECT 10 AS A, 20 AS B UNION ALL SELECT 50, 0 UNION ALL SELECT 60, 60 ) -- エラー発生 SELECT A / B FROM sample -- エラーなし SELECT SAFE_DIVIDE(A, B) FROM sample SELECT A / NULLIF(B, 0) FROM sample
SAFE_* 関数:型変換エラー対策
WITH sample AS ( SELECT "2000-01-01" AS A UNION ALL SELECT "2000-01-01" UNION ALL SELECT "-" ) -- エラー発生 SELECT CAST(A AS DATE) FROM sample -- エラーなし SELECT SAFE_CAST(A AS DATE)FROM sample
IGNORE NULLS オプション:NULL対策
WITH sample AS ( SELECT A / NULLIF(B,0) AS C FROM( SELECT 10 AS A, 20 AS B UNION ALL SELECT 50, 0 UNION ALL SELECT 60, 60 )) -- NULL含めて計算する SELECT C, FIRST_VALUE(C)OVER(ORDER BY C) FROM sample -- NULL除外して計算する SELECT C, FIRST_VALUE(C IGNORE NULLS)OVER(ORDER BY C) FROM sample
補足
僕はよく、NULLIF
関数とIFNULL
関数を混同します。IGNORE NULLS
の反対に、明示的にNULLを含めるRESPECT NULLS
というオプションもあります。IGNORE
の反対はRESPECT
だったのかと勉強になりました。
以上、Moblie Tech for All のヤプリがお送りする Sexy Tech for You でした!次回またお会いしましょう。