Mobile is available for all SAS programmers

During the SAS Global Forum this past week, SAS offered several demos on mobile technology including:

Remember everyone is using mobile devices and management continues to request access to results this way. But did you know that with a basic SAS license (yes, even BASE SAS users with a PC only license) can generate awesome reports for consumption by mobile devices. For example, during the conference this week, SAS Employee Michael Drutar presented paper 240-2012 that covers integrating Google Spreadsheets and SAS ODS to offer a mechanism for mobile data entry

For you to get started with this technology, I would suggest starting with an old paper - yes from 2008 & talking about (not the fruit) Blackberries. LeRoy Bessler goes step by step through resizing graphical output into tiny graphs.

/*Hint #1*/
goptions reset=all dev=gif
gsfname=gout gsfmode=replace
ypixels=300 xpixels=500;

Next, set up SMTP connection from your machine to successfully send emails out. Included is SAS Sample 19767 which explains the sasv9.cfg changes required to estabilish the connection.
/*Hint #2*/
   -emailsys SMTP
   -emailhost your.smtpemail.server.com
   -emailport 25

And if your users would prefer text messages or better yet multi-media text with graphs rather than emailed graphs, use the email address equivalent of the text device in your to= statement. A quick search on google.com resulted in this website from SlapStick.com that lists off the various vendors email domains (such as Verzion = phonenumber@vtext.com and AT&T = phonenumber@txt.att.net).

For users fortunate to have more licenses there are even more options.

  1. SAS Stored Processes (SAS Integration Technologies)
    In my 2nd book "The 50 Keys to Learning SAS Stored Processes", there is an entire example that sends an ondemand graphical report to email addresses supplied when requesting the stored process. And this week during the conference, Falko Schulz, also of SAS, wrote 011-2012 that describes how to use jQuery and jQTouch to interact with SAS Stored Processes from a mobile device.
  2. SAS Business Intelligence
    SAS joined forces with ROAMBI to supply iPad/iPhone applications to users interested in interacting with data remotely and securely. Lisa Pappas, SAS Global Product Marketing Specialists, discusses this capability in two blog posts.
    Boost your BI Adoption Rates Part 1 and Part 2
  3. JMP
    Michael Hecht (part of the original JMP development team) wrote two posts in March about moving data and results into the iPad. Neato!
    Getting Data to the iPad and Sharing Your Results

For tips on what NOT to do for Mobile implementations, check out this Smart Data Collective post on 10 Don’ts for Delivering Mobile Business Intelligence. It's not about making everything available on that tiny mobile device but giving users a friendly interface to get actionable information when they need it.

Post a Comment

The things I missed at #SASGF12

Unfortunately, my clone attempt didn't work like Chris Hemedinger's did. With all my papers, presentations, and demo hall duties, I realized yesterday that I certainly missed a lot.

Included is my to-do list for items to watch and catch up on this weekend.

  1. Not really sure how I missed the Technology Session, thankfully I can watch this recording first!
  2. Since I only had time to attend two user submitted presentations, I should check out the pre-recorded Take Out Sessions.
  3. One friend recommended that I check out "Beyond Star Schema: Exploring the Next Query Generation with the SAS® Enterprise BI Server" 033-2012 describes Information Map improvements for 9.3
  4. A former customer suggested that "Using SAS® to Move Data between Servers" 116-2012 was a great paper to review as it covers multiple mechanisms to move data between systems.
  5. 392-2012 covered Hadoop Integration
  6. 397-2012 discussed Proc DS2
  7. One user wrote about the SAS Function Compiler (PROC FCMP) & Sudoku, which is a game I have also used for SAS examples.

What did you miss last week at #SASGF12 and are planning to review in the next couple days/weeks?

Post a Comment

SAS Talks Backstage Sneak Peek: Soft skills required for BI developers

Whether you call it Business Intelligence, Business Analytics, Visual Analytics, etc. - getting information to the users when they need it and make it actionable requires more than just software. BI Content Developers can have a certification but to be successful they really need to have an understanding of human behavior.

NEW: You can view a recording of the webcast that Eric Rossland, Tricia Aanderud and I participated in at SAS Global Forum 2012. We spoke to this as well as other organizational strategies to implement BI.

