SELECT `justfunctions.eu.find_cyber_week`("2023-11-24")
/*--Output--
1 | Black Friday
*/
CREATE OR REPLACE FUNCTION `your_project_id.your_dataset_id.find_cyber_week`(`date` DATE)
RETURNS STRUCT<is_cyber_week INT64, day_name STRING> AS ((
WITH calculated_dates AS (
SELECT
DATE_ADD(DATE_TRUNC(DATE(EXTRACT(YEAR FROM date), 11, 1), MONTH),
INTERVAL (26 - EXTRACT(DAYOFWEEK FROM DATE(EXTRACT(YEAR FROM date), 11, 1))) DAY) AS thanksgiving
)
SELECT
STRUCT(
IF(date BETWEEN thanksgiving AND DATE_ADD(thanksgiving, INTERVAL 4 DAY), 1, 0),
CASE
WHEN date = thanksgiving THEN 'Thanksgiving'
WHEN date = DATE_ADD(thanksgiving, INTERVAL 1 DAY) THEN 'Black Friday'
WHEN date = DATE_ADD(thanksgiving, INTERVAL 2 DAY) OR date = DATE_ADD(thanksgiving, INTERVAL 3 DAY) THEN 'Thanksgiving Weekend'
WHEN date = DATE_ADD(thanksgiving, INTERVAL 4 DAY) THEN 'Cyber Monday'
ELSE NULL
END)
FROM calculated_dates
))
OPTIONS ( description = '''Determines if a <date> falls within Cyber Week and identifies the specific day (e.g., Thanksgiving, Black Friday).''')
SQL User Defined Function (SQL UDF)
See something wrong? Contact us or report an issue on Github.