The ingredients of a Data Scientist

It was just a couple of years ago that folks were skeptical about the term "data scientist". It seemed like a simple re-branding of an established job role that carried titles such as "business analyst", "data manager", or "reporting specialist".

But today, it seems that the definition of the "Data Scientist" job role has gelled into something new. At SAS Global Forum 2014, I heard multiple experts describe data science qualifications in a similar way, including these main skills:

  • Ability to manage data. Know how to access it, whether it's in Excel, relational databases, or Hadoop -- or on the Web. Data acquisition and preparation still form the critical foundation for any data analysis.
  • Knowledge of applied statistics. Perhaps not PhD-level stuff, but more than the basics of counts, sums, and averages. You need to know something about predictive analytics, forecasting, and the process of building and maintaining analytical models.
  • Computer science, or at least some programming skills. Point-and-click tools can help keep you productive, but it's often necessary to drop into code to achieve the flexibility you need to acquire some data or apply an analysis that's not provided "out of the box".
  • And finally -- and this makes a Data Scientist the most relevant -- the ability to understand and communicate the needs of the business. You might be a data wiz and have metrics out the wazoo, but an effective data scientist must know which fields and metrics matter most to the organization he or she serves. And you must be able to ask the right questions of the stakeholders, and then communicate results that will lead to informed action.

I don't claim to be a data scientist -- I'm not strong enough in the statistical pillar -- but I do have my moments. For example, I consider my recent analysis of blog spam to be data-science-like. Even so, I'm not brave enough to change my business cards just yet.

At SAS Global Forum I talked to Wayne Thompson, Chief Data Scientist at SAS. (Yes, even SAS is capitalizing on the buzz by having a data science technologies team.) Here he is introducing SAS In-Memory Statistics for Hadoop, a programming interface that's meant to empower data scientists:


 
Wayne and I also talked a couple of other times: once about SAS Visual Statistics ("it's the shizzle", says the bald white guy -- not me), and once about data science in general.

Data science isn't all just "Wayne's world" -- there were plenty of other data science practitioners at the conference. For example, check out Lisa Arney's interview with Chuck Kincaid of Experis, talking about how to be a data scientist using SAS. (See his full paper here.) And SAS' Mary Osborne, who presented on Star Wars and the Art of Data Science. (Her paper reveals the unspoken fifth pillar of a data scientist: it's good to be part nerd.)

What do you think about the "new" field of data science? Have you changed your business card to include the "data scientist" title?

Post a Comment

Adding Harvey Balls to your SAS reports

I'm currently working on a large project for a SAS customer. The project comprises many activities and phases, so there is a need to track progress on many different levels. During a recent meeting the project manager announced, "I'm putting together a status deck, and I'll include some Harvey Balls for each item."

"Harvey whats?" I said, nearly spitting out my coffee.

I've since learned that Harvey Balls are a project-management thing. They are used as way to communicate qualitative progress towards a goal: not just whether an item is complete, but also how far along it is. (Please, don't confuse these with Harvey wallbangers, which are used to measure progress towards something else.) Harvey Balls remind me of the little circles that I see in Consumer Reports product reviews.

A web search will yield lots of examples of how to add Harvey Balls to your PowerPoint slides and Excel spreadsheets -- favorite domains of project managers. However, there isn't much (any?) about how to use these in SAS, so with this blog post I hope to corner the market.

First, a visual -- here's what Harvey Balls look like in a SAS report:

hbreport
It turns out that the Harvey Ball glyphs are built into some of the fonts that you probably have installed, and can be accessed by referencing their Unicode character values. For ODS-based reports, we can include any Unicode character that we need by using:

  • the ODS escape character, combined WITH...
  • the {unicode} keyword, AND..
  • the hexadecimal code of the character we want.

For example:

ods escapechar='~';
title "This is a full-circle Harvey Ball: ~{unicode '25CF'x}";

yields this:

hbtitle
For a more data-driven approach, I decided to encode the Harvey Balls in a numeric SAS format. In my mapping, I set values between 0 and 4, inclusive. 0 means "empty" or no progress, whereas 4 means "full" or complete. 1 through 3 represent a quarter, halfway, and three-quarters, respectively.

