> ## 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.

# 🧮计算度量

故事仪表板中的计算可以让你不需要修改语义模型的情况下创建只针对本故事使用的计算, 包括以下几种计算类型:

* [1. 条件聚合 (Conditional Aggregation)](#1-条件聚合-conditional-aggregation)
* [2. 受限度量 (Restricted Measure)](#2-受限度量-restricted-measure)
  * [常量选择](#常量选择)
  * [限定条件使用参数](#限定条件使用参数)
* [3. 计算公式 (Calculated Measure)](#3-计算公式-calculated-measure)
* [4. 度量控制 (Measure Control)](#4-度量控制-measure-control)
* [5. 差值度量 (Difference From)](#5-差值度量-difference-from)
* [管理计算度量和参数](#管理计算度量和参数)

操作步骤为, 在分析图形组件(或其他能使用度量的组件)的设置界面里添加度量, 点击此空白度量在选择列表中点击"创建计算", 在弹出的窗口中可以创建下列计算类型的成员:

## 1. 条件聚合 (Conditional Aggregation)

**条件聚合** 可以根据数据中的特定条件和聚合函数来计算度量，聚合函数可以选择以下函数之一:

| 聚合函数                          |            说明           |
| :---------------------------- | :---------------------: |
| Sum                           |           累加汇总          |
| Count                         |       对选中的维度成员进行计数      |
| Min                           |     选中维度成员中对于度量计算最小值    |
| Max                           |     选中维度成员中对于度量计算最大值    |
| Average                       |     选中维度成员中对于度量计算平均值    |
| Standard Deviation            |    选中维度成员中对于度量计算标准偏差    |
| Population Standard Deviation |   选中维度成员中对于度量计算总体标准偏差   |
| Median                        |     选中维度成员中对于度量计算中位数    |
| Top Percent                   | 选中维度成员中对于度量计算前多少比例部分的汇总 |
| Top Count                     |   选中维度成员中对于度量计算前多少个的汇总  |
| Top Sum                       | 选中维度成员中对于度量计算前部汇总值最少为多少 |

如下图所示, 计算的是所有产品中利润前 3 的产品利润汇总值.

<img src="https://mintcdn.com/xpertai/8ELAM-RyAqJboiJw/public/img/story/Calculate-metrics/aggregation-measure.png?fit=max&auto=format&n=8ELAM-RyAqJboiJw&q=85&s=0f66dd30938c7c26a1bee604ee16e120" alt="aggregation-measure.png" width="1490" height="1274" data-path="public/img/story/Calculate-metrics/aggregation-measure.png" />

**使用条件聚合**: 在运行时聚合函数计算要在选择的条件下进行(选取或排除).

## 2. 受限度量 (Restricted Measure)

**受限度量** (Restricted Measure) 指的是在某些限制条件下的度量值。这些限制条件可能包括限制变量的范围、限制变量之间的关系或限制变量的值。例如，对于一个多维数据集，可能只考虑其中一个维度的成员在特定范围内的数据点，或考虑两个维度成员之间具有特定关系的数据点。这种限制可以帮助研究人员更好地理解数据，并可能提高分析的统计显著性。

创建受限度量实在计算编辑器中选择类型为 "**受限度量**":

<img src="https://mintcdn.com/xpertai/8ELAM-RyAqJboiJw/public/img/story/Calculate-metrics/restricted-measure.png?fit=max&auto=format&n=8ELAM-RyAqJboiJw&q=85&s=c2b1f72fe16f6f955ef387174a8c12f3" alt="restricted-measure.png" width="1452" height="1052" data-path="public/img/story/Calculate-metrics/restricted-measure.png" />

1. 选择一个需要统计的 **度量** 字段.
2. 然后添加一个或多个限定条件的 **维度**, 并选择相应的成员或者 [为其创建参数](#限定条件使用参数).
3. **启用常量选择**: 开启后限定条件不会被查询的运行时上下文中的条件所覆盖.

<Info>
  **指标** (Indicator) 是一种特殊的受限度量
</Info>

### 常量选择

**常量选择** (Constant Selection) 是指受限度量的限定条件不会被所在的上下文环境中的过滤器覆盖的恒定条件下的度量值.
反之如果没有设置为恒定选择则受限度量的限定条件会被其所在上下文中的过滤器覆盖.

### 限定条件使用参数

限定条件除了可以选择固定的维度成员外, 还可以在限定条件维度上使用 **参数** 来让用户自行选择维度成员去限制度量值.

参见 [受限度量使用参数](../parameter/#受限度量使用参数).

## 3. 计算公式 (Calculated Measure)

类型为"计算公式"时, 创建计算度量, 指使用自定义公式进行计算汇总值的度量.
你可以在计算度量界面编写 `MDX` 语法的公式进行复杂场景的度量计算.

点击编辑器工具栏右侧的打开菜单按钮, 可以展开右侧各成员栏:

1. 维度成员: 可以选择维度和层次结构后看到所有的维度成员, 将维度成员拖至编辑器, 其唯一编码便会被插入到编辑器中;
2. 计算成员: 列出了现在所有的计算成员, 将其托至编辑器可以将已有计算成员度量插入到公式中;
3. 参数: 在参数区域可以创建新的参数, 或者将已有参数拖至编辑器插入到公式中;

举例, 如下面计算公式, 其中 `[@Sales_MA_Windows]` 是参数 `Sales_MA_Windows` 的引用方式, `[Measures].[profit]` 是度量 `profit` 的引用方式 (计算度量和普通形式一样):

```sql theme={null}
AVG(LastPeriods([@Sales_MA_Windows], [Time].CurrentMember),[Measures].[profit])
```

<img src="https://mintcdn.com/xpertai/8ELAM-RyAqJboiJw/public/img/story/Calculate-metrics/calculated-measure.png?fit=max&auto=format&n=8ELAM-RyAqJboiJw&q=85&s=6c5e2bef74d3c799eb25d1d5888e2422" alt="计算度量" width="2410" height="1262" data-path="public/img/story/Calculate-metrics/calculated-measure.png" />

关于在计算公式中使用参数请参考 [计算公式使用参数](../parameter/#计算公式使用参数).

## 4. 度量控制 (Measure Control)

**度量控制**: 是指以指向其他度量为目的的度量字段, 可以让用户在运行时动态选择需要查看的度量. 度量控制创建过程: 创建计算度量, 选择类型为 **度量控制**, 选择展示行为并选中需要选择的度量列表. 如下图所示

<img src="https://mintcdn.com/xpertai/8ELAM-RyAqJboiJw/public/img/story/Calculate-metrics/measure-control.png?fit=max&auto=format&n=8ELAM-RyAqJboiJw&q=85&s=d2e1984183f4e0c3a1dbfb2347815255" alt="度量控制" width="1417" height="1420" data-path="public/img/story/Calculate-metrics/measure-control.png" />

应用后度量选择创建成功, 想要实际选择度量还要为此度量创建相应的输入控制器微件, 如下图所示, 详细过程可以参见 [输入控制器微件](../../widgets/input-control#度量选择器)

<img src="https://mintcdn.com/xpertai/8ELAM-RyAqJboiJw/public/img/story/Calculate-metrics/measures-control-widget.png?fit=max&auto=format&n=8ELAM-RyAqJboiJw&q=85&s=576a4369c009d726c05c1b65c929e71f" alt="measures-control-widget.png" width="750" height="257" data-path="public/img/story/Calculate-metrics/measures-control-widget.png" />

## 5. 差值度量 (Difference From)

**差值度量** 是维度的一个成员与另一个成员的差异的计算类型, 常用来计算差值或者比率等类型, 如同比环比. 差异不仅可以是时间维度的, 还可以是如版本等其他维度上的.

<img src="https://mintcdn.com/xpertai/8ELAM-RyAqJboiJw/public/img/story/Calculate-metrics/calculation-variance.png?fit=max&auto=format&n=8ELAM-RyAqJboiJw&q=85&s=7c8de552ecdd1d6a36e283f073643d88" alt="差值度量" width="3024" height="1714" data-path="public/img/story/Calculate-metrics/calculation-variance.png" />

基于时间的比较较常见, 如计算同比环比.

1. 选择需要比较的度量字段, 这里可以选择任意类型的度量, 如普通度量, 计算度量, 选择度量, 指标;
2. 基于时间的比较需要选择一个时间维度来作为基准维度;
3. 对于差异的比较我们以 `A - B` 作为说明的公式, 为 A 设置条件: 可以是当前成员, 还可以选择某个具体的维度 (这个维度是基准维度) 成员;
4. 为 B 设置条件:
   1. 当前成员;
   2. 当前成员之前的第 N 个成员, 然后为 N 设置个数字, 如 N 为 1 时表示环比差异;
   3. 当前成员之后的第 N 个成员, 然后为 N 设置个数字;
   4. 平行成员, 指当前成员的基于基准维度的层级的之前第 N 个成员下对应的平行成员, 那么就 **需要为基准维度选择一个`层级`**, 然后设置 N 为某个数字: 如当基准维度层级为年级别, N 为 1 时表示去年同期;
   5. 祖先成员, 指当前成员在基准维度的指定层级上的祖先成员, 例如可以计算当前月份在全年总体中的占比;
5. 计算为百分比, 是将差异计算为百分比, 需要选择除以 A 还是 B, 公式表示为 `(A - B) / A` 或者 `(A - B) / B`;
6. 直接相除, 表示直接使用 A 除以 B, 公式表示为 `A / B`;
7. 绝对化基值, 指对比率的分母取绝对值, 公式表示为 `(A - B) / abs(A)` 或者 `(A - B) / abs(B)`;

## 管理计算度量和参数

需要编辑或删除故事中已创建的计算度量和参数时，可以从故事工具栏菜单中选择 `首选项` -> `计算成员` 打开计算成员和参数的维护界面, 如下图所示:

<img src="https://mintcdn.com/xpertai/8ELAM-RyAqJboiJw/public/img/story/Calculate-metrics/manage-calculations.png?fit=max&auto=format&n=8ELAM-RyAqJboiJw&q=85&s=5d3f9683ecfd150cb486344d68ccd950" alt="管理故事中的计算度量和参数" width="3024" height="1714" data-path="public/img/story/Calculate-metrics/manage-calculations.png" />

可以为多维数据集编辑、删除和新增计算成员或参数。

还可以使用 AI 智能助理 [计算度量命令 `/calculation`](../copilot/#计算度量命令) 来创建和修改计算度量。
