

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

# 在 Amazon Quick 中创建参数默认值
参数默认值

通过本节可详细了解可用的参数默认值的类型以及如何设置各个默认值。

每个字段都可以有一个参数和一个与之关联的控件。如果有人查看控制面板或电子邮件报告，任何配置了静态默认值的工作表控件都会使用静态默认值。默认值可以更改数据的筛选方式、自定义操作的行为方式以及动态工作表标题中显示的文本内容。电子邮件报告还支持动态默认值。

最简单的默认值是静态（不变）默认值，会向所有人显示相同的值。作为控制面板的设计者，您可以选择默认值。使用控制面板的人无法对其进行更改。不过，此人可以从控件中选择任何值。设置默认值并不能改变这一点。要限制人员可以选择的值，请考虑使用行级别安全性。有关更多信息，请参阅 [使用采用基于用户的规则的行级别安全性限制对数据集的访问使用基于用户的规则](restrict-access-to-a-data-set-using-row-level-security.md)。

**创建或编辑适用于所有人的控制面板视图的静态默认值**

1. 选择要编辑的参数旁边的上下文菜单 (`v`)，或通过执行 [在 Amazon Quick 中设置参数](parameters-set-up.md) 中的步骤创建新参数。

1. 为**静态默认值**输入一个值来设置静态默认值。

要根据正在查看控制面板之人显示不同的默认值，请创建动态默认参数（DDP）。使用动态默认值需要做一些准备工作，以便将人员映射到分配给他们的默认值。首先，您需要创建数据库查询或数据文件，其中包含要显示的人员、字段和默认值的有关信息。您将此类信息添加到数据集中，然后将该数据集添加到分析中。接下来，您可以找到可用于收集信息、创建数据集以及向参数添加动态默认值的过程。

创建动态默认值的数据集时，请遵循以下指南：
+ 建议您使用单个数据集来包含用户或用户组的逻辑分组的所有动态默认定义。如果可以，请将其保存在单个表或文件中。
+ 我们还建议数据集中的字段名称应与分析中的字段名称极为匹配。并非所有数据集字段都需要成为分析的一部分，例如在多个控制面板中使用相同的数据集作为默认数据集。字段可以按任何顺序排列。
+ 不建议您将用户名和组名称合并到同一列甚至同一数据集中。这种配置需要更多的维护和问题排查工作。
+ 如果您使用逗号分隔的文件来创建数据集，请确保删除文件中值之间的所有空格。以下示例演示了正确的逗号分隔值（CSV）格式。用单引号或双引号将包含非字母数字字符（如空格、撇号）的文本（字符串）括起来。您可以用引号将日期或时间字段括起来，但这不是必要操作。例如，如果数字包含特殊字符，则可以用引号将数字字段括起来，如下所示。

  ```
  "Value includes spaces","Field contains ' other characters",12345.6789,"20200808"
  ValueWithoutSpaces,"1000,67","Value 3",2020-AUG-08
  ```
+ 创建数据集后，请务必仔细检查 Quick 为字段选择的数据类型。

