时间层级的其他操作
使用时间层级时,所需时间部分的显示方式通常不适用于其他类型的层级。因此,可以通过一些额外的操作来帮助您处理时间数据。
补偿缺少值
有时您可能使用其中缺失某些类别值的数据。如果图表利用 Date、Time 或 DateTime 列,您要在聚合表格中显示数据,则缺失数据可能对您的计算产生奇怪的影响。
例如,以下是几年中的销售额总和,其中缺少三个季度的数据:
在此示例中,您可能希望缺失季度的条形与最后一个可用条形的大小相同,而非完全缺失。为此,您可以使用图表属性中的“补偿缺少值”。此功能在条形图、折线图、组合图(仅适用于安装的客户端)、瀑布图和 KPI 图中提供。它引入了漏洞补充机制,可在其中为缺少的行临时插入空值。这样,在累计总数中,缺失数据的条形可显示与提供的最后一个条形相同的值:
在 Web 客户端中转到图表属性,在条形图或瀑布图中单击“轴”,然后在“类别轴”下选择“补偿缺少值”。在折线图中,该功能位于 下;在 KPI 图中,该功能位于 下(对于特定 KPI)。
在安装的客户端中,可以通过“外观”页面访问“补偿缺少值”。
数据值通常可以是有效值(非空和非错误)、无效值(错误,例如与其他值具有不同数据类型的值)或空值(其中包含行标识符,但值列中没有任何值)。也可能是完全缺失的类别。对于大多数类型的数据,这可能难以处理,但却可以填充时间序列中缺少的数据点,因为始终可以计算出应该具备哪些时间点。Spotfire 可以临时添加缺少的行并用空值进行填充,从而使这些行可用于计算。
使用“补偿缺少值”时,将确定时间列中的最大值和最小值。然后根据时间层级级别添加所有缺少步骤。
只要使用的日期/时间列相同,不同轴上的多个日期/时间部分就可在图表中结合。
类别(仅限已安装的客户端)
在图表中使用类别时间值且您在已安装的客户端中工作时,可以使用轴上的“类别”设置控制要显示的内容。您可以选择“显示筛选的值”设置以完全隐藏其中无可用数据(由于筛选或缺失数据)的类别:
在此主题的第一个图像中,有一个具有缺少值的图表示例,其中未补偿缺少值,并且已选择“显示筛选的范围”设置。此选项只隐藏范围每一边的空类别,而对中间的不起作用。还有一个“显示所有值”的选项,其中每一边当前已筛选出的值仍可见。
在已安装的客户端中,您可以从“高级设置”对话框(从感兴趣的轴的图表属性访问)或通过右键单击图表轴并选择“类别”和弹出菜单中的选项之一来更改设置。
要使用连续时间轴,请改用缩放滑块。
混合层级
通过将类别视为组的一部分,包含日期和/或时间部分(来自同一 DateTime 列)的混合层级和其他类别受层级的支持。您可以使用自定义表达式来指定要显示的组合。在已安装的客户端中,您还可以指定要在“高级设置”对话框中显示的组合。
最大添加行数
如果日期/时间列的范围明显大于步长,补偿缺少值时可能需要大量的行。例如,当步长为毫秒并且日期跨越数年时存在这种情况。出于性能考虑,可定义一个属性限制,从而确定可插入的最大行数。在已安装的客户端中,可以在MaxMissingTimeParts 属性。管理员还可以通过转到 ,然后在“DataOptimization”
下单击“DataOptimizationPreferences”
并编辑 MaxMissingTimeParts
偏好来更改此偏好。
请注意,可添加的最大行数的限制基于跨度的大小,而不是基于实际缺少值。这意味着如果设置的偏好值太低,即使当前设置中缺少的时间部分没有那么多,您也可能会遇到此限制。如果遇到消息“无法补偿缺少值。MaxMissingTimeParts 的文档属性值已超出。”,您可能要增加属性值,但解决方案也可能是取消选中“补偿缺少值”复选框,或者只需尝试使用层级滑块(如果有一个可用)来降低时间序列轴上的精细度。
标记临时添加的行
标记基于临时添加行的图表项目时,该图表项目看上去是图表中的常规标记。但是,由于未标记任何真实行,因此该标记不会被传播到任何其他图表或按需查看详细信息。
BinByDateTime
时间层级实际上使用 BinByDateTime 函数构建。此函数使用以下三个参数:
- Date 列、Time 列或 DateTime 列
- 作为用点分隔的日期部分字符串的层级定义(例如,“Year.Month”)
- 修剪级别(意味着在哪个级别开始层级滑块位置)
例如,BinByDateTime([Column],"Year.Quarter.Month.Day",2)
对于 Date 或 DateTime 列,您可以选择使用 ISOYear 和 ISOWeek 日期部分而不是常规的年和周日期部分来按 ISO 8601 标准显示层级。根据 ISO 8601 标准,星期一始终是一周的第一天,一年的第一周是从新年算起至少包含 4 天的那一周。一个 ISO 周数年包含 52 或 53 个整周。
通过定义类似于 BinByDateTime([Column],"ISOYear.ISOWeek",1)
的 BinByDateTime 表达式来使用 ISO 周层级,或者直接从轴选择 ISO Year >> Week 层级,如从“时间系列”列定义时间层级所示。
Year
、Week
和 YearAndWeek
方法取决于区域设置,对于跨越年份边界的值可能会产生奇怪的结果(例如,对于某些天您可能会看到第 53 周,而本应是第 1 周)。要获得可预测的结果,请改用 BinByDateTime([Column],"ISOYear.ISOWeek",1)
或单独的 ISOYear
/ISOWeek
方法。
BinByTimeSpan
同样,时间跨度层级使用 BinByTimeSpan 函数构建。合并的时间跨度可能很有用,例如,当在动态上下文中查看中间时间组或当分析日志数据时。此函数使用以下三个参数:
- TimeSpan 列
- 作为用点分隔的时间跨度部分字符串的层级定义(例如,“Hours.Minutes”)
- 修剪级别(意味着在哪个级别开始层级滑块位置)
例如,BinByTimeSpan([Column],"Days.Hours.Minutes.Seconds",2)