ods escapechar='~';
proc format lib=work;
value hb  
  0 = "~{unicode '25CB'x}" /* empty circle */
  1 = "~{unicode '25D4'x}" /* quarter */
  2 = "~{unicode '25D1'x}" /* half */
  3 = "~{unicode '25D5'x}" /* three-quarter */
  4 = "~{unicode '25CF'x}" /* full */
;

Here's a partial listing of the PROC REPORT code that uses the format. Note that I added some other appearance treatments to the report column with the Harvey Ball. Because the font glyph tends to be small, I bumped up the font size to 18 points. I also specified Lucida Sans Unicode as the font face because I know that font contains the right glyphs. Finally, I tweaked the alignments to account for the larger padding that accompanies the larger font size, ensuring the data looked vertically aligned properly in each row.

proc report data=progress;
 columns  stage dev test prod;
 define stage / 'Activity' display style=[verticalalign=center];
 define dev  / '% Dev' format=hb.
  style(column)=[
   font_face='Lucida Sans Unicode' 
   font_size=18pt 
   verticalalign=center 
   just=c 
   color=blue
   ];
/* ... */

>> Download the complete example program from here. (Should work with SAS 9.2 or later)

Bonus: If you have SAS 9.4, you can modify this program to place the report directly into PowerPoint! This makes it perfect for consumption by project managers everywhere.

ods powerpoint file="c:\temp\hb.pptx" style=PowerPointLight;
/* proc report section here...*/
ods powerpoint close;

Here's a screenshot of the result (click to see it full size):

hbppt

See also

The Power of Unicode (using these characters in SG plots)
Unicode Tick Values using GTL
The Great Escape(char) - great paper by SAS user Louise S. Hadden

Post a Comment

Blog spam: ain't nobody got time for that

Here at SAS, we've come a long way with how we deal with blog spam on blogs.sas.com.

Last year at this time, I was sifting through dozens of spam messages per day in order to salvage the one or two genuine comments that originate from real readers. I was just a human trying to keep up with machine-generated spam, a time-consuming -- and somewhat frustrating -- activity.

I created SAS-based reports that showed the impact not just on me, but on the hundreds of other SAS blog contributors. Thankfully in May, our internal IT support configured an industry-standard spam-filtering mechanism called Akismet. The spam flow ceased immediately, as if somebody turned a spigot.

Recently, the spigot has been turned on slightly, allowing a few spam messages to leak through. The spammers are like an ever-evolving virus, constantly adapting their techniques to punch through our defenses. I wondered: with the leaks I'm seeing, how effective is Akismet for us today?

It turns out that Akismet is very effective. Despite the few messages that I see leak through daily, Akismet is catching over 95% of the spam messages that target our blogs. Over the last 16 days I saw 40 spam notifications hit my inbox. Without Akismet, I would have seen 741 messages in the same period. Yikes.

akismetdbI can see some of this within my WordPress blog administration screen, since the Akismet plugin embeds a sort of dashboard there. This is useful for me, but we have over 30 blogs hosted at blogs.sas.com. As far as I know, we don't have a view into how Akismet is performing for our entire set of blog properties.

Enter SAS. By using SAS to connect to the WordPress database (something I already do for other reports), I can scrape and aggregate the Akismet metrics for a more global report on spam activity. Here's an example of a chart that I created:

akismet

In this chart, the height of the blue bar indicates the total number of incoming spam on each day, across all blogs.sas.com blogs. The smaller green bar indicates the number of "author-identified spam" messages -- those that the filter did not catch and that the blog moderator had to mark as spam. The number at the top of each bar indicates a "percent missed" for the day. And finally, the text at the bottom of the chart provides a summary: total spam caught, total missed, and a percentage. Since we receive so much spam, the IT folks configured Akismet to purge our spam data every 3 weeks or so. That's why the chart shows only a 16-day study period. (See an example of the full report here.)

Interested in the SGPLOT code behind this chart? It looks something like this (data prep steps omitted, of course):

