【问题标题】:Processing parameters passed to SQL activity in AWS data pipeline处理传递给 AWS 数据管道中的 SQL 活动的参数
【发布时间】:2019-01-22 10:40:48
【问题描述】:

我正在使用 AWS 数据管道。在这种情况下,我将几个参数从管道定义传递到 sql 文件,如下所示:

  s3://reporting/preprocess.sql,-d,RUN_DATE=#{@scheduledStartTime.format('YYYYMMdd')}"

我的 sql 文件如下所示:

CREATE EXTERNAL TABLE RESULT (
STUDENT_ID            STRING,
REMARKS               STRING,
EXAM_DATE             STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE LOCATION  's3://result/data/run_date=${previous day of RUN_DATE}';  <----(1)

...
insert into temp
select a.roll_number, remarks
from student a inner join result b
on a.student_id = b.student_id
where exam_date>='<start date of previous month of RUN_DATE>' <---- (2)
and exam_date<='<end date of previous month of RUN_DATE>';<---- (3)

在上面的 sql 中,我不知道如何从 RUN_DATE 实现 (1)、(2) 和 (3)。

因此,如果 RUN_DATE=20190101,则 (1) 中的值应为“20181231”,(2) 中的值应为“2018-12-01”,(3) 中的值应为“2018-12-31”。

【问题讨论】:

    标签: amazon-web-services hive hiveql aws-data-pipeline


    【解决方案1】:

    您可以在 SQL 中使用 HIVE 日期函数来获得所需的结果:

    1. 前一天:date_sub(RUN_DATE,1)
    2. 上个月的开始日期:date_add(last_day(add_months(RUN_DATE, -2)),1)
    3. 上个月的结束日期:last_day(add_months(RUN_DATE, -1))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 2017-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      相关资源
      最近更新 更多