Old Text: As Eric Rossland, Tricia Aanderud and I discuss building better business intelligence this morning at 10am, and some of these topics will certainly come up.

  1. Highlighting issues via timely, relevant indicator ranges or dashboard/report traffic-lighting.
    If the measure is always red, people begin to ignore it. If the measure changes every couple of minutes, there is no time to take action to improve upon it. The technology isn't difficult and is well documented; you need to understand the data and make relevant ranges to cause users to take action when it is appropriate.
  2. Visually representing data in a meaningful way.
    Take pattern detection, we can run through heavy analytical models, describe statistical scores, etc. - but an investigator wants to see the pattern outright, needs to make inferences based on what is shown on the screen.
  3. Making the interface interactive.
    People like to click around; they like to 'play' with puzzles. Having the interface, dashboard, report look neat and interesting generates interest. Visually pleasing screens will keep users around. Adding puzzle pieces adds the 3rd component by getting users to ask questions and critically evaluate the content on the screen. Ultimately keeping users engaged on the site the longest.
  4. Getting into the nitty-gritty.
    Once the user decides to investigate an item further, they need more detail from there. The functionality of building linked reports, adding click-through to detail, or viewing pop-ups with relevant content immediately is not difficult to implement. The developer must need to understand what the user has to have right then to make appropriate decisions.

What other soft skills do you think BI Developers should have to be successful?

Post a Comment

In this case coolest swag does equal coolest tool

One of the biggest hits of the demo hall at SAS Global Forum was the cute Koala bear swag from MetaCoda.com. Everyone wanted to stop by the booth and pick one up for their badge.
Coolest Swag

Driving people to your booth is the first step, but then you must have cool gadgets to show off. Well MetaCoda did not disappoint. They have a custom plug-in for SAS Management Console that is a java api, it immediately refreshes the view based on metadata security settings. There is no proc metadata requests and no data tables stored! Awesome & cool right? Here is a list of other 'must see' items.

  1. The screen layout reminds me of RACI diagrams. SAS Administrators can quickly identify current settings.
  2. Paul Homes also created rules to validate and alert metadata items based on recommendations & best practices from documentation, user papers and his years of consulting/administering metadata systems.
  3. The interface and associated highlighting/warnings is intuitive. A SAS admin can quickly scroll through the search results to understand what issues might exist.
  4. In the upcoming version (this June) you will be able to search by user or object using the Capability Viewer & User Viewer options and see all the underlying permissions granted to that entity.

The demo hall is now closed, but you can check out the website MetaCoda.com for more information & chat with Paul and Michelle about buying the plugin!

Coolest Gadget

Post a Comment

Two presentations, one hour, lots of data strategy

My friend and fellow blogger Steve Overton was tasked with presenting not one by two papers in a single one hour block. My original strategy was to take Instagram pictures of him running down the hall to get to the second session on time, but since both were in the same room (darn) my new plan was to actually learn something. And wow, Steve presented two great ways to address data administration.

431-2012 "10,000 Leagues of Data... Divide and Conquer OLAP Cubes" presents a interesting way to leverage the incremental update capabilities of SAS OLAP by adding sections of the data into the cube one at a time rather than inserting millions of records in one swoop. This avoids any possible server resource constraints of loading super large cubes. Dealing with lots of data,  ROLAP reduced speed for the end user while aggregations caused temp space failures. Steve created a script that takes care of dividing the data into multiple tables & running the cube on each data slice. The only trick is to create a single metadata table definition since this is required for PROC OLAP to run successfully.

In 112-2012 "Developing a Flexible ETL Process to Let SAS® Capture Data Changes ~ Efficiently in a Data Warehouse and Clean Up the Mess", Steve has created a way for SAS to manage SAS data table changes by adding a control table to the ETL process. A customer's project implementation required this method because of different data update schedules and only changed data should be processed incrementally. Here is a high level diagram, grabbed from his paper, on how this works conceptually.

This is just one more reason why I so enjoy attending SAS Global Forum. Everyone has a solution or idea that can be used elsewhere to improve. We are all focused not just on sharing our knowledge but learning from others to continually improve.
So, what have you learned today at #SASGF12?

Post a Comment

Not in Orlando for SAS Global Forum? Attend virtually!