proc sgplot data=reckoning;
  format comment_date dtdate5. fail_rate percentn6.2;
  label spam_caught='Spam caught' spam_allowed='NOT caught';
  vbar comment_date / response=spam_caught dataskin=pressed
  datalabel=fail_rate datalabelfitpolicy=none 
    datalabelattrs=(color=black size=10pt);
  vbar comment_date / 
     response=spam_allowed barwidth=.6 dataskin=pressed 
  ;
  yaxis label="Akismet ruling" grid;
  xaxis valueattrs=(size=9) 
    label="Spam comments (&total_caught. caught, &total_allowed. allowed - &overallfail. missed overall)";
run;

Assuming that it takes a blog moderator just a few seconds to evaluate and dispose of each spam message, Akismet has saved us a collective several hours over the weeks we see here. However, as we can see from the metrics accumulated over time, this really adds up:

akismettable
I don't think that Akismet costs us very much, and -- in my view -- the time that we save is definitely worth the expense. Spammers will always be with us and are just part of the cost of publishing content. But dealing with it manually? Ain't nobody got time for that.

Post a Comment

Take control of ODS results in SAS Enterprise Guide

When you run a program or task in SAS Enterprise Guide, the application wraps your job in an "ODS sandwich", the colloquial term we use for the ODS statements necessary to create output that can be viewed in your project.

That's convenient for exploring and refining your program, but at some point you might want to use your own ODS statements and options to control the format and appearance of the output. You might find that the default ODS sandwich that SAS Enterprise Guide generates can get in your way.

For example, suppose that you want to create a PDF output with landscape orientation and Legal paper size. The default SAS Enterprise Guide options might be in conflict with some of the options you need. The best approach? Squelch the "automatic" options, and code up your own exactly how you need them. Here's how.

First, change the properties of your SAS program.. Right-click on the program node in your flow and select Properties, or click the Properties icon at the top of the editor window:

codebar

In the Properties window, select the Results tab. Then select the Customize results formats [...] option, and uncheck all of the built-in formats.

resultsopts
Next, add the ODS statements and options necessary to produce the results that you want. For example, if you want a PDF file that has a particular format, use something like this:

options orientation=landscape papersize=legal;
ods noproctitle;
 
/* using ID= to control each ODS dest */
ods pdf (id=custom) 
  /* this file path is on the SAS workspace */
  file="C:\Projects\report.pdf" 
  columns=2 style=journal;
  title "Types by Cylinders and MSRP stats";
 
proc freq data=sashelp.cars;
  table Type * Cylinders;
run;
 
proc means data=sashelp.cars;
  class Origin;
  var msrp;
run;
 
/* print-friendly image options */
ods pdf (id=custom) dpi=300 startpage=no;
ods graphics / 
  noborder scale=on
  height=2in width=2.5in;
title "Distribution";
 
proc sgplot data=sashelp.cars;
	histogram msrp;
	density msrp;
run;
 
ods pdf (id=custom) close;

Sample result:
Link to PDF
Some notes about this program:

  • The FILE= option on the ODS PDF statement refers to the file that you want to create in the file system of your SAS workspace, not your local machine. SAS Enterprise Guide will offer to download this file for you to view, but if you want complete control over where it lands on your local PC, use the Copy Files task to download it.
  • If you run this program in SAS Enterprise Guide without turning off the other Results formats, the final PDF output won't have all of the attributes you expect. For example, the graph might look slightly different. So if this PDF is your ultimate objective, be sure to suppress the automatic results from SAS Enterprise Guide.
  • Use this same technique to create custom HTML output, or ODS POWERPOINT (new in 9.4), ODS EPUB (new in 9.4) or even ODS HTML5 (hey! new in 9.4).

For a minimalist, fast-running SAS program, you can use this technique to suppress the fancy (bulkier) ODS results and rely on the old-school LISTING format. In the Results properties for your program, uncheck all output destinations except for Text. If your program generates only text-based output that you want to view quickly, this will turn SAS Enterprise Guide into a speedy-quick results-generating machine...just like you might be accustomed to from your old PC SAS days.