在开始之前，您需要即将拥有动态默认值人员的用户名或组名列表。要生成用户或组列表，您可以使用 Amazon CLI 来获取信息。要运行 CLI 命令，请确保您已经安装并配置 Amazon CLI 。有关更多信息，请参阅《Amazon CLI 用户指南》**中的[安装 Amazon CLI](https://docs.amazonaws.cn/cli/latest/userguide/cli-chap-install.html)。

这只是如何获取用户名或组名列表的一个示例。使用最适合自己的方法就行。

**识别动态默认参数（DDP）的用户**
+ 列出单个用户名或组名：
  + 要列出单个用户名，请添加一列来识别您 DDP 的用户。此列应包含每个人的系统用户名，他们使用该用户名从您的身份提供商连接到 Quick。此用户名通常与某人 @ 符号之前的电子邮件别名相同，但并非总是如此。

    要获取用户列表，请使用 [ListUsers](https://docs.amazonaws.cn/quicksight/latest/APIReference/API_ListUsers.html)Quick API 操作或 Amazon CLI 命令。CLI 命令如下例所示。为您的身份提供者指定 Amazon Web Services 区域 ，例如 `us-east-1`。

    ```
    awsacct1="111111111111"
    namespace="default"
    region="us-east-1"
    
    aws quicksight list-users --aws-account-id $awsacct1 --namespace $namespace --region $region
    ```

    以下示例通过添加一个将结果限制在活动用户范围内的查询来修改前面的命令。

    ```
    awsacct1="111111111111"
    namespace="default"
    region="us-east-1"
    
    aws quicksight list-users --aws-account-id $awsacct1 --namespace $namespace --region $region --query 'UserList[?Active==`true`]'
    ```

    结果集类似于以下示例。此示例摘自 JSON 输出 (`--output json`)。拥有联合用户名的用户拥有以 IDs 该词开头的主体`federated`。

    ```
    [
        {
            "Arn": "arn:aws:quicksight:us-east-1:111111111111:user/default/anacasilva",
            "UserName": "anacarolinasilva",
            "Email": "anacasilva@example.com",
            "Role": "ADMIN",
            "Active": true,
            "PrincipalId": "federated/iam/AIDAJ64EIEIOPX5CEIEIO"
        },
        {
            "Arn": "arn:aws:quicksight:us-east-1:111111111111:user/default/Reader/liujie-stargate",
            "UserName": "Reader/liujie-stargate",
            "Role": "READER",
            "Active": true,
            "PrincipalId": "federated/iam/AROAIJSEIEIOMXTZEIEIO:liujie-stargate"
        },
        {
            "Arn": "arn:aws:quicksight:us-east-1:111111111111:user/default/embedding/cxoportal",
            "UserName": "embedding/cxoportal",
            "Email": "saanvisarkar@example.com",
            "Role": "AUTHOR",
            "Active": true,
            "PrincipalId": "federated/iam/AROAJTGEIEIOWB6BEIEIO:cxoportal"
        },
        {
            "Arn": "arn:aws:quicksight:us-east-1:111111111111:user/default/zhangwei@example.com",
            "UserName": "zhangwei@example.com",
            "Email": "zhangwei@example.com",
            "Role": "AUTHOR",
            "Active": true,
            "PrincipalId": "user/d-96123-example-id-1123"
        }
    ]
    ```
  + 要列出组名，请添加一列来识别包含您 DDP 用户名的组。此列应包含用于从您的身份提供商连接到 Quick 的系统组名称。要识别可以添加到数据集的群组，请使用以下一个或多个 Quick API 操作或 CLI 命令：
    + [ListGroups](https://docs.amazonaws.cn/quicksight/latest/APIReference/API_ListGroups.html)— 按 Amazon Web Services 账户 ID 和命名空间列出包含您的身份提供商 Amazon Web Services 区域 的 Quick 群组。
    + [ListGroupMemberships](https://docs.amazonaws.cn/quicksight/latest/APIReference/API_ListGroupMemberships.html)— 列出指定的 Quick 组中的用户。
    + [ListUserGroups](https://docs.amazonaws.cn/quicksight/latest/APIReference/API_ListUserGroups.html)— 列出 Quick 用户所属的快速群组。

    您也可以要求自己的网络管理员查询身份提供者来获取此信息。

接下来的两个过程提供了有关如何完成为动态默认值创建数据集的说明。第一个过程是为单值 DDP 创建数据集。第二个过程是为多值 DDP 创建数据集。

**为单值 DDP 创建数据集**

1. 使用单值参数创建数据集列。查询或文件中的第一列应适用于使用控制面板的人员。该字段可以包含用户名或组名。但是，对群组的支持仅在 Quick Enterprise 版本中可用。

1. 对于显示单值参数的动态默认值的每个字段，请向数据集添加一列。列名无关紧要，您可以使用与字段或参数相同的名称。

   只有当用户实体和动态默认值的组合对于该参数的字段来说是唯一时，单值参数才能按指定方式生效。如果用户实体的默认字段有多个值，则该字段的单值控件会改为显示静态默认值。如果未定义静态默认值，则该控件不会显示默认值。使用组名时请务必小心，因为有些用户名可以是多个组的成员。如果这些组具有不同的默认值，则此类用户名充当重复条目。

   以下示例演示了似乎包含两个单值参数的表。我们之所以作出这样的假设，是因为没有用户名与多个默认值配对。为了让该表更易于理解，我们在分析的字段名称前添加单词 `'default'`。因此，您可以通过执行以下语句来读取该表，并更改每行的值：由 `anacarolinasilva` 查看时，控件会显示默认区域 `NorthEast` 和默认分段 `SMB`。    
[\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/quick/latest/userguide/parameters-default-values.html)

1. 将此数据导入 Quick，然后将其另存为新数据集。

1. 在分析中添加自己创建的数据集。分析至少需要使用一个与您为默认值定义的列相匹配的其他数据集。有关更多信息，请参阅 [向分析中添加数据集](adding-a-data-set-to-an-analysis.md)。

**为多值 DDP 创建数据集**

1. 使用多值参数创建数据集列。查询或文件中的第一列应适用于使用控制面板的人员。该字段可以包含用户名或组名。但是，对群组的支持仅在 Quick Enterprise 版本中可用。

1. 对于显示多值参数的动态默认值的每个字段，请向数据集添加一列。列名无关紧要，您可以使用与字段或参数相同的名称。

   与单值参数不同，多值参数允许与参数关联的字段中存在多个值。

   以下示例演示了似乎包含一个单值参数和一个多值参数的表。我们之所以作出这样的假设，是因为每个用户名在一列中有唯一值，而有些用户名在另一列中有多个值。为了让该表更易于理解，我们在分析的字段名称前添加单词 `'default'`。因此，您可以通过执行以下语句来读取该表，并更改每行的值：如果 `viewed-by` 是 `liujie`，则控件显示 `default-region` 值 `SouthEast`、`default-city` 值 `Atlanta`。如果向前读取一行，我们就会看到 `liujie` 在 `default-city` 中也有 `Raleigh`。    
[\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/quick/latest/userguide/parameters-default-values.html)

   在此示例中，无论是单值参数还是多值参数，我们应用 `default-region` 的参数都能正常生效。如果是单值参数，则两个条目适用于一个用户，因为这两个条目是相同的值，即 `SouthEast`。如果是多值参数，其仍然有效，只是默认情况下只选择一个值。不过，如果我们将使用 `default-city` 作为默认值的参数从多值参数更改为单值参数，则不会看到选择这些默认值。相反，如果定义了静态默认值，则该参数使用静态默认值。例如，如果静态默认值设置为 `Atlanta`，则 `liujie` 在该控件中选择 `Atlanta`，而不是 `Raleigh`。

   在某些情况下，静态默认值也可能用作动态默认值。如果是这样，请测试控件用户名，确保使用的默认值不能同时满足这两种属性。

   如果一个用户名属于多个组，则指定用户会看到一组默认值，这些值是两个组默认值的并集。

1. 将此数据导入 Quick，然后将其另存为新数据集。

1. 在分析中添加自己创建的数据集。分析至少需要使用一个与您为默认值定义的列相匹配的其他数据集。有关更多信息，请参阅 [向分析中添加数据集](adding-a-data-set-to-an-analysis.md)。

要将动态默认参数添加到分析，请按照以下过程操作。在开始之前，请确保您的数据集包含每个用户名或组名的动态默认值。另外，请确保自己的分析使用的是该数据集。有关这些要求的帮助，请参阅前面的过程。

**向分析中添加 DDP**

1. 在 Quick 控制台中，选择页面顶部的**参数**图标，然后选择现有参数。在参数的菜单中选择**编辑参数**。要添加新参数，请选择**参数**旁边的加号 (`+`)。

1. 选择 **Set a dynamic default（设置动态默认值）**。

1. 使用您的设置配置以下选项：
   + **具有默认值和用户信息的数据集** – 选择您创建并添加到分析中的数据集。
   + **用户名列** – 要创建基于用户名的默认值，请选择数据集中包含用户名的列。
   + **组名列** – 要创建基于组名的默认值，请选择数据集中包含组名的列。
   + **默认值列** – 选择包含该参数默认值的列。

1. 选择**应用**保存对设置所作的更改，然后选择**更新**保存对参数所作的更改。要退出而不保存任何更改，请改为选择**取消**。

1. 为每个包含动态默认值的字段添加筛选条件，让默认值生效。要了解有关将筛选条件与参数结合使用的更多信息，请参阅 [在 Amazon Quick 中使用带参数的筛选条件](parameters-filtering-by.md)。

   Amazon Quick 对任何用户名不存在于数据集中、未分配默认值或没有唯一默认值的人使用静态默认值。每个人只能有一组默认值。如果不想使用动态默认值，可以设置静态默认值。