RETAIL_DAY_EXISTS

目的

RETAIL_DAY_EXISTSファンクションは、dtexprが小売カレンダに存在するかどうかを決定し、存在する場合はブール型のTRUEを戻し、存在しない場合はFALSEを戻します。is_restated (このファンクションでは必須)がRESTATEDの場合、このファンクションは、再表示された小売年から削除された週に該当する日にはFALSEを戻し、その他の日にはTRUEを戻します。is_restatedがNOT RESTATEDの場合、ファンクションは常にTRUEを戻します。このファンクションは、is_restatedRESTATEDで、入力がカレンダにない日の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