See also

Destination Known: Programmatically Controlling Your Output in SAS Enterprise Guide, by Aaron Hill
[VIDEO] New Destinations in ODS: PowerPoint, HTML5, EPUB, EXCEL
Tip Sheet for ODS PDF

Post a Comment

Frankenstein hackey-sacking with a missile

I'm in the grocery store with a "mental" list of 3 items to pick up: bread, eggs, and something unusual like cupcake liners. My phone rings. It's my wife (or sometimes a daughter) asking me to pick up one or two more things, maybe orange juice and bananas. Suddenly, the entire list vacates my mind, as if a gate was left open. I will leave the store having forgotten something.

That happens to me all of the time. I now ask my family to simply text the grocery list to my phone so that I have it for reference (as long as I remember to look at my phone). But according to Nelson Dellis, memory expert and 2014 USA Memory Champion, that's not the way to improve my memory.

chris (and sara) and nelsonInstead, I should be training my brain to remember more things, perhaps using interesting and vivid images to help create a "memory palace" that I can easily traverse and retrieve memories as I need them. That's how Nelson developed his extraordinary memory performance, which allowed him to achieve feats such as memorizing pi to 1000 digits. ("Frankenstein hackey-sacking a missile" was one of his example memory anchors.)

Nelson proved his memory prowess in front of thousands of SAS users at SAS Global Forum, and I helped him to do it. My part was to point at a digit in the middle of the 1000-digit sequence, then read the 10-digit sequence from that point. Nelson would then recite the 10 digits immediately following my sequence, and then the 10 digits preceding.

On his first attempt, Nelson came up empty. It might have had to do with the way I read the digits (hey, it's harder than it looks!) or perhaps it was just dumb luck. But we tried again, and success! Then another audience member read a sequence, and Nelson rattled off the 20 surrounding digits. We were all amazed.

nelsonandmeNelson was an excellent sport throughout the rest of the day. Our SAS internal communications folks had him memorizing employee names, reciting song lyrics after having just one minute to review them, and playing a kid's matching card game. He performed admirably.

We caught up later in the Demo and Support Center, and he assured me that he held no hard feelings for my part in his missed pi performance (as he redeemed himself anyway, to much applause from the crowd). As you can see from this photo of us, he's a tall dude. (For comparison, I'm 6'1" and change.) I was pleased to see Nelson get some very positive press recently on Mashable, where you can read more about his background, his personal story, and his memory techniques.

See also:

Karin Reed interviews Nelson Dellis on SAS Global Forum Live Report
Lisa Arney interviews Nelson for Inside SAS Global Forum
Mashable: Man With World's Strongest Memory Crusades Against Alzheimer's

Post a Comment

Confessions of a SAS Dummy

SAS Global Forum 2014 was a ton of fun, and extremely busy for yours truly. If you wonder how I spent my time at the conference, you need only to visit the on-demand video archive and see how many of the various sessions feature my shiny head.

In most of these videos I'm a bit player, acting only as a host while some smarter people share the interesting demos and insights. But I do have one video that's all my own. And it features content that I "test marketed" on this very blog. The session is called "Confessions of a SAS Dummy".

Description from the conference schedule:

People from all over the world are using SAS analytics to achieve great things, such as to develop life-saving medicines, detect and prevent financial fraud, and ensure the survival of endangered species. Chris Hemedinger is not one of those people. Instead, Chris has used SAS to optimize his baby name selections, evaluate his movie rental behavior, and analyze his Facebook friends. Join Chris as he reviews some of his personal triumphs over the little problems in life, and learn how these exercises can help to hone your skills for when it really matters.

This presentation is a reprise of talk that I've given at several user groups, including as a keynote feature in two regional SAS user group conferences last fall. Now, since it's recorded and viewable by anyone at any time, I can probably never give it again. I guess I'll have to find some other topics to milk for my in-person appearances.

I've had friends who watched the video (and I didn't even have to pay them!) and said (with a hint of pity), "I enjoyed the talk, but the audience didn't seem to be all that entertained." Well, I was there and I can tell you that my audience was very good, and I was pleased with their feedback. Unfortunately, unlike at the taping of a sitcom episode, the audience is not miked so you can't hear their reaction as I speak. You can hear their questions at the end only because the questioners use a microphone for that part of the session.

