Technology Tales

Notes drawn from experiences in consumer and enterprise technology

17:02, 11th May 2021

Making great graphs even better with ODS Graphics

SAS has introduced updated graphing capabilities through ODS Graphics that allow programmers to produce modern, visually refined graphs using less code than older methods required. Where the Data Step Graphics Interface was once used to draw bar charts with custom symbols, the SGPLOT procedure now handles this with a dedicated SYMBOLCHAR statement that references hexadecimal values for special characters. Attribute maps in SGPLOT also replace the need for conditional macro code when assigning consistent colours to specific data values across groups. The SGPANEL procedure simplifies the creation of side-by-side panel plots by combining what previously required both PROC GPLOT and the GREPLAY procedure into a single step. Finally, the SGMAP procedure, available from SAS 9.4M5 onward on 64-bit Windows and Linux systems, enables the placement of markers and labels on detailed maps using OpenStreetMap data, replacing the older combination of GMAP, GPROJECT and the Annotate facility. All of these features are documented in the SAS 9.4 ODS Graphics Procedures Guide.

17:02, 11th May 2021

SAS 9.4 ODS Graphics: Procedures Guide

The SAS ODS Graphics Procedures Guide, now in its sixth edition, forms part of the broader SAS 9.4 and SAS Viya 3.5 programming documentation suite and covers the full range of procedures available for creating statistical graphics. It includes guidance on core procedures such as SGPLOT, SGPANEL, SGSCATTER, SGPIE and SGRENDER, alongside the SGDESIGN procedure, and addresses common concepts such as controlling graph appearance, managing output and working with attribute maps and annotation tools. The guide also provides reference material on syntax conventions, units of measurement, reserved keywords and comparisons with legacy SAS/GRAPH procedures, making it a comprehensive resource for those building and customising graphs within the ODS Graphics environment.

17:01, 11th May 2021

How to fix common problems in output from SAS ODS Graphics procedures

Common problems with ODS Graphics output in SAS often stem from using incorrect options or syntax, and resolving them typically requires only small adjustments to the code. When colours do not appear as expected in scatter plots, the distinction between DATACOLORS and DATACONTRASTCOLORS in the STYLEATTRS statement is important, as the former applies to filled areas while the latter governs marker symbols and lines. Attribute maps, which link group variable values to specific colours, must use formatted values rather than raw ones if a format has been applied to the group variable. Marker symbol cycling can also behave unexpectedly depending on the style in use, and setting the ATTRPRIORITY option to NONE in an ODS GRAPHICS statement ensures that symbols and colours rotate independently. For annotation, those familiar with SAS/GRAPH may find that ODS Statistical Graphics requires different parameter names and function values, specifically X1 and Y1 for positioning rather than X and Y, and the TEXT function rather than LABEL for adding labels to a plot.

17:12, 10th May 2021

Ask the Expert - SAS Support Communities

The SAS Ask the Expert programme offers free, on-demand webinars aimed at SAS users of all experience levels, covering a broad range of topics including programming techniques, analytics, data integration, marketing intelligence, risk management, security configuration and artificial intelligence. Sessions are hosted by SAS professionals and typically include live demonstrations, slide decks and a curated Q&A segment drawn from audience questions submitted during each event.

Subject matter ranges from foundational topics such as SAS macro programming and creating PowerPoint outputs to more advanced areas including Bayesian analysis, machine learning interpretability, credit risk decisioning, digital twin simulation and the use of large language models within marketing and decisioning workflows. Platform-specific content covers tools such as SAS Viya, SAS Visual Analytics, SAS Customer Intelligence 360, SAS Event Stream Processing and SAS Studio, with several sessions addressing migration strategies for users moving from older SAS environments to SAS Viya. Participants can subscribe to the board to receive follow-up materials from future sessions.

17:05, 10th May 2021

Ask the Expert - Webinars from SAS

SAS provides a range of webinars and resources aimed at helping users enhance their skills and efficiency with its software. These sessions cover topics such as new features in SAS Studio and Viya, machine learning techniques, data manipulation and integration with external tools like Python and Git, often concluding with opportunities for participants to ask questions. Additional support is available through communities, newsletters and educational materials, offering insights into data analytics, artificial intelligence and cloud computing solutions tailored for various industries.

17:02, 10th May 2021

Free SAS Training

