Asakusa Framework Advent Calendar 2019の16日目、SQLをAsakusaFWに変換するポイントについてです。
SELECT文は集約(SUMやCOUNT等)することが出来ます。
これは、AsakusaFWではSummarize演算子が該当します。
しかし、ここでもNULLの挙動は異なります。SQLのCOUNT(値)では、値がNULLだとカウントの対象外、SUM(値)では値がNULLだと合算の対象外です。が、Summarize演算子ではcountはnullでも関係なくカウントされ、sumはnullだとNullPointerExceptionが発生します。
このため、Summarize演算子を使わず、Fold演算子でnullチェックを行いつつカウント・集計を行う必要があります。
もしくは、NULLを0扱いしてよいのであれば、事前にUpdate演算子でnullを0に更新しておき、Summarize演算子に渡すということも出来ます。