INSERT OVERWRITE TABLE order_summary PARTITION(dt='${yesterday}')
SELECT
order_id,
SUM(amount) AS total_amount,
COUNT(*) AS order_count
FROM order_detail
WHERE dt = '${yesterday}'
GROUP BY order_id;
参数配置:
yesterday
yesterday
=
$[yyyy-MM-dd, -1d]
$[yyyy-MM-dd, -1d]
假设任务在 2023-09-22 执行,
${yesterday}
${yesterday}
替换为
2023-09-21
2023-09-21
。
场景2:生成月报(上月数据统计)
需求:每月1号生成上月的销售报表。
SELECT
product_id,
SUM(sales_amount) AS total_sales,
COUNT(DISTINCT user_id) AS unique_users
FROM sales_table
WHERE dt BETWEEN '${last_month_start}' AND '${last_month_end}'
GROUP BY product_id;
参数配置:
last_month_start
last_month_start
=
first_day_of_month('yyyy-MM-dd', '-1mon')
first_day_of_month('yyyy-MM-dd', '-1mon')
last_month_end
last_month_end
=
last_day_of_month('yyyy-MM-dd', '-1mon')
last_day_of_month('yyyy-MM-dd', '-1mon')
假设在 2023-09-01 执行:
last_month_start
last_month_start
→
2023-08-01
2023-08-01
,
last_month_end
last_month_end
→
2023-08-31
2023-08-31
。
场景3:周报统计(上周一到周日)
需求:每周一生成上周的用户活跃报告。
SELECT
DATE(login_time) AS login_date,
COUNT(DISTINCT user_id) AS active_users
FROM user_login_log
WHERE dt BETWEEN '${last_week_monday}' AND '${last_week_sunday}'
GROUP BY DATE(login_time)
ORDER BY login_date;
参数配置:
last_week_monday
last_week_monday
=
first_day_of_week('yyyy-MM-dd', '-1w')
first_day_of_week('yyyy-MM-dd', '-1w')
last_week_sunday
last_week_sunday
=
last_day_of_week('yyyy-MM-dd', '-1w')
last_day_of_week('yyyy-MM-dd', '-1w')
假设在 2023-09-25(周一)执行:
last_week_monday
last_week_monday
→
2023-09-18
2023-09-18
,
last_week_sunday
last_week_sunday
→
2023-09-24
2023-09-24
。
场景4:获取每周二的数据
需求:定期分析每周二的促销活动效果。
SELECT
promotion_id,
SUM(sales_amount) AS tuesday_sales
FROM sales_table
WHERE dt = '${this_tuesday}'
GROUP BY promotion_id;
参数配置:
this_tuesday
this_tuesday
=
get_day_of_week('yyyy-MM-dd', 2)
get_day_of_week('yyyy-MM-dd', 2)
任务在 2023-09-22(周五)执行 →
2023-09-19
2023-09-19
(本周二)
任务在 2023-09-25(周一)执行 →
2023-09-26
2023-09-26
(本周二)
场景5:时间戳范围查询(查询今天全天数据)
需求:查询今天 00:00:00 到明天 00:00:00 之间的订单数据。
SELECT
order_id,
order_time,
amount
FROM orders
WHERE order_timestamp >= ${today_start}
AND order_timestamp < ${tomorrow_start};