We already miss you and wish you could be here. WAIT! Don't cry in your office! There are so many ways to stay connected to the SAS Global Forum happenings this year. If you are not able to attend in person, here is a list of sites that you can use to watch & even stay in contact with us.

  1. SAS Global Forum Live
    Video stream sections of the conference live! How cool is technology?
  2. #SASGF12 Twitter Stream
    You do not need a twitter account to be a twitter stalker, just follow along to get a feel for all of the wonderful content.
  3. View pictures from Instagram! That's right the amazing photo sharing social site has taken #SASGF12 by storm thanks to Kirsten's recent post!
  4. Papers
    Several weeks ago all of the final papers were uploaded to the glorious web, many of us have already used this site to determine what presentations we should check out in Orlando.
  5. Take-Out Sessions
    Similar to 2011, after the conference there will be a location for select presentations. I'll add that link here once they release it. You can check the main SASGF12 site for this update as well.
  6. SAS Global Forum Blog
    This site will also highlight the above plus have consolidated blog posts, etc for everything going on at the conference!
Post a Comment

What would SAS Stored Process Key #51 be?

This past Monday, Tricia and I released our 2nd book this year. "The 50 Keys to Learning SAS Stored Processes" provides a step-by-step approach to transitioning from SAS code into user driven (prompted) stored processes. Trimming down all the things you can do with SAS Stored Processes is next to impossible, and as Tricia mentioned in her blog post earlier this week, writing a small chapter in our 1st book simply did not do this awesome functionality justice.

When we first purchased the SAS Business Intelligence suite as a customers back in 2005, I was the unwilling bottleneck for many of the user requests. I had the ability to create some BASE SAS code and add %let statements at the top to quickly get the requested data back for them, but if I wanted to take a break (yes, I do take vacations occasionally) the users would have to wait until I returned since they didn't have a SAS license and they didn't know how to program. Then SAS Stored Processes appeared at my door step, and I was smitten. These programs could be quickly converted and instead of %let statements prompts could be quickly added. Then my users (who preferred MS Excel and had SAS Add-in to MS Office installed) could run the code from their machines with only 5 seconds of training! This new book takes my experience and converts into a step-by-step progression from a similar situation into a basic stored process and then describes a wide variety of enhancements the user is likely to request.

Keeping the keys to just 50 was extremely difficult and the debate can rage on about what we should have included. My #51 would be to leverage the shared prompts that are available from the default SAS installation when creating different package output types. The SAS Stored Process Developers Guide has a full page on how to pull in these shared prompts. Basically, instead of using SAS code like we do in Chapter 8 for creating a package of data for the SAS BI Dashboard, we could have added the shared prompt and followed the instructions in the system to specify the required values.
Here is a summary of what to do:

  1. Click the 'Add Shared' button on the Parameters Screen.
  2. Navigate to "Products/SAS Intelligence Platform/Samples/" area
  3. Select the corresponding shared prompt. (They start with "Package -".)
  4. Then click the "Unshare" button. This gives you a message that this is no longer going to sync with the shared prompt, but that is ok in this instance.
  5. Open each of the underlying prompts and the description field will explain what to do.

