+ All Categories
Home > Documents > Building a Marketing Dashboard using Excel and SAS a Marketing Dashboard.pdf · Building a...

Building a Marketing Dashboard using Excel and SAS a Marketing Dashboard.pdf · Building a...

Date post: 10-Apr-2018
Category:
Upload: trankien
View: 221 times
Download: 3 times
Share this document with a friend
18
1 Building a Marketing Dashboard using Excel and SAS Tim Walters InfoTech Marketing
Transcript

1

Building a Marketing

Dashboard using

Excel and SAS

Tim Walters

InfoTech Marketing

Desired Outcome – Dashboard

Sheet and 6 Results Sheets

2

Client Environmental

Considerations Client company has software to facilitate transfer of

images between mobile phones and the Internet

3

Environmental Factor Resulting Decision

Needed results in workbook for email

distribution among key executives

Workbook must include all data. No

external references allowed

Needed flexibility in certain reporting

parameters

User selects parameters

Adding capable handsets and sites over

time

Stop system when new information

encountered

Unknown technical skills of people running

system

Make interface simple and from familiar

source (Excel)

Expected large influx of customers Use SAS for processing

May not have SAS PC Files module Write output files using ODS

System Overview

User Opens Excel Workbook

User Completes Workbook Form

User Runs –Launches SAS & Excel Monitors

SAS ProcessingResults

Workbook Populated

User Distributes

4

1. User Opens Excel Workbook

5

Folder

Location of

SAS

2. User Completes Workbook Form

6

3. User Runs – Launches SASPrivate Sub Run_Click()

access_type = &H400

still_active = &H103

'this will be used to delete files and check for existence

Set fsofile = CreateObject("scripting.filesystemobject")

a = ThisWorkbook.path

On Error Resume Next

fsofile.deletefile (a & "\phone_errors.xls") 'Deletes existing file

fsofile.deletefile (a & "\site_errors.xls") 'Deletes existing file

sas_location = Workbooks("company Reports.xls").Worksheets("Sheet1").Range("B1").Value

sas_program = a & "\ReadWeeklyFiles.sas"

datec = "'" & Application.WorksheetFunction.Text(Calendar1, "ddmmmyy") & "'" & "d"

runparm = a & "\$" & datec & "$" & WeeklyFile & "$" & Weeks & "$" & CountryCutoff & "$" & HeavyUsers & _

"$" & PreviouslyActive & "$" & AccountsUsingBackup & "$" & UploadActivity & "$" & SitesConfigured _

& "$" & UploadSites & "$" & NumDaysUploads & "$" & NumDaysActiveUploads & "$" & _OTA_Downloads

completeline = sas_location & " -sysin " & sas_program & " -log " & a & " -noprint -sysparm " & runparm

'uses shell execute

taskid = Shell(completeline, 1)

hproc = OpenProcess(access_type, False, taskid)

7

3. User Runs – Excel MonitorsDo 'loop continuously

'check on the process

GetExitCodeProcess hproc, lexitcode

'allow event processing

DoEvents

Loop While lexitcode = still_active

currpath = ActiveWorkbook.path

If fsofile.fileexists(currpath & "\phone_errors.xls") Then

MsgBox ("New phones exists. Please update handsets.csv and re-submit")

Workbooks.Open (currpath & "\phone_errors.xls")

Workbooks.Open (currpath & "\handsets.csv")

stopper = "Yes"

End If

If fsofile.fileexists(currpath & "\site_errors.xls") Then

MsgBox ("New sites exists. Please update parameters.csv and re-submit")

Workbooks.Open (currpath & "\site_errors.xls")

Workbooks.Open (currpath & "\parameters.csv")

stopper = "Yes"

End If

If stopper <> "Yes" Then Workbooks.Open (currpath & "\Weekly Dashboard.xls")

Me.Hide

Unload Me

End Sub

8

4. SAS Processing – ReadWeeklyFiles.sas

Read 14 Parameters Passed%macro createmacvars;

%global week_date folder filedate ;

%let folder=%scan(%quote(&sysparm),1,$);

%let week_date=%scan(%quote(&sysparm),2,$);

%let filedate=%scan(%quote(&sysparm),3,$);

%let weeks=%scan(%quote(&sysparm),4,$);

%let country_cutoff=%scan(%quote(&sysparm),5,$);

%let heavy_users=%scan(%quote(&sysparm),6,$);

%let previous_active=%scan(%quote(&sysparm),7,$);

%let accounts_using_backup=%scan(%quote(&sysparm),8,$);

%let upload_activity=%scan(%quote(&sysparm),9,$);

%let sites_configured=%scan(%quote(&sysparm),10,$);

%let upload_sites=%scan(%quote(&sysparm),11,$);

%let num_days_uploads=%scan(%quote(&sysparm),12,$);

%let num_days_active_uploads=%scan(%quote(&sysparm),13,$);

%let ota_downloads=%scan(%quote(&sysparm),14,$);

%mend;

%createmacvars;