SAS offers a range of free online training courses, trials and resources designed to develop data analytics and AI skills, with options tailored for different roles and career paths. These include courses on responsible innovation, generative AI, data science and statistical concepts, alongside subscriptions providing access to over 200 courses. Additional resources such as practice exams, e-books and documentation are available, along with academic discounts for students and educators. The organisation also hosts events like SAS Innovate 2026, where attendees can explore advancements in data and AI technologies.

09:43, 5th May 2021

Groovy : tokenize() vs split()

In Groovy, two methods are used to split strings into tokens: tokenise() and split(), each with distinct characteristics. The tokenise() method returns a list and ignores empty tokens created by consecutive delimiters, while split() returns a string array and retains such empty entries. Also, tokenise treats each character in a specified delimiter string individually, whereas split uses the entire string as a delimiter. Additionally, split supports regular expressions for delimiters, a feature absent in tokenise. These differences influence how each method handles various splitting scenarios, making the choice between them dependent on specific requirements, such as the need for regex patterns or the handling of empty strings.

10:49, 9th April 2021

Top 10 Python Libraries Data Scientists should know in 2021

For data scientists working with Python, there are ten libraries that stand out as particularly valuable and widely used. Pandas serves as the foundation for data exploration and cleaning, while NumPy provides robust support for multidimensional arrays and numerical computation. Scikit-learn is the go-to library for building both supervised and unsupervised machine learning models, and Gradio enables rapid deployment of those models as interactive web applications. TensorFlow and Keras are the primary tools for developing neural networks, with TensorFlow excelling in scalability and Keras offering a more straightforward approach to building deep learning models. SciPy extends NumPy with scientific and mathematical functions, and Statsmodels draws from multiple libraries to support rigorous statistical modelling and testing. Rounding out the list are two visualisation libraries, Plotly and Seaborn, which offer powerful and visually appealing ways to explore and present data, with Plotly also supporting interactive dashboards through its companion tool, Dash.

09:14, 2nd April 2021

Advanced Bash-Scripting Guide

The collection of scripts and examples presented spans a wide range of topics, from fundamental shell scripting techniques to complex data manipulation and algorithmic challenges. It includes demonstrations of array operations, recursive functions and process management, alongside practical utilities for file handling, text processing and system interaction.

Many entries focus on problem-solving through scripting, such as implementing mathematical sequences, sorting algorithms and game logic, while others explore the integration of shell commands with higher-level languages like Perl and Python. The material also addresses common pitfalls in scripting, such as handling subshells and managing variable scope, and provides insights into creating interactive tools, progress bars and user interfaces with colourised output.

Educational examples, including games like Nim and the Knight's Tour, illustrate how scripting can be applied to both functional and recreational purposes. The collection serves as a comprehensive resource for understanding the versatility of shell scripting, its role in automation and its potential for tackling diverse computational tasks.

14:00, 9th March 2021

%SYSEVALF SAS Macro Function

The %SYSEVALF macro function in SAS programming evaluates arithmetic and logical expressions using floating-point arithmetic, returning results formatted as text. It supports conversion types such as BOOLEAN, CEIL, FLOOR and INTEGER, which modify the output format for use in other expressions.

While it handles floating-point values and missing data, it does not support the IN logical operator directly, requiring the %EVAL function for such cases. Examples demonstrate its application in calculations involving numerical operations and conditional logic, such as determining discounts based on product categories. The function is particularly useful for scenarios requiring precise numerical evaluations within macro code, ensuring compatibility with subsequent operations that depend on specific data types.

  • The content, images, and materials on this website are protected by copyright law and may not be reproduced, distributed, transmitted, displayed, or published in any form without the prior written permission of the copyright holder. All trademarks, logos, and brand names mentioned on this website are the property of their respective owners. Unauthorised use or duplication of these materials may violate copyright, trademark and other applicable laws, and could result in criminal or civil penalties.

  • All comments on this website are moderated and should contribute meaningfully to the discussion. We welcome diverse viewpoints expressed respectfully, but reserve the right to remove any comments containing hate speech, profanity, personal attacks, spam, promotional content or other inappropriate material without notice. Please note that comment moderation may take up to 24 hours, and that repeatedly violating these guidelines may result in being banned from future participation.

  • By submitting a comment, you grant us the right to publish and edit it as needed, whilst retaining your ownership of the content. Your email address will never be published or shared, though it is required for moderation purposes.