Использование ods excel для вывода данных, получение только пробелов в файле excel - PullRequest
0 голосов
/ 23 февраля 2020
ODS EXCEL FILE="/folders/myfolders/Book1.xlsx";

proc sql;
    create table FLIGHTS_WEATHER_J AS
    select month,Sum(Dep_delay) as Dp_delay_minutes, 
    AVG(temp) as Avg_Temp,
    AVG(dewp) as AVG_DEWP,
    AVG(humid) AS AVG_HUMID,
    AVG(wind_dir) AS AVG_WIND_DIR,
    AVG(wind_speed) AS AVG_WIND_SPEED,
    AVG(wind_gust) AS WIND_GUST,
    AVG(precip) AS AVG_PRECIP,
    AVG(Pressure_N) AS AVG_PRESSURE,
    AVG(visib) AS AVG_VISIB

    from C1.FLIGHTS_WEATHER_8
    Group by Month;
    quit;
    RUN;

ODS EXCEL CLOSE;

В журнале нет ошибок, но в файле Excel я нахожу только пустой вывод

 1          OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
 NOTE: ODS statements in the SAS Studio environment may disable some output features.
 73         
 74         
 75         ODS EXCEL FILE="/folders/myfolders/Book1.xlsx";
 76         
 77         proc sql;
 78         create table FLIGHTS_WEATHER_J AS
 79         select month,Sum(Dep_delay) as Dp_delay_minutes,
 80         AVG(temp) as Avg_Temp,
 81         AVG(dewp) as AVG_DEWP,
 82         AVG(humid) AS AVG_HUMID,
 83         AVG(wind_dir) AS AVG_WIND_DIR,
 84         AVG(wind_speed) AS AVG_WIND_SPEED,
 85         AVG(wind_gust) AS WIND_GUST,
 86         AVG(precip) AS AVG_PRECIP,
 87         AVG(Pressure_N) AS AVG_PRESSURE,
 88         AVG(visib) AS AVG_VISIB
 89         
 90         from C1.FLIGHTS_WEATHER_8
 91         Group by Month;
 NOTE: Table WORK.FLIGHTS_WEATHER_J created, with 12 rows and 11 columns.

 92         quit;
 NOTE: PROCEDURE SQL used (Total process time):
       real time           2.67 seconds
       cpu time            2.52 seconds


 93         RUN;
 94         
 95         ODS EXCEL CLOSE;
 NOTE: Writing EXCEL file: /folders/myfolders/Book1.xlsx
 96         
 97         
 98         OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
 110        

Результаты:

enter image description here

Ответы [ 2 ]

1 голос
/ 23 февраля 2020

Вывод пуст, потому что вы никогда не писали вывод. Все, что вы сделали, это создали набор данных. Либо добавьте что-нибудь, что выдаст:

proc print data=FLIGHTS_WEATHER_J ; run;

Или, если вам на самом деле не нужен набор данных, просто удалите этот

create table FLIGHTS_WEATHER_J AS

из вашего запроса SQL.

Если вы просто хотите записать данные в файл Excel, используйте libref вместо ODS.

libname book1 xlsx "/folders/myfolders/Book1.xlsx";
proc sql;
  create table BOOK1.FLIGHTS_WEATHER_J AS ...
0 голосов
/ 23 февраля 2020

Ваш код не производит никакого вывода, pro c sql просто создает таблицу, но без вывода. Попробуйте это (не создавайте таблицу):

ODS EXCEL FILE="/folders/myfolders/Book1.xlsx";

proc sql;
   select month,Sum(Dep_delay) as Dp_delay_minutes, 
   AVG(temp) as Avg_Temp,
   AVG(dewp) as AVG_DEWP,
   AVG(humid) AS AVG_HUMID,
   AVG(wind_dir) AS AVG_WIND_DIR,
   AVG(wind_speed) AS AVG_WIND_SPEED,
   AVG(wind_gust) AS WIND_GUST,
   AVG(precip) AS AVG_PRECIP,
   AVG(Pressure_N) AS AVG_PRESSURE,
   AVG(visib) AS AVG_VISIB

   from C1.FLIGHTS_WEATHER_8
   Group by Month;
   quit;
   RUN;

   ODS EXCEL CLOSE;

Поскольку простой случай, подобный этому, работает нормально:

data test;
   input A B $ C;
   datalines;
1 A 3
4 B 6
;
run;

ods excel file='c:\tmp/ff.xlsx';
proc print data=test;run;
ods excel close;
...