Stretching my Beyond the Basics of EG series by one more posting... The ability to create your own (custom) tasks in Enterprise Guide certainly takes EG beyond the basics. I've previously mentioned my disappointment (here and here) at the lack of 3rd-party custom tasks. One of the undoubted reasons is a perceived difficulty in coding with Microsoft .NET rather than any of SAS's own languages.
That may be about to change with the imminent release of Chris Hemedinger's Creating Custom Tasks for SAS Enterprise Guide using Microsoft .NET from SAS Press. In a recent blog post, Chris mentioned that his book will become available in early 2013. It will be a welcome addition to the SAS Press portfolio.
It's easy to see why custom tasks must be written in a non-SAS language: EG runs on Windows PCs, and those PCs will not have a copy of SAS on them if EG is working in client server mode and SAS is on a server. So the custom task author needs to use a language that is universally available and has a good understanding of Windows and its APIs. Thus, .NET is a sensible choice for SAS to have made.
However, it's not a programming skill that is available to many SAS teams. At best it tends to be a skill that one member of the team my have picked up. In these circumstances, support for custom tasks can easily become dependant upon one key person. That's not a good situation. I wrote about Bus Factors for software projects last year; the same applies to support teams.
If you're lucky enough to have two or more team members with .NET skills, or you're able to get support from a team alongside the SAS team, then custom tasks can add a great deal of value to your use of SAS and Enterprise Guide. Perhaps it's worth one or two of your team members investing some time into learning .NET?...
SAS® and software development best practice. Hints, tips, & experience of interest to a wide range of SAS practitioners. Published by Andrew Ratcliffe's RTSL.eu, guiding clients to knowledge since 1993
Tuesday, 16 October 2012
Tuesday, 9 October 2012
NOTE: Log Searching, Beyond the Basics With Enterprise Guide
I originally intended my Enterprise Guide "Beyond the Basics" series to have just two parts, but I just had to include two recent tips from Angela Hall. In "Always learning something new, two awesome Enterprise Guide tricks", Angela relates two tricks she learned (or was reminded of) at this year's WUSS (Western Users of SAS Software) conference. Angela's first tip is a means of quickly skipping through your SAS log to find errors and warnings; the second describes how you can organise your EG projects with multiple Process Flows.
Angela's first tip is almost embarrassing. She merely points out that the Log window has its own toolbar, and there are Up and Down Arrow buttons on the toolbar which take one to the next or previous warning/error. Why didn't I know that? Why had I never noticed the toolbar or buttons?! My embarrassed is mollified by the fact that Angela admits that she didn't know either.
Angela's second tip is to point out that you can add extra Process Flows to your EG project; you can rename them to something meaningful; and you can then easily run selected parts of your project. Whilst I agree with Angela that this is a good way to organise your project, I have to point out a small disappointment that I've always harboured with regard to multiple Process Flows. Wouldn't it be nice if there was some support for links between Flows? I'd like to see two things:
1) A stepping stone icon that, when clicked, takes the user to another Process Flow. This would allow a user to follow the flow of data between Process Flows
2) When data nodes are shown on a Process Flow, EG should indicate which Process Flow created them. Again, this would help users understand the flow between Flows
Of course, even without my suggestions, Angela's tips are valuable and worth trying. Thanks Angela.
Angela's first tip is almost embarrassing. She merely points out that the Log window has its own toolbar, and there are Up and Down Arrow buttons on the toolbar which take one to the next or previous warning/error. Why didn't I know that? Why had I never noticed the toolbar or buttons?! My embarrassed is mollified by the fact that Angela admits that she didn't know either.
Angela's second tip is to point out that you can add extra Process Flows to your EG project; you can rename them to something meaningful; and you can then easily run selected parts of your project. Whilst I agree with Angela that this is a good way to organise your project, I have to point out a small disappointment that I've always harboured with regard to multiple Process Flows. Wouldn't it be nice if there was some support for links between Flows? I'd like to see two things:
1) A stepping stone icon that, when clicked, takes the user to another Process Flow. This would allow a user to follow the flow of data between Process Flows
2) When data nodes are shown on a Process Flow, EG should indicate which Process Flow created them. Again, this would help users understand the flow between Flows
Of course, even without my suggestions, Angela's tips are valuable and worth trying. Thanks Angela.
Labels:
Enterprise guide,
SAS
Tuesday, 2 October 2012
NOTE: Conditional Processing, Beyond the Basics With Enterprise Guide
In my preceding Enterprise Guide (EG) "Beyond the Basics" article I described Prompts, their uses, and their benefits. Another valuable feature of EG is conditional Processing. This gives you the ability to take different paths through your project based upon the value of macro variables, prompts, data set contents, and a number of other values.
EG conditions can be associated with executable tasks and programs and are evaluated prior to execution of the task, query or program. Conditions decide which tasks, queries and programs should or should not be executed. Conditions provide a kind-of IF-THEN-ELSE capability in EG.
Once you've added a condition to your process flow you'll notice a few extra indicators appear on your nodes. A small flag indicates that the node has a condition associated with it; a small number indicates the specific condition associated with the specific node (one condition can be associated with more than one node; you'll see the same number of the nodes); a tick or a cross will show whether the condition ran at run-time.
You can make your conditions quite complex because you are allowed to create chains of ELSE-IF clauses within your conditions.
All of this functionality, introduced in EG v4.2, means you can make your EG project produce different reports, send output to different email recipients, and much more.
Curiously, there doesn't seem to be a great deal of talk about EG conditions in conference papers and blogs. SAS Knowledge Base article 39995 offers some useful insight. Chris Hemedinger's SAS Global Forum (SGF) paper from 2008, Find Out What You're Missing: Programming with SAS Enterprise Guide, offers an example. However, Chris Schacherer's excellent SGF paper this year, Take a Fresh Look at SAS Enterprise Guide: From point-and-click ad hocs to robust enterprise solutions, takes a detailed look at many EG features and provides a detailed step-by-step solution to a fictitious reporting scenario, including the use of a condition.
Having extolled the virtues of conditional processing (and, there are many virtues), I need to add a word of caution. If you export the code from the project, the conditional logic will not be included in the export. This is perhaps understandable because conditions are evaluated within EG (on the client) at run-time; they are not implemented in macro code as you might have otherwise supposed. However, the biggest crime here is that EG doesn't warn you that it won't include your conditional logic when you perform an export. You have been warned!
EG conditions can be associated with executable tasks and programs and are evaluated prior to execution of the task, query or program. Conditions decide which tasks, queries and programs should or should not be executed. Conditions provide a kind-of IF-THEN-ELSE capability in EG.
Once you've added a condition to your process flow you'll notice a few extra indicators appear on your nodes. A small flag indicates that the node has a condition associated with it; a small number indicates the specific condition associated with the specific node (one condition can be associated with more than one node; you'll see the same number of the nodes); a tick or a cross will show whether the condition ran at run-time.
You can make your conditions quite complex because you are allowed to create chains of ELSE-IF clauses within your conditions.
All of this functionality, introduced in EG v4.2, means you can make your EG project produce different reports, send output to different email recipients, and much more.
Curiously, there doesn't seem to be a great deal of talk about EG conditions in conference papers and blogs. SAS Knowledge Base article 39995 offers some useful insight. Chris Hemedinger's SAS Global Forum (SGF) paper from 2008, Find Out What You're Missing: Programming with SAS Enterprise Guide, offers an example. However, Chris Schacherer's excellent SGF paper this year, Take a Fresh Look at SAS Enterprise Guide: From point-and-click ad hocs to robust enterprise solutions, takes a detailed look at many EG features and provides a detailed step-by-step solution to a fictitious reporting scenario, including the use of a condition.
Having extolled the virtues of conditional processing (and, there are many virtues), I need to add a word of caution. If you export the code from the project, the conditional logic will not be included in the export. This is perhaps understandable because conditions are evaluated within EG (on the client) at run-time; they are not implemented in macro code as you might have otherwise supposed. However, the biggest crime here is that EG doesn't warn you that it won't include your conditional logic when you perform an export. You have been warned!
Labels:
Enterprise guide,
SAS
Tuesday, 25 September 2012
NOTE: Prompts, Beyond the Basics With Enterprise Guide
There's an enormous number of capabilities in Enterprise Guide (EG). I'm not just referring to the wide range of tasks for data manipulation and data analysis, nor the fact that you can type your SAS code or you can drag and drop tasks to make a flow diagram, I'm thinking of capabilities like Prompts. If you want to make your EG projects more flexible and more easily used by those with less SAS skills than yourself then Prompts should interest you.
In brief, Prompts allow you to make your EG project parameter-driven, and the parameter values are requested via a nice, neat dialog box. The dialog box is automatically customised to include the parameters you have included in your Project; it allows the user to input simple text, but can also offer drop-down lists, date pickers and other widgets that make data entry easier for the user.
Prompts are easy to use within your project. They're stored and referred to as macro variables, i.e. you need to remember to prefix the Prompt's name with an ampersand (&) when you use it.
So, let's take things in order: how do we create prompts, where can we use them, and how do we use them?
To create a prompt, use EG's View menu and select Prompt Manager. This will show the Prompt Manager pane. From there, you can click Add; and from the Add New Prompt dialog, you can specify your first Prompt. The dialog is fairly self-explanatory. The key field is "Name", this is the name that you will use in your tasks and code in your Project. The other key field is "Method for populating prompt", this tells EG whether you simply want to allow the user to enter values, whether you want the user to select from a list of values that you have provided, or whether the user shall select from a list of values taken from a data set (this latter option is known as a Dynamic Prompt).
The Prompt Manager is the main focus for creating and editing Prompts, but there is also a button in the Query Builder task dialog.
There's a wide range of places you can use a Prompt. You can use Prompts in queries, tasks, programs and stored processes.
To use a Prompt in a query or task, the opportunity is usually made clear. For example, when offered the opportunity to type a value in Query builder, you're shown a dialog with three tabs: Values, Columns, Prompts. If you use a Prompt within a task or query by typing its name (prefixed with an ampersand) then you'll need to tell EG your intention. You can do this from the Properties of the task or query - you'll see Prompts listed in the left-hand pane of the Properties dialog. Use the same approach for programs, i.e. select the Properties of the program and edit the Prompts pane.
If you would like to know more about Prompts, I recommend you read Angela Hall's excellent SAS Global Forum 2011 paper Creating Reusable Programs by Using SAS Enterprise Guide Prompt Manager.
Prompts are very simple to put into use and to maintain. They provide tremendous flexibility with their choice of differing types, defaults values, etc. And finally, they make your EG Project much more accessible to those with less SAS knowledge than yourself. If you're not already using them, I suggest you take the first opportunity to do so.
In brief, Prompts allow you to make your EG project parameter-driven, and the parameter values are requested via a nice, neat dialog box. The dialog box is automatically customised to include the parameters you have included in your Project; it allows the user to input simple text, but can also offer drop-down lists, date pickers and other widgets that make data entry easier for the user.
Prompts are easy to use within your project. They're stored and referred to as macro variables, i.e. you need to remember to prefix the Prompt's name with an ampersand (&) when you use it.
So, let's take things in order: how do we create prompts, where can we use them, and how do we use them?
To create a prompt, use EG's View menu and select Prompt Manager. This will show the Prompt Manager pane. From there, you can click Add; and from the Add New Prompt dialog, you can specify your first Prompt. The dialog is fairly self-explanatory. The key field is "Name", this is the name that you will use in your tasks and code in your Project. The other key field is "Method for populating prompt", this tells EG whether you simply want to allow the user to enter values, whether you want the user to select from a list of values that you have provided, or whether the user shall select from a list of values taken from a data set (this latter option is known as a Dynamic Prompt).
The Prompt Manager is the main focus for creating and editing Prompts, but there is also a button in the Query Builder task dialog.
There's a wide range of places you can use a Prompt. You can use Prompts in queries, tasks, programs and stored processes.
To use a Prompt in a query or task, the opportunity is usually made clear. For example, when offered the opportunity to type a value in Query builder, you're shown a dialog with three tabs: Values, Columns, Prompts. If you use a Prompt within a task or query by typing its name (prefixed with an ampersand) then you'll need to tell EG your intention. You can do this from the Properties of the task or query - you'll see Prompts listed in the left-hand pane of the Properties dialog. Use the same approach for programs, i.e. select the Properties of the program and edit the Prompts pane.
If you would like to know more about Prompts, I recommend you read Angela Hall's excellent SAS Global Forum 2011 paper Creating Reusable Programs by Using SAS Enterprise Guide Prompt Manager.
Prompts are very simple to put into use and to maintain. They provide tremendous flexibility with their choice of differing types, defaults values, etc. And finally, they make your EG Project much more accessible to those with less SAS knowledge than yourself. If you're not already using them, I suggest you take the first opportunity to do so.
Labels:
Enterprise guide,
SAS
Thursday, 20 September 2012
Enthusiasm and Vision #RaspberryJam
Well, that was an interesting evening! Lots of enthusiasm, lots of geekiness, lots of vision, and lots of printed circuit boards. Inspiring.
I've just been to the third Raspberry Jam in London, an event designed to facilitate the sharing of knowledge and experience of the exciting new Raspberry Pi microcomputer. Its British creators call it "an ARM GNU/Linux box for $25", but to me it's an attempt to recreate the fun and learnings I experienced as a teenager in the 1970's with an Atari 400 (or BBC micro, TRS 80, or Sinclair Spectrum). We called them microcomputers in those days.
This wasn't just a trip down memory lane. The British approach to teaching Information and Communications Technology (ICT) has consisted largely of teaching kids how to use the primary components of Microsoft Office (Word, Excel, PowerPoint and Publisher), producing posters, leaflets and the like. That's not what got me excited about computers as a teenager. I got hooked on computing by coding stuff - being creative and building something that didn't exist until I created it from my own design. Being able to drive Microsoft Office applications is a good office skill, but it won't produce a new generation of computer scientists in the UK; that's computer scientists who will contribute to the music, video, movie and games industries amongst others.
I secretly harbour ambitions to be an IT teacher at a senior school (age 11-18). When I say IT teacher, I'm thinking of teaching kids how to write code, how to think about design, and how to create new technology. There was an enthusiastic group of teachers at tonight's event with just the same ambitions. Their schools and their pupils are lucky to have such an enthusiastic and visionary bunch of people. I was glad to meet like-minded people.
I was expecting the main part of this evening to be one or two presentations from people who've done interesting stuff with their Pi's. Instead, our hosts (Mozilla) had kindly provided several monitors and display stands so that anybody with a Pi could hook it up and show it off. This left the rest of us to circulate and (big intake of breath) talk to each other. As a child I was taught not to speak to strangers; as a British adult, I continue to follow the same teachings!
The Mozilla office is located in St Martin's Lane, near Covent Garden, in London's theatre district. The character and ambience inside the building were artistic and creative. The free beer, nuts, Pringles and Doritos helped too. I had no trouble talking to strangers!
All-in-all, it wasn't the evening I expected, but it was an enjoyable evening nonetheless and I hope to return to the next event (in October). Moreover, I hope that the Raspberry Pi fans can continue to influence ideas about what we should be teaching our kids with regard to technology: how to use it, or how to create it. I say "how to create it".
My thanks to Ben and colleagues for their organisation of the event, and to Mozilla for kindly hosting it.
I've just been to the third Raspberry Jam in London, an event designed to facilitate the sharing of knowledge and experience of the exciting new Raspberry Pi microcomputer. Its British creators call it "an ARM GNU/Linux box for $25", but to me it's an attempt to recreate the fun and learnings I experienced as a teenager in the 1970's with an Atari 400 (or BBC micro, TRS 80, or Sinclair Spectrum). We called them microcomputers in those days.
This wasn't just a trip down memory lane. The British approach to teaching Information and Communications Technology (ICT) has consisted largely of teaching kids how to use the primary components of Microsoft Office (Word, Excel, PowerPoint and Publisher), producing posters, leaflets and the like. That's not what got me excited about computers as a teenager. I got hooked on computing by coding stuff - being creative and building something that didn't exist until I created it from my own design. Being able to drive Microsoft Office applications is a good office skill, but it won't produce a new generation of computer scientists in the UK; that's computer scientists who will contribute to the music, video, movie and games industries amongst others.
I secretly harbour ambitions to be an IT teacher at a senior school (age 11-18). When I say IT teacher, I'm thinking of teaching kids how to write code, how to think about design, and how to create new technology. There was an enthusiastic group of teachers at tonight's event with just the same ambitions. Their schools and their pupils are lucky to have such an enthusiastic and visionary bunch of people. I was glad to meet like-minded people.
I was expecting the main part of this evening to be one or two presentations from people who've done interesting stuff with their Pi's. Instead, our hosts (Mozilla) had kindly provided several monitors and display stands so that anybody with a Pi could hook it up and show it off. This left the rest of us to circulate and (big intake of breath) talk to each other. As a child I was taught not to speak to strangers; as a British adult, I continue to follow the same teachings!
The Mozilla office is located in St Martin's Lane, near Covent Garden, in London's theatre district. The character and ambience inside the building were artistic and creative. The free beer, nuts, Pringles and Doritos helped too. I had no trouble talking to strangers!
All-in-all, it wasn't the evening I expected, but it was an enjoyable evening nonetheless and I hope to return to the next event (in October). Moreover, I hope that the Raspberry Pi fans can continue to influence ideas about what we should be teaching our kids with regard to technology: how to use it, or how to create it. I say "how to create it".
My thanks to Ben and colleagues for their organisation of the event, and to Mozilla for kindly hosting it.
Tuesday, 18 September 2012
Whatever You Call It, It's All About People First
Achieve Intelligence (AI) just published its latest monthly news article. AI's monthly publications are all themed on building your Business Intelligence (BI) strategy. This month's publication is entitled "Capability Improvement – The Three P’s" and it describes the importance of people, process and plumbing in your strategy.
AI's monthly publications are long-overdue a mention in NOTE: because they are written by a team of people who have "got the T-shirt" in addition to going "there" and seeing "it"; plus, the publications are written in bite-sized chunks so you can take an actionable nugget of information from each monthly publication. Similar to NOTE:, you can visit the web site monthly, or you can request a convenient monthly email. I've not yet found a means to subscribe through RSS (many NOTE: readers use this approach).
Past publications from AI have included:
If you'd like to receive some advice and challenges about BI strategy each month, subscribe to AI. Better still, invite them to visit you and discuss your BI strategy. You do have a clearly-expressed BI strategy, don't you?...
- Why do I need a Business Intelligence Strategy?
- How to Create a Business Intelligence Strategy
- Reasons for chaos: before a Business Intelligence Strategy
- Five Areas of Business Intelligence Strategy
- Stakeholder Management
If you'd like to receive some advice and challenges about BI strategy each month, subscribe to AI. Better still, invite them to visit you and discuss your BI strategy. You do have a clearly-expressed BI strategy, don't you?...
Labels:
BI,
Mobile BI,
Process,
Project Management
Subscribe to:
Posts (Atom)


