# 使用备用状态进行对比分析

如果要执行对比分析，您可以使用 Qlik Sense 中的备用状态。备用状态可让您在相同维度上做出不同选择，并在单个可视化中对这些选择项进行比较，或在两个或多个可视化中并列进行比较。

您可以通过两种不同的方式在可视化中使用备用状态：

* 将状态应用到可视化。这会将可视化选择项和状态选择项连接在一起。
* 在度量的集合表达式中使用状态。这对于比较不同状态的度量值非常有用。

[Using alternate state in visualizations to make comparative analysis](https://play.vidyard.com/NJvgT9WcNaVFaZA9Z88A7Z)

## 创建备用状态

您可以在主条目中创建新的备用状态：

1. 在备用状态旁边，单击 the 新建 icon。

2. 提供新状态的名称。有一些命名限制：

   * 请勿使用 $、0 或 1 作为状态名称。
   * 请勿使用以 $ 开头或 $\_ 后跟数字的状态名称，例如 $3。
   * 请勿使用已经用作书签名称的状态名称。

现在，您已经创建新的备用状态，可以使用它来执行对比分析了。通常，您会希望创建另一个新状态来比较两种状态。

## 将备用状态应用于工作表和可视化

您可以将状态应用于可视化或工作表。如果将某个状态应用于工作表，则该工作表上的所有可视化都将继承此状态，除非您将另一个状态应用于特定可视化。当您将状态应用于可视化时，它将在状态中反映做出的选择。您做出的任何选择都将应用于状态并反映在已应用相同状态的其他可视化中。

应用备用状态最简便的方式是将它拖放到工作表或可视化中，然后选择应用状态。

您也可以通过属性面板中的状态设置应用备用状态：

* 对于工作表，可以在备用状态下找到该设置。
* 对于可视化，可以在外观 &gt; 备用状态下找到该设置。

您可以选择：

* 在主条目中定义的任何备用状态。
* &lt;已继承&gt;，在这种情况下使用为工作表定义的状态。
* &lt;默认状态&gt;，它表示未应用任何备用状态的状态。

## 在可视化中使用备用状态

除了将状态应用于可视化，您还可以在度量的集合表达式中使用备用状态。当您要并排比较不同维度选择的度量值时，这样将非常有用。

您可以将备用状态设置为集合表达式中的标识符。如果您要在可视化（例如条形图）中对名为 Group1 的状态使用度量 `Sum(Sales)` ，请使用以下表达式作为度量：

`Sum({Group1}Sales)`

要与名为 Group2 的不同状态进行比较，可以使用表达式 `Sum({Group2}Sales)` 创建另一个度量。

现在，条形图将针对在 Group1 的选择项显示销售额，并与 Group2 的销售额并排显示。

有关集合表达式的更多信息，请参阅[集合分析](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)。

## 获取有关备用状态的选择项信息

您可以在选择项栏中查看不同状态的选择项。

有关更多信息，请参阅[使用选择项探索](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Selections/SelectionsToolbar/work-with-selections.htm)。

您可能还希望在可视化标签或标题中体现备用状态中做出了哪些以及多少选择项等信息。您可以将以下图表函数与 state\_name 参数结合使用，以返回与指定状态名称关联的选择项：

* GetCurrentSelections() 用于返回所有当前选择项。

  [GetCurrentSelections - 图表函数](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FieldFunctions/getcurrentselections.htm)

* GetFieldSelections() 用于返回字段的当前选择项。

  [GetFieldSelections - 图表函数](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FieldFunctions/getfieldselections.htm)

* GetSelectedCount() 用于返回字段中的选定值数量。

  [GetSelectedCount - 图表函数](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FieldFunctions/getselectedcount.htm)

## 以备用状态扩展变量

在展开变量时，您可能指定要使用哪个状态。特定状态下的更改不会影响在另一状态下扩展的变量值。如果您没有指定状态，则会以默认状态展开变量。

示例：

如果您有名为 `MyState` 的状态以及名为 `vMyVar` 的变量：

* `$(vMyVar)` 以默认状态扩展变量。
* `$({MyState} vMyVar)` 以 `MyState` 状态扩展变量。

## 限制

如果您已将可视化的状态设置为 &lt;已继承&gt; 以外的任何其他值，则无法将可视化添加到主条目。

## 对比分析

在此 中，我们希望能够针对销售区域的不同选择比较产品系列的销售额数字。我们希望以单个区域或区域组合的形式选择动态比较的区域。

### 数据集和应用程序

如果您要关注此 ，您需要下载 Qlik Sense Tutorial - Building an App 以获取该数据集。如果您已完成教程，可以使用您创建的应用程序。否则，您需要创建应用程序，添加 Tutorials source 文件夹中的所有六个数据文件，然后使用数据管理器中的自动建议关联它们。

### 创建备用状态

对于此 ，我们需要两个备用状态。在主条目 &gt; 备用状态中：

1. 创建一个名为 Group 1 的新状态。
2. 创建一个名为 Group 2 的新状态。

现在，您已经创建我们在此 中需要的两个备用状态。

### 创建选择项筛选器窗格

执行以下操作：

1. 使用字段区域添加筛选器窗格。
2. 编辑筛选器窗格的标签，使其显示为 =StateName()。这是为了更轻松地把它们区分开，因为在筛选器窗格中不显示状态。StateName() 函数返回应用于该函数的状态。
3. 将状态 Group 1 拖放到筛选器窗格并选择应用状态。
4. 使用字段区域添加另一个筛选器窗格。
5. 编辑第二个筛选器窗格的标签，使其显示为 =StateName()。
6. 将状态 Group 2 拖放到第二个筛选器窗格并选择应用状态。

您现在已经创建了两个筛选器窗格，它们分别用于控制两种状态中每种状态的选择项。当您在 Group 1 筛选器窗格中做出选择时，相同的选择项将应用于状态 Group 1，并反映在连接到该状态的所有可视化中。

### 创建用于分析的条形图

执行以下操作：

1. 使用名称 Group1Sales 创建主条目度量。

   将表达式设置为 `Sum({[Group 1]}[Sales])`。

   此表达式为 Group 1 状态中所有选择项的销售额求和。

   将标签表达式设置为 `'Sales '&GetCurrentSelections(chr(13)&chr(10), '=', ',' ,9,'Group 1')`。

   借助标签表达式，我们能够将当前状态选择项显示为图表中的一个标签，而非默认标签。

2. 使用名称 Group2Sales 创建另一个主条目度量。

   将表达式设置为 `Sum({[Group 2]}[Sales])`。

   将标签表达式设置为 `'Sales '&GetCurrentSelections(chr(13)&chr(10), '=', ',' ,9,'Group 2')`。

3. 将条形图添加到工作表。

4. 将产品系列字段设置为维度。

5. 添加度量 Group1Sales 和 Group2Sales。

您现在已经创建了一个条形图，显示了在筛选器窗格中选择的两组区域的产品系列销售额。当您在筛选器窗格中做出新的选择时，相应的度量值将根据新选择项发生改变。

### 发现

现在，您可以在 Group 1 和 Group 2 中做出选择，然后在条形图中查看选定区域组合的结果。

## 权限

有关创建和删除备用状态所需权限的详细信息，请参阅[使用主条目的权限](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Assets/work-with-master-items.htm#MasterItemsPermissions)。