9

4. SAS Processing – ReadWeeklyFiles.sas

Program Aspects

All files must be in the same folder. Folder name used for input/output files

Input%let userfile=&folder&filedate Users & Accounts.csv;

%let parafile=&folder.Parameters.csv;

%let handfile=&folder.Handsets.csv;

Output%let out_errors=&&folder.phone_errors.xls;

%let out_weekly=&&folder.weekly.xls;

10

4. SAS Processing – ReadWeeklyFiles.sas

Stop Program for New Data%macro stopp;

%if &obs_errors > 0 %then %do;

ods html file="&&out_errors" style = printer headtext="<STYLE> TD

{MSO-NUMBER-FORMAT:\#\#\,\#\#\#\,\#\#0;}</STYLE>";

title;

proc print data=phone_errors(keep=phone_text_1_20) &printstyle;

run;

ods html close;

%abort;

%end;

%if &site_o_errors > 0 %then %do;

ods html file="&&out_site_errors" style = printer headtext="<STYLE> TD

{MSO-NUMBER-FORMAT:\#\#\,\#\#\#\,\#\#0;}</STYLE>";

title;

proc print data=site_errors(keep=site_code) &printstyle;

run;

ods html close;

%abort;

%end;

%mend;

11

/* data file of new types not in

table */

data phone_errors;

set company.userphone;

if phone_type=" ";

run;

%obsnvars(phone_errors);

data site_errors;

set company.usersite;

if site_type=" ";

run;

%obsnvars(site_errors);

/* invoke stopp macro -- if phone

or site errors, stops awaiting user

correction */

%stopp;

/* this macros gets the number of observations and number of columns for certain datasets */%macro obsnvars(ds);

%global dset vars_phonesvars_sites obs_errors sites_obssite_o_errors;

%let dset=&ds;%let dsid =

%sysfunc(open(&dset));%if &dsid %then

%do;%if &ds=phone_errors %then

%let obs_errors=%sysfunc(attrn(&dsid,Nobs));

%if &ds=site_errors%then %let site_o_errors=%sysfunc(attrn(&dsid,Nobs));%let rc = %sysfunc(close(&dsid));

%end;%else

%put Open for data set &dsetfailed - %sysfunc(sysmsg());%mend obsnvars;

4. SAS Processing – ReadWeeklyFiles.sas

Output Files Using ODSMain File

ods html file="&&out_weekly"

style = printer

headtext="<STYLE> TD

{MSO-NUMBER-

FORMAT:\#\#\,\#\#\#\,\#\#0;}</

STYLE>";

title;

proc print

data=weekly_report_out(wher

e=(week_activated ne -10))

&printstyle;

var _numeric_ ;

run;

ods html close;

12

Parameters File Fed Back to Excel

data uploads_28_final;

weeks=symget('weeks');

heavy_users=symget('heavy_users');

previous_active=symget('previous_active');

country_cutoff=symget('country_cutoff');

run;

ods html file="&&out_within_28" style = printer

headtext="<STYLE> TD

{MSO-NUMBER-

FORMAT:\#\#\,\#\#\#\,\#\#0;}</STYLE>";

title;

proc print data=uploads_28_final &printstyle;

run;

ods html close;

5. Results Workbook Populated –

Weekly Dashboard.xls

VBA Code in Microsoft Excel Objects This

Workbook

13

5. Results Workbook Populated –

Weekly Dashboard.xlsSub Chart_Update()

Application.ScreenUpdating = False

Application.DisplayAlerts = False

Application.EnableEvents = False

a = ThisWorkbook.Path

pp = "Weekly Dashboard.xls"

With Workbooks(pp)

' Clear existing worksheets

.Worksheets("within28").Cells.ClearContents

.Worksheets("weekly").Cells.ClearContents

.Worksheets("countries active").Cells.ClearContents

End With

' start by processing within 28 file

Workbooks.Open (a & "\within28.xls")

Workbooks("within28.xls").Worksheets("within28").Cells.Select ‘selects all cells from workbook

Selection.Copy ‘copy

Workbooks(pp).Worksheets("within28").Activate ‘activate worksheet you want

Range("A1").Select

ActiveSheet.Paste14

5. Results Workbook Populated –

Weekly Dashboard.xls

More Chart_Update Macro Statements

Application.ScreenUpdating = True

Application.DisplayAlerts = True

Application.EnableEvents = True

End Sub

15

6. User Distributes – Checks Data,

Manually Saves, and Manually Emails

16

Advantages/Disadvantages of

Excel-SAS-Excel System

17

Advantages Disadvantages

•Use Excel

charts/formatting

•Utilize powerful SAS

processing

•User can run from familiar

interface

•Ubiquity of Excel

•Limit SAS licensing

•Must know some VBA and

its peculiarities

•May hit Excel row/column

limits – 64,000 in Excel

2003, 1 million in Excel

2007

For More Information

Tim Walters

InfoTech Marketing

720-732-4588

[email protected]

18


Recommended