

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

# 在 Amazon Quick 中使用数据集参数
数据集参数

在 Amazon Quick 中，作者可以在直接查询中使用数据集参数来动态自定义其数据集并将可重复使用的逻辑应用于其数据集。*数据集参数*是在数据集等级创建的参数。它由分析参数通过控件、计算字段、筛选器、操作 URLs、标题和描述消耗。有关分析参数的更多信息，请参阅 [Amazon Quick 中的参数](parameters-in-quicksight.md)。以下列表描述了可使用数据集参数执行的三个操作：
+  **直接查询中的自定义 SQL** – 数据集所有者可以将数据集参数插入直接查询数据集的自定义 SQL 中。在快速分析中将这些参数应用于筛选控件时，用户可以更快、更高效地筛选其自定义数据。
+ **可重复变量** – 可以使用自定义数据集参数在一次操作中修改出现在数据集页面中多个位置的静态值。
+ **将计算字段移至数据集**-快速作者可以在分析中复制带有参数的计算字段，然后将其迁移到数据集级别。这样可以防止分析等级的计算字段被意外修改，并且可以在多个分析之间共享计算字段。

在某些情况下，数据集参数可以提高需要复杂自定义 SQL 的直接查询数据集的筛选条件控件性能，并简化数据集等级的业务逻辑。

