sas stored processes and developing web applications€¦ ·  · 2016-03-11sas stored processes...

138
SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant

Upload: vuongthuan

Post on 01-May-2018

232 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

SAS Stored Processes and Developing Web ApplicationsPhil MasonIndependent SAS Consultant

Page 2: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Contents

Creating a Simple Web App using Enterprise GuideMake a report

Turn it into a Stored Process

Use Stored Process Web App

Make a better Web AppAdd some HTML

Add Java Script

Make the best Web AppUse a Java Script framework

Page 3: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Make Report

Page 4: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Make a report

Use Enterprise Guide

Build a query

Page 5: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Query Builder

Page 6: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Query builder

Page 7: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Now you have a query

Page 8: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Make Stored Process

Page 9: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Make a Stored Process

Page 10: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Name it

Page 11: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

View code

Page 12: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Pick Repository

Page 13: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Librefs

Page 14: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Prompts

Page 15: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Data Sources & Targets

Page 16: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Review

Page 17: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Edit Stored Process

Page 18: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Stored Process

Composed of:A metadata component

A code component

Alternative way to create a Stored ProcessCreate the code with an editor

In Management Console create the metadata/code

Page 19: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Let’s take a quick look at Management Console

Page 20: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Create using Management Console

Page 21: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Name it

Page 22: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Execution settings

Select server to run it on

Specify we want to stream output and that we can produce a package

Keep code in metadata

Page 23: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Edit Source Code

Page 24: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Define parameters

Page 25: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Run it via Enterprise Guide

Page 26: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Edit a Stored Process with Management Console

Find the one you want and double click it

Page 27: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Management Console

Name & Location

Page 28: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Management Console

Page 29: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Management Console

Page 30: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Management Console

Page 31: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Management Console

Page 32: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Management Console

Page 33: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Management Console

Page 34: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Stored Process Web Application

Part of Integration Technologies

Allows running a stored processFrom a web browser

From an application such as EXCEL, MS Word

Parameters passed on URL appear as macro variables to Stored Process

Page 35: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Stored process web application

Page 36: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Get a menu down left

Page 37: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Run stored process from web app

Page 38: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Run stored process from browser

Page 39: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Run stored process from excel

Page 40: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Open one to run it

Page 41: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Results of run appear in EXCEL

Page 42: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Add a Graph to Stored Process

Page 43: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Result in web browser

Page 44: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Add parameter

Page 45: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Add prompt for macro parameter added

Page 46: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Stored Process using parameter via prompt

Page 47: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

URL showing parameter passed

http://my.server/SASStoredProcess/do?_program=%2FShared+Data%2FSASTesting%2FTest3&product_line=Children

Page 48: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Enhance with HTML &

JavaScript

Page 49: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Make a better Web App

Use some HTMLGives us some more control

Use some JavaScriptGreat for adding more interactivity

Allows programming to control User Interface

Page 50: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Simple HTML

<html> <body>

<h1>Pick a report to run</h1>

<a href="http://my.server/SASStoredProcess/do?

_program=%2FShared+Data%2FSASTesting%2FTest3

&product_line=Children"> Children</a><p>

<a href="http://my.server/SASStoredProcess/do?

_program=%2FShared+Data%2FSASTesting%2FTest3

&product_line=Clothes+%26+Shoes">Clothes & Shoes</a><p>

<a href="http://my.server/SASStoredProcess/do?

_program=%2FShared+Data%2FSASTesting%2FTest3

&product_line=Outdoors">Outdoors</a><p>

<a

href="http://my.server/SASStoredProcess/do?_program=%2FShared+Data%2FSASTesti

ng%2FTest3

&product_line=Sports">Sports</a><p>

</body> </html>

Page 51: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

HTML Menu

Page 52: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Report shown in browser

Page 53: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Using a form to run a Stored Process

HTML form is great for making User Interfaces

Form tagMake the first part of URL

Input tag, using different type settingsText – fields for text

Password – passwords where text is hidden

Radio – radio buttons

Checkbox – check boxes

