

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 数据集参数的高级使用案例
高级使用案例

本节介绍使用数据集参数和下拉控件的更多高级选项和使用案例。使用以下演练创建带数据集参数的动态下拉值。

## 使用带数据集参数的多值控件


使用插入到数据集自定义 SQL 中的数据集参数时，数据集参数通常按特定列中的值筛选数据。如果您创建下拉控件并将参数指定为值，则下拉菜单仅显示参数筛选的值。以下过程说明如何创建映射到数据集参数并显示所有未筛选值的控件。

**在下拉控件中填充所有分配的值**

1. 在 SPICE 或直接查询中创建新的单列数据集，其中包含原始数据集中的所有唯一值。例如，假设您的原始数据集使用以下自定义 SQL：

   ```
   select * from all_flights
           where origin_state_abr = <<$State>>
   ```

   要创建具有所有唯一原始状态的单列表，请将以下自定义 SQL 应用于新数据集：

   ```
   SELECT distinct origin_state_abr FROM all_flights
           order by origin_state_abr asc
   ```

   SQL 表达式按字母顺序返回所有唯一状态。新数据集没有任何数据集参数。

1. 输入新数据集的**名称**，然后保存并发布该数据集。在我们的示例中，新数据集称为 `State Codes`。

1. 打开包含原始数据集的分析，然后将新数据集添加到分析。有关将数据集添加到现有分析的信息，请参阅 [向分析中添加数据集](adding-a-data-set-to-an-analysis.md)。

1. 导航至**控件**窗格并找到要编辑的下拉控件。选择控件旁边的省略号（三个点），然后选择**编辑**。

1. 在左侧显示的**格式控件**中，选择**值**部分中的**链接到数据集字段**。

1. 在显示的**数据集**下拉菜单中，选择创建的新数据集。在我们的示例中，选择了 `State Codes` 数据集。

1. 在出现的**字段**下拉菜单中，选择相应的字段。在我们的示例中，选择了 `origin_state_abr` 字段。

将控件链接到新数据集后，所有唯一值都会出现在控件的下拉菜单中。这些值包括数据集参数筛选掉的值。

## 使用带“全选”选项的控件


默认情况下，一个或多个数据集参数映射到分析参数并添加到控件时，`Select all` 选项不可用。以下过程显示了使用与上一节相同的示例场景的解决方法。

**注意**  
此演练适用于小到足以在直接查询中加载的数据集。如果您的数据集很大，并且想要使用 `Select All` 选项，建议您将数据集加载到 SPICE 中。但是，如果您想将 `Select All` 选项与数据集参数一起使用，此演练将介绍一种实现方法。

首先，假设您有一个带自定义 SQL 的直接查询数据集，其中包含名为 `States` 的多值参数：

```
select * from all_flights
where origin_state_abr in (<<$States>>)
```

**在使用数据集参数的控件中使用“全选”选项**

1. 在分析的**参数**窗格中，找到要使用的数据集参数，然后从参数旁边的省略号（三个点）中选择**编辑**。

1. 在出现的**编辑参数**窗口中，在**多个静态默认值**部分中输入新的默认值。在我们的示例中，默认值为 ` All States`。请注意，该示例使用前导空格字符，因此默认值显示为控件中的第一项。

1. 选择**更新**以更新参数。

1. 导航到包含您在中使用的数据集参数的数据集 analysis-by-analysis。编辑数据集的自定义 SQL，以包含新的多个静态默认值的默认使用案例。使用 ` All States` 示例时，SQL 表达式如下所示：

   ```
   select * from public.all_flights
   where
       ' All States' in (<<$States>>) or
       origin_state_abr in (<<$States>>)
   ```

   如果用户在控件中选择 ` All States`，则新的 SQL 表达式将返回所有唯一记录。如果用户从控件中选择不同的值，则查询将返回数据集参数筛选的值。

### 使用带“全选”和“多值”选项的控件


您可以将前面的 `Select all` 过程与前面讨论的多值控件方法结合使用，创建除用户可以选择的多个值之外还包含 `Select all` 值的下拉控件。此演练假设您已经按照前面的步骤进行操作，知道如何将数据集参数映射到分析参数，并且可以在分析中创建控件。有关映射分析参数的更多信息，请参阅 [在新的 “快速分析” 中映射数据集参数](dataset-parameters-analysis.md#dataset-parameters-map-to-analysis)。有关在使用数据集参数的分析中创建控件的更多信息，请参阅 [向已映射的分析参数添加筛选条件控件](dataset-parameters-analysis.md#dataset-parameters-analysis-filter-control)。

**使用“全选”选项和已映射的数据集参数将多个值添加到控件**

1. 使用 `Select all` 自定义 SQL 表达式打开包含原始数据集的分析，以及包含原始数据集中已有筛选列的所有可能值的第二个数据集。

1. 导航至之前创建的辅助数据集以返回筛选列的所有值。添加自定义 SQL 表达式，将之前配置的 `Select all` 选项添加到查询中。以下示例将 ` All States` 记录添加到数据集返回值列表的前面：

   ```
   (Select ' All States' as origin_state_abr)
       Union All
       (SELECT distinct origin_state_abr FROM all_flights
       order by origin_state_abr asc)
   ```

1. 返回数据集所属的分析，并将您正在使用的数据集参数映射到您在前面过程的步骤 3 中创建的分析参数。分析参数和数据集参数可以使用相同的名称。在我们的示例中，分析参数称为 `States`。

1. 创建新的筛选条件控件或编辑现有的筛选条件控件，然后选择**隐藏全选**，以隐藏多值控件中显示的已禁用**全选**选项。

创建控件后，用户可以使用同一个控件来选择数据集中筛选列的全部或多个值。