Perhaps I'll petition the video editing team add a laugh track. If you're feeling charitable, feel free to leave some chuckles in the blog comments.

Archived recording: [VIDEO] Confessions of a SAS Dummy

Post a Comment

Talking Tech at SAS Global Forum 2014

Talking tech with Nancy R. at SASGF13

For the third year now, I'll be hosting the SAS Tech Talk shows at SAS Global Forum. (Since I've been invited back I can assume that I'm more of an Ellen DeGeneres than a Seth MacFarlane.)

These shows feature SAS technical experts (mostly from SAS R&D) who are prepared to discuss and demonstrate the technologies that they work on. These folks have job titles such as "Chief Data Scientist", "Principal Research Statistician", and "Senior Analytical Consultant". They work in areas such as "SAS Output Delivery and Reporting", "BI Data Visualization", and "Enterprise Management Integration".

These guests represent the SAS R&D talent that bring the SAS products to life. Some will be names that you know from books and blogs, such as Rick Wicklin. Others are return guests to SAS Tech Talk, such as Nascif and Himesh. And still others might be faces that are new to you, but they are the movers and shakers when it comes to SAS technology.

This year we have three SAS Tech Talk shows:

  • Monday, 24March at 2pm EDT
  • Tuesday, 25March at 2pm EDT
  • Wednesday, 26March at 9am EDT

Each show is different, and we're covering 12 great topics in all. I'm very excited about this year's lineup! I'd list out the topics right here, but some are the subject of exciting product announcements and I don't want to steal anyone's thunder!

There is no doubt that you get the best conference experience when you can attend in person. But even if you cannot attend this year, you don't have to miss out. Much of the content -- the opening sessions, SAS Tech Talk, and many breakout sessions -- will be streamed on live video channels, all hosted at www.sasglobalforum.com. Any content that is streamed will also be archived so that you can watch it later (can you say "movie night"?).

See also
Previous SAS Tech Talk shows on YouTube

Post a Comment

Adding some culture to your SAS Enterprise Guide prompts

My teenage daughter is a self-appointed anglophile. She's a big fan of British movies and TV shows such as Doctor Who and Sherlock, and although she has not yet visited the UK (an injustice for which she blames her father), she considers the place to be her homeland.

In an effort to live out her adopted British lifestyle, she changes her iPhone and laptop settings to "English - British". It's an innocuous preference, usually. However, it does occasionally create a problem, such as when she accidentally turns in schoolwork with British spellings for words such as "honour" or "colour". (As the famous quote from George Bernard Shaw points out, we are two nations divided by a common language.) Fortunately, her teachers sympathize (or "sympathise") and don't usually deduct points for these "misspellings".

SAS Enterprise Guide (and other SAS applications) are translated into many languages, but for these apps "English is English", and there is no special affordance for those users in the UK or Australia. For these users, running SAS Enterprise Guide in English means running it as "English - United States". Even though the language is the same, there are a few local customs, such as the format of date values, that can confuse end users.

These differences are evident in a few places, including in the prompt dialog for date values. When running in "English - United States" mode, a "Date"-type prompt looks like this:

The display value is USA-style, but more confusing is what happens when you try to enter a date value. Even though the prompt window displays the current value with the full month name, the user can enter date values by using a variety of different value styles. In the USA, we usually enter dates as "MM/DD/YYYY", where "02/10/2014" is interpreted at February 10, 2014. But a British or Australian user, accustomed to "DD-MM-YYYY" formatting, might expect that value to come out as October 2, 2014.

However, you can convince SAS Enterprise Guide to observe the local customs, and here's how. Change your SAS Enterprise Guide shortcut to add a "/culture" argument, as in:

"c:\Program Files\SASHome\x86\SASEnterpriseGuide\6.1\SEGuide.exe" /culture:en-AU