In the image below, there are two prompts within the shared prompt group "Package - File System with New Instance". In the first underlying prompt for _result (#1), the description states 'Do Not Modify'. But in the second prompt for _archive_path (#2) there is no such declaration. Therefore I moved to the Prompt Type and Values tab (#3) to see the text 'Supply_Valid_Value'.

Then instead of having code with data _null_ steps to define all of this, we can just keep the %stpbegin and %stpend to generate the package. Here is more information from SAS Technical Support - Sample 39952 on how to program everything.

If you have a chance to buy and look through the book, please let us know what other keys you think are important to new SAS Stored Process developers!

Post a Comment

Let's meet up at SAS Global Forum 2012!

There are only four more days before the big kickoff! But for many of us (including me), the countdown to SAS Global Forum 2012 began last fall with the submission of paper ideas to the incredibly awesome section chair volunteers. I live for this event, the networking, training opportunities, customer interactions, and all the fun loving people! You are definitely one of them & I would love to meet you too! If we don't happen to cross in the halls, here are the scheduled events that I have on my plate.

Saturday 8pm Tweetup at the Dolphin Reception Area
Sunday 1-3pm Children’s Book Drive - Bring new and gently used children's books to the conference to help local kids.
  4-5pm Do you want to see what I have been up to at work recently? I will be working the SAS Demo Hall Solutions Center and showing off the SAS Fraud Framework.
Monday 10am-3pm Most of the day I will be camping out at the SAS Demo Hall Solutions Center. Stop by so we can philosophize about how social network analysis doesn't just mean analyzing social networks like Facebook and Twitter but can be used to find any relationships between any of your data variables.
3-4pm Blocking off this time to stalk (I mean support) my fellow co-blogger Steve Overton as he presents not one but TWO presentations in this one hour block. 431-2012 and 112-2012
6-7:30pm I will be attending an Authors Reception in the Publications area of the Demo Hall. Purchase a copy of my book & get a free signature ~ what a deal!
7:45pm Authors Dinner. Sorry this event is for authors only, but if you are interested in writing a book to gain access to this free dinner next year seek out Shelley Sessoms in the Publications area of the Demo Hall.
Tuesday 9:30am Presenting Get Your “Fast Pass” to Building Business Intelligence with SAS® and Google Analytics with co-author Tricia Aanderud of And Data. (Location: Southern Hemisphere V)
  1:30pm Presenting Leveraging an Upgrade to Improve Metadata with customer Brent Whitesel of Highmark (Location: Northern Hemisphere E-3)
Wednesday 9:30am SAS Talks Live from SAS Global Forum, Tricia, Eric Rossland and I will be taking your questions about SAS Business Intelligence. Should be a lively discussion. Even if you aren't going to Orlando or don't score a ticket to this exclusive event, you can view the webcast live! http://www.livestream.com/sasglobalforum2012
Post a Comment

All the possible uses for PROC STP

PROC STP is a new procedure for SAS 9.3 Stored Processes. It's so new and different that I have not had the opportunity to use it yet in a customer engagement. When writing about it for the now released "The 50 Keys to Learning SAS Stored Processes" book, I had to dream up several good examples.

But to dream up possible uses, understanding what this new fangled thing can and cannot do was of the utmost importance. Single and multiple parameters can be passed into the procedure using the INPUTPARAM statement. Data from the stored process could be returned into the current session using the OUTPUTDATA statement. Add the REPLAY option to immediately see the ODS output in your client session, or store it and use PROC DOCUMENT to push the content to a permanent location. Here is an example of this trick in action.

Most importantly, the STP Procedure retrieves the .sas code and runs in the client session. So for BASE SAS users, if the .sas code is not in a shared (and identically mapped) location in the client and the server systems, the client session will not be able to locate the code to run. Wait, remember the discussion about 9.3 allowing sas code to be stored in the metadata directly? I venture that this eliminates the constraints of storing the .sas files in shared & identically mapped locations. Otherwise, SAS Enterprise Guide could act as the interface by running the PROC STP on the server directly.

After knowing all of this, here are a couple of my ideas.

  1. Grabbing the resulting data from a stored process for further analysis in my local session
  2. Retrieving the ODS output from one or more stored processes (during a monthly batch process) to include everything together into a single Monthly Report
  3. Using the procedure within another stored process, similar to chaining, to reduce/reuse/recycle existing code.

What other uses do you see for PROC STP? What are you looking forward to trying?
For more examples on using PROC STP, check out the last chapter of my new book, co-authored with Tricia Aanderud, "The 50 Keys to Learning SAS Stored Processes". Buy it today or register by 10PM, Monday April 16th to win a free copy!

Post a Comment

Creating a prompt for a group of data values without the administrator's help

I have previously spoken about using custom formats and from SAS Information Maps and how they can be used to categorize data differently for your end users. The problem for some is that this requires establishing the format on the SAS server, typically on lockdown by the SAS Administrator. Another option is to create a separate column in the data itself to have a hard coded value ready for prompted filters, but this could require your Data Administrator and modifications to the ETL process. No ding on these people or roles, but what if you could do it today & on your own without any intervention from them? Well, I'm here to tell you that you can! Directly from SAS Information Map Studio!

Here is an example. For SASHELP.CLASS sample data set, there is an AGE value. But instead of choosing an age range (via numeric range prompt) or a single age value (via a numeric prompt) your users would just like to choose one of three categories to generate their report:
1. preteen
2. 13-15 year olds
3. over 15 year olds

First, create a text prompt that includes these three values. Here is my screenshot:

Information Map Prompt Group

Custom Text Prompt with Identified Groups

Next, create a new data element in the Information Map. Click the 'Edit' in the Expression Settings Area and include the SQL code.

Information Map Custom Data Element

CASE Statement Used to Create Data Grouping

Finally, develop a filter that uses the new data element and the new prompt.

Information Map Prompt Group

Custom Text Prompt with Identified Groups

Post a Comment