**Topics**
+ [

## 数据集参数限制
](#dataset-parameters-limitations)
+ [

# 在 Amazon Quick 中创建数据集参数
](dataset-parameters-SQL.md)
+ [

# 将数据集参数插入自定义 SQL
](dataset-parameters-insert-parameter.md)
+ [

# 将数据集参数添加到计算字段
](dataset-parameters-calculated-fields.md)
+ [

# 将数据集参数添加到筛选条件
](dataset-parameters-dataset-filters.md)
+ [

# 在快速分析中使用数据集参数
](dataset-parameters-analysis.md)
+ [

# 数据集参数的高级使用案例
](dataset-parameters-advanced-options.md)

## 数据集参数限制


本节介绍在 Amazon Quick 中使用数据集参数时可能遇到的已知限制。
+ 控制面板读者安排通过电子邮件发送的报告时，选定的控件不会传播到电子邮件所附报告中包含的数据集参数。而是使用参数的默认值。
+ 无法将数据集参数插入存储在 SPICE 中的数据集自定义 SQL 中。
+ 只能在使用数据集的分析的分析页面上配置动态默认值。您无法在数据集等级配置动态默认值。
+ 映射到数据集参数的分析参数的多值控件不支持**全选**选项。
+ 数据集参数不支持级联控件。
+ 只有数据集使用直接查询时，数据集筛选条件才能使用数据集参数。
+ 在自定义 SQL 查询中，只能使用 128 个数据集参数。

# 在 Amazon Quick 中创建数据集参数
创建数据集参数

使用以下过程开始使用数据集参数。

**创建新的数据集参数**

1. 在快速入门页面中，选择左侧**的数据**，选择要更改的数据集旁边的省略号（三个点），然后选择**编辑**。

1. 在打开的**数据集**页面上，选择左侧的**参数**，然后选择（\$1）图标创建新的数据集参数。

1. 在出现的**创建新的参数**弹出窗口中，在**名称**框中输入参数名称。

1. 在**数据类型**下拉菜单中，选择所需的参数数据类型。支持的数据类型包括：`String`、`Integer`、`Number` 和 `Datetime`。创建参数后将无法更改此选项。

1. 对于**默认值**，输入您希望参数具有的默认值。
**注意**  
将数据集参数映射到分析参数时，可以选择不同的默认值。发生这种情况时，此处配置的默认值将被新的默认值覆盖。

1. 对于**值**，选择您希望参数具有的值类型。**单个值**参数支持单选下拉、文本字段和列表控件。**多个值**参数支持多选下拉控件。创建参数后将无法更改此选项。

1. 完成配置新的参数后，选择**创建**以创建参数。

# 将数据集参数插入自定义 SQL


通过在 SQL 语句中使用 `<<$parameter_name>>` 引用数据集参数，您可以在直接查询模式的数据集自定义 SQL 中插入数据集参数。运行时，控制面板用户可以输入与数据集参数关联的筛选条件控件值。然后，在值传播到 SQL 查询后，他们可以在控制面板视觉对象中看到结果。您可以根据客户在 `where` 子句中的输入使用参数创建基本筛选条件。或者，您可以添加 `case when` 或 `if else` 子句，以根据参数的输入动态更改 SQL 查询的逻辑。

例如，假设您要在自定义 SQL 中添加 `WHERE` 子句，以根据最终用户的区域名称筛选数据。在本例中，您将创建一个名为 `RegionName` 的单个值参数：

```
SELECT *
FROM transactions
WHERE region = <<$RegionName>>
```

您也可以让用户为参数提供多个值：

```
SELECT *
FROM transactions
WHERE region in (<<$RegionNames>>)
```

在以下更复杂的示例中，数据集作者根据可在控制面板筛选条件控件中选择的用户的名字和姓氏引用两个数据集参数两次：

```
SELECT Region, Country, OrderDate, Sales
FROM transactions
WHERE region=
(Case
WHEN <<$UserFIRSTNAME>> In 
    (select firstname from user where region='region1') 
    and <<$UserLASTNAME>> In 
    (select lastname from user where region='region1') 
    THEN 'region1'
WHEN <<$UserFIRSTNAME>> In 
    (select firstname from user where region='region2') 
    and <<$UserLASTNAME>> In 
    (select lastname from user where region='region2') 
    THEN 'region2'
ELSE 'region3'
END)
```

您还可以根据用户输入使用 `SELECT` 子句中的参数在数据集中创建新列：

```
SELECT Region, Country, date, 
    (case 
    WHEN <<$RegionName>>='EU'
    THEN sum(sales) * 0.93   --convert US dollar to euro
    WHEN <<$RegionName>>='CAN'
    THEN sum(sales) * 0.78   --convert US dollar to Canadian Dollar
    ELSE sum(sales) -- US dollar
    END
    ) as "Sales"
FROM transactions
WHERE region = <<$RegionName>>
```

要创建自定义 SQL 查询或在添加数据集参数之前编辑现有查询，请参阅 [使用 SQL 自定义数据](adding-a-SQL-query.md)。

使用数据集参数应用自定义 SQL 时，`<<$parameter_name>>` 将用作占位符值。当用户从控件中选择一个参数值时，Quick 会将占位符替换为用户在仪表板上选择的值。

在以下示例中，用户输入了新的自定义 SQL 查询，该查询按状态筛选数据：

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

参数的默认值应用于 SQL 查询，结果将显示在**预览窗格**中。

# 将数据集参数添加到计算字段


您也可以使用格式 `${parameter_name}` 将数据集参数添加到计算字段表达式中。

在创建计算时，您可以从**参数**列表下面的参数列表中选择现有参数。无法创建包含多值参数的计算字段。

有关添加计算字段的更多信息，请参阅 [在 Amazon Quick 中使用带有参数的计算字段](parameters-calculated-fields.md)。

# 将数据集参数添加到筛选条件


对于直接查询模式下的数据集，数据集作者可以在筛选条件中使用数据集参数，无需自定义 SQL。如果数据集在 SPICE 中，则无法将数据集参数添加到筛选条件中。

**将数据集参数添加到筛选条件**

1. 打开要为其创建筛选条件的数据集的数据集页面。选择左侧的**筛选条件**，然后选择**添加筛选条件**。

1. 输入您想要的筛选条件名称，然后在下拉菜单中选择要筛选的字段。

1. 创建新筛选条件后，在**筛选条件**窗格中导航到该筛选条件，选择筛选条件旁边的省略号（三个点），然后选择**编辑**。

1. 对于**筛选条件类型**，选择**自定义筛选条件**。

1. 对于**筛选条件**，选择所需的条件。

1. 选择**使用参数**框并选择希望筛选条件使用的数据集参数。

1. 完成更改后，选择**应用**。

# 在快速分析中使用数据集参数


创建数据集参数后，在将数据集添加到分析后，将该数据集参数映射到新的或现有的分析参数。将数据集参数映射到分析参数后，可以将它们与筛选条件、控件和任何其他分析参数功能一起使用。

您可以在使用参数所属数据集的分析的**参数**窗格中管理数据集参数。在**参数**窗格的**数据集参数**部分，您可以选择仅查看未映射的数据集参数（默认）。或者，您可以通过从**查看**下拉菜单中选择**全部**来选择查看所有已映射和未映射的数据集参数。

## 在新的 “快速分析” 中映射数据集参数


使用包含参数的数据集创建新分析时，需要先将数据集参数映射到分析，然后才能使用它们。向分析中添加带参数的数据集时，也是如此。您可以在分析的**参数**窗格中查看分析中所有未映射的参数。或者，在创建分析或添加数据集时，在页面右上角显示的通知消息中选择**查看**。

**将数据集参数映射到分析参数**

1. 打开 [Quick 控制台](https://quicksight.aws.amazon.com/)。

1. 选择要更改的分析。

1. 选择**参数**图标以打开**参数**窗格。

1. 选择要映射的数据集参数旁边的省略号（三个点），选择**映射参数**，然后选择要将数据集参数映射到的分析参数。

   如果您的分析没有任何分析参数，则可以选择**映射参数** 和**新建**来创建在创建时自动映射到数据集参数的分析参数。

   1. 在出现的**创建新的参数**弹出窗口中，对于**名称**，为新分析参数输入名称。

   1. （可选）对于**静态默认值**，输入您希望参数具有的静态默认值。

   1. （可选）选择**设置动态默认值**，为新参数设置动态默认值。

   1. 在**已映射的数据集参数**表中，您将看到即将映射到新分析参数的数据集参数。您可以选择**添加数据集参数**下拉菜单，然后选择要映射的参数，向此分析参数添加其他数据集参数。您可以选择要删除的数据集参数旁边的**删除**按钮来取消映射数据集参数。

   有关创建分析参数的更多信息，请参阅 [在 Amazon Quick 中设置参数](parameters-set-up.md)。

将数据集参数映射到分析参数时，无论该参数在分析中用于何处，分析参数都代表数据集参数。

您也可以在**编辑参数**窗口中将数据集参数映射和取消映射到分析参数。要打开**编辑参数**窗口，导航到**参数**窗格，选择要更改的分析参数旁边的省略号（三个点），然后选择**编辑参数**。您可以选择**添加数据集参数**下拉菜单，然后选择要映射的参数，向此分析参数添加其他数据集参数。您可以选择要删除的数据集参数旁边的**删除**按钮来取消映射数据集参数。您也可以选择**全部删除**来删除所有已映射的数据集参数。完成更改后，选择**更新**。

删除分析参数时，将从分析中取消映射所有数据集参数，并在**参数**窗格的**未映射的**部分中显示。一次只能将一个数据集参数映射到一个分析参数。要将数据集参数映射到不同的分析参数，请取消映射该数据集参数，然后将其映射到新的分析参数。

## 向已映射的分析参数添加筛选条件控件


在 Quick 中将数据集参数映射到分析参数后，您可以为筛选器、操作、计算字段、标题、描述和创建筛选控件 URLs。

**将控件添加到已映射的参数**

1. 在分析页面的**参数**窗格中，选择所需已映射的分析参数旁边的省略号（三个点），然后选择**添加控件**。

1. 在出现的**添加控件**窗口中，输入所需**名称**，然后选择您想要的控件**样式**。对于单个值控件，请在 `Dropdown`、`List` 和 `Text field` 之间选择。对于多值控件，请选择 `Dropdown`。

1. 选择**添加**来创建控件。

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

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

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


使用插入到数据集自定义 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. 创建新的筛选条件控件或编辑现有的筛选条件控件，然后选择**隐藏全选**，以隐藏多值控件中显示的已禁用**全选**选项。

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