Submit – submit buttons to execute URL using parts of form

Page 54: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

HTML using Form

Page 55: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

What’s displayed

Page 56: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Writing directly from Stored Process to browser

_weboutReserved fileref for writing from Stored Process to browser

%stpbegin macro sends output from procs to _webout

%stpend stops output going to _webout

Can write from a datastep to _webout

Best to turn automatic Stored Process macros off

Page 57: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

New stored process to write HTML

Page 58: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Stored process produces this

Page 59: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Add iFrame to keep output on same page

Page 60: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Now menu & output on same page

Page 61: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Useful optional parameters for Stored Processes

_odsdest – lets us choose an ODS destination for type of output producedSwitch between HTML, RTF, PDF, EXCEL, etc.

_odsstyle – choose an ODS style

_debug – can produce the SAS log, execution times, etc._debug=log,time

_debug=2179 … this is my favourite

Page 62: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Define a dropdown menu for type of output

Page 63: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Output type is added to menu

Page 64: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

HTML Headers

Set headers in HTML from stored process

Indicates what browser should do

RTF

EXCEL

rc = stpsrv_header("Content-type", "application/msword") ;

rc = stpsrv_header('Content-disposition','attachment; filename=test.rtf');

rc = stpsrv_header("Content-type", "application/pdf") ;

rc = stpsrv_header('Content-disposition','attachment; filename=test.pdf');

Page 65: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

RTF output

Page 66: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Define dropdown for ODS style

Page 67: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Here is what 2 ODS style selections produce

Page 68: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Add some checkboxes

Page 69: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

After report we get the log

Page 70: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

After log we get time

Page 71: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Parts of URL for stored process call

http://khv-sas-iis.cfsi.local/SASStoredProcess/do?_program=%2FShared+Data%2FSASTesting%2FTest3&product_line=Children

&_debug=log&_debug=time

Page 72: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Useful automatic macro variables

Page 73: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Use automatic macro variables

Construct a URL using:&_srvname

&_srvport

&_url

Page 74: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

What’s good about this technique

Easily make SAS code run from a web browser

Generate HTML, Excel, PDF or RTF easily.

Easily add parameters making it much more flexible

Build up a multiple page Web Application

Page 75: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

What’s not so good

Tables and graphs don’t look as good as they couldCan improve their look with some more work within SAS

Tables lack some functionalityCant sort columns

Slow using lots of data

Table headers are not fixed, so they will scroll away if tables are long

Only some basic widgets available for building a UI

Only basic use of mouse for selecting

Page 76: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Adding some JavaScript for interactivity

onLoad – execute when page finishes loading

onUnload – execute when page closes

onKeyPress – execute when a key is pressed

onKeyUp – execute when a key is released

onMouseOver – execute when mouse is over something

onMouseOut - … when mouse moves away

onMouseDown … when left button is pressed

onMouseUp … when left button is released

onClick … when left button is clicked

onDblClick … when left button is double clicked

Page 77: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

JavaScript Demo

Lets see some of those things…

Note: not all browsers support all JavaScript (in the same way)Try things out in all the browsers you might use

Page 78: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

<html>

<head>

<script type='text/javascript'>

var popwin = null;

function open_popup() {

if (popwin == null)

popwin = window.open(

'http://www.google.com',

'',

'top=150, left=350, width=250,

height=50, status=0, toolbar=0,

location=0, menubar=0, directories=0,

resizable=0, scrollbars=0'

);

}

function close_popup() {

if (popwin != null) {

popwin.close();

popwin = null;

}

}

function checkKey() {

var key = String.fromCharCode(

window.event.keyCode);

if (key == 'X') {

alert(

"You pressed the X key"

);

}

}

</script>

Some added JavaScript for extra functionality

Page 79: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

JavaScript providing more interactivity</head>

<body onload='alert("finished loading");' onunload='alert("finished unloading");'

onkeypress='window.status="key pressed is: " +

String.fromCharCode(window.event.keyCode) ;'

onkeyup='window.status="key up"; checkKey() ;'>

