Short summary: Unable to control the last period displayed on a time series bar chart if the final period has no data. For example, if the last period I want displayed in the bar chart is December but the YAxis Count() for December is zero, November will be the last bar displayed. This leads to an ambiguous situation where the user reacts in one of the following manners:
Item 3 is the correct explanation but most everyone thinks item 1 or 2 is the explanation.
Visual description:
Doesn't show enough periods (Categorical->Filtered Range)
Shows too many periods (Categorical->All Data)
Long version:
When a Bar or Line chart is using a date or datetime column on the categorical axis, the scale range min/max values on the visualization properties are disabled. It is possible to set the axis mode for the category to "Filtered values", "Filtered Range", or "All values". In the case of dates, the filtered values is typically not appropriate (e.g. if a single month has no data, it is quietly omitted from the sequence so at first glance a user might not realize there are months with zero values. Filtered range is generally the most useful but it will omit periods on the ends of the range that have no data. The "All Values" setting can work OK but you can waste a lot of screen real estate when an entire year is displayed but the current month is January (i.e. 11 blank future periods on the chart's right).
The context where this idea comes up is when charting a historical data set of monthly event counts. In a typical situation, filters may be set such that there is a relatively low number of events and some months may have a dozen events and other months may have zero. This is a non issue if all periods have non-zero y-axis values. I would like to have a method to explicitly set the date range to see every month (even if there are zero events) ranging from MonthA to MonthZ where MonthA and Z. One implementation would be to allow setting a custom expressions for the category axis range (e.g. A dateadd expression specifying the last 12 months ending last month). Currently I can get this behavior if the first and last period have non-zero counts in the Y-Axis quantity and the Category Axis settings are configured as "Categorical->Show Filtered Range" . The problem arises when there is no data in the first or last period. For example, the current date is August 2nd, 2016, I would like my chart to show the category axis July as the last bucket. If there is no data for July, then the most recent period that does have data will be the final bucket displayed.
Known workaround (inconvenient):
You can build a secondary table with a pivot transformation joined to a calendar table to force a zero data point for all the periods with a no data. This works fine but adds too many extra steps and complexity to the analysis to be a reasonable approach... and a chart built off the pivoted data can't be filtered or drilled into dynamically.
This problem also results in a weird line in the begin/end of a cumulative graph, so I also would like a solution for this issue.
I want to support this idea because we struggle with the same issue.
Current version of Spotfire offers 3 options to display the categorical axis:
Show filtered values
Select this option to display values available after current filtering only. This means that those categories that are visible will change with the filtering and that categories currently without any values will be hidden from the visualization.
Show filtered range
Select this option to hide empty categories on both ends of the currently visible range. This means that those categories that are visible will change with the filtering, and that empty categories within the currently visible range will remain visible.
Show all values
Select this option to keep all categories visible even if data for some categories have been filtered out.
This idea suggests a 4th option, between "Show filtered range" and "Show all values".
It should show all categories within the filtered range, WITHOUT hiding empty categories on both ends of the currently visible range.