In SAS Visual Analytics 7.4 on 9.4M5 and SAS Visual Analytics 8.2 on SAS Viya, the periodic operators have a new additional parameter that controls how filtering on the date data item used in the calculation affects the calculated values.
The new parameter values are:
These parameter values enable you to improve the appearance of reports based on calculations that use periodic operators. You can have periods that produce missing values for periodic calculations removed from the report, but still available for use in the calculations for later periods. These parameter settings also enable you to provide users with a prompt for choosing the data to display in a report, without having any effect on the calculations themselves.
The following will illustrate the points above, using periodic Revenue calculations based on monthly data from the MEGA_CORP table. New aggregated measures representing Previous Month Revenue (RelativePeriod) and Same Month Last Year (ParallelPeriod) will be displayed as measures in a crosstab. The default _ApplyAllFilters_ is in effect for both, as shown below, but there are no current filters on report or objects.
The Change from Previous Month and Change From Same Month Last Year calculations, respectively, are below:
The resulting report is a crosstab with Date by Month and Product Line in the Row roles, and Revenue, along with the 4 aggregations, in the Column roles. All calculations are accurate, but of course, the calculations result in missing values for the first month (Jan2009) and for the first year (2009).
An improvement to the appearance of the report might be to only show Date by Month values beginning with Jan2010, where there are no non-missing values. Why not apply a filter to the crosstab (shown below), so that the interval shown is Jan2010 to the most recent date?
With the above filter applied to the crosstab, the result is shown below—same problem, different year!
This is where the new parameter on our periodic operators is useful. We would like to have all months used in the calculations, but only the months with non-missing values for both of the periodic calculations shown in the crosstab. So, edit both periodic calculations to change the default _ApplyAllFilters_ to _IgnoreAllTimeFrameFilters_, so that the filters will filter the data in the crosstab, but not for the calculations. When the report is refreshed, only the months with non-missing values are shown:
This periodic operator parameter is also useful if you want to enable users to select a specific month, for viewing only a subset of the crosstab results.
For a selection prompt, add a Drop-Down list to select a MONYY value and define a filter action from the Drop-Down list to the Crosstab. To prevent selection of a month value with missing calculation values, you will also want to apply a filter to the Drop-Down list as you did for the crosstab, displaying months Jan2010 and after in the list.
Now the user can select a month, with all calculations relative to that month displayed, shown in the examples below:
Note that, at this point, since you’ve added the action from the drop-down list to the crosstab, you actually no longer need the filter on the crosstab itself. In addition, if you remove the crosstab filter, then all of your filters will now be from prompts or actions, so you could use the _IgnoreInteractiveTimeFrameFilters_ parameter on your periodic calculations instead of the _IgnoreTimeFrameFilters_ parameter.
You will also notice that, in release 8.2 of SAS Visual Analytics that the performance of the periodic calculations has been greatly improved, with more of the work done in CAS.
Be sure to check out all of the periodic operators, documented here for SAS Visual Analytics 7.4 and here for SAS Visual Analytics 8.2.
2 Comments
I have last five years of data, and I would like to compare them year over year and month over month using year filters.
Hello, thank you for the article very clear and helpfull !
But I have issue when I want to add a "Total" row in my crosstab : it gives me the good results for Revenue column but with period over period columns it returns nothing. Strange thing : it works perfectly with subtotals...
Do you know a solution ?
Thank you !