The above example is for Australia. For British, try adding "/culture:en-GB". Here's the same date prompt with the new setting applied:

Any date value that you enter will be interpreted in the "Australian way" instead of the American way. This technique works for any version of SAS Enterprise Guide, 4.2 and later.

If you don't want to rely on a modified shortcut, you can set your "language" preference in Tools->Options. But first, you need to "fool" SAS Enterprise Guide into thinking that you have installed these additional English variations. Here's how.

  1. Using Windows Explorer, navigate to the installation directory for SAS Enterprise Guide.
  2. In the application folder, create a new empty folder with a name that matches the culture you want. For example, "en-GB" for British or "en-AU" for Australia.

    You can find the complete set of "culture names" on the Microsoft developer site.

When you restart the application, you will find new "language" options available on the list:

Select the one you like, restart the application, and immerse yourself in a new culture.

Post a Comment

SAS Talks: Favorite SAS Enterprise Guide Tricks

Last week's SAS Talks session, My Favorite SAS Enterprise Guide 5.1 Tricks, was remarkable in several ways.

First, the featured presenter was Marje Fecht, who also serves as the conference chair for SAS Global Forum 2014. She's an avid SAS professional who loves to educate her fellow SAS users on the best productivity tips and practices, including the use of SAS Enterprise Guide. As Marje points out, SAS Enterprise Guide is a primary topic of at least 20 presentations at the upcoming conference. You can see this for yourself in the easy-to-use conference scheduler, which allows you to slice-and-dice the agenda in many ways, including by SAS product.

The second remarkable thing about this SAS Talks session was the attendance. The number of connected participants was through the roof. It's a testament to Marje's star power and to the popularity of the topic. Did you miss it? The archive recording is available here and is free to view.

There was one more remarkable aspect to the session that I hope most attendees did not notice. On the day of the SAS Talks event, SAS headquarters was closed due to inclement weather in North Carolina. Aside from Marje (who was in sunny Florida), the session hosts and panelists were all snowbound in our respective homes. With an ice storm in the forecast, we hoped that our power and Internet connections would sustain us. And fortunately, they did.

I-Kong Fu, the product manager for SAS Enterprise Guide, followed Marje's presentation with a short demo of SAS Enterprise Guide 6.1 and a glimpse into some future developments for the next release of the product. While Marje and I-Kong were "on stage", my colleague Mark Allemang and I addressed many of the technical questions that participants submitted using the Q&A feature. In the remainder of this post, I've grouped the questions by topic and summarized the answers.

About the Data Explorer

Marje presented a thorough review of the interactive Data Explorer. According to Marje, the Data Explorer replaces a number of manual coding steps that analysts typically perform as they get acquainted with their data.

Q: Can I use the Data Explorer with WORK data sets?
A: The Data Explorer uses a special pool of utility SAS sessions (Workspaces) to perform its operations. Since these sessions can't share the WORK folder from your primary SAS session, the Explore option doesn't appear for WORK data. However, here's a trick... Submit this code within a SAS program node:

libname explorer &sasworklocation;

This will assign a new library (named "EXPLORER" in this case) to the same physical path as WORK, and you should be able to use the Data Explorer from that library.

Q: I don't see the Explore option on the menu, even for non-WORK data. Why not? Am I cursed?
A: Don't panic. Check whether you have the option "Automatically open data when added to project" disabled (in Tools->Options->Data General). If you disable that option, the Explore data feature becomes...hidden. See Problem Note 48487 for details.

Q: Can I use Data Explorer with DBMS tables in SAS/ACCESS libraries? Very large tables?
A: Yes, you can use this feature with any table in a library that you access with SAS. Behind the scenes, the Data Explorer runs PROC SQL and other descriptive-oriented SAS procedures to summarize data and produce "Quick Stats". Larger tables might take longer to generate results, but there isn't a hard limit on the size. You can configure the behavior of automatic Quick Stats to a maximum number of columns (default: 20) or data set rows (default: 10,000). See the SAS Enterprise Guide online help for more details.

