RETAIL_DAY_EXISTS
目的
RETAIL_DAY_EXISTSファンクションは、dtexprが小売カレンダに存在するかどうかを決定し、存在する場合はブール型のTRUEを戻し、存在しない場合はFALSEを戻します。is_restated (このファンクションでは必須)がRESTATEDの場合、このファンクションは、再表示された小売年から削除された週に該当する日にはFALSEを戻し、その他の日にはTRUEを戻します。is_restatedがNOT RESTATEDの場合、ファンクションは常にTRUEを戻します。このファンクションは、is_restatedがRESTATEDで、入力がカレンダにない日の1つである場合、他のすべてのファンクションでエラーが発生するためです。RETAIL_DAY_EXISTSファンクションを使用すると、ユーザーは、WHERE句でそのような行をフィルタで除外するか、CASE式を使用して他のファンクションへのコールを保護できます。
例1: WHERE句を使用した無効な行のフィルタ
次の例では、RETAIL_DAY_EXISTSを使用すると、WHERE句を使用して無効な行をフィルタで除外できます:
SELECT RETAIL_MONTH(order_date, ‘DEFAULT’, ‘RESTATED’) month, SUM(sales) sales FROM fact WHERE RETAIL_DAY_EXISTS(order_date, ‘RESTATED’) = TRUE GROUP BY ALL ORDER BY 1; MONTH SALES ---------- ----- FEB-RY2023 123
例2: CASE式を使用したコールの保護
SELECT CASE WHEN RETAIL_DAY_EXISTS(order_date, ‘RESTATED’) = TRUE THEN RETAIL_MONTH(order_date, ‘DEFAULT’, ‘RESTATED’) ELSE ‘#INVALID_DAY#’ END month, SUM(sales) sales FROM fact GROUP BY ALL ORDER BY 1; MONTH SALES ------------- ----- FEB-RY2023 123 #INVALID_DAY# 456
