Das Skript definiert ein Makro '%linked', das die Erstellung eines Hauptberichts und mehrerer detaillierter Unterberichte automatisiert. Es verwendet PROC SQL, um die verfügbaren Jahre in den Daten dynamisch zu identifizieren. Der Hauptbericht enthält Hyperlinks (Drill-down) speziell für die Produktlinie 'Sports', die zu detaillierten HTML-Dateien führen, die iterativ für jedes Jahr über eine Makroschleife generiert werden.
Datenanalyse
Type : SASHELP
Die Daten stammen aus der Standardtabelle 'sashelp.orsales'. Es sind keine externen Daten erforderlich.
1 Codeblock
PROC SQL
Erklärung : Ruft die eindeutige Liste der in der Tabelle 'sashelp.orsales' vorhandenen Jahre ab und speichert diese Werte in einer Reihe von Makrovariablen (:year1, :year2...), um die spätere Generierungsschleife zu steuern.
Kopiert!
proc sql noprint;
select distinct year
into :year1 - :year99
from sashelp.orsales;
%let yearcnt = &sqlobs;
quit;
1
PROC SQL noprint;
2
select distinct year
3
into :year1 - :year99
4
from sashelp.orsales;
5
%let yearcnt = &sqlobs;
6
QUIT;
2 Codeblock
PROC REPORT
Erklärung : Generiert den Hauptzusammenfassungsbericht. Verwendet einen 'COMPUTE'-Block, um dynamisch eine URL (Drill-down-Link) zu erstellen, wenn die Produktlinie 'Sports' ist, die auf den detaillierten Bericht des entsprechenden Jahres verweist.
Kopiert!
ods html style=default
path="&path\results"
body='E8_4b.html';
title1 'Total profit per year';
/* ... titres ... */
proc report data=sashelp.orsales nowd split='*';
column year product_line profit;
define year / group;
define product_line
/ group
'Product*Groups';
define profit / analysis
sum format=dollar15.2
'Annual*Profit';
break after year / summarize suppress skip;
rbreak after / summarize ;
compute before year;
yr = year;
endcomp;
compute product_line;
* For SPORTS create a link;
if product_line = 'Sports' then do;
link = 'Sports'||trim(left(put(yr,4.)))||'.html';
call define(_col_, 'url', link);
end;
endcomp;
run;
ods _all_ close;
1
ods html style=default
2
path="&pathesults"
3
body='E8_4b.html';
4
5
title1 'Total profit per year';
6
/* ... titres ... */
7
8
PROC REPORTDATA=sashelp.orsales nowd split='*';
9
column year product_line profit;
10
define year / group;
11
define product_line
12
/ group
13
'Product*Groups';
14
define profit / analysis
15
sum FORMAT=dollar15.2
16
'Annual*Profit';
17
break after year / summarize suppress skip;
18
rbreak after / summarize ;
19
20
compute before year;
21
yr = year;
22
endcomp;
23
compute product_line;
24
* For SPORTS create a link;
25
IF product_line = 'Sports'THENDO;
26
link = 'Sports'||trim(left(put(yr,4.)))||'.html';
27
call define(_col_, 'url', link);
28
END;
29
endcomp;
30
RUN;
31
32
ods _all_ close;
3 Codeblock
PROC REPORT
Erklärung : Makroschleife, die über jedes erkannte Jahr iteriert. Für jedes Jahr wird eine separate HTML-Datei generiert, die die Gewinndetails für die Kategorie 'Sports' enthält, gefiltert über eine dynamische WHERE-Klausel.
Kopiert!
%do yr = 1 %to &yearcnt;
* Sports Detail Report for &&year&yr;
ods html style=default
path="&path\results"
body="Sports&&year&yr...html";
title2 "Sports Detail for &&year&yr";
title3 "<a href='E8_4b.html'>Return to Full Report<a>";
proc report data=sashelp.orsales(where=(product_line='Sports' & year=&&year&yr))
nowd split='*';
column product_category profit;
/* ... définitions colonnes ... */
rbreak after / summarize ;
run;
ods _all_ close;
%end;
1
%DO yr = 1 %to &yearcnt;
2
* Sports Detail Report for &&year&yr;
3
ods html style=default
4
path="&pathesults"
5
body="Sports&&year&yr...html";
6
7
title2 "Sports Detail for &&year&yr";
8
title3 "<a href='E8_4b.html'>Return to Full Report<a>";
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.