When using a DBMS, your database administrator might have some opinions about how/when you should use this interactive exploration tool. A SAS administrator can limit this feature (using metadata roles/capabilities) if desired.

About the SAS Enterprise Guide projects and process flows

Marje showed how she was able to be more productive by organizing her work into projects, using process flows, built-in tasks, and notes. And I-Kong showed the new "sticky-note" style of process flow notes in the 6.1 version.

Q: When you create a Note in the process flow and then export a SAS program that you link to it, does the content appear as comments in the exported program?
A: No. The Note object isn't exported as part of the code, as it really annotates the process flow and not just the program. Using the Note object doesn't "excuse" you from adding useful comments in your code!

Q: In the SAS Enterprise Guide workspace, can you divide up your windows by monitor (if using multiple displays)?
A: No, not currently. Most of the SAS Enterprise Guide windows are constrained to the main application window, and cannot "float" to other monitors. This is something that the R&D team is exploring for a future release.

Q: When you select "Send to Excel" for a data set, is there a way to access the SAS program for that operation? Does it use SAS/ACCESS to PC Files?
A: The "Send To" mechanism does not actually use SAS code to do the work -- which is why you don't need the SAS/ACCESS product for this. Instead, SAS Enterprise Guide automates your local instance of Microsoft Excel and populates a new spreadsheet with the selected data set. This is just one of many ways to get your SAS content to Excel.

Q: Why doesn't the Query Builder task discover the table relationships from the database schema when adding two tables from the same database?
A: The relationships aren't always apparent from a SAS/ACCESS library. Right now, efficient queries do require some education on the part of the end user to know what keys/indexes to leverage. A database administrator can help users by defining SQL views that comprise the most commonly requested combinations.

About SAS programming


The program editor in SAS Enterprise Guide is syntax-aware, and provides keyword suggestions as well as automatic display of SAS library names, data set names, and even variable names as you type. It also provides a very handy code formatter that makes your programs (or those you "inherit" from colleagues) much more readable.

Q: Does the "autofill" work with the WHERE statement?
A: Yes (see picture). You can also call up a list of variables in the active data set with the Ctrl+Shift+V key combination. A full list of keyboard shortcuts is in the SAS Enterprise Guide online help (search the index for "keyboard shortcuts").

Q: Can I run just a selection of SAS code?
A: Yes. In the program editor, you can select the lines that you want to run, right-click and select Run Selection on (server) (or press F3 as a shortcut). Also, in a process flow you can select multiple program nodes (Ctrl+click), then right-click and select Run to run just those nodes. And don't forget about the File->New->Ordered List feature to create a list of program nodes to run in a prescribed sequence.

Q: Can I rely on all code being saved within a project?
A: You can decide: save the code in the project file (embedded) or store it on a file system as .SAS files. In the latter case, the SAS Enterprise Guide project holds a shortcut reference to the program file(s). And, you can mix and match -- with some embedded, some external files.

About SAS program versioning

I-Kong demonstrated some new features that are currently under development. One feature that generated much discussion was built-in "SAS program versioning", which keeps track of your SAS program revisions over time. I-Kong showed how you will be able to access the program history and compare differences over time. If this sounds interesting to you, take the time to watch the demonstration in the recorded SAS Talks session.

Q: Do I have to license WinMerge to see the SAS program differences?
A: No. WinMerge is free and that's what I-Kong showed, but you can use any file comparison/merge tool (for example, Beyond Compare or WinDiff).

Q: Is the program history linear or tree-structured?
A: In the history window you see it as a linear progression. However, you can go back to any "snapshot" in time and bring it back as the "current version" if you want to recover to a particular point. Under the covers, SAS Enterprise Guide is using a Git repository -- but no additional setup is needed on your part.

You'll hear more about this and other future developments at SAS Global Forum 2014, which now brings me to the final action item...

Don't stop learning: attend #SASGF14

Have you made your plans for SAS Global Forum? If not, it's the perfect time to take advantage of the Presidents Day Special. Through February 21, pay for one registration and you'll receive a discount code for 50 percent off of a second registration (both at the lower early-bird rates).

Post a Comment