> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xpertai.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# SAP BW 日历维度

## 日历维度介绍

在多维数据集（Cube）中，[日历维度](../../models/mdx-modeling/calendar-dimension)（Calendar Dimension）是一个关键的维度，用于表示和组织与时间相关的数据。日历维度提供了一个结构化的时间框架，使得用户能够按时间段进行数据的切片和分析。典型的日历维度包括年、季度、月、周、日等层级，以及其他相关的时间属性，如财年、财务季度和工作日等。

日历维度在数据分析和商业智能中具有重要作用，因为大多数业务数据都涉及时间因素。通过使用日历维度，用户可以轻松地进行以下操作：

1. **时间序列分析**：分析不同时间段内的趋势和模式，例如月度销售额的变化、季度利润的增长等。
2. **同比和环比分析**：比较不同时间段的数据，例如今年与去年同一时期的业绩对比（同比），本月与上月的业绩对比（环比）。
3. **时间聚合**：将细粒度的数据聚合到更高层级，例如将每日数据聚合成月度数据或年度数据，以便于宏观层面的分析。
4. **时间滚动分析**：分析滚动时间窗口的数据，例如最近12个月的销售趋势，移动平均值等。
5. **指标走势**：自动化分析指标的趋势和时间累计值。

日历维度在实际应用中帮助企业更好地理解其业务的时间动态，支持决策者基于时间维度做出更加精准的商业决策。例如，在销售分析中，企业可以通过日历维度识别销售的季节性波动，制定相应的市场策略；在财务分析中，企业可以追踪季度和年度的财务表现，评估财务目标的达成情况。

## BW 系统中的日历维度

### 步骤 1：检查现有的时间特征 InfoObject

首先，检查系统中是否已经存在常用的时间特征 InfoObject，如 `0CALDAY`、`0CALMONTH` 等。这些特征通常已经预定义并包含在系统中。

* `0CALDAY`：表示具体的日期。
* `0CALMONTH`：表示具体的月份。

在 BW 系统中，时间特征 `0CALDAY` 引用的是 InfoObject `0DATE`。

### 步骤 2：创建时间特征 InfoObject（如果不存在）

如果系统中不存在所需的时间特征 InfoObject，则需要手动创建。可以参考现有的 InfoObject `0DATE` 来创建这些时间特征。以下是创建 `0CALDAY` 的步骤：

1. **打开 SAP BW Modeling Tools**（基于 Eclipse）并连接到 BW 系统。

2. **创建 InfoObject**：
   * 右键点击相应的 InfoObject Catalog，选择 `New` -> `InfoObject`。
   * 输入名称（如 `ZCALDAY`）和描述。
   * 选择类型为 `Characteristic`。
   * 设置数据类型为 `DATS`（日期格式），长度为 `8`。
   * 勾选 `Time Characteristics`。

3. **定义属性**：
   * 在 `Attributes` 选项卡中，添加必要的时间属性，如 `0CALMONTH`、`0CALYEAR`。

4. **激活 InfoObject**：检查所有设置，确保无误后，点击 `Save` 并 `Activate`。

### 步骤 3：检查时间特征的数据表

创建完 InfoObject 后，检查这些时间特征的数据表中是否已有数据：

* **SID 表（S 表）**：存储 InfoObject 的 Surrogate ID 和键值对。
* **属性表（P 表）**：存储主数据记录及其属性值。
* **层次结构属性表（X 表）**：存储层次结构相关的属性数据。

### 步骤 4：生成时间数据

如果 `0CALDAY` 等时间特征的数据表中没有数据，可以使用事务代码 `RSRHIERARCHYVIRT` 来生成一定期间的时间数据。

1. **进入事务代码 `RSRHIERARCHYVIRT`**。
2. **定义时间间隔**：设置需要生成数据的时间间隔。
3. **生成数据**：执行生成操作，以填充 SID 表、P 表和 X 表中的数据。

参考 [Time Characteristics: 0CALDAY](https://help.sap.com/docs/SUPPORT_CONTENT/bwplaolap/3361384637.html) 以获取更多详细信息。

### 步骤 5：将时间特征分配给 InfoProviders

最后，将创建好的时间特征 InfoObject 分配给相应的 InfoProvider，如 DataStore Object（DSO）或 InfoCube。

1. **在 BW Modeling Tools 中**，选择需要分配时间特征的 InfoProvider。

2. **编辑 InfoProvider 结构**：
   * 在 InfoProvider 结构中，添加时间特征 InfoObject（如 `0CALDAY`、`0CALMONTH`）。
   * 设置时间特征为关键字段（Key Fields）或数据字段（Data Fields），根据需求而定。

3. **激活 InfoProvider**：确保所有配置无误后，点击 `Save` 并 `Activate`。

## 语义模型增强

要在 Xpert 分析云系统中使用到日历维度的更多功能，需要在语义模型对已有的 BW Cube 的日历维度进行语义增强。
添加 BW Cube 到语义模型实体中，将源字段中的日历维度拖至维度区域内，分别对日历维度和其层级属性进行设置，启用其语义属性，并设置语义类型为相应的类型，如
年层级设置为 `Caldendar Year` 类型并设置相应的格式化字符串。
这里的格式化字符串需要根据模型维度中成员键的实际格式来设置，如 `[yyyy].['Q'Q].[M].[yyyy-MM-dd]`

语义增强过的模型便可以在 Xpert 分析云系统中自由使用了，涉及到日历维度的场景有以下组件（不限于）：

* [计算成员的差值计算](../../stories/calculations/#5-差值度量-difference-from)
* [指标注册时的日历维度](../../indicators/register#注册指标)
* [故事微件的过滤器栏](../../widgets/filter-bar/calendar-select/)
* [故事微件的输入控制器](../../widgets/input-control/calendar/)

## 总结

通过以上步骤，您可以在 SAP BW 系统中创建和配置日历维度，并将其分配给 InfoCube 或其他 InfoProviders。这一过程确保时间特征能够被正确地应用于数据模型中，为进一步的时间分析和报告提供支持。日历维度在实际应用中帮助企业更好地理解其业务的时间动态，支持基于时间维度的精准商业决策。