Pop-up a window with information by moving over <a href='#'

onmouseover='open_popup(); window.status="Hovering over the link" ; return true ;'

onmouseout='close_popup(); window.status=" " ; return true ;'>here</a>.

<p>Pop-up a window with information by holding mouse button down <a href='#'

onmousedown='open_popup();' onmouseup='close_popup();'>here</a>.

<p><a href='#' ondblclick='open_popup();'>Double click to open</a>,

<a href='#' onclick='close_popup();'>single click to close here</a>.

<p><a href='#' style='font-size="x-large"' onmousemove='open_popup();'>Move

mouse over this to open</a>,

<a style='font-size="x-large"' href='#' onmousemove='close_popup();'>move

over this to close</a>.

<p>Press <b>X</b> to make an alert window pop up.

<p>Hold down a key to see what it is in the status bar.

</body>

</Html>

Page 80: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Stored Process generates HTML

Some excerpts…

<form method="get" action="http://khv-sas-iis2.cfsi.local/SASStoredProcess/do?" target="content">

<select name="_program">

<option value="/Shared Data/SASTesting/cabotCollectionsDashboard">Month to Date</option>

<option value="/Shared Data/SASTesting/ccDashDaily">Daily</option>

<option value="/Shared Data/SASTesting/ccDashYTD">Year to Date</option>

</select>

<input type="checkbox" name="_debug" value="log">Show log<nbsp><nbsp><nbsp>

<input type="checkbox" name="_debug" value="time">Show time taken<nbsp>

<input type="checkbox" name="inline" value="1">Inline?<nbsp>

<input type="submit" value="Run"><br>

Page 81: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

More excerpts of HTML

organisationName <select name="organisationName" onchange="this.form.submit();">

<option value="Cabot Debt Purchase " selected>Cabot Debt Purchase </option>

<option value="Cabot Stratford Serviced ">Cabot Stratford Serviced </option>

</select>

</form>

<iframe name="content" height="85%" width="100%">

</iframe>

</body>

</html>

Page 82: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Use JavaScript Libraries

Page 83: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

A few good JavaScript libraries

jQueryWrite less, do more

HandsOnTable or EasyUI Excel-like spreadsheet for Apps

HighChartsCreate interactive web charts easily

D3Data Driven Documents

Page 84: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Manipulating your web page

jQuery makes it easy to select parts of your page and attach functionality

$(document).ready(function(){

$("button").click(function(){

$("p").hide();

});

});

$(document).ready(function(){

$("button").click(function(){

$("#div1").fadeIn();

$("#div2").fadeIn("slow");

$("#div3").fadeIn(3000);

});

});

<script>

$(document).ready(function(){

$("button").click(function(){

$("#div1").load("demo_test.txt");

});

});

</script>

<div id=“div1">

<h2>Let jQuery AJAX Change This Text</h2>

</div>

<button>Get External Content</button>

Page 85: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Making a better table in web browsers

Page 86: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Making interactive charts

Page 87: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Creating Data Driven Documents

Page 88: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Hosted Libraries

You can download JavaScript libraries and keep on your site

Or you can use a Hosted Library, such as Google’s

read about it here https://developers.google.com/speed/libraries/

<script

src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/

jquery.min.js”></script>

Some host their own library

<script src=“http://d3js.org/d3.v3.min.js">

</script>

<script src="http://code.highcharts.com/highcharts.js">

</script>

Page 89: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

How to use SAS with JavaScript objects

HTML 5 structures your page

CSS 3 controls the look and feel

JavaScript handles the interactivity

Data typically either hard-coded or provided in JSON, CSV, TSV, …

SAS Stored ProcessesProvide the data in CSV or JSON format

using data steps or PROC JSON

Create and customise the HTML, CSS & JavaScript

Using data steps or PROC STREAM

Page 90: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Use JSON with Stored Processes

Page 91: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

What is JSON and why use it?

Key-Value pairs

Man and Machine readable

Nested if necessary

Used by many JavaScript objects

