Hadoop where语句中的Proc SQL DATE()

Hadoop where语句中的Proc SQL DATE(),hadoop,hive,sas,proc-sql,Hadoop,Hive,Sas,Proc Sql,我正试图编辑这段代码,使之成为动态的,因为我要安排它运行。 通常我会在where语句中输入日期为'YYYY-MM-DD',因此为了使其动态,我将其更改为date()。我没有出错,但我也没有提取数据。我只是需要格式方面的帮助,而我的谷歌搜索没有帮助 PROC SQL; CONNECT TO Hadoop (server=disregard this top part); CREATE TABLE raw_daily_fcast AS SELECT * FROM connection to Had

我正试图编辑这段代码,使之成为动态的,因为我要安排它运行。 通常我会在where语句中输入日期为'YYYY-MM-DD',因此为了使其动态,我将其更改为date()。我没有出错,但我也没有提取数据。我只是需要格式方面的帮助,而我的谷歌搜索没有帮助

PROC SQL;
CONNECT TO Hadoop (server=disregard this top part);

CREATE TABLE raw_daily_fcast AS SELECT * FROM connection to Hadoop(
SELECT DISTINCT
    a.RUN_DATE,
    a.SCHEDSHIPDATE, 
    a.SOURCE,
    a.DEST ,
    a.ITEM,
    b.U_OPSTUDY, 
    a.QTY,
    c.case_pack_qty

FROM CSO.RECSHIP a
  LEFT JOIN CSO.UDT_ITEMPARAM b
    ON a.ITEM = b.ITEM
  LEFT JOIN SCM.DIM_PROD_PLN c
    ON a.ITEM = c.PLN_NBR

WHERE a.RUN_DATE = DATE()
    AND a.SOURCE IN ('88001', '88003', '88004', '88006', '88008', '88010', '88011', '88012', 
                     '88017', '88018', '88024', '88035', '88040', '88041', '88042', '88047')
);
DISCONNECT FROM Hadoop;
QUIT;
更改:

WHERE a.RUN_DATE = DATE() 
致:


当RUN_DATE是一个字符串时,您可以在SAS端在线生成当前日期字符串

WHERE a.RUN_DATE = %str(%')%sysfunc(date(),yymmdd10.)%str(%')
   AND ...


对于运行日期是包含DATE9格式值的字符串的情况,请将
yymmdd10.
更改为
DATE9.

,因为您使用的是Hadoop方言,请检查
DATE()
是否为实际函数。这是Hadoop蜂巢吗?我看到有空,那是蜂巢。我只是尝试了“current_date()”,它也没有提取任何数据。我知道有数据,因为早些时候我做了“2018-07-09”,它拉。不过还是要谢谢你!RUN_DATE的数据类型是什么?我要尝试的第一件事是:将current_DATE()移动到SelectandSelectEverything(或者,如果需要,将其限制为硬编码)。查看返回的内容。“2018-07-09”是一个字符串,date()将返回一个数字。您是否使用了“2018-07-09”d?SAS格式(以及
put()
语句)在Hadoop的直通查询中不起作用。
WHERE a.RUN_DATE = %str(%')%sysfunc(date(),yymmdd10.)%str(%')
   AND ...
WHERE a.RUN_DATE = %sysfunc(quote(%sysfunc(date(),yymmdd10.),%str(%')))
   AND ...