Is a subset of JavaScript Object Notation, which is how objects in JavaScript are built

Sometimes XML or CSV can be used

Very flexible

can represent complex nested hierarchies of data

Page 92: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java
Page 93: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Example{

"name": "Phil Mason",

"home": {

"town": "Wallingford",

"phone": 1491824891,

"current home": true,

"ages": [

51,

46,

18,

16,

13

]

}

}

Page 94: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Data Step to produce JSON

Can run from a stored process

Write to _webout to stream to browser

Can define macros, to make it flexible and easy to repeat

Can handle very complex & nested JSON

Page 95: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Example data step making JSONdata _null_ ;

set sashelp.class end=_end ;

if _n_=1 then put '[' ;

put '{' ;

put '"Name":"' name +(-1) '",' ;

put '"Sex":"' sex +(-1) '",' ;

put '"Age":"' age +(-1) '",' ;

put '"Height":"' height +(-1) '",' ;

put '"Weight":"' weight +(-1) '"' ;

put '}' ;

if not _end then put ',' ;

else put ']' ;

run ;

Page 96: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

[

{

"Name":"Alfred",

"Sex":"M",

"Age":"14",

"Height":"69",

"Weight":"112.5"

}

,

{

"Name":"Alice",

"Sex":"F",

"Age":"13",

"Height":"56.5",

Page 97: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

PROC JSON

SAS 9.4

Easily produces JSON from SAS datasets

Can produce more complex JSON as well as simple JSON

Can use macros to write PROC JSON, making it very flexible

Page 98: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

PROC JSON

Minimum code needed

Produces default output

{

"SASJSONExport": "1.0",

"SASTableData+CLASS": [

{

"Name": "Alfred",

"Sex": "M",

"Age": 14,

"Height": 69,

"Weight": 112.5

},

{

"Name": "Alice",

"Sex": " F",

"Age": 13,

"Height": 56.5,

"Weight": 84

},

proc json out=temp ;

export sashelp.class ;

run ;

Page 99: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Better PROC JSON code

Pretty - lays out the JSON clearly

noSAStags - leaves out SAS metadata from the JSON

proc json out='/tmp/class.json' pretty nosastags ;

export sashelp.class ;

run ;

[

{

"Name": "Alfred",

"Sex": "M",

"Age": 14,

"Height": 69,

"Weight": 112.5

},

Produces this output

Page 100: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

JavaScript libraries with

SAS

Page 101: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

PROC STREAM

Processes text and expands macros within it

Text is sent to an external file

Can execute SAS code while processing the input stream

using %sysfunc(dosub(fileref))

Can include text into stream for processing

using %include filleref

Files can be read into stream, but macros not processed

using &streamdelim readfile filref

Newlines can be forced in output

using &streamdelim newline

Page 102: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Simple example%macro cols(n) ;

%do i=1 %to &n ;

<td>&i</td>

%end ;

%mend cols ;

filename out '/folders/myfolders/test.html' ;

proc stream outfile=out ;

BEGIN

<table>

<tr>%cols(4)</tr>

</table>

;;;;

<table><tr><td>1</td> <td>2</td> <td>3</td> <td>4</td></tr></table>

Page 103: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

General Approach

Page 104: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Find an example

Pick a visualisation

Close to something you want

Could be changed to meet needs

Could be combined with other things to meet needs

Check it for suitability

Some things are easier than others

Is it free?

Handle libraries

Make sure you are pointing to a local copy or CDN

Copy & Test locally

Page 105: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Number Display Example

<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script>

<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/crossfilter/1.3.11/crossfilter.min.js"></script>

<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/dc/1.7.3/dc.min.js"></script>

<script type="text/javascript" src="../js/d3.js"></script>

<script type="text/javascript" src="../js/crossfilter.js"></script>

<script type="text/javascript" src="../js/dc.js"></script>

http://dc-js.github.io/dc.js/examples/cust.html

Page 106: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java
Page 107: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Wrap in a Stored Process

Write code to _WEBOUT using

Data step

Proc Stream

Mixture of both

Leave out the %stpbegin & %stpend macros

Call using Stored Process Web Application from browser

http://server57562.uk2net.com/SASStoredProcess/do?_program=%2FUser+Folders%2FPhil+Mason%2FMy+Folder%2Fd3+

Page 108: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java
Page 109: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Use Proc Stream with PRESCOL

Page 110: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

What should we change?

Parameters

So we can control what it does

Data

So it works using our data

Libraries

Often they point to resources on another web site

Can copy to our web site

Can use Content Delivery Network (CDN)

Page 111: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Parameters

Identify anything we want to alter

If it is a one time change, then make the change

If we want to change it from run to run, then it is a candidate for macros

Identify anything we want to add, e.g. a title

Page 112: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Data

Identify where the data is coming from

What format is it in?

We will need to make our data in same format

Consider options for reproducing data

Page 113: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

How to change things?

Macro variables

Replace shorter things we want to control

Macro programs

Replace longer things we want to control

Make use of looping, conditions, dataset I/O, file I/O, etc.

Page 114: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java
Page 115: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Change width and height to a macro variable

Page 116: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Add corresponding parameters to Stored Process

Page 117: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Use parms in call to Stored Process

http://server57562.uk2net.com/SASStoredProcess/do?_program=%2FUser+Folders%2FPhil+Mason%2FMy+Folder%2Fd3+

Page 118: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Can just make a flat file

Can make a stored process to deliver data

Data Step

Proc Stream

Make data into a CSV “file”

Page 119: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Make a Stored Process to deliver data

Page 120: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Modify Stored Process to use data from Stored Process Use the d3.csv function to read in CSV data into a

JavaScript array.

Remove the hard-coded data

Add a call to load data

All code needs to be inside function

Finish off function call at the end with })

Page 121: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Stored Process using macro parms and another Stored Process for data

Page 122: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Where have we go to?

Stored Process for Program

Creates HTML, JavaScript, CSS

Stored Process for Data

Produces a stream of CSV data

Possibly copies of libraries on our Infrastructure

CSS

JavaScript

We have a working little JavaScript/SAS Stored Process Visualisation Web Application!

Page 123: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Next Steps

Add more graphs to these 3 based on the same data

Parameterise the data used

Change variables too

Make them all Stored Process parameters

Therefore they are also macro variables

Change Stored Process making data to be general purpose by feeding a dataset name to it.

Create several Stored Processes like this and combine them to make a dashboard.

Page 124: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Repeat object(s) to make a Dashboard

We don't have time for this, but basic steps are …

Create a bunch of empty div sections in HTML 5

perhaps just with a H1 so you can see them

Make some CSS to lay them out how you like

easy to do accordions, tabs, sliding layouts, etc.

Use some jQuery to fill the div sections

use Ajax calls to do it

Possibly add some drop down selections lists, etc.

Use jQuery to add info from there to your Ajax calls

That’s about it!

Page 125: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Conclusion

Page 126: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Conclusions

It’s easy to find great JavaScript visualisation software

It’s easy to wrap it up and customise it with a Stored Process

It’s easy to feed it with data from another Stored Process

Combine some of these into a dashboard or application

Put it all together and you have yourself a powerful cutting edge visualisation system.

Page 127: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Extras

Page 128: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Some great links to useful resources

Page 129: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

http://www.robslink.com/SAS/Home.htm

Page 130: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

http://www.visualisingdata.com/index.php/resources/

Page 131: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

http://www.jsgraphs.com/

Page 132: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

http://www.graphviz.org/Gallery.php

Page 133: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

http://www.highcharts.com/demo

Page 134: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

http://www.amcharts.com/demos/

Page 135: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

https://github.com/mbostock/d3/wiki/Gallery

Page 136: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

http://dc-js.github.io/dc.js/

Page 137: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java

Some great diagrams

Page 138: SAS Stored Processes and Developing Web Applications€¦ ·  · 2016-03-11SAS Stored Processes and Developing Web Applications Phil Mason Independent SAS Consultant. ... Add Java