

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

# 使用 Amazon Quick Sight 中的分析、控制面板和报告可视化、分析和共享数据
<a name="quick-bi"></a>

Amazon Quick Sight 是一项全面的商业智能服务，可让您通过交互式可视化、仪表板和报告将原始数据转化为有意义的见解。无论您是连接数据库、准备数据集、创建分析，还是与利益相关者共享仪表板，Amazon Quick Sight 都能为您提供做出数据驱动型决策所需的工具。

本节涵盖了从初始数据连接到最终报告共享的整个 Amazon Quick Sight 工作流程。您将学习如何连接到各种数据源、准备和转换数据、创建引人注目的可视化效果、构建交互式仪表板以及如何利用生成式 BI 功能来加快分析工作流程。每个主题都建立在前一个主题的基础上，提供了一个全面的指南，帮助您最大限度地利用Amazon Quick Sight的强大功能。

**Topics**
+ [连接到 Amazon Quick Sight 中的数据](working-with-data.md)
+ [刷新 Amazon Quick Sight 的数据](refreshing-data.md)
+ [使用 Amazon Quick Sight 准备数据](preparing-data.md)
+ [分析和报告：在 Amazon Quick Sight 中可视化数据](working-with-visuals.md)
+ [使用控制面板和报告在 Amazon Quick Sight 中共享和订阅数据](working-with-dashboards.md)
+ [在 Amazon Quick Sight 中探索交互](using-dashboards.md)
+ [在 Amazon Quick Sight 中使用机器学习 (ML) 获得见解](making-data-driven-decisions-with-ml-in-quicksight.md)
+ [带快速瞄准功能的生成式商业智能](quicksight-gen-bi.md)
+ [对亚马逊 Quick Sight](troubleshooting.md)
+ [使用亚马逊 Quick Sight 进行开发](quicksight_dev.md)

# 连接到 Amazon Quick Sight 中的数据
<a name="working-with-data"></a>

担任许多不同角色的人使用 Amazon Quick Sight 来帮助他们进行分析和高级计算、设计数据仪表板、嵌入分析以及做出更明智的决策。在发生任何这种情况之前，需要了解您的数据的人将其添加到 [Quick Sight 数据集](https://docs.aws.amazon.com/quicksuite/latest/userguide/creating-data-sets)中。Quick Sight 支持直接连接和从各种[数据源](https://docs.aws.amazon.com/quicksuite/latest/userguide/working-with-data-sources)上传。**功能和使用案例**

**Amazon Quick 标准版功能**  
在 Quick 标准版中提供数据后，您可以执行以下操作：  
+ 使用字段格式、层次结构、数据类型转换和计算来转换数据集。
+ 根据新创建的数据集创建一项或多项数据分析。
+ 与其他人共享您的分析，以便他们可以帮助设计分析。
+ 在数据分析中添加图表、图形、更多数据集和多个页面（称为工作表）。
+ 使用自定义格式和主题营造视觉吸引力。
+ 使用参数、控件、筛选条件和自定义操作让它们具有交互性。
+ 合并多个数据来源的数据，然后构建新的层次结构，以便向下钻取和进行仅在分析期间可用的计算，例如聚合、窗口函数等。
+ 将分析发布为交互式数据控制面板。
+ 共享控制面板，这样其他人即使不使用控制面板所基于的分析，也可以使用该控制面板。
+ 添加更多数据以创建更多分析和控制面板。

**Amazon Quick** **企业版功能**  
当您的数据在 Quick Enterprise 版本中可用后，您可以根据自己的角色执行不同的操作。如果您可以构建数据集、设计分析和发布控制面板，那么您可以执行使用标准版的人员可以执行的所有操作。  
此外，以下是您可以执行的其他任务的一些示例：  
+ 使用 Quick Sight 见解创建分析，包括基于机器学习 (ML) 的预测、异常和异常值检测以及关键驱动因素识别的见解。
+ 使用文本、颜色、图像和计算设计叙述洞察。
+ 添加来自虚拟私有云 (VPCs) 和本地数据源的数据，并对静态数据进行加密。
+ 通过添加行和列级别安全性来控制数据集的访问权限。
+ 每小时刷新导入的数据集。
+ 共享通过电子邮件发送的报告。

**应用程序开发**  
如果您开发应用程序或使用 AWS SDKs 和 AWS Command Line Interface (AWS CLI)，则可以执行以下操作以及更多操作：  
+ 将嵌入式分析和嵌入式交互式控制面板添加到网站和应用程序。
+ 使用 API 操作管理数据来源和数据集。
+ 使用数据摄取 API 操作更频繁地刷新导入的数据。
+ 使用 API 操作从分析和控制面板中编写脚本、传输和制作模板。
+ 根据系统管理员管理的设置，以编程方式为人员分配安全角色。

**Quick 中的管理功能**  
如果您在 Quick 中执行管理功能，则可以执行以下及更多操作：  
+ 使用共享文件夹管理安全性，以组织团队的工作，并使用控制面板、分析和数据集帮助团队成员进行协作。
+ 将 Quick Sight 添加到您的 VPC 以允许访问 VPC 和本地数据源中的数据。
+ 通过对 AWS 数据来源的精细访问控制来保护敏感数据。
+ 手动将人员分配给 Quick author 安全角色，这样他们就可以按每月固定费用准备数据集、设计分析和发布数据仪表板。
+ 手动为用户分配快速阅读器安全角色，以便他们可以安全地与已发布的数据仪表板pay-per-session 进行交互。

**控制面板订阅**  
如果您订阅控制面板，则可以执行以下操作：  
+ 使用和订阅由专家团队设计的交互式控制面板。
+ 享受简化整洁的界面。
+ 通过电子邮件查看控制面板快照。
+ 专注于利用触手可及的数据做出决策。

连接或导入数据后，您可以创建数据集来塑造和准备要共享和重用的数据。您可以在 “**数据” 页面上查看可用的数据**集，在 Amazon Quick Sight 起始页上选择 “**数据**” 即可进入该页面。**您可以在 “创建数据集” 页面上查看可用数据源并创建新数据集，您可以通过在 “**数据**” 页面上选择 “**创建**”，然后选择 “**新建数据集**” 来访问该页面。**

**Topics**
+ [支持的数据来源](supported-data-sources.md)
+ [通过集成和数据集连接到您的数据](connecting-to-data-examples.md)
+ [数据来源限额](data-source-limits.md)
+ [支持的数据类型和值](supported-data-types-and-values.md)
+ [使用数据集](working-with-datasets.md)
+ [在 Amazon Quick Sight 中使用数据源](working-with-data-sources.md)

# 支持的数据来源
<a name="supported-data-sources"></a>

Amazon Quick Sight 支持各种数据源，您可以使用这些数据源为分析提供数据。支持以下数据来源。

## 连接到关系数据
<a name="relational-data-sources"></a>

您可以使用以下任何关系数据存储作为 Amazon Quick Sight 的数据源：
+ Amazon Athena
+ Amazon Aurora
+ AWS Glue 可以使用与 AWS Glue 数据目录兼容的服务（例如 Athena 或 Redshift Spectrum）访问数据目录
+ 亚马逊 OpenSearch 服务
+ Amazon Redshift
+ Amazon Redshift Spectrum
+ Amazon S3
+ Amazon S3 分析
+ Apache Impala
+ Apache Spark 2.0 或更高版本
+ AWS IoT Analytics
+ Spark 1.6 或更高版本上的 Databricks（仅限 E2 平台），最高版本 3.0 
+ Exasol 7.1.2 或更高版本
+ 谷歌 BigQuery
+ MariaDB 10.0 或更高版本
+ Microsoft SQL Server 2012 或更高版本
+ MySQL 5.7 或更高版本
**注意**  
自 2023 年 10 月起，MySQL 社区已不再支持 MySQL 版本 5.7。这意味着 Amazon Quick Sight 将不再支持 MySQL 5.7 的新功能、增强功能、错误修复或安全补丁。我们将尽最大努力支持现有查询工作负载。Quick Sight 客户仍然可以将 MySQL 5.7 数据集与 Quick Sight 一起使用，但我们鼓励客户将其的 MySQL 数据库 (DB) 升级到主版本 8.0 或更高版本。要查看 Amazon RDS 提供的声明，请参阅 [Amazon RDS Extended Support opt-in behavior is changing. Upgrade your Amazon RDS for MySQL 5.7 database instances before February 29, 2024 to avoid potential increase in charges](https://repost.aws/articles/ARHdQg4IelQS2uyXkNrINw-A/announcement-amazon-rds-extended-support-opt-in-behavior-is-changing-upgrade-your-amazon-rds-for-mysql-5-7-database-instances-before-february-29-2024-to-avoid-potential-increase-in-charges)。  
Amazon RDS 已更新其针对 Amazon RDS MySQL 8.3 的安全设置。默认情况下，从 Quick Sight 到 Amazon RDS MySQL 8.3 的所有连接都支持 SSL。这是 MySQL 8.3 连接唯一可用的选项。  
适用于 MySQL 连接的 TLS 1.2 需要 MySQL 版本 5.7.28 或更高版本。对于 5.7.28 以下的 MySQL 版本，Quick Sight 会回退到 TLS 1.1。如果您的安全要求要求 TLS 1.2，请确保您的 MySQL 或 Aurora MySQL 数据库运行的是 5.7.28 或更高版本。
+ Oracle 12c 或更高版本
+ PostgreSQL 9.3.1 或更高版本
**注意**  
以下连接器支持从 Amazon Quick Sight 对 PostgreSQL 进行基于 SCRAM 的身份验证：RDS 托管的 PostgreSQL、Aurora PostgreSQL 和 Vanilla PostgreSQL。如果使用了相应的 PostgreSQL 引擎版本，并且在 PostgreSQL 中为 SCRAM 设置了正确的配置，则无需在 Quick Sight 中进行其他配置。如果您在通过 Quick Sight 向 PostgreSQL 建立 SCRAM 身份验证时仍然遇到问题，请创建支持请求单。
+ Presto 0.167 或更高版本
+ Snowflake
+ Starburst
+ Trino
+ Teradata 14.0 或更高版本
+ Timestream

**注意**  
您可以通过支持的数据来源链接或导入此处未列出的其他数据来源来进行访问。

Amazon Redshift 集群、Amazon Athena 数据库和 Amazon RDS 实例必须位于 AWS。其他数据库实例必须处于以下环境之一才能通过 Amazon Quick Sight 进行访问：
+ Amazon EC2
+ 本地数据库
+ 在数据中心或其他可通过互联网访问的环境中的数据

有关更多信息，请参阅 [Amazon Quick 中的基础设施安全](infrastructure-and-network-access.md)。

## 导入文件数据
<a name="file-data-sources"></a>

可将 Amazon S3 或本地网络中的文件用作数据来源。Quick Sight 支持以下格式的文件：
+ CSV 和 TSV – 逗号分隔和制表符分隔的文本文件
+ ELF 和 CLF – 扩展日志格式文件和常用日志格式文件
+ JSON – 平面或半结构化数据文件
+ XLSX – Microsoft Excel 文件

Quick Sight 支持 UTF-8 文件编码，但不支持 UTF-8（带有 BOM）。

可以原样导入在 Amazon S3 中使用 zip 或 gzip（[www.gzip.org](http://www.gzip.org)）压缩的文件。如果使用另一个压缩程序压缩 Amazon S3 中的文件，或者这些文件位于本地网络上，请在导入之前解压缩这些文件。

### JSON 数据
<a name="json-data-sources"></a>

Amazon Quick Sight 原生支持 JSON 平面文件和 JSON 半结构化数据文件。

您可以上传 JSON 文件，也可以连接到包含 JSON 数据的 Amazon S3 存储桶。Amazon Quick Sight 会自动对 JSON 文件和嵌入式 JSON 对象执行架构和类型推断。然后，它会展平 JSON，以便您可以分析和可视化应用程序生成的数据。

对 JSON 平面文件数据的基本支持包括以下内容：
+ 推断架构
+ 确定数据类型
+ 展平数据
+ 从平面文件解析 JSON (JSON 嵌入式对象)

对 JSON 文件结构 (.json) 的支持包括以下内容：
+ 带结构的 JSON 记录
+ 包含根元素作为数组的 JSON 记录

您还可以使用 `parseJson` 函数从文本文件中的 JSON 对象提取值。例如，如果您的 CSV 文件的其中一个字段中嵌入了 JSON 对象，则可以从指定的键值对（KVP）中提取值。有关此操作的更多信息，请参阅[parseJson](parseJson-function.md)。

不支持以下 JSON 功能：
+ 读取结构中包含记录列表的 JSON
+ 列出 JSON 记录中的属性和列表对象；导入过程中会跳过这些属性和对象
+ 自定义上传或配置设置
+ 用于 SQL 和分析的 parseJSON 函数
+ 关于无效 JSON 的错误消息
+ 从 JSON 结构提取 JSON 对象
+ 读取带分隔符的 JSON 记录

在数据准备期间，您可以使用 `parseJson` 函数解析平面文件。该函数会从有效的 JSON 结构和列表中提取元素。

支持以下 JSON 值：
+ JSON 对象
+ 字符串 (带双引号)
+ 数字 (整数和浮点)
+ 布尔值
+ NULL

## 软件即服务（SaaS）
<a name="service-data-sources"></a>

Quick Sight 可以通过直接连接或使用开放授权 () 连接到各种软件即服务 (SaaSOAuth) 数据源。

支持直接连接的 SaaS 源包括以下内容：
+ Jira
+ ServiceNow

使用的 SaaS 来源 OAuth 需要您在 SaaS 网站上授权连接。为此，Quick Sight 必须能够通过网络访问 SaaS 数据源。这些源包括以下内容：
+ Adobe Analytics
+ GitHub
+ Salesforce

  您可以使用以下版本的 Salesforce 中的报告或对象作为 Amazon Quick Sight 的数据源：
  + Enterprise Edition
  + 无限制版本
  + 开发人员版本

## 本地数据源
<a name="local-data-sources"></a>

要连接到本地数据源，您需要将数据源和特定于 Quick 的网络接口添加到 Amazon Virtual Private Cloud（亚马逊 VPC）。正确配置后，基于 Amazon VPC 的 VPC 与您在自己的数据中心中运行的传统网络类似。它使您能够保护和隔离资源之间的流量。您可以定义和控制网络元素以满足您的需求，同时仍然可以从云网络和可扩展的 AWS基础架构中受益。

有关详细信息，请参阅 [Amazon Quick 中的基础设施安全](infrastructure-and-network-access.md)。

# 通过集成和数据集连接到您的数据
<a name="connecting-to-data-examples"></a>

您可以将 Amazon Quick Sight 连接到不同类型的数据源。这包括驻留在 Software-as-a-Service (SaaS) 应用程序中的数据、存储在 Amazon S3 存储桶中的平面文件、来自 Salesforce 等第三方服务的数据，以及来自 Athena 的查询结果。使用以下示例了解有关连接到特定数据来源的要求的详细信息。

**Topics**
+ [使用 Amazon Athena 数据创建数据集](create-a-data-set-athena.md)
+ [将亚马逊 OpenSearch 服务与 Amazon Quick Sight 配合使用](connecting-to-os.md)
+ [使用 Amazon S3 文件创建数据集](create-a-data-set-s3.md)
+ [使用 Apache Spark 创建数据来源](create-a-data-source-spark.md)
+ [在 Quick Sight 中使用数据砖块](quicksight-databricks.md)
+ [使用 Google BigQuery 创建数据集](quicksight-google-big-query.md)
+ [使用 Google Sheets 数据来源创建数据集](create-a-dataset-google-sheets.md)
+ [使用 Apache Impala 数据来源创建数据集](create-a-dataset-impala.md)
+ [使用 Microsoft Excel 文件创建数据集](create-a-data-set-excel.md)
+ [使用 Presto 创建数据来源](create-a-data-source-presto.md)
+ [使用 Snowflake 搭配 Amazon Quick](connecting-to-snowflake.md)
+ [在 Amazon Quick Sight 中使用 Star](connecting-to-starburst.md)
+ [从 SaaS 源创建数据来源和数据集](connecting-to-saas-data-sources.md)
+ [从 Salesforce 创建数据集](create-a-data-set-salesforce.md)
+ [将 Trino 与 Amazon Quick Sigh](connecting-to-trino.md)
+ [使用本地文本文件创建数据集](create-a-data-set-file.md)
+ [在 Amazon Quick Sight 中使用亚马逊 Timestream 数据](using-data-from-timestream.md)

# 使用 Amazon Athena 数据创建数据集
<a name="create-a-data-set-athena"></a>

使用以下过程创建连接到 Amazon Athena 数据或 Athena 联合查询数据的新数据集。

**连接到 Amazon Athena**

1. 首先创建一个新数据集。从左侧的导航窗格中选择 “**数据**”。

1. 选择 “**创建**”，然后选择 “**新建数据集**”。

1. 

   1. 要使用现有 Athena 连接配置文件（常用），请选择要使用的现有数据源的卡片。选定**选择**。

      卡片标有 Athena 数据来源图标和创建该连接的人员提供的名称。

   1. 要创建新的 Athena 连接配置文件（不太常见），请使用以下步骤：

      1. 选择 “**新建数据源**”，然后选择 **Athena** 数据源卡。

      1. 选择**下一步**。

      1. 对于**数据来源名称**，输入描述性名称。

      1. 对于 **Athena 工作组**，选择工作组。

      1. 选择**验证连接**以测试连接。

      1. 选择**创建数据来源**。

      1. （可选）选择要作为查询运行的 IAM 角色 ARN。

1. 在**选择您的表**屏幕上，执行以下操作：

   1. 对于**目录**，请选择下列选项之一：
      + 如果您使用的是 Athena 联合查询，请选择要使用的目录。
      + 否则，请选择 **AwsDataCatalog**。

   1. 选择下列选项之一：
      + 要编写 SQL 查询，请选择**使用自定义 SQL**。
      + 要选择数据库和表，请从**目录**下的下拉菜单中选择包含数据库的目录。从**数据库**下的下拉菜单中选择数据库，然后从为数据库显示的**表**列表中选择一个表。

   如果您没有相应权限，则会收到以下错误消息：“You don't have sufficient permissions to connect to this dataset or run this query.” 请联系您的 Quick 管理员寻求帮助。有关更多信息，请参阅 [授权连接到 Amazon Athena](athena.md)。

1. 选择**编辑/预览数据**。

1. 选择**可视化**，使用表创建数据集并分析数据。有关更多信息，请参阅 [分析和报告：在 Amazon Quick Sight 中可视化数据](working-with-visuals.md)。

# 将亚马逊 OpenSearch 服务与 Amazon Quick Sight 配合使用
<a name="connecting-to-os"></a>

接下来，您可以了解如何使用 Amazon Quick Sight 连接到您的亚马逊 OpenSearch 服务数据。

## 为 OpenSearch 服务创建新的 Quick Sight 数据源连接
<a name="create-connection-to-es"></a>

接下来，你可以找到如何连接到 OpenSearch 服务

在继续操作之前，需要授权 Amazon Quick Sight 才能连接到亚马逊 OpenSearch 服务。如果未启用连接，则在尝试连接时会出现错误。Quick Sight 管理员可以授权 AWS 资源连接。

**授权 Quick Sight 启动与 OpenSearch 服务的连接**

1. 点击右上角的个人资料图标打开菜单，然后选择**快速管理**。如果您在个人资料菜单上看不到 “**快速管理**” 选项，请向 Amazon Quick 管理员寻求帮助。

1. 选择**安全和权限**、**添加或删除**。

1. 启用该选项**OpenSearch**。

1. 选择**更新**。

访问 OpenSearch 服务后，您可以创建一个数据源，以便人们可以使用指定的域。

**连接到 OpenSearch 服务**

1. 首先创建一个新数据集。从左侧导航窗格中选择**数据**，然后选择**创建**和**新建数据集**。

1. 选择**亚马逊 OpenSearch**数据源卡。

1. 例如`OpenSearch Service ML Data`，在**数据源名称**中，输入 OpenSearch 服务数据源连接的描述性名称。由于您可以通过与 S OpenSearch ervice 的连接创建许多数据集，因此最好使用简洁的名称。

1. 对于**连接类型**中，选择要使用的网络。这可以是基于 Amazon VPC 的虚拟私有云（VPC），也可以是公有网络。的列表 VPCs 包含 VPC 连接的名称，而不是 VPC IDs。这些名称由 Quick 管理员定义。

1. 对于**域**，选择要连接的 OpenSearch 服务域。

1. 选择 “**验证连接**” 以检查您是否可以成功连接到 OpenSearch 服务。

1. 选择**创建数据来源**以继续。

1. 对于**表**，选择要使用的表格，然后选择**选择**以继续。

1. 请执行以下操作之一：
   + 要将数据导入 Quick Sight 内存引擎（名为SPICE），请选择 “**导入到” SPICE 以加快分析速度**。有关如何启用 OpenSearch 数据导入功能的信息，请参见[授权连接到 Amazon 服务 OpenSearch](opensearch.md)。
   + 要允许 Quick Sight 在每次刷新数据集或使用分析或仪表板时对您的数据运行查询，请选择**直接查询您的数据**。

     要在使用 OpenSearch 服务数据的已发布仪表板上启用自动刷新， OpenSearch 服务数据集需要使用直接查询。

1. 选择**编辑/预览**，然后选择**保存**以保存数据集并将其关闭。

## 管理 OpenSearch 服务数据的权限
<a name="dataset-permissions-for-es"></a>

以下过程介绍如何查看、添加和撤消权限以允许访问同一 S OpenSearch ervice 数据源。您添加的用户必须是 Quick Sight 中的活跃用户，然后才能添加他们。

**编辑数据来源的权限**

1. 选择左侧的 “**数据**”，然后向下滚动以找到用于您的 Amazon OpenSearch 服务连接的数据源卡。以 `US Amazon OpenSearch Service Data` 为例。

1. 选择 **Amazon OpenSearch** 数据集。

1. 在打开的数据集详细信息页面上，选择**权限**选项卡。

   此时会显示当前权限。

1. 要添加权限，请选择**添加用户和组**，然后按照以下步骤操作：

   1. 添加用户或组以允许他们使用相同的数据集。

   1. 添加完要添加的所有人后，选择要应用于他们的**权限**。

1. （可选）要编辑权限，可以选择**查看者**或**拥有者**。
   + 选择**查看者**以允许读取权限。
   + 选择 “**所有者**” 以允许该用户编辑、共享或删除此 Quick Sight 数据集。

1. （可选）要撤销权限，请选择**撤销访问权限**。在您撤销某人的访问权限后，他们将无法使用此数据来源创建新的数据集。但是，他们现有的数据集仍然可以访问此数据来源。

1. 完成后，请选择 **Close**。

## 为 OpenSearch 服务添加新的 Quick Sight 数据集
<a name="create-dataset-using-es"></a>

在您拥有现有的 S OpenSearch ervice 数据源连接后，可以创建用于分析的 OpenSearch 服务数据集。

**使用 OpenSearch 服务创建数据集**

1. 在起始页面上，选择**数据**、**创建**、**新建数据集**。

1. 向下滚动到 OpenSearch 服务连接的数据源卡。如果您有许多数据来源，则可以使用页面顶部的搜索栏来查找名称部分匹配的数据来源。

1. 选择 A **mazon OpenSearch** 数据源卡，然后选择**创建数据集**。

1. 对于**表**，选择要使用的 OpenSearch 服务索引。

1. 选择**编辑/预览**。

1. 选择**保存**，以保存并关闭数据集。

## 向分析中添加 OpenSearch 服务数据
<a name="open-analysis-add-dataset-for-es"></a>

获得 OpenSearch 服务数据集后，可以将其添加到 Quick Sight 分析中。在开始之前，请确保您的现有数据集包含要使用的 OpenSearch 服务数据。

**向分析中添加 OpenSearch 服务数据**

1. 选择左侧的**分析**。

1. 请执行以下操作之一：
   + 要创建新分析，请选择右侧的**新分析**。
   + 要添加到现有分析，请打开要编辑的分析。
     + 选择左上角附近的铅笔图标。
     + 选择**添加数据集**。

1. 选择要添加的 OpenSearch 服务数据集。

   有关在可视化中使用 OpenSearch 服务的信息，请参阅[使用 OpenSearch 服务的限制](#limitations-for-es)。

1. 有关更多信息，请参阅 [Working with analyses](https://docs.aws.amazon.com/quicksight/latest/user/working-with-analyses.html)。

## 使用 OpenSearch 服务的限制
<a name="limitations-for-es"></a>

以下限制适用于使用 OpenSearch 服务数据集：
+ OpenSearch 服务数据集支持视觉类型、排序选项和筛选选项的子集。
+ 要在使用 OpenSearch 服务数据的已发布仪表板上启用自动刷新， OpenSearch 服务数据集需要使用直接查询。
+ 不支持多个子查询操作。为避免在可视化过程中出现错误，请勿将多个字段添加到字段井，每个可视化使用一到两个字段，并避免使用**颜色**字段井。
+ 不支持自定义 SQL。
+ 不支持跨数据集联接和自联接。
+ 不支持计算字段。
+ 不支持文本字段。
+ 不支持“其他”类别。如果您将 OpenSearch 服务数据集与支持 “其他” 类别的可视化项一起使用，请使用视觉对象上的菜单禁用 “其他” 类别。

# 使用 Amazon S3 文件创建数据集
<a name="create-a-data-set-s3"></a>

要使用来自 Amazon S3 的一个或多个文本文件（.csv、.tsv、.clf 或.elf）创建数据集，请为 Quick Sight 创建清单。Quick Sight 使用此清单来识别您要使用的文件以及导入这些文件所需的上传设置。使用 Amazon S3 创建数据集时，文件数据会自动导入 [SPICE](spice.md) 中。

您必须授予 Quick Sight 访问您想要从中读取文件的任何 Amazon S3 存储桶的权限。有关授予 Quick Sight AWS 资源访问权限的信息，请参阅[配置 Amazon Quick Sight 对 AWS 数据源的访问权限](access-to-aws-resources.md)。

**Topics**
+ [支持的 Amazon S3 清单文件格式](supported-manifest-file-format.md)
+ [创建 Amazon S3 数据集](create-a-data-set-s3-procedure.md)
+ [使用其他 AWS 账户中的 S3 文件的数据集](using-s3-files-in-another-aws-account.md)

# 支持的 Amazon S3 清单文件格式
<a name="supported-manifest-file-format"></a>

您可以使用 JSON 清单文件在 Amazon S3 中指定要导入到 Quick Sight 中的文件。这些 JSON 清单文件可以使用下述快速浏览格式，也可以使用亚马逊 Redshift 数据库开发者指南中[使用清单指定数据文件](https://docs.aws.amazon.com/redshift/latest/dg/loading-data-files-using-manifest.html)中描述的 *Amazon Redshift* 格式。您无需使用 Amazon Redshift 就能使用 Amazon Redshift 清单文件格式。

例如`my_manifest.json`，如果您使用 Quick Sight 清单文件，则其扩展名必须为.json。如果使用 Amazon Redshift 清单文件，则可以使用任何扩展名。

如果你使用亚马逊 Redshift 清单文件，Quick Sight 会像亚马逊 Redshift 一样处理可选`mandatory`选项。如果找不到关联的文件，Quick Sight 将结束导入过程并返回错误。

您选择导入的文件必须是分隔的文本（例如 .csv 或 .tsv）、日志 (.clf)、扩展日志 (.elf) 格式或 JSON (.json)。一个清单文件中标识的所有文件都必须使用相同的文件格式。另外，所有文件必须具有相同数量和类型的列。Quick Sight 支持 UTF-8 文件编码，但不支持带字节顺序标记 (BOM) 的 UTF-8。如果您要导入 JSON 文件，则对于 `globalUploadSettings`，请指定 `format`，而不是 `delimiter`、`textqualifier` 和 `containsHeader`。

确保您指定的任何文件都位于您已授予 Quick Sight 访问权限的 Amazon S3 存储桶中。有关授予 Quick Sight AWS 资源访问权限的信息，请参阅[配置 Amazon Quick Sight 对 AWS 数据源的访问权限](access-to-aws-resources.md)。

## Quick Sight 的清单文件格式
<a name="quicksight-manifest-file-format"></a>

Quick Sight 清单文件使用以下 JSON 格式。

```
{
    "fileLocations": [
        {
            "URIs": [
                "uri1",
                "uri2",
                "uri3"
            ]
        },
        {
            "URIPrefixes": [
                "prefix1",
                "prefix2",
                "prefix3"
            ]
        }
    ],
    "globalUploadSettings": {
        "format": "JSON",
        "delimiter": ",",
        "textqualifier": "'",
        "containsHeader": "true"
    }
}
```

使用 `fileLocations` 元素中的字段可指定要导入的文件，使用 `globalUploadSettings` 元素中的字段可指定这些文件的导入设置，如字段分隔符。

清单文件元素如下所述：
+ **fileLocations** – 可以使用该元素指定要导入的文件。您可以使用 `URIs` 和/或 `URIPrefixes` 数组来执行该操作。您必须在其中任意一项中至少指定一个值。
  + **URIs**— 使用此数组列 URIs出要导入的特定文件。

    Quick Sight 可以访问任何文件中的 Amazon S3 文件 AWS 区域。但是，如果与 Quick 账户使用的 AWS 区域不同，则必须使用标识 Amazon S3 存储桶区域的 URI 格式。

    URIs 支持以下格式。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-manifest-file-format.html)
  + **URIPrefixes**— 使用此数组列出 S3 存储桶和文件夹的 URI 前缀。将导入指定的存储桶或文件夹中的所有文件。Quick Sight 以递归方式从子文件夹中检索文件。

    Quick Sight 可以访问任何 AWS 区域存储桶中的 Amazon S3 存储桶或文件夹。 AWS 区域 如果 S3 存储桶与 Quick 账户使用的格式不同，请务必使用标识 S3 存储桶的 URI 前缀格式。

    支持以下格式的 URI 前缀。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-manifest-file-format.html)
+ **globalUploadSettings**—（可选）使用此元素指定 Amazon S3 文件的导入设置，例如字段分隔符。如果未指定此元素，Quick Sight 将使用本节中字段的默认值。
**重要**  
对于日志 (.clf) 和扩展日志 (.elf) 文件，只有这部分中的 **format** 字段适用，因此，您可以跳过其他字段。如果选择包括它们，其值将被忽略。
  + **format** –（可选）指定要导入的文件的格式。有效的格式为 **CSV**、**TSV**、**CLF**、**ELF** 和 **JSON**。默认值为 **CSV**。
  + **delimiter** –（可选）指定文件字段分隔符。必须映射到 `format` 字段中指定的文件类型。有效的格式为用于 .csv 文件的逗号 (**,**) 和用于 .tsv 文件的制表符 (**\$1t**)。默认值为逗号 (**,**)。
  + **textqualifier** –（可选）指定文件文本限定符。有效格式为单引号 (**'**)、双引号 (**\$1"**)。开头的反斜线是 JSON 中的双引号必须使用的转义字符。默认值为双引号 (**\$1"**)。如果您的文本不需要文本限定符，则不要包含此属性。
  + **containsHeader** –（可选）指定文件是否具有标题行。有效的格式为 **true** 或 **false**。默认值为 **true**。

### Quick Sight 的清单文件示例
<a name="quicksight-manifest-file-examples"></a>

以下是已完成的 Quick Sight 清单文件的一些示例。

以下示例显示一个清单文件，它指定两个要导入的特定 .csv 文件。这些文件对文本限定符使用双引号。默认值是可接受的，因此，跳过 `format`、`delimiter` 和 `containsHeader` 字段。

```
{
    "fileLocations": [
        {
            "URIs": [
                "https://yourBucket.s3.amazonaws.com/data-file.csv",
                "https://yourBucket.s3.amazonaws.com/data-file-2.csv"
            ]
        }
    ],
    "globalUploadSettings": {
        "textqualifier": "\""
    }
}
```

以下示例显示一个清单文件，它指定一个要导入的特定 .tsv 文件。该文件还包含其他 AWS 区域中的存储桶，其中包含要导入的其他 .tsv 文件。默认值是可接受的，因此跳过 `textqualifier` 和 `containsHeader` 字段。

```
{
    "fileLocations": [
        {
            "URIs": [
                "https://s3.amazonaws.com/amzn-s3-demo-bucket/data.tsv"
            ]
        },
        {
            "URIPrefixes": [
                "https://s3-us-east-1.amazonaws.com/amzn-s3-demo-bucket/"
            ]
        }
    ],
    "globalUploadSettings": {
        "format": "TSV",
        "delimiter": "\t"
    }
}
```

以下示例指定两个包含要导入的 .clf 文件的存储桶。一个与 Quick 账户 AWS 区域 相同，另一个在不同账户中 AWS 区域。`delimiter`、`textqualifier` 和 `containsHeader` 字段不适用于日志文件，因此跳过这些字段。

```
{
    "fileLocations": [
        {
            "URIPrefixes": [
                "https://amzn-s3-demo-bucket1.your-s3-url.com",
                "s3://amzn-s3-demo-bucket2/"
            ]
        }
    ],
    "globalUploadSettings": {
        "format": "CLF"
    }
}
```

以下示例使用 Amazon Redshift 格式指定要导入的 .csv 文件。

```
{
    "entries": [
        {
            "url": "https://amzn-s3-demo-bucket.your-s3-url.com/myalias-test/file-to-import.csv",
            "mandatory": true
        }
    ]
}
```

以下示例使用 Amazon Redshift 格式指定两个要导入的 JSON 文件。

```
{
    "fileLocations": [
        {
            "URIs": [
                "https://yourBucket.s3.amazonaws.com/data-file.json",
                "https://yourBucket.s3.amazonaws.com/data-file-2.json"
            ]
        }
    ],
    "globalUploadSettings": {
        "format": "JSON"
    }
}
```

# 创建 Amazon S3 数据集
<a name="create-a-data-set-s3-procedure"></a>

**创建 Amazon S3 数据集**

1. 选中 [数据来源限额](data-source-limits.md) 以确保目标文件设置未超出数据来源限制。

1. 使用 [支持的 Amazon S3 清单文件格式](supported-manifest-file-format.md)中指定的格式之一创建清单文件，以确定要导入的文本文件。

1. 将清单文件保存到本地目录中，或者将其上传到 Amazon S3 中。

1. 在快速入门页面上，选择**数据**。

1. 在**数据**页面上，选择**创建**，然后选择**新数据集**。

1. 选择 Amazon S3 图标，然后选择**下一步**。

1. 对于**数据来源名称**，输入数据来源的描述。这应该是帮助将该数据来源与其他数据来源区分开来的名称。

1. 对于 **Upload a manifest file**，请执行以下操作之一：
   + 要使用本地清单文件，请选择 **Upload**，然后选择 **Upload a JSON manifest file**。对于 **Open**，请选择一个文件，然后选择 **Open**。
   + 要使用 Amazon S3 中的清单文件，请选择 **URL**，然后输入该清单文件的 URL。要在 Amazon S3 控制台中查找预先存在的清单文件的 URL，请导航到并选择相应的文件。随即显示属性面板，包括链接 URL。您可以复制 URL 并将其粘贴到 Quick Sight 中。

1. 选择**连接**。

1. 要确保已完成连接，请选择 **Edit/Preview data**。否则，选择 **Visualize** 以原样使用数据创建分析。

   如果选择**编辑/预览数据**，您可以在准备数据过程中指定数据集名称。否则，数据集名称与将与清单文件名称匹配。

   要了解数据准备的更多信息，请参阅[使用 Amazon Quick Sight 准备数据](preparing-data.md)。

## 基于多个 Amazon S3 文件创建数据集
<a name="data-sets-based-on-multiple-s3-files"></a>

您可以使用以下几种方法之一在 Quick Sight 中合并或合并来自 Amazon S3 存储桶的文件：
+ **使用清单组合文件** – 在这种情况下，这些文件必须具有相同数量的字段（列）。文件的相同位置中的字段必须具有匹配的数据类型。例如，每个文件中的第一个字段必须具有相同的数据类型。第二个字段、第三个字段以及后续字段也是如此。Quick Sight 从第一个文件中获取字段名称。

  必须在清单中明确列出这些文件。但是，它们不必位于同一个 Amazon S3 存储桶内。

  此外，这些文件还必须遵循[支持的 Amazon S3 清单文件格式](supported-manifest-file-format.md)中所述的规则。

  有关使用清单组合文件的更多详细信息，请参阅[使用 Amazon S3 文件创建数据集](create-a-data-set-s3.md)。
+ **不使用清单合并文件** – 要将多个文件合并为一个文件而不必在清单中单独列出这些文件，您可以使用 Athena。在使用这种方法时，您只需查询您的文本文件，就像它们位于数据库的表中一样。有关更多信息，请参阅大数据博客中的 [Analyzing data in Amazon S3 using Athena](https://aws.amazon.com/blogs/big-data/analyzing-data-in-s3-using-amazon-athena/)。
+ **在导入之前使用脚本附加文件** – 在上传之前，您可以使用用于组合文件的脚本。

# 使用其他 AWS 账户中的 S3 文件的数据集
<a name="using-s3-files-in-another-aws-account"></a>

使用本节学习如何设置安全性，以便您可以使用 Quick Sight 访问其他 AWS 账户中的 Amazon S3 文件。

为了让您能够访问其他账户中的文件，该账户的所有者必须先设置 Amazon S3，以便为您授予读取该文件的权限。然后，在 Quick Sight 中，您必须设置对与您共享的存储桶的访问权限。在这两个步骤完成后，您可以使用清单来创建数据集。

**注意**  
 要访问与公众共享的文件，您不需要设置任何特殊安全性。但是，您仍然需要清单文件。

**Topics**
+ [将 Amazon S3 设置为允许从其他 Quick 账户进行访问](#setup-S3-to-allow-access-from-a-different-quicksight-account)
+ [设置 Quick Sight 以访问其他 AWS 账户中的 Amazon S3 文件](#setup-quicksight-to-access-S3-in-a-different-account)

## 将 Amazon S3 设置为允许从其他 Quick 账户进行访问
<a name="setup-S3-to-allow-access-from-a-different-quicksight-account"></a>

使用本节来学习如何在 Amazon S3 文件中设置权限，这样 Quick Sight 就可以通过其他 AWS 账户访问这些文件。

有关从您的 Quick Sight 账户访问其他账户的 Amazon S3 文件的信息，请参阅[设置 Quick Sight 以访问其他 AWS 账户中的 Amazon S3 文件](#setup-quicksight-to-access-S3-in-a-different-account)。有关 S3 权限的更多信息，请参阅[管理对 Amazon S3 资源的访问权限](https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html)和[如何在对象上设置权限？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/set-object-permissions.html)

您可以使用以下过程，从 S3 控制台设置此访问权限。或者，您可以使用 AWS CLI 或通过编写脚本来授予权限。如果您有大量要共享的文件，则可以改为在 `s3:GetObject` 操作上创建 S3 存储桶策略。要使用存储桶策略，请将其添加到存储桶权限，而不是文件权限。有关存储桶策略的信息，请参阅《Amazon S3 开发人员指南》[https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html)中的*桶策略示例。*

**从 S3 控制台设置来自其他 Quick 账户的访问权限**

1. 获取您要与之共享的 AWS 账户电子邮件的电子邮件地址。或者，您可以获取并使用规范用户 ID。有关规范用户的更多信息 IDs，请参阅*AWS 一般*参考中的[AWS 账户标识符](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html)。

1. 登录 AWS 管理控制台 并打开 Amazon S3 控制台，网址为[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 找到您要与 Quick Sight 共享的 Amazon S3 存储桶。选择**权限**。

1. 选择 “**添加帐户**”，然后输入要与之共享的 AWS 帐户的电子邮件地址或粘贴规范用户 ID。该电子邮件地址应该是 AWS 账户的主要电子邮件地址。

1. 对于**读取存储桶权限**和**列出对象**，两者都选择**是**。

   选择 **Save** 以确认。

1. 找到要共享的文件，然后打开该文件的权限设置。

1. 输入您要与之共享的 AWS 账户的电子邮件地址或规范用户 ID。该电子邮件地址应该是该 AWS 账户的主电子邮件地址。

1. 为 Quick Sight 需要访问的每个文件启用**读取对象**权限。

1. 通知 Quick 用户这些文件现已可供使用。

## 设置 Quick Sight 以访问其他 AWS 账户中的 Amazon S3 文件
<a name="setup-quicksight-to-access-S3-in-a-different-account"></a>

使用本节学习如何设置 Quick Sight，这样您就可以在其他 AWS 账户中访问 Amazon S3 文件。有关允许其他人从其 Quick 账户访问您的 Amazon S3 文件的信息，请参阅[将 Amazon S3 设置为允许从其他 Quick 账户进行访问](#setup-S3-to-allow-access-from-a-different-quicksight-account)。

使用以下步骤从 Quick Sight 访问其他账户的 Amazon S3 文件。其他 AWS 账户中的用户必须与您共享其 Amazon S3 存储桶中的文件，然后才能使用此过程。

**通过 Quick Sight 访问其他账户的 Amazon S3 文件**

1. 验证其他 AWS 账户中的一个或多个用户是否向您的账户授予了对相关 S3 存储桶的读写权限。

1. 选择您的个人资料图标，然后选择 “**管理 Quick Sight**”。

1. 选择 **Security & permissions (安全性和权限)**。

1. 在 **Quick Sight 访问 AWS 服务**下，选择**管理**。

1. 选择**选择 S3 存储桶**。

1. 在**选择 Amazon S3 存储桶**屏幕上，选择**可在 AWS中访问的 S3 存储桶**选项卡。

   默认选项卡名为**关联到 Quick Sight 账户的 S3 存储桶**。它显示了您的 Quick 账户有权访问的所有存储桶。

1. 请执行以下操作之一：
   + 要添加您有权使用的所有存储桶，请选择**从其他 ** 账户选择可访问的存储桶 AWS 。
   + 如果您要添加一个或多个 Amazon S3 存储桶，请输入其名称。它必须精确匹配该 Amazon S3 存储桶的唯一名称。

     如果您没有适当的权限，则会看到错误消息“We can't connect to this S3 bucket. 确保您指定的任何 S3 存储桶都与用于创建此 Quick AWS 账户的账户相关联。” 如果您既没有帐户权限也没有 Quick Sight 权限，则会显示此错误消息。
**注意**  
要使用亚马逊 Athena，Quick Sight 需要访问雅典娜使用的亚马逊 S3 存储桶。  
您可以将它们逐一添加到此处，也可以使用 “**从其他 AWS 账户中选择可访问的存储桶**” 选项。

1. 选择 **Select buckets** 以确认您的选择。

1. 根据 Amazon S3 创建新的数据集，并上传您的清单文件。有关 Amazon S3 数据集的更多信息，请参阅 [使用 Amazon S3 文件创建数据集](create-a-data-set-s3.md)。

# 使用 Apache Spark 创建数据来源
<a name="create-a-data-source-spark"></a>

你可以使用 Quick Sight 直接连接到 Apache Spark，也可以通过 Spark SQL 连接到 Spark。使用查询结果或直接链接到表或视图，您可以在 Quick Sight 中创建数据源。您可以通过 Spark 直接查询数据，也可以将查询结果导入 [SPICE](spice.md)。

在将 Quick Sight 与 Spark 产品配合使用之前，必须为 Quick Sight 配置 Spark。

Quick Sight 要求您的 Spark 服务器使用 LDAP 进行保护和身份验证，该版本适用于 Spark 2.0 或更高版本。如果 Spark 配置为允许未经身份验证的访问，Quick Sight 会拒绝与服务器的连接。要将 Quick Sight 用作 Spark 客户端，必须将 LDAP 身份验证配置为与 Spark 配合使用。

Spark 文档包含有关如何进行此设置的信息。首先，您需要对其进行配置，以启用通过 HTTPS 进行的前端 LDAP 身份验证。有关 Spark 的一般信息，请参阅 [Apache Spark 网站](http://spark.apache.org/)。有关 Spark 和安全性的专门信息，请参阅 [Spark 安全文档](http://spark.apache.org/docs/latest/security.html)。

要确保已将服务器配置为 Quick Sight 访问权限，请按照中的说明进行操作[网络和数据库配置要求](configure-access.md)。

# 在 Quick Sight 中使用数据砖块
<a name="quicksight-databricks"></a>

使用本节学习如何从 Quick Sight 连接到 Databricks。

**连接到 Databricks**

1. 首先创建一个新数据集。从左侧的导航窗格中选择 “**数据**”。

1. 选择**创建**，然后选择**新数据集**。

1. 选择 **Databricks** 数据来源卡片。

1. 对于**数据来源名称**，为 Databricks 数据来源连接输入描述性名称，例如 `Databricks CS`。您可以通过与 Databricks 的连接创建许多数据集，因此最好使用简洁的名称。

1. 对于**连接类型**，选择您正在使用的网络类型。
   + **公有网络** – 如果您的数据是公开共享的。
   + **VPC** – 如果您的数据位于 VPC 内。
**注意**  
如果您使用的是 VPC，但其未列出，请咨询管理员。

1.  对于**数据库服务器**，输入在 Databricks 连接详细信息中指定的**工作区的主机名**。

1.  对于 **HTTP 路径**，输入在 Databricks 连接详细信息中指定的 **spark 实例的部分 URL**。

1.  对于**端口**，输入在 Databricks 连接详细信息中指定的**端口**。

1.  对于**用户名**和**密码**，输入您的连接凭证。

1.  要验证连接是否正常，请单击**验证连接**。

1.  要完成并创建数据来源，请单击**创建数据来源**。

## 为 Databricks 添加新的 Quick Sight 数据集
<a name="quicksight-databricks-create-dataset"></a>

拥有 Databricks 数据的现有数据来源连接后，您可以创建 Databricks 数据集以用于分析。

**使用 Databricks 创建数据集**

1. 选择左侧的 “**数据**”，然后向下滚动以查找 Databricks 连接的数据源卡。如果您有许多数据来源，则可以使用页面顶部的搜索栏来查找名称部分匹配的数据来源。

1. 选择 **Databricks** 数据来源卡片，然后选择**创建数据集**。

1. 要指定要连接的表，请先选择要使用的“目录”和“架构”。然后对于**表**，选择要使用的表。如果您更想使用自己的 SQL 语句，请选择**使用自定义 SQL**。

1. 选择**编辑/预览**。

1. （可选）要添加更多数据，请按以下步骤进行操作：

   1. 选择右上角的**添加数据**。

   1. 要连接到不同的数据，请选择**切换数据来源**，然后选择不同的数据集。

   1. 按照 UI 提示完成数据添加。

   1. 将新数据添加到同一数据集后，选择**配置此联接**（两个红点）。为每个附加表设置联接。

   1. 如果要添加计算字段，请选择**添加计算字段**。

   1. 要从 SageMaker AI 添加模型，请选择 A **ugment with。 SageMaker**此选项仅在 Quick Enterprise 版中可用。

   1. 清除任何您要省略的字段的复选框。

   1. 更新任何您要更改的数据类型。

1. 完成后，选择**保存**，以保存并关闭数据集。

## Quick Sight 管理员关于连接 Databricks 的指南
<a name="quicksight-databricks-administration-setup"></a>

你可以使用 Amazon Quick Sight 连接到 Databricks AWS无论你是通过 Marketpl AWS ace AWS 还是通过 Databricks 网站注册，你都可以连接 Databricks。

在连接到 Databricks 之前，您需要创建或识别连接所需的现有资源。使用本节来帮助你收集从 Quick Sight 连接到 Databricks 所需的资源。
+ 要了解如何获取 Databricks 连接的详细信息，请参阅 [Databricks ODBC and JDBC connections](https://docs.databricks.com/integrations/jdbc-odbc-bi.html#get-server-hostname-port-http-path-and-jdbc-url)。
+ 要了解如何获取 Databricks 凭证（个人访问令牌或用户名和密码）进行身份验证，请参阅 [Databricks documentation](https://docs.databricks.com/index.html) 中的 [Authentication requirements](https://docs.databricks.com/integrations/bi/jdbc-odbc-bi.html#authentication-requirements)。

  要连接到 Databricks 集群，您需要 `Can Attach To` 和 `Can Restart` 权限。这些权限在 Databricks 中进行管理。有关更多信息，请参阅 [Databricks documentation](https://docs.databricks.com/index.html) 中的 [Permission Requirements](https://docs.databricks.com/integrations/jdbc-odbc-bi.html#permission-requirements)。
+ 如果您要为 Databricks 设置私有连接，则可以详细了解如何配置 VPC 以与 Quick Sight 配合使用，请参阅 Quick Sight 文档中的使用 [Amazon Quick Sight 连接到 VPC](https://docs.aws.amazon.com/quicksight/latest/user/working-with-aws-vpc.html)。如果连接不可见，请向系统管理员确认该网络是否已开放 [Amazon Route 53 的入站端点](https://docs.aws.amazon.com/quicksight/latest/user/vpc-route-53.html)。Databricks 工作区的主机名使用公有 IP，需要有 DNS TCP 和 DNS UDP 入站和出站规则，以允许 Route 53 安全组的 DNS 端口 53 上的流量。管理员需要创建包含 2 条入站规则的安全组：一条用于端口 53 到 VPC CIDR 的 DNS（TCP），另一条用于端口 53 到 VPC CIDR 的 DNS（UDP）。

  [如果您使用的是 PrivateLink 而不是公共连接，则要了解与 Databricks 相关的详细信息，请参阅 Databricks [文档 AWS PrivateLink中的启用](https://docs.databricks.com/administration-guide/cloud-configurations/aws/privatelink.html)。](https://docs.databricks.com/index.html)

# 使用 Google BigQuery 创建数据集
<a name="quicksight-google-big-query"></a>

**注意**  
当 Quick Sight 使用和传输从中收到的信息时Google APIs，它会遵守 [GoogleAPI 服务用户数据政策](https://developers.google.com/terms/api-services-user-data-policy)。

Google BigQuery 是一个完全托管的无服务器数据仓库，客户可以使用它来管理和分析他们的数据。Google BigQuery 客户使用 SQL 来查询他们的数据，而无需任何基础设施管理。

## 使用 Google BigQuery 创建数据来源连接
<a name="quicksight-google-big-query-connect"></a>

**先决条件**

开始之前，请确保您已具备以下条件。这些都是使用 Google BigQuery 创建数据来源连接所必需的：
+ **项目 ID** – 与您的 Google 账户关联的项目 ID。要找到它，请导航到Google Cloud控制台，然后选择要连接到 Quick Sight 的项目的名称。复制新窗口中显示的项目 ID 并记录下来以供日后使用。
+ **数据集区域** – Google BigQuery 项目所在的 Google 区域。要找到数据集区域，请导航到 Google BigQuery 控制台并选择**资源管理器**。找到并展开您想要连接的项目，然后选择您想要使用的数据集。数据集区域出现在打开的弹出窗口中。
+ **Google 账户登录凭证** – 您的 Google 账户的登录凭证。如果您没有此信息，请与 Google 账户管理员联系。
+ **Google BigQuery权限** — 要将您的Google账户与 Quick Sight 关联，请确保您的Google账户具有以下权限：
  + `Project` 级别的 `BigQuery Job User`。
  + `Dataset` 或 `Table` 级别的 `BigQuery Data Viewer`。
  + `Project` 级别的 `BigQuery Metadata Viewer`。

有关如何检索先前必备信息的信息，请参阅[使用Google Cloud BigQuery和 Quick Sight 释放统一商业智能的力量](https://aws.amazon.com/blogs/business-intelligence/unlock-the-power-of-unified-business-intelligence-with-google-cloud-bigquery-and-amazon-quicksight/)。

使用以下步骤将您的 Quick 帐户与您的Google BigQuery数据源关联。

**从 Quick Sight 创建与Google BigQuery数据源的新连接**

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

1. 从左侧导航窗格中选择 “**数据**”。

1. 选择**创建**，然后选择**新建数据集**

1. 选择 **Google BigQuery** 磁贴。

1. 添加您之前在先决条件部分记录的数据来源详细信息：
   + **数据来源名称** – 数据来源的名称。
   + **项目 ID** – Google Platform 项目 ID。此字段区分大小写。
   + **数据集区域** – 您要连接到的项目的 Google 云平台数据集区域。

1. 选择**登录**。

1. 在打开的新窗口中，输入您要连接的 Google 账户的登录凭证。

1. 选择 “**继续**” 以授予 Quick Sight 访问权限Google BigQuery。

1. 创建新的数据来源连接后，继续执行以下过程中的 [Step 4](#gbq-step-4)。

## 为添加新的 Quick Sight 数据集 Google BigQuery
<a name="quicksight-google-big-query-create"></a>

与 Google BigQuery 创建数据来源连接后，您可以创建 Google BigQuery 数据集以供分析。使用 Google BigQuery 的数据集只能存储在 SPICE 中。

**使用 Google BigQuery 创建数据集**

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

1. 从起始页中，选择**数据**。

1. 选择**创建**，然后选择**新建数据集**

1. 选择**Google BigQuery**磁贴，然后选择**创建数据集**。

1. <a name="gbq-step-4"></a>对于**表**，执行以下操作之一：
   + 选择要使用的表。
   + 选择**使用自定义 SQL** 以使用您自己的个人 SQL 语句。有关在 Quick Sight 中使用自定义 SQL 的更多信息，请参阅[使用 SQL 自定义数据](adding-a-SQL-query.md)。

1. 选择**编辑/预览**。

1. （可选）在打开的**数据准备**页面中，您可以使用计算字段、筛选器和联接为数据添加自定义项。

1. 完成更改后，选择**保存**以保存并关闭数据集。

# 使用 Google Sheets 数据来源创建数据集
<a name="create-a-dataset-google-sheets"></a>

Google Sheets 是一款基于 Web 的电子表格应用程序，使用户能够实时创建、编辑和协作处理数据。凭借其全面的函数和公式，它成为商业智能和分析的强大数据来源。用户可以高效地组织、分析和分享见解，而其无缝协作功能使其成为从事数据驱动型项目的团队的理想平台。

## Amazon Quick 中的管理员配置
<a name="google-sheets-admin-config"></a>

Amazon Quick 管理员需要执行一次性设置才能启用 Google 表格作为数据源。有关详细说明和重要注意事项，请参阅[博客](https://aws.amazon.com//blogs/business-intelligence/transform-your-google-sheets-data-into-powerful-analytics-with-amazon-quicksight/)。

## 使用 Google Sheets 数据来源创建数据集
<a name="google-sheets-create-dataset"></a>

按照以下过程使用 Google Sheets 数据来源创建数据集。

**使用 Google Sheets 数据来源创建数据集**

1. 在快速入门页面中，选择**数据集**。

1. 在**数据集**页面上，选择**新数据集**。

1. 选择**谷歌表格**。

1. 输入数据来源的名称，然后选择**连接**。

1. 当重定向到 Google 的登录页面时，请执行以下操作：

   1. 输入您的 Google 账户凭证，然后选择**下一步**。

   1. 查看授权您的 AWS 帐号连接 Google 表格的权限，然后选择 “**继续**”。

1. 在**选择您的表**菜单中，找到您的数据。该菜单显示您的 Google 账户中的所有文件夹、子文件夹、工作表和选项卡。要显示选项卡，请从显示的列表中选择一个工作表。

1. 选择要使用的选项卡。

1. 选择**编辑/预览数据**以导航至数据准备页面。选择**添加数据**以包含任何其他选项卡。

1. 配置联接，然后选择 “**发布和可视化**”，使用 Quick Sight 分析您的 Google 表格数据。

**注意**  
此连接器仅支持 SPICE 功能。
如果您的 OAuth 令牌过期（在摄取错误报告中或创建新数据集时可见），请通过在数据源上选择 **“编辑”** 并对其进行更新来重新授权。

# 使用 Apache Impala 数据来源创建数据集
<a name="create-a-dataset-impala"></a>

Apache Impala 是一款高性能大规模并行处理 (MPP) SQL 查询引擎，旨在在 Apache Hadoop 上原生运行。使用以下步骤在 Quick Sight 和 Apache Impala 之间建立安全连接。

Quick Sight 和 Apache Impala 之间的所有流量都使用 SSL 进行加密。Quick Sight 支持 Impala 连接的标准用户名和密码身份验证。

要建立连接，您需要在 Impala 实例中配置 SSL 设置，准备身份验证凭据，使用您的 Impala 服务器详细信息在 Quick Sight 中设置连接，并验证连接以确保数据访问安全。

**使用 Apache Impala 数据来源创建数据集**

1. 在快速入门页面上，选择**数据**。

1. 在**数据**页面上，选择**创建**。

1. 选择**数据来源**。

1. 选择 **Impala**，然后选择 “**下一步**”。

1. 输入数据来源的名称。

1. 对于公共连接：

   1. 输入**数据库服务器**、**HTTP 路径**、**端口**、**用户名**和**密码**的连接详细信息。

   1. 验证成功后，选择**创建数据来源**。

1. 对于私有连接：

   1. 在输入连接详细信息之前，请与管理员协调以设置 VPC 连接。

     您或您的管理员可以[在 Quick 中配置 VPC 连接](vpc-creating-a-connection-in-quicksight.md)。SSL 默认启用，以确保数据传输安全。如果遇到连接验证错误，请验证连接和 VPC 详细信息。

     如果问题仍然存在，请咨询您的管理员以确认您的证书颁发机构已包含在 Quick Sight [批准的证书列表中](configure-access.md#ca-certificates)。

1. 在**选择您的表**菜单中，您可以：

   1. 选择特定架构或表，然后选择**选择**。

   1. 选择**使用自定义 SQL** 来编写您自己的 SQL 查询。

1. 完成选择后，您将被重定向到数据准备页面。对数据进行任何调整，然后选择 “**发布和可视化**”，在 Quick Sight 中分析您的 Impala 数据。

**注意**  
此连接器支持：  
用户名和密码身份验证
公共和私有连接
表发现和自定义 SQL 查询
摄取期间的完整数据刷新
仅限 SPICE 存储

# 使用 Microsoft Excel 文件创建数据集
<a name="create-a-data-set-excel"></a>

要使用 Microsoft Excel 文件数据来源创建数据集，请从本地或网络驱动器上传 .xlsx 文件。数据将导入到 [SPICE](spice.md) 中。

 有关使用 Amazon S3 数据来源创建新的 Amazon S3 数据集的更多信息，请参阅 [使用现有的 Amazon S3 数据来源创建数据集](create-a-data-set-existing.md#create-a-data-set-existing-s3) 或 [使用 Amazon S3 文件创建数据集](create-a-data-set-s3.md)。

**基于 Excel 文件创建数据集**

1. 选中 [数据来源限额](data-source-limits.md) 以确保目标文件未超出数据来源限制。

1. 在快速入门页面上，选择**数据**。

1. 在**数据**页面上，选择**创建**，然后选择**新数据集**。

1. 选择 **Upload a file** (上传文件)。

1. 在 **Open** 对话框中，选择一个文件，然后选择 **Open**。

   文件大小必须不超过 1 GB 才能上传到 Quick Sight。

1. 如果 Excel 文件包含多个工作表，请选择要导入的工作表。以后可通过准备数据对此进行更改。

1. 
**注意**  
在下列屏幕中，有几种方式可准备数据。每一种方式都会转到 **Prepare Data** 屏幕。该屏幕与数据导入完成后可以访问的屏幕相同。即使在上传完成后，您也可以在该屏幕中更改上传设置。

    选择 **Select** 确认设置。或者，您可以选择 **Edit/Preview data (编辑/预览数据)** 以立即准备数据。

   下一个屏幕显示数据预览。数据预览不能直接更改。

1. 如果数据标题和内容看起来不正确，您可以选择**编辑设置并准备数据**以更正文件上传设置。

   否则，请选择**下一步**。

1. 在 **Data Source Details** 屏幕上，您可以选择 **Edit/Preview data**。您可以在**准备数据**屏幕中指定数据集名称。

   如果不需要准备数据，可以选择原样使用数据创建分析。选择**可视化**。这样做会使数据集与源文件同名，并转至**分析**屏幕。要了解数据准备和 Excel 上传设置的更多信息，请参阅[使用 Amazon Quick Sight 准备数据](preparing-data.md)。

**注意**  
如果您想随时对文件进行更改（例如添加新字段），则必须在 Microsoft Excel 中进行更改，并使用 Quick Sight 中的更新版本创建新的数据集。有关更改数据集可能产生的影响的更多信息，请参阅 [编辑数据集时要考虑的事项](edit-a-data-set.md#change-a-data-set)。

# 使用 Presto 创建数据来源
<a name="create-a-data-source-presto"></a>

Presto（也称为 PrestoDB）是一种开源的分布式 SQL 查询引擎，设计用于针对任何规模的数据进行快速分析查询。它同时支持非关系数据来源和关系数据来源。支持的非关系数据源包括 Hadoop 分布式文件系统 (HDFS)、Amazon S3、Cassandra、MongoDB 和。 HBase支持的关系数据来源包括 MySQL、PostgreSQL、Amazon Redshift、Microsoft SQL Server 和 Teradata。

有关 Presto 的更多信息，请参阅以下内容：
+ [presto 简介，](https://aws.amazon.com/big-data/what-is-presto/)网站上对 Presto 的描述。 AWS 
+ 在《亚马逊 EMR 发布指南》中@@ [使用亚马逊弹性 MapReduce (EMR) 创建 prest *o* 集群](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-presto.html)。
+ 有关 Presto 的一般信息，请参阅 [Presto 文档](https://trino.io/docs/current/)。

您通过 Presto 查询引擎运行的查询结果可以转换为 Quick Sight 数据集。Presto 在后端数据库中处理分析查询。然后，它将结果返回给 Quick Sight 客户端。可以直接通过 Presto 查询数据，也可以将查询结果导入 SPICE。

在使用 Quick Sight 作为 Presto 客户端运行查询之前，请务必配置数据源配置文件。您需要在 Quick Sight 中为要访问的每个 Presto 数据源提供数据源配置文件。可以按照以下过程创建到 VPC 的连接。

**从 Amazon Quick Sight（控制台）创建与 presto 数据源的新连接**

1. 在 Amazon Quick Sight 起始页面上，选择左侧**的数据**。

1. 选择**创建**，然后选择**新数据集**。

1. 选择 **Presto** 磁贴。
**注意**  
在大多数浏览器中，您可以使用 Ctrl-F 或 Cmd-F 打开搜索框，然后输入 **presto** 进行查找。

1. 添加新数据来源的设置：
   + ****数据来源名称**** – 为您的数据来源输入描述性名称。此名称显示在**数据集**屏幕底部的**现有数据来源**部分中。
   + ****连接类型**** – 选择连接到 Presto 时需要使用的连接类型。

     要通过公有网络进行连接，请选择**公有网络**。

     如果您使用公有网络，则必须使用轻型目录访问协议 (LDAP) 保护您的 Presto 服务器和验证身份。有关将 Presto 配置为使用 LDAP 的信息，请参阅 Presto 文档中的 [LDAP authentication](https://trino.io/docs/current/security/ldap.html)。

     要通过虚拟专用连接进行连接，请从 **VPC 连接**列表中选择相应的 VPC 名称。

     如果您的 Presto 服务器允许未经身份验证的访问，则 AWS 要求您使用私有 VPC 连接安全地连接到该服务器。有关配置新 VPC 的信息，请参阅[在 Amazon Quick Sight 中配置 VPC 连接](working-with-aws-vpc.md)。
   + ****数据库服务器**** – 数据库服务器的名称。
   + ****端口****-服务器用来接受来自 Amazon Quick Sight 的传入连接的端口 
   + ****目录**** – 要使用的目录的名称。
   + ****需要身份验证**** –（可选）仅当选择 VPC 连接类型时，才会显示此选项。如果您要连接的 Presto 数据来源不需要身份验证，请选择**否**。否则，请保留默认设置（**是**）。
   + ****用户名**** – 输入用于连接到 Presto 的用户名。Quick Sight 将相同的用户名和密码应用于使用此数据源配置文件的所有连接。如果您想与其他账户分开监控 Quick Sight，请为每个 Quick Sight 数据源配置文件创建一个 Presto 帐户。

     您使用的 Presto 账户必须能够访问数据库，并至少能够在一个表上运行 `SELECT` 语句。
   + ****密码**** – 要与 Presto 用户名一起使用的密码。Amazon Quick Sight 会加密您在数据源配置文件中使用的所有凭证。有关更多信息，请参阅 [Amazon Quick 中的数据加密](data-encryption.md)。
   + ****启用 SSL**** – 默认启用 SSL。

1. 选择**验证连接**以测试设置。

1. 验证您的设置后，选择**创建数据来源**以完成连接。

# 使用 Snowflake 搭配 Amazon Quick
<a name="connecting-to-snowflake"></a>

Snowflake 是一个 AI 数据云平台，提供从数据仓库和协作到数据科学和生成式人工智能的数据解决方案。Snowflake 是一家拥有多项 AWS 认证的[AWS 合作伙伴](https://partners.amazonaws.com/partners/001E000000d8qQcIAI/Snowflake)，其中包括生成式 AI、Machine Learning、数据和分析以及零售领域的 AWS ISV 能力。

Amazon Quick Sight 提供了两种连接 Snowflake 的方式：使用你的 Snowflake 登录凭证或使用客户证书。 OAuth 使用以下部分来了解这两种连接方法。

**Topics**
+ [使用登录凭据创建与 Snowflake 的 Quick Sight 数据源连接](#create-connection-to-snowflake)
+ [使用客户端凭OAuth据创建与 Snowflake 的 Quick Sight 数据源连接](#create-connection-to-snowflake-oauth-credentials)

## 使用登录凭据创建与 Snowflake 的 Quick Sight 数据源连接
<a name="create-connection-to-snowflake"></a>

 使用本节学习如何使用你的 Snowflake 登录凭据在 Quick Sight 和 Snowflake 之间建立连接。Quick Sight 和 Snowflake 之间的所有流量均通过 SSL 启用。

**在 Quick Sight 和 Snowflake 之间创建连接**

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

1. 在左侧导航窗格中，选择**数据**，然后选择**创建**，然后选择**新建数据集**。

1. 选择 **Snowflake** 数据来源卡片。

1. 在出现的弹出窗口中，输入以下信息：

   1. 对于**数据来源名称**，为您的 Snowflake 数据来源连接输入描述性名称。您可以通过与 Snowflake 的连接创建许多数据集，因此最好使用简洁的名称。

   1. 对于**连接类型**，选择正在使用的网络类型。如果您的数据是公开共享的，请选择**公共网络**。如果数据位于 VPC 内，请选择 **VPC**。要在 Quick Sight 中配置 VPC 连接，请参阅[在 Amazon Quick 中管理 VPC 连接](vpc-creating-a-connection-in-quicksight.md)。

   1. 对于**数据库服务器**，输入在 Snowflake 连接详细信息中指定的主机名。

1. 在**数据库名称和仓库**中，输入要连接的相应 Snowflake 数据库和仓库。

1. 对于**用户名**和**密码**，输入您的 Snowflake 凭证。

在 Quick Sight 账户和 Snowflake 账户之间成功创建数据源连接后，就可以开始[创建数据集](creating-data-sets.md)创建包含 Snowflake 数据的数据源连接了。

## 使用客户端凭OAuth据创建与 Snowflake 的 Quick Sight 数据源连接
<a name="create-connection-to-snowflake-oauth-credentials"></a>

[你可以使用OAuth客户凭据通过 Quick Sight 将你的 Quick Sight 账户与 Snowflake 关联起来。 APIs](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateDataSource.html) *OAuth*是一种标准授权协议，通常用于具有高级安全要求的应用程序。当你使用 OAuth 客户端凭据连接到 Snowflake 时，你可以使用 Quick Sight APIs 和 Quick Sight 用户界面创建包含 Snowflake 数据的数据集。有关在 Snowflake 中配置 OAuth 的更多信息，请参阅 [Snowflake OAuth overview](https://docs.snowflake.com/en/user-guide/oauth-snowflake-overview)。

Quick Sight 支持`client credentials`OAuth授权类型。 OAuth客户端凭证用于获取用于 machine-to-machine通信的访问令牌。此方法适用于客户端需要访问服务器上托管的资源而无需用户参与的情况。

在 OAuth 2.0 的客户端凭证流中，有几种客户端身份验证机制可用于向授权服务器对客户端应用程序进行身份验证。Quick Sight 支持基于 OAuth Snowflake 的客户端凭证，用于以下两种机制：
+ **令牌（基于客户端密钥的 OAuth）**：基于密钥的客户端身份验证机制与客户端凭证一起使用来授予流，以便向授权服务器进行身份验证。此身份验证方案要求将 OAuth 客户端应用的 `client_id` 和 `client_secret` 存储在 Secrets Manager 中。
+ **X509（基于客户端私有密钥 JWT 的 OAuth）**：基于 X509 证书密钥的解决方案为 OAuth 机制提供了额外的安全层，使用客户端证书（而非客户端密钥）进行身份验证。此方法主要由私有客户端使用，他们使用此方法向授权服务器进行身份验证，并且两个服务之间具有很强的信任度。

Quick Sight 已验证与以下身份提供商的OAuth连接：
+ OKTA
+ PingFederate

### 在 Secrets Manager 中存储 OAuth 凭证
<a name="create-connection-to-snowflake-oauth-store-credentials"></a>

OAuth 客户端凭证仅用于 machine-to-machine用例，不是为交互式而设计的。要在 Quick Sight 和 Snowflake 之间创建数据源连接，请在 Secrets Manager 中创建一个包含你的客户端应用程序凭据的新密钥。OAuth使用新密钥创建的秘密 ARN 可用于在 Quick Sight 中创建包含 Snowflake 数据的数据集。有关在 Quick Sight 中使用 Secrets Manager 密钥的更多信息，请参阅[在 Quick 中使用 AWS Secrets Manager 密钥而不是数据库凭证](secrets-manager-integration.md)。

您需要在 Secrets Manager 中存储的凭证由您使用的 OAuth 机制决定。基于 X509 OAuth 的密钥需要以下 key/value 配对：
+ `username`：连接到 Snowflake 时要使用的 Snowflake 账户用户名
+ `client_id`：OAuth 客户端 ID
+ `client_private_key`：OAuth 客户端私有密钥
+ `client_public_key`：OAuth 客户端证书公钥及其加密算法（例如 `{"alg": "RS256", "kid", "cert_kid"}`）

基于令牌OAuth的密钥需要以下 key/value 配对：
+ `username`：连接到 Snowflake 时要使用的 Snowflake 账户用户名
+ `client_id`：OAuth 客户端 ID
+ `client_secret`：OAuth 客户端密钥

### 使用 Quick Sight 创建 Snowflake OAuth 连接 APIs
<a name="create-connection-to-snowflake-oauth-example"></a>

在 Secrets Manager 中创建包含你的 Snowflake OAuth 凭据的密钥并将你的 Quick 账户关联到 Secrets Manager 后，你可以使用 Quick Sight 和 SDK 在 Quick Sight 和 Snowflake 之间建立数据源连接。 APIs 以下示例使用令牌OAuth客户端凭据创建 Snowflake 数据源连接。

```
{
    "AwsAccountId": "AWSACCOUNTID",
    "DataSourceId": "UNIQUEDATASOURCEID",
    "Name": "NAME",
    "Type": "SNOWFLAKE",
    "DataSourceParameters": {
        "SnowflakeParameters": {
            "Host": "HOSTNAME",
            "Database": "DATABASENAME",
            "Warehouse": "WAREHOUSENAME",
            "AuthenticationType": "TOKEN",
            "DatabaseAccessControlRole": "snowflake-db-access-role-name",
            "OAuthParameters": {
              "TokenProviderUrl": "oauth-access-token-endpoint", 
              "OAuthScope": "oauth-scope",
              "IdentityProviderResourceUri" : "resource-uri",
              "IdentityProviderVpcConnectionProperties" : {
                "VpcConnectionArn": "IdP-VPC-connection-ARN" 
             }
        }
    },
    "VpcConnectionProperties": {
        "VpcConnectionArn": "VPC-connection-ARN-for-Snowflake"
    }
    "Credentials": {
        "SecretArn": "oauth-client-secret-ARN"
    }
}
```

有关 CreateDatasource API 操作的更多信息，请参阅[CreateDataSource](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateDataSource.html)。

在 Quick Sight 和 Snowflake 之间建立连接并使用 Quick Sight APIs 或 SDK 创建数据源后，新的数据源将显示在 Quick Sight 中。Quick Sight 作者可以使用此数据源来创建包含 Snowflake 数据的数据集。表的显示基于在 `CreateDataSource` API 调用中传递的 `DatabaseAccessControlRole` 参数中使用的角色。如果在创建数据来源连接时未定义此参数，则使用默认 Snowflake 角色。

在 Quick Sight 账户和 Snowflake 账户之间成功创建数据源连接后，就可以开始[创建数据集](creating-data-sets.md)创建包含 Snowflake 数据的数据源连接了。

# 在 Amazon Quick Sight 中使用 Star
<a name="connecting-to-starburst"></a>

Starburst 是一项功能齐全的数据湖分析服务，建立在大规模并行处理（MPP）查询引擎 Trino 之上。使用本节学习如何从 Amazon Quick Sight 连接到 Starburst。Quick Sight 和 Starburst 之间的所有流量均通过 SSL 启用。如果你要连接 Starburst Galaxy，你可以通过登录你的 Starburst Galaxy 账户，然后选择 Partner Connect，然后选择 **Quick** Sight 来获取必要的**连接**详情。您应该能够看到诸如主机名和端口之类的信息。Amazon Quick Sight 支持 Starburst 的基本用户名和密码身份验证。

Quick Sight 提供了两种连接 Starburst 的方式：使用你的 Starburst 登录凭据或使用OAuth客户凭据。使用以下部分来了解这两种连接方法。

**Topics**
+ [使用登录凭据创建与 Starburst 的 Quick Sight 数据源连接](#create-connection-to-starburst)
+ [使用OAuth客户端凭据创建与 Starburst 的 Quick Sight 数据源连接](#create-connection-to-starburst-oauth)

## 使用登录凭据创建与 Starburst 的 Quick Sight 数据源连接
<a name="create-connection-to-starburst"></a>

1. 首先创建一个新数据集。在左侧导航窗格中，选择**数据**，然后选择**创建**，然后选择**新建数据集**。

1. 选择 **Starburst** 数据来源卡片。

1. 选择 Starburst 产品类型。为本地 Starburst 实例选择 **Starburst Enterprise**。为托管式实例选择 **Starburst Galaxy**。

1. 对于**数据来源名称**，为您的 Starburst 数据来源连接输入描述性名称。您可以通过与 Starburst 的连接创建许多数据集，因此最好使用简洁的名称。

1. 对于**连接类型**，选择您正在使用的网络类型。如果您的数据是公开共享的，请选择**公共网络**。如果您的数据位于 VPC 内，请选择 **VPC**。要在 Amazon Quick Sight 中[配置 VPC 连接，请参阅在 Amazon Quick Sight 中配置 VPC 连接](https://docs.aws.amazon.com/quicksight/latest/user/vpc-creating-a-connection-in-quicksight.html)。此连接类型不适用于 Starburst Galaxy。

1. 对于**数据库服务器**，输入在 Starburst 连接详细信息中指定的主机名。

1. 对于**目录**，输入在 Starburst 连接详细信息中指定的目录。

1. 对于**端口**，输入在 Starburst 连接详细信息中指定的端口。Starburst Galaxy 的默认端口为 443。

1. 对于**用户名**和**密码**，输入 Starburst 连接凭证。

1. 要验证连接是否正常，请选择**验证连接**。

1. 要完成并创建数据来源，请选择**创建数据来源**。

**注意**  
Amazon Quick Sight 和 Starburst 之间的连接已使用 Starburst 版本 420 进行了验证。

在 Quick Sight 和 Starburst 账户之间成功创建数据源连接后，就可以开始[创建数据集](creating-data-sets.md)连接包含 Starburst 数据了。

## 使用OAuth客户端凭据创建与 Starburst 的 Quick Sight 数据源连接
<a name="create-connection-to-starburst-oauth"></a>

你可以使用OAuth客户凭据通过 Quick Sight 将你的 Quick Sight 账户与 Starburs [t APIs](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateDataSource.html) 关联起来。 *OAuth*是一种标准授权协议，通常用于具有高级安全要求的应用程序。当你使用OAuth客户端凭据连接到 Starburst 时，你可以使用 Quick Sight APIs 和 Quick Sight 用户界面创建包含 Starburst 数据的数据集。有关在 Starburst 中配置 OAuth 的更多信息，请参阅 [OAuth 2.0 authentication](https://docs.starburst.io/latest/security/oauth2.html)。

Quick Sight 支持`client credentials`OAuth授权类型。 OAuth客户端凭证用于获取用于 machine-to-machine通信的访问令牌。此方法适用于客户端需要访问服务器上托管的资源而无需用户参与的情况。

在 OAuth 2.0 的客户端凭证流中，有几种客户端身份验证机制可用于向授权服务器对客户端应用程序进行身份验证。Quick Sight 支持基于 OAuth Starburst 的客户端凭证，用于以下两种机制：
+ **令牌（基于客户端密钥的 OAuth）**：基于密钥的客户端身份验证机制与客户端凭证一起使用来授予流，以便向授权服务器进行身份验证。此身份验证方案要求将 OAuth 客户端应用的 `client_id` 和 `client_secret` 存储在 Secrets Manager 中。
+ **X509（基于客户端私有密钥 JWT 的 OAuth）**：基于 X509 证书密钥的解决方案为 OAuth 机制提供了额外的安全层，使用客户端证书（而非客户端密钥）进行身份验证。此方法主要由私有客户端使用，他们使用此方法向授权服务器进行身份验证，并且两个服务之间具有很强的信任度。

Quick Sight 已验证与以下身份提供商的OAuth连接：
+ OKTA
+ PingFederate

### 在 Secrets Manager 中存储 OAuth 凭证
<a name="create-connection-to-starburst-oauth-store-credentials"></a>

OAuth客户端凭证仅用于 machine-to-machine用例，不是为交互式而设计的。要在 Quick Sight 和 Starburst 之间创建数据源连接，请在 Secrets Manager 中创建一个包含客户端应用程序凭据的新密钥。OAuth使用新密钥创建的秘密 ARN 可用于在 Quick Sight 中创建包含 Starburst 数据的数据集。有关在 Quick Sight 中使用 Secrets Manager 密钥的更多信息，请参阅[在 Quick 中使用 AWS Secrets Manager 密钥而不是数据库凭证](secrets-manager-integration.md)。

您需要在 Secrets Manager 中存储的凭证由您使用的 OAuth 机制决定。基于 X509 OAuth 的密钥需要以下 key/value 配对：
+ `username`：连接到 Starburst 时要使用的 Starburst 账户用户名
+ `client_id`：OAuth 客户端 ID
+ `client_private_key`：OAuth 客户端私有密钥
+ `client_public_key`：OAuth 客户端证书公钥及其加密算法（例如 `{"alg": "RS256", "kid", "cert_kid"}`）

基于令牌OAuth的密钥需要以下 key/value 配对：
+ `username`：连接到 Starburst 时要使用的 Starburst 账户用户名
+ `client_id`：OAuth 客户端 ID
+ `client_secret`：OAuth 客户端密钥

### 使用 Quick Sight 创建 Starburst OAuth 连接 APIs
<a name="create-connection-to-starburst-oauth-example"></a>

在 Secrets Manager 中创建包含你的 Starburst OAuth 凭据的密钥并将你的 Quick 账户关联到 Secrets Manager 后，你可以使用 Quick Sight 和 SDK 在 Quick Sight 和 Starburst APIs 之间建立数据源连接。以下示例使用令牌 OAuth 客户端凭证创建 Starburst 数据来源连接。

```
{
    "AwsAccountId": "AWSACCOUNTID",
    "DataSourceId": "DATASOURCEID",
    "Name": "NAME",
    "Type": "STARBURST",
    "DataSourceParameters": {
        "StarburstParameters": {
            "Host": "STARBURST_HOST_NAME",
            "Port": "STARBURST_PORT",
            "Catalog": "STARBURST_CATALOG",
            "ProductType": "STARBURST_PRODUCT_TYPE",     
            "AuthenticationType": "TOKEN",
            "DatabaseAccessControlRole": "starburst-db-access-role-name",
            "OAuthParameters": {
              "TokenProviderUrl": "oauth-access-token-endpoint", 
              "OAuthScope": "oauth-scope",
              "IdentityProviderResourceUri" : "resource-uri",
              "IdentityProviderVpcConnectionProperties" : {
                "VpcConnectionArn": "IdP-VPC-connection-ARN"
            }
        }
    },
    "VpcConnectionProperties": {
        "VpcConnectionArn": "VPC-connection-ARN-for-Starburst"
    },
    "Credentials": {
        "SecretArn": "oauth-client-secret-ARN"
    }
}
```

有关 CreateDatasource API 操作的更多信息，请参阅[CreateDataSource](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateDataSource.html)。

在 Quick Sight 和 Starburst 之间建立连接并使用 Quick Sight APIs 或 SDK 创建数据源后，新的数据源将显示在 Quick Sight 中。Quick Sight 作者可以使用此数据源来创建包含 Starburst 数据的数据集。表的显示基于在 `CreateDataSource` API 调用中传递的 `DatabaseAccessControlRole` 参数中使用的角色。如果在创建数据来源连接时未定义此参数，则使用默认 Starburst 角色。

在 Quick Sight 和 Starburst 账户之间成功创建数据源连接后，就可以开始[创建数据集](creating-data-sets.md)连接包含 Starburst 数据了。

# 从 SaaS 源创建数据来源和数据集
<a name="connecting-to-saas-data-sources"></a>

要分析和报告来自软件即服务 (SaaS) 应用程序的数据，您可以使用 SaaS 连接器直接从 Quick Sight 访问您的数据。SaaS 连接器简化了使用 OAuth 访问第三方应用程序源的过程，而不需要将数据导出到中间数据存储。

您可以使用基于云或基于服务器的 SaaS 应用程序实例。要连接到企业网络上运行的 SaaS 应用程序，请确保 Quick Sight 可以通过网络访问该应用程序的域名系统 (DNS) 名称。如果 Quick Sight 无法访问 SaaS 应用程序，则会生成未知主机错误。

以下是一些您可以使用 SaaS 数据的方法示例：
+ 使用 Jira 跟踪问题和错误的工程团队可以报告开发人员效率和错误解决情况。
+ 营销组织可以将 Quick Sight 与 Adobe Analytics 集成，以构建整合的仪表板，以可视化其在线和网络营销数据。

使用以下过程，通过连接到利用软件即服务（SaaS）提供的源来创建数据来源和数据集。在本步骤中，我们使用与的连接 GitHub 作为示例。其他 SaaS 数据来源遵循相同的流程，但屏幕（特别是 SaaS 屏幕）可能看起来不同。

**通过 SaaS 连接到源来创建数据来源和数据集**

1. 在快速入门页面上，选择**数据**。

1. 在**数据**页面上，选择**创建**，然后选择**新建数据集**。

1. 选择代表您要使用的 SaaS 源的图标。例如，您可以选择 Adobe Analytics 或 GitHub。

   对于使用 OAuth 的源，连接器将您转到 SaaS 站点以授权连接，然后才能创建数据来源。

1. 为数据来源选择一个名称，然后输入该名称。如果具有更多屏幕提示，请输入相应的信息。然后选择**创建数据来源**。

1. 如果系统显示提示，请在 SaaS 登录页面上输入您的凭证。

1. 出现提示时，授权您的 SaaS 数据源与 Quick Sight 之间的连接。

   以下示例显示了 Quick Sight 访问 GitHub 账户以查看 Quick Sight 文档的授权。
**注意**  
Quick Sight 文档现已在上线 GitHub。如果要更改本用户指南，则可以使用直接 GitHub 对其进行编辑。

   （可选）如果您的 SaaS 帐户是组织帐户的一部分，则在授权 Quick Sight 的过程中，可能会要求您申请组织访问权限。如果要执行此操作，请按照 SaaS 屏幕上的提示进行操作，然后选择授权 Quick Sight。

1. 授权完成后，请选择要连接到的表或对象。然后选择 **Select**。

1. 在**完成数据集创建**屏幕上，选择以下选项之一：
   + 要保存数据来源和数据集，请选择**编辑/预览数据**。然后从顶部菜单栏中选择**保存**。
   + 要原样使用数据创建数据集和分析，请选择**可视化**。此选项可自动保存数据来源和数据集。

     要在创建分析前准备数据，您也可以选择**编辑/预览数据**。数据准备屏幕将打开。有关数据准备的更多信息，请参阅[准备数据集示例](preparing-data-sets.md)。

以下限制适用：
+ SaaS 源必须支持 REST API 操作，Quick Sight 才能连接到它。
+ 如果您要连接到 Jira，则 URL 必须是公有地址。
+ 如果没有足够的 [SPICE](spice.md) 容量，请选择 **Edit/Preview data** (编辑/预览数据)。在数据准备屏幕中，您可以从数据集中删除字段以缩减其大小，也可以应用筛选条件减少返回的行数。有关数据准备的更多信息，请参阅[准备数据集示例](preparing-data-sets.md)。

# 从 Salesforce 创建数据集
<a name="create-a-data-set-salesforce"></a>

使用以下过程连接到 Salesforce 并选择报告或对象以提供数据，从而创建数据集。

**使用 Salesforce 从报告或对象创建数据集**

1. 选中 [数据来源限额](data-source-limits.md) 以确保您的目标报告或对象不超出数据来源限制。

1. 在快速入门页面上，选择**数据**。

1. 在**数据**页面上，选择**创建**，然后选择**新数据集**。

1. 选择 **Salesforce** 图标。

1. 为数据来源输入一个名称，然后选择**创建数据来源**。

1. 在 Salesforce 登录页面上，输入您的 Salesforce 凭证。

1. 对于 **Data elements: contain your data**，选择 **Select**，然后选择 **REPORT** 或 **OBJECT**。
**注意**  
不支持将已加入的报表作为 Quick Sight 数据源。

1. 请选择以下选项之一：
   + 要在创建分析前准备数据，请选择 **Edit/Preview data** 打开数据准备。有关数据准备的更多信息，请参阅[准备数据集示例](preparing-data-sets.md)。
   + 否则，请选择一个报告或对象，然后选择 **Select**。

1. 请选择以下选项之一：
   + 要原样使用数据创建数据集和分析，请选择**可视化**。
**注意**  
如果没有足够的 [SPICE](spice.md) 容量，请选择 **Edit/Preview data** (编辑/预览数据)。在数据准备期间，您可以从数据集中删除字段以缩减其大小，也可以应用筛选条件减少返回的行数。有关数据准备的更多信息，请参阅[准备数据集示例](preparing-data-sets.md)。
   + 要在创建分析前准备数据，请选择 **Edit/Preview data** 打开所选报告或对象的数据准备。有关数据准备的更多信息，请参阅[准备数据集示例](preparing-data-sets.md)。

**注意**  
用户通过命名空间隔离进行身份验证的嵌入式控制台部署不支持 Salesforce 连接器。 OAuth 身份验证流程需要直接访问 Amazon Quick Sight 控制台才能完成登录过程。

# 将 Trino 与 Amazon Quick Sigh
<a name="connecting-to-trino"></a>

Trino 是一款大规模并行处理（MPP）查询引擎，旨在快速查询包含数 PB 数据的数据湖。使用本节学习如何从 Amazon Quick Sight 连接到 Trino。Amazon Quick Sight 和 Trino 之间的所有流量均通过 SSL 启用。Amazon Quick Sight 支持对 Trino 进行基本的用户名和密码身份验证。

## 为 Trino 创建数据来源连接
<a name="create-connection-to-trino"></a>

1. 首先创建一个新数据集。从左侧导航窗格中选择 “**数据**”。选择**创建**，然后选择**新数据集**。

1. 选择 **Trino** 数据来源卡片。

1. 对于**数据来源名称**，为您的 Trino 数据来源连接输入描述性名称。您可以通过与 Trino 的连接创建许多数据集，因此最好使用简洁的名称。

1. 对于**连接类型**，选择您正在使用的网络类型。如果您的数据是公开共享的，请选择**公共网络**。如果您的数据位于 VPC 内，请选择 **VPC**。要在 Amazon Quick Sight 中[配置 VPC 连接，请参阅在 Amazon Quick Sight 中配置 VPC 连接](https://docs.aws.amazon.com/quicksight/latest/user/vpc-creating-a-connection-in-quicksight.html)。

1. 对于**数据库服务器**，输入在 Trino 连接详细信息中指定的主机名。

1. 对于**目录**，输入在 Trino 连接详细信息中指定的目录。

1. 对于**端口**，输入在 Trino 连接详细信息中指定的端口。

1. 对于**用户名**和**密码**，输入 Trino 的连接凭证。

1. 要验证连接是否正常，请选择**验证连接**。

1. 要完成并创建数据来源，请选择**创建数据来源**。

## 为 Trino 添加新的 Amazon Quick Sight 数据集
<a name="create-dataset-using-trino"></a>

完成 Trino 的[数据来源创建过程](https://docs.aws.amazon.com/create-connection-to-starburst.html)后，您可以创建用于分析的 Trino 数据集。您可以使用新的或现有的 Trino 数据来源创建新的数据集。当您创建新的数据源时，Amazon Quick Sight 会立即引导您创建数据集，如下所示的步骤 3。如果您使用现有的数据来源创建新数据集，请从下面的步骤 1 开始操作。

要使用 Trino 数据来源创建数据集，请参阅以下步骤。

1. 从起始页中，选择**数据**。选择**创建**，然后选择**新数据集**。

1. 选择您创建的 Trino 数据源。

1. 选择**创建数据集**。

1. 要指定要连接的表，请选择一个架构。如果您不想选择架构，也可以使用自己的 SQL 语句。

1. 要指定要连接的表，请先选择要使用的**架构**。对于**表**，选择要使用的表。如果您更想使用自己的 SQL 语句，请选择**使用自定义 SQL**。

1. 选择**编辑/预览**。

1. （可选）要添加更多数据，请按以下步骤进行操作：

1. 选择右上角的**添加数据**。

1. 要连接到不同的数据，请选择**切换数据来源**，然后选择不同的数据集。

1. 按照提示完成数据添加。

1. 将新数据添加到同一数据集后，选择**配置此联接**（两个红点）。为每个附加表设置联接。

1. 如果要添加计算字段，请选择**添加计算字段**。

1. 清除任何您要省略的字段的复选框。

1. 更新任何您要更改的数据类型。

1. 完成后，选择**保存**，以保存并关闭数据集。

**注意**  
Quick Sight 和 Trino 之间的连接已使用 Trino 版本 410 进行了验证。

# 使用本地文本文件创建数据集
<a name="create-a-data-set-file"></a>

要使用本地文本文件数据来源创建数据集，请确定文件的位置，然后上传文件。在创建数据集期间，文件数据将自动导入到 [SPICE](spice.md) 中。

**基于本地文本文件创建数据集**

1. 选中 [数据来源限额](data-source-limits.md) 以确保目标文件未超出数据来源限制。

   支持的文件类型包括 .csv、.tsv、.json、.clf 或 .elf 文件。

1. 在快速入门页面上，选择**数据**。

1. 选择**创建**，然后选择**新数据集**。

1. 选择 **Upload a file** (上传文件)。

1. 在 **Open** 对话框中，浏览到一个文件并选中它，然后选择 **Open**。

   文件大小必须不超过 1 GB 才能上传到 Quick Sight。

1. 要在创建数据集之前准备数据，请选择**编辑/预览数据**。否则，选择 **Visualize** 以原样使用数据创建分析。

   如果选择前者，可在准备数据的过程中指定数据集名称。如果选择后者，将创建与源文件同名的数据集。要了解数据准备的更多信息，请参阅[使用 Amazon Quick Sight 准备数据](preparing-data.md)。

# 在 Amazon Quick Sight 中使用亚马逊 Timestream 数据
<a name="using-data-from-timestream"></a>

接下来，你可以找到如何使用 Amazon Quick Sight 连接到你的 Amazon Timestream 数据。有关简要概述，请参阅上的 [Amazon Timestream 入门和亚马逊 QuickSight](https://youtu.be/TzW4HWl-L8s)视频教程。 YouTube

## 为 Timestream 数据库创建新的 Amazon Quick Sight 数据源连接
<a name="create-connection-to-timestream"></a>

接下来，你可以找到如何从亚马逊 Quick Sight 连接到亚马逊 Timestream。

在继续操作之前，需要授权亚马逊 Quick Sight 才能连接到亚马逊 Timestream。如果未启用连接，则在尝试连接时会出现错误。Quick Sight 管理员可以授权 AWS 资源连接。要进行授权，请点击右上角的配置文件图标打开菜单。选择 “**管理**” QuickSight、“**安全和权限”**、**“添加或删除**”。然后启用 Amazon Timestream 的复选框，然后选择**更新**以进行确认。有关更多信息，请参阅 [配置 Amazon Quick Sight 对 AWS 数据源的访问权限](access-to-aws-resources.md)。

**连接到 Amazon Timestream**

1. 首先创建一个新数据集。从左侧的导航窗格中选择 “**数据**”。

1. 选择**创建**，然后选择**新数据集**。

1. 选择 Timestream 数据来源卡片。

1. 对于**数据来源名称**，为 Timestream 数据来源连接输入描述性名称，例如 `US Timestream Data`。您可以通过与 Timestream 的连接创建许多数据集，因此最好使用简洁的名称。

1. 选择**验证连接**，检查是否可以成功连接到 Timestream。

1. 选择**创建数据来源**以继续。

1. 对于**数据库**，选择**选择**以查看可用选项列表。

1. 选择要使用数据库，然后选择**选择**以继续。

1. 请执行以下操作之一：
   + 要将数据导入 Quick Sight 的内存引擎（名为SPICE），请选择 “**导入到” SPICE 以加快分析速度**。
   + 要允许 Quick Sight 在每次刷新数据集或使用分析或仪表板时对您的数据运行查询，请选择**直接查询您的数据**。

   如果要在使用 Timestream 数据的已发布控制面板上启用自动刷新，则 Timestream 数据集需要使用直接查询。

1. 选择**编辑/预览**，然后选择**保存**以保存数据集并将其关闭。

1. 对要在数据集中打开的与 Timestream 并发直接连接数重复这些步骤。例如，假设您要在 Quick Sight 数据集中使用四个表。当前，Quick Sight 数据集一次只能从 Timestream 数据源连接到一个表。要在同一个数据集中使用四个表，需要在 Quick Sight 中添加四个数据源连接。

## 管理 Timestream 数据的权限
<a name="dataset-permissions-for-timestream"></a>

以下过程介绍如何查看、添加和撤销权限以允许访问同一 Timestream 数据来源。您添加的用户必须是 Quick Sight 中的活跃用户，然后才能添加他们。

**编辑数据集的权限**

1. 选择左侧**的数据**，然后向下滚动以查找您的 Timestream 连接的数据集。以 `US Timestream Data` 为例。

1. 选择 **Timestream** 数据集将其打开。

1. 在打开的数据集详细信息页面上，选择**权限**选项卡。

   此时会显示当前权限。

1. 要添加权限，请选择**添加用户和组**，然后按照以下步骤操作：

   1. 添加用户或组以允许他们使用相同的数据集。

   1. 添加完要添加的所有人后，选择要应用于他们的**权限**。

1. （可选）要编辑权限，可以选择**查看者**或**拥有者**。
   + 选择**查看者**以允许读取权限。
   + 选择 “**所有者**” 以允许该用户编辑、共享或删除此 Quick Sight 数据源。

1. （可选）要撤销权限，请选择**撤销访问权限**。撤销某人的访问权限后，他们将无法创建、编辑、共享或删除数据集。

1. 完成后，请选择 **Close**。

## 为时间流添加新的 Quick Sight 数据集
<a name="create-dataset-using-timestream"></a>

拥有 Timestream 数据的现有数据来源连接后，您可以创建 Timestream 数据集以用于分析。

目前，您只能对数据集中的单个表使用 Timestream 连接。要将来自多个 Timestream 表的数据添加到单个数据集中，请为每个表创建一个额外的 Quick Sight 数据源连接。

**使用 Amazon Timestream 创建数据集**

1. 在左侧选择**数据**，然后向下滚动以找到您的 Timestream 连接的数据源卡。如果您有许多数据来源，则可以使用页面顶部的搜索栏来查找名称部分匹配的数据来源。

1. 选择 **Timestream** 数据来源卡片，然后选择**创建数据集**。

1. 对于**数据库**，选择**选择**以查看可用数据库列表，然后选择要使用的数据库。

1. 对于**表**，选择要使用的表。

1. 选择**编辑/预览**。

1. （可选）要添加更多数据，请按以下步骤进行操作：

   1. 选择右上角的**添加数据**。

   1. 要连接到不同的数据，请选择**切换数据来源**，然后选择不同的数据集。

   1. 按照 UI 提示完成数据添加。

   1. 将新数据添加到同一数据集后，选择**配置此联接**（两个红点）。为每个附加表设置联接。

   1. 如果要添加计算字段，请选择**添加计算字段**。

   1. 要从 SageMaker AI 添加模型，请选择 A **ugment with。 SageMaker**此选项仅在 Amazon Quick Enterprise 版中可用。

   1. 清除任何您要省略的字段的复选框。

   1. 更新任何您要更改的数据类型。

1. 完成后，选择**保存**，以保存并关闭数据集。

## 向分析中添加 Timestream 数据
<a name="open-analysis-add-dataset-for-timestream"></a>

接下来，您将了解如何将 Amazon Timestream 数据集添加到 Quick Sight 分析中。开始之前，请确保您已经拥有包含要使用的 Timestream 数据的现有数据集。

**向分析中添加 Amazon Timestream 数据**

1. 选择左侧的**分析**。

1. 请执行以下操作之一：
   + 要创建新分析，请选择右侧的**新分析**。
   + 要添加到现有分析，请打开要编辑的分析。
     + 选择左上角附近的铅笔图标。
     + 选择**添加数据集**。

1. 选择要添加的 Timestream 数据集。

有关更多信息，请参阅 [Working with analyses](https://docs.aws.amazon.com/quicksight/latest/user/working-with-analyses.html)。

# 数据来源限额
<a name="data-source-limits"></a>

您在 Amazon Quick Sight 中使用的数据源必须符合以下配额。

**Topics**
+ [导入数据的 SPICE 限额](#spice-limits)
+ [直接 SQL 查询的限额](#query-limits)

## 导入数据的 SPICE 限额
<a name="spice-limits"></a>

在 Amazon Quick Sight 中创建新数据集时，会[SPICE](spice.md)限制您可以添加到数据集的行数。您可以从查询或文件中将数据摄取到 SPICE 中。每个文件最多可有 2,000 列。每个列名最多可有 127 个 Unicode 字符。每个字段最多可以有 2,047 个 Unicode 字符。如果您使用新的数据准备体验来创建 SPICE 数据集，则每个字段最多可以包含 65,534 个 Unicode 字符。

要从较大的集合中检索数据子集，您可以取消选择一些列，或者应用筛选条件以减小数据大小。如果您要从 Amazon S3 导入，则每个清单可指定最多 1,000 个文件。

SPICE 的限额如下所示：
+  每个字段有 2,047 个 Unicode 字符。（65,534 个 Unicode 字符具有全新的数据准备体验） 
+ 每个列名最多有 127 个 Unicode 字符
+ 每个文件有 2,000 列
+ 每个清单最多有 1,000 个文件
+ 对于标准版，每个数据集有 2500 万 (25,000,000) 行或 25GB
+ 对于企业版，每个数据集有 20 亿 (2,000,000,000) 行或 2 TB

所有限额也适用于具有行级别安全性的 SPICE 数据集。

在极少数情况下，如果您要将大型行摄取到 SPICE 中，则在达到行限额之前，您可能会达到每个数据集的千兆字节限额。此大小基于数据摄取到 SPICE 后所占用的 SPICE 容量。

## 直接 SQL 查询的限额
<a name="query-limits"></a>

如果您不将数据导入 SPICE 中，则将应用空间和时间的不同限额。对于操作（例如，连接、对数据集的数据进行采样以及生成视觉对象），可能会发生超时。在某些情况下，这些是源数据库引擎设置的超时限额。在其他情况下，例如可视化，Amazon Quick Sight 会在 2 分钟后生成超时。

但是，并非所有数据库驱动程序会响应 2 分钟的超时，例如 Amazon Redshift。在这些情况下，查询的运行时间与响应返回所需的时间一样长，这可能导致对数据库进行的长时间运行的查询。在发生此情况时，可以从数据库服务器取消查询来释放数据库资源。请按照数据库服务器上的相应说明执行此操作。例如，有关如何在 Amazon Redshift 中取消查询的更多信息，请参阅[在 Amazon Redshift 中取消查询](https://docs.aws.amazon.com/redshift/latest/dg/cancel_query.html)和《Amazon Redshift 数据库开发人员指南》**中的[在 Amazon Redshift 中实施工作负载管理](https://docs.aws.amazon.com/redshift/latest/dg/cm-c-implementing-workload-management.html)。

直接查询的每个结果集最多可包含 2,000 列。每个列名最多可有 127 个 Unicode 字符。如果要从更大的表中检索数据，您可以使用几种方法之一来减小数据的大小。您可以取消选择列或应用筛选条件。在 SQL 查询中，您还可以使用谓词，例如，`WHERE`、`HAVING`。如果您的视觉对象在直接查询期间发生超时，则可简化查询以优化执行时间，也可以将数据导入 SPICE。

查询限额如下：
+ 每个列名最多有 127 个 Unicode 字符。
+ 每个数据集 2,000 列。
+ 生成视觉对象或可选数据集样本有 2 分钟限额。
+ 将应用数据来源超时限额（因每个数据库引擎而异）。

# 支持的数据类型和值
<a name="supported-data-types-and-values"></a>

Amazon Quick Sight 目前支持以下原始数据类型：`Date``Decimal`、`Integer`、和。`String`SPICE 支持以下数据集类型：`Date`、`Decimal-fixed`、`Decimal-float`、`Integer` 和 `String`。Quick Sight 通过将布尔值提升为整数来接受布尔值。它还可以派生地理空间数据类型。地理空间数据类型使用元数据来解释物理数据类型。经度和纬度都是数字。所有其他地理空间类别都是字符串。

确保用作数据来源的任何表或文件仅包含可隐式转换为这些数据类型的字段。Amazon Quick Sight 会跳过任何无法转换的字段或列。如果您收到错误消息，显示“fields were skipped because they use unsupported data types”，请更改您的查询或表以删除或重新转换不支持的数据类型。

## 字符串和文本数据
<a name="strings"></a>

包含字符的字段或列称为*字符串*。数据类型为 `STRING` 的字段最初几乎可以包含任何类型的数据。示例包括姓名、描述、电话号码、账号、JSON 数据、城市、邮政编码、日期和可用于计算的数字。这些类型有时称为一般意义上的文本数据，但不是技术意义上的。Quick Sight 不支持数据集列中的二进制和字符大对象 (BLOBs)。在 Quick Sight 文档中，“文本” 一词始终表示 “字符串数据”。

首次查询或导入数据时，Quick Sight 会尝试将其标识为其他类型的数据，例如日期和数字。最好验证分配给字段或列的数据类型是否正确。

对于导入数据中的每个字符串字段，Quick Sight 使用 8 字节的字段长度加上 UTF-8 编码的字符长度。Amazon Quick Sight 支持 UTF-8 文件编码，但不支持 UTF-8（带有 BOM）。

## 日期和时间数据
<a name="dates"></a>

数据类型为 `Date` 的字段还包括时间数据，也称为 `Datetime` 字段。Quick Sight 支持使用[支持的日期格式的日期](#supported-date-formats)和时间。

Quick Sight 使用 UTC 时间来查询、筛选和显示日期数据。当日期数据未指定时区时，Quick Sight 会采用 UTC 值。当日期数据确实指定了时区时，Quick Sight 会将其转换为以 UTC 时间显示。例如，具有类似时区偏移量的日期字段会转换**2015-11-01T03:00:00-08:00**为 UTC，并在 Amazon Quick Sight 中显示为**2015-11-01T15:30:00**。

对于导入数据中的每个`DATE`字段，Quick Sight 使用的字段长度为 8 字节。Quick Sight 支持 UTF-8 文件编码，但不支持 UTF-8（带有 BOM）。

## 数值数据
<a name="numeric"></a>

数值数据包括整数和小数。数据类型为 `INT` 的整数是没有小数位的负数或正数。Quick Sight 不区分大整数和小整数。值大于 `9007199254740991` 或 `2^53 - 1` 的整数可能无法在视觉对象中精确或正确显示。

数据类型为 `Decimal` 的小数是负数或正数，在小数点之前或之后至少包含一个小数位。当您选择直接查询模式时，所有非整数十进制类型都会标记为 `Decimal`，底层引擎会根据数据来源支持的行为处理数据点的精度。有关受支持的数据来源类型的更多信息，请参阅 [支持的数据类型和值](#supported-data-types-and-values)。

在中存储数据集时SPICE，可以选择将十进制值存储为十进制类型`fixed`或`float`十进制类型。 `Decimal-fixed`数据类型使用十进制 (`18,4`) 格式，允许总共允许 18 位数字，小数点后最多允许 4 位数字。 `Decimal-fixed`数据类型是进行精确数学运算的不错选择，但是 Quick Sight 会将值四舍五入到最接近的万分之一位。SPICE

`Decimal-float` 数据类型为值提供大约 16 位有效数字精度。有效数字可以位于小数点的任意一侧，以同时支持具有许多小数位和更高数字的数字。例如，`Decimal-float` 数据类型支持数字 `12345.1234567890` 或数字 `1234567890.12345`。如果您使用接近 `0` 的非常小的数字，则 `Decimal-float` 数据类型最多支持小数点右侧 15 位数字，例如 `0.123451234512345`。此数据类型支持的最大值为 `1.8 * 10^308`，以最大限度地降低数据集发生溢出错误的可能性。

`Decimal-float` 数据类型不精确，有些值存储为近似值，而不是实际值。这可能会导致在存储和返回某些特定值时出现轻微差异。以下注意事项适用于 `Decimal-float` 数据类型。
+ 如果您使用的数据集来自 Amazon S3 数据来源，SPICE 会为所有数字十进制值分配 `Decimal-float` 十进制类型。
+ 如果您使用的数据集来自数据库，SPICE 将使用数据库中为该值分配的十进制类型。例如，如果数据库中为该值分配了定点数值，则该值在 SPICE 中将为 `Decimal-fixed` 类型。

对于包含可转换为 `Decimal-float` 数据类型的字段的现有 SPICE 数据集，**编辑数据集**页面中会出现一个弹出窗口。要将现有数据集的字段转换为 `Decimal-float` 数据类型，请选择**更新字段**。如果不想选择加入，请选择**不更新字段**。每次打开**编辑数据集**页面时，都会弹出**更新字段**，直到保存并发布数据集为止。

## 外部数据来源支持的数据类型
<a name="supported-data-types"></a>

下表列出了在 Amazon Quick Sight 中使用以下数据源时所支持的数据类型。


****  

| 数据库引擎或源 | 数值数据类型 | 字符串数据类型 | 日期时间类型 | 布尔数据类型 | 
| --- | --- | --- | --- | --- | 
|   **Amazon Athena、Presto、Starburst、Trino**  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  | 
|  **Amazon Aurora**、**MariaDB** 和 **MySQL**  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  | 
|   **亚马逊 OpenSearch 服务**  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  | 
|  **Oracle**  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html) | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html) | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html) | bit | 
|   **PostgreSQL**   |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  | 
|   **Apache Spark**  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  | 
|   **Snowflake**   |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  | 
|   **Microsoft SQL Server**   |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  | 

### 支持的日期格式
<a name="supported-date-formats"></a>

Amazon Quick Sight 支持本节中描述的日期和时间格式。在向 Amazon Quick Sight 添加数据之前，请检查您的日期格式是否兼容。如果您需要使用不支持的格式，请参阅 [使用不支持的日期或自定义日期](using-unsupported-dates.md)。

支持的格式因数据来源类型而异，如下所示：


| 数据来源 | 小时制 | 日期格式 | 
| --- | --- | --- | 
|  文件上传 Amazon S3 源 Athena Salesforce  |  24 小时和 12 小时制  |  Joda API 文档中描述了支持的日期和时间格式。 如需查看 Joda 日期格式的完整列表，请参阅 Joda DateTimeFormat 网站上的 [Class](http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html)。 对于存储在内存中的数据集 (SPICE)，Amazon Quick Sight 支持以下范围内的日期：`Jan 1, 0001 00:00:00 UTC`到`Dec 31, 9999, 23:59:59 UTC`。  | 
|  关系数据库源  |  仅限 24 小时制  |  以下数据和时间格式： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-data-types-and-values.html)  | 

### 不支持的数据值
<a name="unsupported-data-values"></a>

如果某个字段包含的值与 Amazon Quick Sight 分配给该字段的数据类型不一致，则会跳过包含这些值的行。例如，使用以下源数据。

```
Sales ID    Sales Date    Sales Amount
--------------------------------------
001        10/14/2015        12.43
002        5/3/2012          25.00
003        Unknown           18.17
004        3/8/2009          86.02
```

Amazon Quick Sight 解释**Sales Date**为日期字段，并删除包含非日期值的行，因此仅导入以下行。

```
Sales ID    Sales Date    Sales Amount
--------------------------------------
001        10/14/2015        12.43
002        5/3/2012          25.00
004        3/8/2009          86.02
```

在某些情况下，数据库字段可能包含 JDBC 驱动程序无法为源数据库引擎解释的值。在这些情况下，无法解释的值将替换为 Null，以便可以导入这些行。此问题的唯一已知事例是，全部为零值的 MySQL 日期、日期时间和时间戳字段，例如 **0000-00-00 00:00:00**。例如，使用以下源数据。

```
Sales ID    Sales Date                Sales Amount
---------------------------------------------------
001        2004-10-12 09:14:27        12.43
002        2012-04-07 12:59:03        25.00
003        0000-00-00 00:00:00        18.17
004        2015-09-30 01:41:19        86.02
```

在这种情况下，将导入以下数据。

```
Sales ID    Sales Date                Sales Amount
---------------------------------------------------
001        2004-10-12 09:14:27        12.43
002        2012-04-07 12:59:03        25.00
003        (null)                     18.17
004        2015-09-30 01:41:19        86.02
```

# 使用数据集
<a name="working-with-datasets"></a>

数据集是 Quick Sight 分析的基础，可作为准备好的结构化数据源，为您的分析和仪表板提供支持。从数据源创建数据集后，您需要在数据的整个生命周期中对其进行有效管理，以确保可靠、安全的协作分析。

本节介绍完整的数据集管理工作流程，从编辑和版本控制数据集到与团队成员共享数据集和实施安全控制。您将学习如何在支持协作分析的同时保持数据集的完整性，跟踪哪些分析依赖于您的数据集，以及如何实施行级和列级安全以保护敏感信息。无论您是在准备供团队使用的数据集、对分析问题进行故障排除，还是实施数据治理策略，这些主题都提供了在 Quick Sight 中进行有效数据集管理的基本知识。

**Topics**
+ [创建数据集](creating-data-sets.md)
+ [编辑数据集](edit-a-data-set.md)
+ [将数据集恢复到先前发布的版本](dataset-versioning.md)
+ [复制数据集](duplicate-a-data-set.md)
+ [共享数据集](sharing-data-sets.md)
+ [跟踪使用数据集的控制面板和分析](track-analytics-that-use-dataset.md)
+ [在 Amazon Quick 中使用数据集参数](dataset-parameters.md)
+ [在 Amazon Quick 中使用行级安全](row-level-security.md)
+ [使用列级别安全性限制对数据集的访问](restrict-access-to-a-data-set-using-column-level-security.md)
+ [在 Amazon Quick 中以 IAM 角色身份运行查询](datasource-run-as-role.md)
+ [删除数据集](delete-a-data-set.md)
+ [向分析中添加数据集](adding-a-data-set-to-an-analysis.md)

# 创建数据集
<a name="creating-data-sets"></a>

 您可以在 Amazon Quick 中使用新的或现有的数据源创建数据集。您可以使用各种数据库数据源向 Amazon Quick 提供数据。这包括 Amazon RDS 实例和 Amazon Redshift 集群。这还包括您的组织、Amazon EC2 或类似环境中的 MariaDB、Microsoft SQL Server、MySQL、Oracle 和 PostgreSQL 实例。

**Topics**
+ [使用新数据来源创建数据集](creating-data-sets-new.md)
+ [使用现有的数据来源创建数据集](create-a-data-set-existing.md)
+ [使用 Amazon Quick 中的现有数据集创建数据集](create-a-dataset-existing-dataset.md)

# 使用新数据来源创建数据集
<a name="creating-data-sets-new"></a>

当您基于诸如 Amazon RDS、Amazon Redshift 或 Amazon EC2 之类的 AWS 服务创建数据集时，使用来自该来源的数据时可能会收取数据传输费用。这些费用也可能有所不同，具体取决于该 AWS 资源是否位于您为Amazon Quick账户选择的家庭 AWS 区域 中。有关定价的详细信息，请参阅所用服务的定价页面。

在创建新的数据库数据集时，您可以选择一个表、联接多个表或创建 SQL 查询来检索您想要的数据。您也可以更改数据集是使用直接查询还是在 [SPICE](spice.md) 中存储数据。

**创建新的数据集**

1. 要创建数据集，请在 “**数据” 页面上选择 “新建**数据**集**”。然后，您可以基于现有数据集或数据来源创建数据集，或连接到新数据来源并使数据集基于该数据来源。

1. 向数据来源提供连接信息：
   + 对于本地的文本或 Microsoft Excel 文件，只需标识文件位置并上传文件。
   + 对于 Amazon S3，您需要提供一个清单，以指定要使用的文件或存储桶以及目标文件的导入设置。
   + 对于亚马逊 Athena，系统会返回您账户中的所有 Athena 数据库。 AWS 不需要额外凭证。
   + 对于 Salesforce，需要提供用于连接的凭证。
   + 对于 Amazon Redshift、Amazon RDS、Amazon EC2 或其他数据库数据来源，需要提供有关托管数据的服务器和数据库的信息。还要为该数据库实例提供有效的凭证。

# 使用数据库创建数据集
<a name="create-a-database-data-set"></a>

以下过程演示了如何连接到数据库数据来源和创建数据集。要使用您的 Amazon Quick 账户自动发现 AWS 的数据源创建数据集，请使用[使用自动发现的 Amazon Redshift 集群或 Amazon RDS 实例创建数据集](#create-a-data-set-autodiscovered)。要使用任何其他数据库数据来源创建数据集，请使用 [使用非自动发现的数据库创建数据集](#create-a-data-set-database)。

## 使用自动发现的 Amazon Redshift 集群或 Amazon RDS 实例创建数据集
<a name="create-a-data-set-autodiscovered"></a>

使用以下过程创建指向自动发现的 AWS 数据来源的连接。

**创建与自动发现 AWS 的数据源的连接**

1. 选中 [数据来源限额](data-source-limits.md) 以确保您的目标表或查询不超出数据来源限制。

1. 确认您计划使用的数据库凭证具有[所需的权限](required-permissions.md)中所述的相应权限。

1. 按照中的说明，确保您已将集群或实例配置为 Amazon Quick 访问权限[网络和数据库配置要求](configure-access.md)。

1. 在 Amazon 快速入门页面上，选择**数据**。

1. 选择 “**创建**”，然后选择 “**新建数据集**”。

1. 根据要连接的 AWS 服务，选择 **RDS 或 R** **edshift 自动发现**图标。

1. 输入数据源的连接信息，如下所示：
   + 对于**数据来源名称**，输入数据来源的名称。
   + 对于 **Instance ID (实例 ID)**，选择要连接到的实例或集群的名称。
   + **Database name** 会显示 **Instance ID** 集群或实例的默认数据库。要在该集群或实例上使用不同的数据库，请输入其名称。
   + 对于 **UserName**，请输入有权执行以下操作的用户帐户的用户名：
     + 访问目标数据库。
     + 在该数据库中读取要使用的任何表（对其执行 `SELECT` 语句）。
   + 对于**密码**，输入您输入的账户的密码。

1. 选择 **Validate connection** 验证您的连接信息是否正确。

1. 如果连接验证成功，请选择 **Create data source**。如果未成功，则更正连接信息，然后重新验证。
**注意**  
Amazon Quick 使用安全套接字层 (SSL) 自动保护与亚马逊 RDS 实例和 Amazon Redshift 集群的连接。您无需执行任何操作来启用这一功能。

1. 选择下列选项之一：
   + **自定义 SQL**

     在下一个屏幕上，您可以选择使用 **Use custom SQL（使用自定义 SQL）**选项写入查询。这样做将打开一个名为 **Enter custom SQL query (输入自定义 SQL 查询)** 的屏幕，您可以在其中输入查询的名称，然后输入 SQL。为获得最佳结构，请在 SQL 编辑器中构成查询，然后将其粘贴到此窗口中。在命名和输入查询后，您可以选择 **Edit/Preview data（编辑/预览数据）**或 **Confirm query（确认查询）**。立即选择 **Edit/Preview data（编辑/预览数据）**以转到数据准备。选择 **Confirm query（确认查询）**以验证 SQL 并确保没有错误。
   + **选择表**

     要连接到特定表，对于**架构：包含表组**，请选择**选择**，然后选择一个架构。有时数据库只有一个架构，此情况下会自动选择该架构，不显示架构选择选项。

     要在创建分析前准备数据，请选择 **Edit/Preview data** 打开数据准备。如果要联接到更多表，请使用此选项。

     否则，在选择表后，请选择 **Select（选择）**。

1. 请选择以下选项之一：
   + 在创建分析之前准备数据。为此，选择 **Edit/Preview data (编辑/预览数据)** 以打开选定表的数据准备屏幕。有关数据准备的更多信息，请参阅[准备数据集示例](preparing-data-sets.md)。
   + 按原样使用表数据创建一个数据集和分析，并将数据集数据导入到 SPICE 以提高性能（建议）。为此，请检查表大小和 SPICE 指示器以确定您是否具有足够的容量。

     如果有足够的 SPICE 容量，请选择**导入到 SPICE 以加快分析**，然后选择**可视化**创建分析。
**注意**  
如果您希望使用 SPICE 但没有足够的空间，请选择**编辑/预览数据**。在数据准备过程中，您可以从数据集中删除字段以缩减其大小。您也可以应用筛选条件或编写 SQL 查询以减少返回的行或列数。有关数据准备的更多信息，请参阅[准备数据集示例](preparing-data-sets.md)。
   + 要按原样使用表数据创建一个数据集和分析，并直接从数据库中查询数据，请选择**直接查询数据**选项。然后，选择 **Visualize (可视化)** 以创建分析。

## 使用非自动发现的数据库创建数据集
<a name="create-a-data-set-database"></a>

使用以下过程创建指向自动发现的 Amazon Redshift 集群或 Amazon RDS 实例以外的任何数据库连接。此类数据库包括位于不同账户 AWS 区域 或与不同账户关联的 Amazon Redshift 集群和 Amazon RDS 实例。 AWS 它们还包括位于本地、Amazon EC2 或某种其他可访问的环境中的 MariaDB、Microsoft SQL Server、MySQL、Oracle 和 PostgreSQL 实例。

**创建与不是自动发现的 Amazon Redshift 集群或 RDS 实例的数据库连接**

1. 选中 [数据来源限额](data-source-limits.md) 以确保您的目标表或查询不超出数据来源限制。

1. 确认您计划使用的数据库凭证具有[所需的权限](required-permissions.md)中所述的相应权限。

1. 按照中的说明，确保您已将集群或实例配置为 Amazon Quick 访问权限[网络和数据库配置要求](configure-access.md)。

1. 在 Amazon 快速入门页面上，选择**管理数据**。

1. 选择 “**创建**”，然后选择 “**新建数据组”**。

1. 如果您想**连接到其他账户中的 Amazon Redshift 集群或 AWS 区域 与其他账户关联的 Amazon Redshift 集群，请选择 Redshift 手动**连接图标。 AWS 或者，选择相应的数据库管理系统图标以连接到 Amazon Aurora、MariaDB、Microsoft SQL Server、MySQL Oracle 或 PostgreSQL 实例。

1. 输入数据源的连接信息，如下所示：
   + 对于**数据来源名称**，输入数据来源的名称。
   + 对于 **Database server (数据库服务器)**，输入以下值之一：
     + 对于 Amazon Redshift 集群或 Amazon RDS 实例，输入该集群或实例的端点（不带端口号）。例如，如果终端节点值为 `clustername.1234abcd.us-west-2.redshift.amazonaws.com:1234`，则输入 `clustername.1234abcd.us-west-2.redshift.amazonaws.com`。您可以从 AWS 控制台集群或实例详细信息页面上的**终端节点**字段中获取终端节点值。
     + 对于 MariaDB、Microsoft SQL Server、MySQL、Oracle 或 PostgreSQL 的 Amazon EC2 实例，输入公有 DNS 地址。在 Amazon EC2 控制台中，您可以在实例详细信息窗格中的**公有 DNS** 字段中获取公有 DNS 值。
     + 对于 MariaDB、Microsoft SQL Server、MySQL、Oracle 或 PostgreSQL 的非 Amazon EC2 实例，输入数据库服务器的主机名或公有 IP 地址。如果您使用安全套接字层 (SSL) 来进行安全连接 (推荐)，则可能需要提供主机名以匹配 SSL 证书所需的信息。有关接受的证书的列表，请参阅[Amazon 快速 SSL 和 CA 证书](configure-access.md#ca-certificates)。
   + 对于 **Port (端口)**，输入集群或实例在连接上使用的端口。
   + 对于 **Database name (数据库名称)**，输入要使用的数据库的名称。
   + 对于 **UserName**，请输入有权执行以下操作的用户帐户的用户名：
     + 访问目标数据库。
     + 在该数据库中读取要使用的任何表（对其执行 `SELECT` 语句）。
   + 对于**密码**，输入与您输入的账户关联的密码。

1. （可选）如果要连接到 Amazon Redshift 集群以外的任何集群或实例，并且*不想*使用安全连接，请确保清除**启用 SSL**。*我们强烈建议您将该选项保持选中状态*，因为不安全的连接可能会遭到篡改。

   有关目标实例如何使用 SSL 保护连接的更多信息，请参阅目标数据库管理系统的文档。Amazon Quick 不接受自签名 SSL 证书为有效证书。有关接受的证书的列表，请参阅[Amazon 快速 SSL 和 CA 证书](configure-access.md#ca-certificates)。

   Amazon Quick 使用 SSL 自动保护与亚马逊 Redshift 集群的连接。您无需执行任何操作来启用这一功能。

   某些数据库，例如 Presto 和 Apache Spark，必须满足其他要求才能连接 Amazon Quick。有关更多信息，请参阅[使用 Presto 创建数据来源](create-a-data-source-presto.md)、或[使用 Apache Spark 创建数据来源](create-a-data-source-spark.md)。

1. (可选) 选择 **Validate connection** 验证您的连接信息是否正确。

1. 如果连接验证成功，请选择 **Create data source**。如果未成功，则更正连接信息，然后重新验证。

1. 选择下列选项之一：
   + **自定义 SQL**

     在下一个屏幕上，您可以选择使用 **Use custom SQL（使用自定义 SQL）**选项写入查询。这样做将打开一个名为 **Enter custom SQL query (输入自定义 SQL 查询)** 的屏幕，您可以在其中输入查询的名称，然后输入 SQL。为获得最佳结构，请在 SQL 编辑器中构成查询，然后将其粘贴到此窗口中。在命名和输入查询后，您可以选择 **Edit/Preview data（编辑/预览数据）**或 **Confirm query（确认查询）**。立即选择 **Edit/Preview data（编辑/预览数据）**以转到数据准备。选择 **Confirm query（确认查询）**以验证 SQL 并确保没有错误。
   + **选择表**

     要连接到特定表，对于**架构：包含表组**，请选择**选择**，然后选择一个架构。有时数据库只有一个架构，此情况下会自动选择该架构，不显示架构选择选项。

     要在创建分析前准备数据，请选择 **Edit/Preview data** 打开数据准备。如果要联接到更多表，请使用此选项。

     否则，在选择表后，请选择 **Select（选择）**。

1. 请选择以下选项之一：
   + 在创建分析之前准备数据。为此，选择 **Edit/Preview data (编辑/预览数据)** 以打开选定表的数据准备屏幕。有关数据准备的更多信息，请参阅[准备数据集示例](preparing-data-sets.md)。
   + 按原样使用表数据创建一个数据集和分析，并将数据集数据导入到 SPICE 以提高性能（建议）。为此，请检查表大小和 SPICE 指示器以确定您是否具有足够的空间。

     如果有足够的 SPICE 容量，请选择**导入到 SPICE 以加快分析**，然后选择**可视化**创建分析。
**注意**  
如果您希望使用 SPICE 但没有足够的空间，请选择**编辑/预览数据**。在数据准备过程中，您可以从数据集中删除字段以缩减其大小。您也可以应用筛选条件或编写 SQL 查询以减少返回的行或列数。有关数据准备的更多信息，请参阅[准备数据集示例](preparing-data-sets.md)。
   + 按原样使用表数据创建一个数据集和分析，并直接从数据库中查询数据。为此，请选择 **Directly query your data (直接查询数据)** 选项。然后，选择 **Visualize (可视化)** 以创建分析。

# 使用现有的数据来源创建数据集
<a name="create-a-data-set-existing"></a>

在您与 Salesforce、 AWS 数据存储或其他数据库数据源建立初始连接后，Amazon Quick 会保存连接信息。它将数据来源添加到**创建数据集**页面的**使用现有的数据来源**部分。您可以使用这些现有的数据来源创建新数据集，无需重新指定连接信息。

## 使用现有的 Amazon S3 数据来源创建数据集
<a name="create-a-data-set-existing-s3"></a>

使用以下过程通过现有的 Amazon S3 数据来源创建数据集。

**使用现有的 S3 数据来源创建数据集**

1. 在 Amazon 快速入门页面上，选择**数据**。

1. 选择 “**创建**”，然后选择 “**新建数据集**”。

1. 选择要使用的 Amazon S3 数据源。

1. 要在创建数据集之前准备数据，请选择**编辑/预览数据**。要按原样使用数据创建分析，请选择 **Visualize (可视化)**。

## 使用现有的 Amazon Athena 数据来源创建数据集
<a name="create-a-data-set-existing-athena"></a>

要使用现有的 Amazon Athena 数据来源创建数据集，请按以下步骤操作。

**使用现有的 Athena 连接配置文件创建数据集**

1. 在 Amazon 快速入门页面上，选择**数据**。

1. 选择 “**创建**”，然后选择 “**新建数据组”**。

   为要使用的现有数据源选择连接配置文件图标。连接配置文件标有数据来源图标和创建该连接的人员提供的名称。

1. 选择**创建数据集**。

   Amazon Quick 仅根据 Athena 工作组为该数据源创建连接配置文件。数据库和表未保存。

1. 在**选择您的表**屏幕上，执行以下操作之一：
   + 要编写 SQL 查询，请选择**使用自定义 SQL**。
   + 要选择数据库和表，请先从**数据库**列表中选择您的数据库。接下来，从为数据库显示的列表中选择一个表。

## 使用现有的 Salesforce 数据来源创建数据集
<a name="create-a-data-set-existing-salesforce"></a>

使用以下过程通过现有的 Salesforce 数据来源创建数据集。

**使用现有的 Salesforce 数据来源创建数据集**

1. 在 Amazon 快速入门页面上，选择**数据**。

1. 选择 “**创建**”，然后选择 “**新建数据组”**。

1. 选择要使用的 Salesforce 数据源。

1. 选择 **Create Data Set**。

1. 选择下列选项之一：
   + **自定义 SQL**

     在下一个屏幕上，您可以选择使用 **Use custom SQL（使用自定义 SQL）**选项写入查询。这样做将打开一个名为 **Enter custom SQL query (输入自定义 SQL 查询)** 的屏幕，您可以在其中输入查询的名称，然后输入 SQL。为获得最佳结构，请在 SQL 编辑器中构成查询，然后将其粘贴到此窗口中。在命名和输入查询后，您可以选择 **Edit/Preview data（编辑/预览数据）**或 **Confirm query（确认查询）**。立即选择 **Edit/Preview data（编辑/预览数据）**以转到数据准备。选择 **Confirm query（确认查询）**以验证 SQL 并确保没有错误。
   + **选择表**

     要连接到特定表，在**数据元素：包含您的数据**中，请选择**选择**，然后选择**报告**或**对象**。

     要在创建分析前准备数据，请选择 **Edit/Preview data** 打开数据准备。如果要联接到更多表，请使用此选项。

     否则，在选择表后，请选择 **Select（选择）**。

1. 在下一个屏幕上，选择以下选项之一：
   + 要原样使用数据创建数据集和分析，请选择**可视化**。
**注意**  
如果没有足够的 [SPICE](spice.md) 容量，请选择 **Edit/Preview data** (编辑/预览数据)。在数据准备期间，您可以从数据集中删除字段以缩减其大小，也可以应用筛选条件减少返回的行数。有关数据准备的更多信息，请参阅[准备数据集示例](preparing-data-sets.md)。
   + 要在创建分析前准备数据，请选择 **Edit/Preview data** 打开所选报告或对象的数据准备。有关数据准备的更多信息，请参阅[准备数据集示例](preparing-data-sets.md)。

## 使用现有的数据库数据来源创建数据集
<a name="create-a-data-set-existing-database"></a>

使用以下过程通过现有的数据库数据来源创建数据集。

**使用现有的数据库数据来源创建数据集**

1. 在 Amazon 快速入门页面上，选择**数据**。

1. 选择 “**创建**”，然后选择 “**新建数据组”**。

1. 选择要使用的数据库数据源，然后选择 “**创建数据集**”。

1. 选择下列选项之一：
   + **自定义 SQL**

     在下一个屏幕上，您可以选择使用 **Use custom SQL（使用自定义 SQL）**选项写入查询。这样做将打开一个名为 **Enter custom SQL query (输入自定义 SQL 查询)** 的屏幕，您可以在其中输入查询的名称，然后输入 SQL。为获得最佳结构，请在 SQL 编辑器中构成查询，然后将其粘贴到此窗口中。在命名和输入查询后，您可以选择 **Edit/Preview data（编辑/预览数据）**或 **Confirm query（确认查询）**。立即选择 **Edit/Preview data（编辑/预览数据）**以转到数据准备。选择 **Confirm query（确认查询）**以验证 SQL 并确保没有错误。
   + **选择表**

     要连接到特定表，对于**架构：包含表组**，请选择**选择**，然后选择一个架构。有时数据库只有一个架构，此情况下会自动选择该架构，不显示架构选择选项。

     要在创建分析前准备数据，请选择 **Edit/Preview data** 打开数据准备。如果要联接到更多表，请使用此选项。

     否则，在选择表后，请选择 **Select（选择）**。

1. 请选择以下选项之一：
   + 在创建分析之前准备数据。为此，选择 **Edit/Preview data (编辑/预览数据)** 以打开选定表的数据准备屏幕。有关数据准备的更多信息，请参阅[准备数据集示例](preparing-data-sets.md)。
   + 按原样使用表数据创建一个数据集和分析，并将数据集数据导入到 [SPICE](spice.md) 以提高性能（建议）。为此，请检查 SPICE 指示器以确定您是否具有足够的空间。

     如果有足够的 SPICE 容量，请选择**导入到 SPICE 以加快分析**，然后选择**可视化**创建分析。
**注意**  
如果您希望使用 SPICE 但没有足够的空间，请选择**编辑/预览数据**。在数据准备过程中，您可以从数据集中删除字段以缩减其大小。您也可以应用筛选条件或编写 SQL 查询以减少返回的行或列数。有关数据准备的更多信息，请参阅[准备数据集示例](preparing-data-sets.md)。
   + 按原样使用表数据创建一个数据集和分析，并直接从数据库中查询数据。为此，请选择 **Directly query your data (直接查询数据)** 选项。然后，选择 **Visualize (可视化)** 以创建分析。

# 使用 Amazon Quick 中的现有数据集创建数据集
<a name="create-a-dataset-existing-dataset"></a>

在 Amazon Quick 中创建数据集后，您可以将其用作源来创建其他数据集。执行此操作时，将保留父数据集包含的所有数据准备，例如任何联接或计算字段。您可以为新子数据集中的数据添加额外的准备工作，例如加入新数据和筛选数据。您还可以为子数据集设置自己的数据刷新计划，并跟踪使用此数据集的控制面板和分析。

使用具有活动 RLS 规则的数据集作为源创建的子数据集将继承父数据集的 RLS 规则。使用较大的父数据集创建子数据集的用户只能看到他们在父数据集中有权访问的数据。然后，除了继承的 RLS 规则外，您还可以向新的子数据集添加更多 RLS 规则，以进一步管理谁可以访问新数据集中的数据。您只能使用直接查询中具有活动 RLS 规则的数据集创建子数据集。

从现有的 Quick 数据集创建数据集具有以下优点：
+ **集中管理数据集** – 数据工程师可以轻松扩展以满足组织内多个团队的需求。为此，他们可以开发和维护一些描述组织主要数据模型的通用数据集。
+ **减少数据源管理** — 业务分析师 (BAs) 通常会花费大量时间和精力请求访问数据库、管理数据库凭据、查找正确的表以及管理快速数据刷新计划。从现有数据集构建新的数据集意味着 BAs 不必从头开始使用数据库中的原始数据。他们可以使用精选数据。
+ **预定义的关键指标** – 通过使用现有的数据集创建数据集，数据工程师可以集中定义和维护公司众多组织的关键数据定义。例如销售增长和净边际收益。借助此功能，数据工程师还可以分发对这些定义的更改。这种方法意味着他们的业务分析师可以更快、更可靠地可视化正确数据。
+ **灵活地自定义数据** – 通过使用现有的数据集创建数据集，业务分析师可以更灵活地根据自己的业务需求自定义数据集。他们不必担心会中断其他团队的数据。

例如，假设您是由五名数据工程师组成的电子商务中心团队的一员。您和团队可以访问数据库中的销售、订单、取消和退货数据。您已通过架构连接其他 18 个维度表，从而创建了一个快速数据集。团队创建的关键指标是计算字段，即订单产品销售额（OPS）。它的定义是：OPS = 产品数量 x 价格。

团队为 8 个国家/地区的 10 个不同团队的 100 多位业务分析师提供服务。这些团队分别为优惠券团队、出站营销团队、移动平台团队和推荐团队。所有这些团队都以 OPS 指标为基础来分析自己的业务线。

您的团队无需手动创建和维护数百个未连接的数据集，而是重用数据集为整个组织的团队创建多个等级的数据集。这样做可以集中管理数据，并允许每个团队根据自己的需求自定义数据。同时，这会同步对数据的更新（例如指标定义更新），并维护行级和列级的安全性。例如，组织中的各个团队可以使用集中式数据集。然后，他们可以将这些数据集与特定于其团队的数据相结合，创建新的数据集并在此基础上构建分析。

除了使用关键的 OPS 指标外，组织中的其他团队还可以重用您创建的集中式数据集中的列元数据。例如，数据工程团队可以在集中式数据集中定义元数据，例如*名称*、*描述*、*数据类型*和*文件夹*。所有后续团队都可以使用此数据集。

**注意**  
Amazon Quick 支持使用单个数据集创建最多两个额外级别的数据集。  
例如，您可以使用父数据集创建子数据集，然后创建孙子数据集，总共三个数据集等级。

## 使用现有的数据集创建数据集
<a name="create-a-dataset-existing-dataset-how-to"></a>

使用以下过程通过现有的数据集创建数据集。

**使用现有的数据集创建数据集**

1. 在快速入门页面中，选择左侧窗格中的**数据**。

1. 选择**创建**，然后选择要用于创建新数据集的数据集。

1. 在为该数据集打开的页面上，选择**在分析中使用**的下拉菜单，然后选择**在数据集中使用**。

   数据准备页面将打开并预加载父数据集中的所有内容，包括计算字段、联接和安全设置。

1. 在打开的数据准备页面上，在左下角的**查询模式**中，选择您想要数据集从原始父数据集中提取更改和更新的方式。可以选择以下选项：
   + **直接查询** – 这是默认查询模式。如果选择此选项，则打开关联的数据集、分析或控制面板时，会自动刷新此数据集的数据。但是，以下限制适用：
     + 如果父数据集允许直接查询，则可以在子数据集中使用直接查询模式。
     + 如果联接中有多个父数据集，则只有当所有父数据集都来自同一个底层数据来源时，才可以为子数据集选择直接查询模式。例如，相同的 Amazon Redshift 连接。
     + 支持单个 SPICE 父数据集直接查询。不支持联接中的多个 SPICE 父数据集直接查询。
   + **SPICE** – 如果选择此选项，则可以为新数据集设置与父数据集同步的计划。有关为数据集创建 SPICE 刷新计划的更多信息，请参阅 [刷新 SPICE 数据](refreshing-imported-data.md)。

1. （可选）准备数据以供分析。有关数据准备的更多信息，请参阅 [使用 Amazon Quick Sight 准备数据](preparing-data.md)。

1. （可选）设置行级或列级安全性（RLS/CLS）以限制对数据集的访问。有关设置 RLS 的更多信息，请参阅 [使用采用基于用户的规则的行级别安全性限制对数据集的访问使用基于用户的规则](restrict-access-to-a-data-set-using-row-level-security.md)。有关设置 CLS 的更多信息，请参阅 [使用列级别安全性限制对数据集的访问](restrict-access-to-a-data-set-using-column-level-security.md)。
**注意**  
您只能 RLS/CLS 在子数据集上进行设置。 RLS/CLS 不支持在父数据集上。

1. 完成后，选择**保存并发布**以保存更改并发布新的子数据集。或者选择**发布并可视化**以发布新的子数据集并开始可视化数据。

# 限制其他人使用您的数据集创建新数据集
<a name="restrict-create-dataset"></a>

在 Amazon Quick 中创建数据集时，可以防止其他人将其用作其他数据集的来源。您可以指定其他人是否可以用其创建任何数据集。或者，您可以指定其他人可以或不能使用您的数据集创建的数据集类型，例如直接查询数据集或 SPICE 数据集。

使用以下过程了解如何限制其他人使用您的数据集创建新数据集。

**限制其他人使用您的数据集创建新数据集**

1. 在快速入门页面中，选择左侧窗格中的**数据**。

1. 选择 “**创建**”，然后选择要限制从中创建新数据集的数据集。

1. 在为该数据集打开的页面上，选择**编辑数据集**。

1. 在打开的数据准备页面上，选择右上角的**管理**，然后选择**属性**。

1. 在打开的**数据集属性**窗格中，从以下选项中进行选择：
   + 要限制任何人使用此数据集创建任何类型的新数据集，请关闭**允许使用此数据集创建新数据集**。

     允许创建新数据集时，切换按钮为蓝色。不允许创建新数据集时，其显示为灰色。
   + 要限制其他人创建直接查询数据集，请清除**允许直接查询**。
   + 要限制其他人创建数据集的 SPICE 副本，请清除**允许 SPICE 副本**。

     有关 SPICE 数据集的更多信息，请参阅 [将数据导入到 SPICE](spice.md)。

1. 关闭窗格。

# 编辑数据集
<a name="edit-a-data-set"></a>

您可以编辑现有数据集以执行数据准备。有关 Quick Sight 数据准备功能的更多信息，请参阅[使用 Amazon Quick Sight 准备数据](preparing-data.md)。

您可以从**数据集**页面或分析页面打开数据集进行编辑。从任一位置编辑数据集都会修改使用该数据集的所有分析的数据集。

## 编辑数据集时要考虑的事项
<a name="change-a-data-set"></a>

在这两种情况下，对数据集进行更改可能会导致出现问题。一种是有意编辑数据集。另一种是数据来源的更改过大，以至于对分析造成影响。

**重要**  
在生产环境中使用的分析应受到保护，以便其继续正常发挥作用。

在处理数据更改时，我们建议您执行以下操作：
+ 记录您的数据来源和数据集以及依赖它们的视觉对象。记录应包括屏幕截图、使用的字段、字段井中的位置、筛选条件、排序、计算、颜色和格式等。请记录重新创建视觉对象所需的所有内容。您还可以在数据集管理选项中跟踪哪些 Quick Sight 资源使用数据集。有关更多信息，请参阅 [跟踪使用数据集的控制面板和分析](track-analytics-that-use-dataset.md)。
+ 编辑数据集时，尽量不要进行可能破坏现有视觉对象的更改。例如，不要删除视觉对象中正在使用的列。如果您必须删除某个列，请在其位置上创建一个计算列。替换列应与原始列具有相同的名称和数据类型。
+ 如果在源数据库中更改数据来源或数据集，请调整视觉对象以适应更改，如前所述。或者，您可以尝试调整源数据库。例如，您可以创建源表 (文档) 的视图。以后，如果该表发生变化，您可以调整视图以包括或排除列 (属性)，更改数据类型，填写 null 值，等等。或者，在另一种情况下，如果您的数据集基于缓慢的 SQL 查询，您可以创建一个表以保存查询结果。

  如果您无法充分调整数据来源，请根据分析文档重新创建视觉对象。
+ 如果您无法再访问数据来源，基于该数据来源的分析将为空。您创建的视觉对象仍然存在，但无法显示这些对象，直到它们具有可显示的数据。如果您的管理员更改了权限，则可能会出现这种结果。
+ 如果您删除视觉对象所基于的数据集，您可能需要通过文档重新创建该对象。您可以编辑视觉对象并选择一个新的数据集与之配合使用。如果您需要始终使用新文件替换旧文件，请将数据存储在始终可用的位置中。例如，您可以将 .csv 文件存储在 Amazon S3 中，然后创建一个 S3 数据集以用于您的视觉对象。有关访问 S3 中存储的文件的更多信息，请参阅[使用 Amazon S3 文件创建数据集](create-a-data-set-s3.md)。

  或者，您可以将数据导入到一个表中，并使视觉对象基于查询。这样，数据结构就不会发生变化，即使其中包含的数据发生了变化。
+ 要集中管理数据，可以考虑创建通用的多用途数据集，其他人可以使用这些数据集来创建自己的数据集。有关更多信息，请参阅 [使用 Amazon Quick 中的现有数据集创建数据集](create-a-dataset-existing-dataset.md)。

## 从“数据集”页面编辑数据集
<a name="edit-a-data-set-data"></a>

1. 在快速入门页面中，选择左侧**的数据**。

1. 在打开**的数据**页面上，选择要编辑的数据集，然后选择右上角的**编辑数据集**。

   随即将打开数据准备页面。有关您可以对数据集进行的编辑类型的更多信息，请参阅 [使用 Amazon Quick Sight 准备数据](preparing-data.md)。

## 在分析中编辑数据集
<a name="edit-a-data-set-analysis"></a>

要从分析页面编辑数据集，请按照以下过程操作。

**从分析页面编辑数据集**

1. 在分析页面中，选择**字段列表**窗格顶部的铅笔图标。

1. 在打开的**此分析中的数据集**页面上，选择要编辑的数据集右侧的三个点，然后选择**编辑**。

   随即将在数据准备页面中打开数据集。有关您可以对数据集进行的编辑类型的更多信息，请参阅 [使用 Amazon Quick Sight 准备数据](preparing-data.md)。

# 将数据集恢复到先前发布的版本
<a name="dataset-versioning"></a>

当您在 Amazon Quick Sight 中保存和发布对数据集的更改时，即会创建该数据集的新版本。您可以随时查看该数据集所有先前发布的版本列表。如果需要，您还可以预览该历史记录中的特定版本，甚至可以将数据集恢复到先前的版本。

以下限制适用于数据集版本控制：
+ 发布历史中仅显示数据集的最新 1,000 个版本，并且可以进行版本控制。
+ 超过 1,000 个已发布版本后，将自动从发布历史记录中删除最旧的版本，并且数据集无法再恢复到这些版本。

使用以下步骤将数据集恢复到先前发布的版本。

**将数据集恢复到先前发布的版本**

1. 在快速入门页面中，选择**数据**。

1. 在**数据**页面上，选择一个数据集，然后选择右上角的**编辑数据集**。

   有关编辑数据集的更多信息，请参阅 [编辑数据集](edit-a-data-set.md)。

1. 在打开的数据集准备页面上，选择右上角蓝色工具栏中的**管理**图标，然后选择**发布历史记录**。

   右侧显示了先前发布的版本列表。

1. 在**发布历史记录**窗格中，找到所需版本，然后选择**还原**。

   要在还原之前预览版本，请选择**预览**。

   数据集已恢复，并显示一条确认消息。**发布历史记录**窗格也会更新以显示数据集的活动版本。

## 排查恢复版本的问题
<a name="dataset-versioning-troubleshooting"></a>

有时，由于以下原因之一，数据集无法恢复到特定版本：
+ 数据集使用一个或多个已删除的数据来源。

  如果发生此错误，您无法将数据集恢复到先前的版本。
+ 恢复会使计算字段失效。

  如果出现此错误，您可以编辑或删除计算字段，然后保存数据集。此操作将创建数据集的新版本。
+ 数据来源中缺少一列或多列。

  如果发生此错误，Quick Sight 会在预览中显示来自数据源的最新架构，以协调版本之间的差异。架构预览中显示的任何计算字段、字段名称、字段类型和筛选条件更改均来自您要恢复到的版本。您可以将此协调后的架构保存为数据集的新版本。或者，您可以在发布历史记录的顶部（最新）版本上选择**预览**以返回至活动（最新）版本。

# 复制数据集
<a name="duplicate-a-data-set"></a>

您可以复制现有数据集以使用新名称保存该数据集的副本。新的数据集是一个完全独立的副本。

如果同时满足以下两个条件，则**复制数据集**选项可用：您拥有数据集并具有数据来源的权限。

**复制数据集**

1. 在快速入门页面中，选择左侧**的数据**。

1. 选择要复制的数据集。

1. 在打开的数据集详细信息页面上，选择**编辑数据集**的下拉列表，然后选择**复制**。

1. 在打开的“复制数据集”页面上，为复制的数据集命名，然后选择**复制**。

   随即将打开复制的数据集详细信息页面。在此页面中，您可以编辑数据集、设置刷新计划等。

# 共享数据集
<a name="sharing-data-sets"></a>

您可以通过与其他 Quick Sight 用户和群组共享数据集来授予他们访问该数据集的权限。之后，他们可以从中创建分析。如果您使其成为共有者，则他们也可以刷新、编辑、删除或共享数据集。

## 共享数据集
<a name="share-a-data-set"></a>

如果您拥有数据集的所有者权限，则可以使用以下步骤共享数据集。

**共享数据集**

1. 在快速入门页面中，选择左侧**的数据**。

1. 在**数据**页面上，选择要共享的数据集。

1. 在打开的数据集详细信息页面上，选择**权限**选项卡，然后选择**添加用户和组**。

1. 输入要与之共享该数据集的用户或组，然后选择**添加**。您只能邀请属于同一 Quick 账户的用户。

   重复该步骤，直到您输入了要与其共享数据集的每个人的信息。

1. 对于**权限**列，为每个用户或组选择一个角色，以授予他们对数据集的权限。

   选择**查看者**以允许用户使用该数据集创建分析和数据集。选择**所有者**以允许用户执行该操作，并允许用户刷新、编辑、删除和重新共享该数据集。

   用户会收到包含指向数据集的链接的电子邮件。组不会收到邀请电子邮件。

# 查看和编辑与之共享数据集的用户的权限
<a name="view-users-data-set"></a>

如果您拥有数据集的所有者权限，您可以使用以下过程查看、编辑或更改用户的 访问权限。

**查看、编辑或更改用户的数据集访问权限（前提是您拥有该数据集的所有者权限）**

1. 在快速入门页面中，选择左侧**的数据**。

1. 在**数据**页面上，选择要共享的数据集。

1. 在打开的数据集详细信息页面上，选择**权限**选项卡。

   此时会显示有权访问该数据集的所有用户和组的列表。

1. （可选）要更改用户或组的权限角色，请选择该用户或组的**权限**列中的下拉菜单。然后选择**查看者**或**所有者**。

# 撤销对数据集的访问权限
<a name="revoke-access-to-a-data-set"></a>

如果您拥有数据集的所有者权限，则可以使用以下过程撤销用户的数据集访问权限。

**撤销用户的数据集访问权限（前提是您拥有数据集的所有者权限）**

1. 在快速入门页面中，选择左侧**的数据**。

1. 在**数据**页面上，选择要共享的数据集。

1. 在打开的数据集详细信息页面上，选择**权限**选项卡。

   此时会显示有权访问该数据集的所有用户和组的列表。

1. 在用户或组的**操作**列，选择**撤销访问权限**。

# 跟踪使用数据集的控制面板和分析
<a name="track-analytics-that-use-dataset"></a>

在 Quick Sight 中创建数据集时，您可以跟踪哪些仪表板和分析使用该数据集。若想要查看在更改数据集或删除数据集时哪些资源会受到影响，这种方法非常有用。

使用以下过程查看哪些控制面板和分析使用数据集。

**跟踪使用数据集的资源**

1. 在快速入门页面中，选择左侧窗格中的**数据**。

1. 在**数据**页面上，选择要跟踪其资源的数据集。

1. 在为该数据集打开的页面中，选择**编辑数据集**。

1. 在打开的数据准备页面上，选择右上角的**管理**，然后选择**使用情况**。

1. 打开的窗格中列出了使用该数据集的控制面板和分析。

# 在 Amazon Quick 中使用数据集参数
<a name="dataset-parameters"></a>

在 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)

## 数据集参数限制
<a name="dataset-parameters-limitations"></a>

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

# 在 Amazon Quick 中创建数据集参数
<a name="dataset-parameters-SQL"></a>

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

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

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

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

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

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

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

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

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

# 将数据集参数插入自定义 SQL
<a name="dataset-parameters-insert-parameter"></a>

通过在 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 查询，结果将显示在**预览窗格**中。

# 将数据集参数添加到计算字段
<a name="dataset-parameters-calculated-fields"></a>

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

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

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

# 将数据集参数添加到筛选条件
<a name="dataset-parameters-dataset-filters"></a>

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

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

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

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

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

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

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

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

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

# 在快速分析中使用数据集参数
<a name="dataset-parameters-analysis"></a>

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

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

## 在新的 “快速分析” 中映射数据集参数
<a name="dataset-parameters-map-to-analysis"></a>

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

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

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

1. 选择要更改的分析。

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

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

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

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

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

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

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

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

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

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

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

## 向已映射的分析参数添加筛选条件控件
<a name="dataset-parameters-analysis-filter-control"></a>

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

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

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

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

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

# 数据集参数的高级使用案例
<a name="dataset-parameters-advanced-options"></a>

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

## 使用带数据集参数的多值控件
<a name="dataset-parameters-dropdown"></a>

使用插入到数据集自定义 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` 字段。

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

## 使用带“全选”选项的控件
<a name="dataset-parameters-controls-select-all"></a>

默认情况下，一个或多个数据集参数映射到分析参数并添加到控件时，`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 表达式将返回所有唯一记录。如果用户从控件中选择不同的值，则查询将返回数据集参数筛选的值。

### 使用带“全选”和“多值”选项的控件
<a name="dataset-parameters-controls-multi-select-all"></a>

您可以将前面的 `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. 创建新的筛选条件控件或编辑现有的筛选条件控件，然后选择**隐藏全选**，以隐藏多值控件中显示的已禁用**全选**选项。

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

# 在 Amazon Quick 中使用行级安全
<a name="row-level-security"></a>


|  | 
| --- |
|  适用于：企业版  | 

在 Amazon Quick 的企业版中，您可以通过配置行级安全 (RLS) 来限制对数据集的访问。在共享数据集之前或之后，您可以执行该操作。当您使用 RLS 与数据集所有者共享数据集时，他们仍然可以看到所有数据。但是，当您与读者共享该数据集时，他们只能看到受权限数据集规则限制的数据。

此外，当您在应用程序中为未注册的 Quick 用户嵌入 Amazon Quick 控制面板时，您可以对带有标签的数据使用行级安全 (RLS)。 filter/restrict 标签是用户指定的字符串，用于标识应用程序中的会话。您可以使用标签为数据集实现 RLS 控制。通过在数据集中配置基于 RLS 的限制，Quick 会根据与用户身份/会话关联的会话标签筛选数据。

您可以使用用户名或基于组的规则、基于标签的规则或两者来限制对数据集的访问。

如果要保护在 Quick 中配置（注册）的用户或群组的数据，请选择基于用户的规则。为此，请选择一个权限数据集，该数据集包含按列为访问数据的每个用户或组设置的规则。只有规则中标识的用户或组才有权访问数据。

只有当您使用嵌入式仪表板并希望保护未在 Quick 中设置的用户（未注册用户）的数据时，才选择基于标签的规则。为此，请在列上定义标签来保护数据。嵌入控制面板时，必须传递标签的值。

**Topics**
+ [使用采用基于用户的规则的行级别安全性限制对数据集的访问](restrict-access-to-a-data-set-using-row-level-security.md)
+ [为匿名用户嵌入控制面板时，使用采用基于标签的规则的行级别安全性来限制对数据集的访问](quicksight-dev-rls-tags.md)

# 使用采用基于用户的规则的行级别安全性限制对数据集的访问
<a name="restrict-access-to-a-data-set-using-row-level-security"></a>


|  | 
| --- |
|  适用于：企业版  | 

在 Amazon Quick 的企业版中，您可以通过配置行级安全 (RLS) 来限制对数据集的访问。在共享数据集之前或之后，您可以执行该操作。当您使用 RLS 与数据集所有者共享数据集时，他们仍然可以看到所有数据。但是，当您与读者共享该数据集时，他们只能看到受权限数据集规则限制的数据。通过添加行级别安全性，您可以进一步控制其访问权限。

**注意**  
将 SPICE 数据集应用于行级别安全性时，数据集中的每个字段最多可以包含 2,047 个 Unicode 字符。如果字段包含的内容超过该限额，则会在摄取过程中被截断。要了解有关 SPICE 数据限额的更多信息，请参阅[导入数据的 SPICE 限额](data-source-limits.md#spice-limits)。

为此，您需要创建一个查询或文件，其中包含一列用于标识用户或群组。你可以使用`UserName`和`GroupName`，也可以使用`UserARN`和`GroupARN`。您可以将这看作是为该用户或组*添加规则*。然后您可以为要授予或限制访问权限的每个字段向查询或文件添加一个列。对于您添加的每个用户名或组名，请添加每个字段的值。您可以使用 NULL (没有值) 表示所有值。要查看示例数据集规则，请参阅[为行级别安全性创建数据集规则](#create-data-set-rules-for-row-level-security)。

要应用数据集规则，请将规则作为权限数据集添加到您的数据集。请记住以下几点：
+ 权限数据集不能包含重复值。评估如何应用规则时，将忽略重复项。
+ 指定的每个用户或组只能看到*匹配*数据集规则中字段值的行。
+ 如果为某个用户或组添加规则，并将其余列保留为“没有值”（NULL），则表示您向其授予访问所有数据的权限。
+ 如果不为用户或组添加规则，则该用户或组无法看到任何数据。
+ 应用于每个用户的完整规则记录集不得超过 999 个。此限制适用于直接分配给用户名的规则总数以及通过组名称分配给用户的任何规则。
+ 如果字段包含逗号 (,)，Amazon Quick 会将每个用逗号分隔的单词视为筛选器中的单个值。例如，在 `('AWS', 'INC')` 中，`AWS,INC` 被视为两个字符串：`AWS` 和 `INC`。要使用 `AWS,INC` 筛选，请在权限数据集中用双引号将字符串包装起来。

  如果受限数据集是一个 SPICE 数据集，则每个用户对每个受限字段应用的筛选值数量不能超过 19.2 万个。这适用于直接分配给用户名的筛选条件值总数以及通过组名称分配给用户的任何筛选条件值。

  如果受限数据集是直接查询数据集，则每个用户应用的筛选值数量因数据来源而异。

  超过筛选值限制可能会导致视觉渲染失败。我们建议您在受限数据集中添加一个附加列，以便根据原始受限列将行分成几组，从而缩短筛选条件列表。

Amazon Quick 将空格视为文字值。如果您限制的字段中有一个空格，则数据集规则适用于这些行。Amazon Quick 将两个 NULLs 空白（空字符串 “”）都视为 “无值”。NULL 是一个空字段值。

根据数据集的具体数据来源，您可以配置直接查询来访问权限表。以空格分隔的词不需要用引号分隔。如果您使用直接查询，您可以轻松更改原始数据来源中的查询。

您也可以从文本文件或电子表格中上传数据集规则。如果您使用的是逗号分隔值 (CSV) 文件，请不要在给定的行中包含任何空格。以空格分隔的词需要用引号分隔。如果使用基于文件的数据集规则，请通过在数据集的权限设置中覆盖现有规则来应用任何更改。

在 “数据” 屏幕中，受限制**的数据**集标有 “**受**限制” 一词。

从已激活 RLS 规则的父数据集创建的子数据集，将保留与父数据集相同的 RLS 规则。您可以向子数据集添加更多 RLS 规则，但不能移除该数据集继承自父数据集的 RLS 规则。

只有通过直接查询，才能创建从已激活 RLS 规则的父数据集创建的子数据集。SPICE 不支持继承父数据集的 RLS 规则的子数据集。

行级别安全性仅适用于包含文本数据（string、char、varchar 等）的字段。它目前不适用于日期或数字字段。使用行级别安全性（RLS）的数据集不支持异常检测。

## 为行级别安全性创建数据集规则
<a name="create-data-set-rules-for-row-level-security"></a>

要创建权限文件或查询用作数据集规则，请按照以下过程操作。

**创建权限文件或查询用作数据集规则**

1. 创建一个文件或查询，其中包含适用于行级别安全性的数据集规则（权限）。

   字段顺序至关紧要。不过，所有字段区分大小写。确保它们与字段名称和值完全匹配。

   结构应类似于下列项目之一。确保您至少具有一个标识用户或组的字段。您可以包含两者，但只需要一个，并且一次只使用一个。您可以为用户或组所用的字段选择任意名称。
**注意**  
如果您要指定群组，请仅使用 Amazon Quick 群组或 Microsoft AD 群组。

   以下示例显示了一个包含组的表。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/restrict-access-to-a-data-set-using-row-level-security.html)

   以下示例演示了一个包含用户名的表。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/restrict-access-to-a-data-set-using-row-level-security.html)

   以下示例显示了一个包含用户和群组 Amazon 资源名称 (ARNs) 的表。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/restrict-access-to-a-data-set-using-row-level-security.html)

   如果您使用 .csv 文件，结构应与以下某个示例相似。

   ```
   UserName,SalesRegion,Segment
   AlejandroRosalez,EMEA,"Enterprise,SMB,Startup"
   MarthaRivera,US,Enterprise
   NikhilJayashankars,US,SMB
   PauloSantos,US,Startup
   SaanviSarkar,APAC,"SMB,Startup"
   sales-tps@example.com,"",""
   ZhangWei,APAC-Sales,"Enterprise,Startup"
   ```

   ```
   GroupName,SalesRegion,Segment
   EMEA-Sales,EMEA,"Enterprise,SMB,Startup"
   US-Sales,US,Enterprise
   US-Sales,US,SMB
   US-Sales,US,Startup
   APAC-Sales,APAC,"SMB,Startup"
   Corporate-Reporting,"",""
   APAC-Sales,APAC,"Enterprise,Startup"
   ```

   ```
   UserARN,GroupARN,SalesRegion
   arn:aws:quicksight:us-east-1:123456789012:user/Bob,arn:aws:quicksight:us-east-1:123456789012:group/group-1,APAC
   arn:aws:quicksight:us-east-1:123456789012:user/Sam,arn:aws:quicksight:us-east-1:123456789012:group/group-2,US
   ```

   以下是一个 SQL 示例。

   ```
   /* for users*/
   	select User as UserName, SalesRegion, Segment
   	from tps-permissions;
   
   	/* for groups*/
   	select Group as GroupName, SalesRegion, Segment
   	from tps-permissions;
   ```

1. 根据数据集规则创建数据集。要确保您可以轻松找到该数据集，请为其指定有意义的名称，例如 **Permissions-Sales-Pipeline**。

## 标记行级别安全性的规则数据集
<a name="rules-dataset-flagging-for-row-level-security"></a>

使用以下过程将数据集适当地标记为规则数据集。

规则数据集是一个标志，用于区分用于行级别安全性的权限数据集和常规数据集。如果权限数据集在 2025 年 3 月 31 日之前应用于常规数据集，则它将在**数据集**登录页面中具有规则数据集标志。

如果权限数据集在 2025 年 3 月 31 日之前未应用于常规数据集，则它将被归类为常规数据集。要将其用作规则数据集，请复制权限数据集并在创建数据集时在控制台上将其标记为规则数据集。选择 “编辑数据集”，然后在选项下选择 “按规则重复数据集”。

要成功将其复制为规则数据集，请确保原始数据集具有：1. 必需的用户元数据或组元数据列；2. 仅字符串类型的列。

要在控制台上创建新的规则数据集，请在“新建数据集”下拉列表中选择“新建规则数据集”。以编程方式创建规则数据集时，请添加以下参数：[UseAs: RLS\$1R](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateDataSet.html#API_CreateDataSet_RequestSyntax) ULES。这是一个可选参数，仅用于创建规则数据集。一旦通过控制台或以编程方式创建了数据集，并将其标记为规则数据集或常规数据集，就无法更改。

一旦数据集被标记为规则数据集，Amazon Quick 就会对其应用严格的 SPICE 摄取规则。为了确保数据完整性，如果存在无效行或单元格超过长度限制，规则数据集的 SPICE 摄取将会失败。您必须修复摄取问题才能重新启动成功的摄取。严格的摄取规则仅适用于规则数据集。当出现跳过行或字符串截断的情况时，常规数据集不会出现数据集摄取失败。

## 应用行级别安全性
<a name="apply-row-level-security"></a>

要通过将文件或查询用作包含权限规则的数据集来应用行级别安全性（RLS），请按照以下过程操作。

**使用文件或查询应用行级别安全性**

1. 确认已将您的规则添加为新数据集。如果添加了这些规则，但在数据集列表中看不到这些规则，请刷新屏幕。

1. 在**数据**页面上，选择数据集

1. 在打开的数据集详细信息页面上，为**行级别安全性**选择**设置**。

1. 在打开的**设置行级别安全性**页面上，选择**基于用户的规则**。

1. 从显示的数据集列表中选择自己的权限数据集。

   如果该屏幕上未显示您的权限数据集，请返回到自己的数据集，然后刷新该页面。

1. 对于**权限策略**，选择**授予对数据集的访问权限**。每个数据集仅具有一个活动权限数据集。如果您尝试添加第二个权限数据集，它将覆盖现有的数据集。
**重要**  
在使用行级别安全性时，某些限制适用于 NULL 和空字符串值：  
如果您的数据集在受限制的字段中具有 NULL 值或空字符串（“”），在应用限制后，将忽略这些行。
在权限数据集中，NULL 值和空字符串以相同方式处理。有关更多信息，请参阅下表。
为了防止意外泄露敏感信息，Amazon Quick 跳过了向所有人授予访问权限的空白 RLS 规则。当一行的所有列都没有值时，就会出现*空 RLS 规则*。Quick RLS 将 NULL、空字符串 (“”) 或逗号分隔的空字符串（例如 “、、、”）视为无值。  
跳过空规则后，其他非空 RLS 规则仍然适用。
如果权限数据集只有空规则且所有空规则都被跳过，则任何人都无法访问受此权限数据集限制的任何数据。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/restrict-access-to-a-data-set-using-row-level-security.html)

   您与之共享控制面板的任何用户都可以查看其中的所有数据，除非数据集规则限制数据集。

1. 要保存更改，请选择**应用数据集**。然后，在**保存数据集规则？**页面上选择**应用并激活**。权限更改将立即应用于现有用户。

1. （可选）要删除权限，请先从数据集中删除数据集规则。

   确保已删除数据集规则。接下来，选择权限数据集，然后选择**删除数据集**。

   要覆盖权限，请选择新的权限数据集，然后应用该数据集。您可以重复使用相同的数据集名称。但是，请务必在**权限**屏幕中应用新权限来激活这些权限。SQL 查询会动态更新，因此可以在 Amazon Quick 之外对其进行管理。对于查询，权限会在自动刷新直接查询缓存时更新。

从目标数据集中删除基于文件的权限数据集之前，如果已删除该数据集，则受限制的用户无法访问该数据集。在数据集处于该状态时，它仍标记为**受限**。不过，在查看该数据集的**权限**时，您可以看到该数据集没有选择的数据集规则。

要解决该问题，应指定新的数据集规则。创建具有相同名称的数据集不足以解决该问题。您必须在**权限**屏幕中选择新权限数据集。该限制不适用于直接 SQL 查询。

# 为匿名用户嵌入控制面板时，使用采用基于标签的规则的行级别安全性来限制对数据集的访问
<a name="quicksight-dev-rls-tags"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 管理员和 Amazon Quick 开发者  | 

当您在应用程序中为未在 Quick 中配置（注册）的用户嵌入 Amazon Quick 控制面板时，您可以使用行级安全 (RLS) 来 filter/restrict 保护带有标签的数据。标签是用户指定的字符串，用于标识应用程序中的会话。您可以使用标签为数据集实现 RLS 控制。通过在数据集中配置基于 RLS 的限制，Quick 根据与用户身份/会话关联的会话标签筛选数据。

例如，假设您的物流公司会为各种零售商提供面向客户的应用程序。来自这些零售商的成千上万名用户会访问您的应用程序，查看与他们的订单如何从您的仓库发货相关的指标。

您不想在 Quick 中管理成千上万的用户，因此您可以使用匿名嵌入将选定的仪表板嵌入到您的应用程序中，经过身份验证和授权的用户可以看到这些仪表板。不过，您要确保零售商只能看到与其业务相关的数据，而不会看到其他业务数据。您可以使用带标签的 RLS 来确保客户只能看到与他们相关的数据。

为此，请完成以下步骤：

1. 向数据集添加 RLS 标签。

1. 在运行时系统中使用 `GenerateEmbedUrlForAnonymousUser` API 操作为这些标签分配值。

   有关使用 `GenerateEmbedUrlForAnonymousUser` API 操作为匿名用户嵌入控制面板的更多信息，请参阅[为匿名（未注册）用户嵌入 Amazon Quick Sight 控制面板](embedded-analytics-dashboards-for-everyone.md)。

使用带标签的 RLS 之前，请记住以下几点：
+ 目前仅匿名嵌入尤其是使用 `GenerateEmbedUrlForAnonymousUser` API 操作的嵌入式控制面板，才支持使用带标签的 RLS。
+ 使用 `GenerateEmbedURLForRegisteredUser` API 操作或旧 `GetDashboardEmbedUrl` API 操作的嵌入式控制面板不支持使用带标签的 RLS。
+  AWS Identity and Access Management (IAM) 或快速身份类型不支持 RLS 标签。
+ 将 SPICE 数据集应用于行级别安全性时，数据集中的每个字段最多可以包含 2,047 个 Unicode 字符。如果字段包含的内容超过该限额，则会在摄取过程中被截断。要了解有关 SPICE 数据限额的更多信息，请参阅[导入数据的 SPICE 限额](data-source-limits.md#spice-limits)。

## 步骤 1：向数据集添加 RLS 标签
<a name="quicksight-dev-rls-tags-add"></a>

您可以在 Amazon Quick 中向数据集添加基于标签的规则。您也可以调用 `CreateDataSet` 或 `UpdateDataSet` API 操作来添加基于标签的规则。有关更多信息，请参阅 [使用 API 向数据集添加 RLS 标签](#quicksight-dev-rls-tags-add-api)。

使用以下步骤在 Quick 中向数据集添加 RLS 标签。

**向数据集添加 RLS 标签**

1. 在快速入门页面中，选择左侧**的数据**。

1. 选择要向其添加 RLS 的数据集。

1. 在打开的数据集详细信息页面上，为**行级别安全性**选择**设置**。

1. 在打开的**设置行级别安全性**页面上，选择**基于标签的规则**。

1. 对于**列**，选择要添加标签规则的列。

   例如，若为物流公司，则使用 `retailer_id` 列。

   仅列出数据类型为字符串的列。

1. 对于**标签**，输入标签键。您可以输入所需的任何标签名称。

   例如，若为物流公司，则使用 `tag_retailer_id` 标签键。这样做可以根据访问应用程序的零售商来设置行级别安全性。

1. （可选）对于**分隔符**，从列表中选择一个分隔符，或输入自己的分隔符。

   为标签分配多个值时，可以使用分隔符来分隔文本字符串。分隔符的值最长可达 10 个字符。

1. （可选）对于**全部匹配**，选择 **\$1**，或输入自己的一个或多个字符。

   在要按数据集中该列的所有值进行筛选时，此选项可以是您希望使用的任何字符。您可以使用字符，而不是逐一列出值。如果指定了此值，则其长度可以至少为一个字符，或最多 256 个字符。

1. 选择**添加**。

   标签规则已添加到数据集并在底部列出，但尚未应用。要向数据集添加其他标签规则，请重复步骤 5 到 9。要编辑标签规则，请选择规则后面的铅笔图标。要删除标签规则，请选择规则后面的删除图标。您最多可以向数据集添加 50 个标签。

1. 准备好将标签规则应用于数据集时，选择**应用规则**。

1. 在打开的**是否启用基于标签的安全性？**页面中，选择**应用并激活**。

   基于标签的规则现已激活。**设置行级别安全性**页面将显示一个切换开关，供您开启和关闭数据集的标签规则。

   要关闭数据集的所有基于标签的规则，请关闭**基于标签的规则**开关，然后在出现的文本框中输入“确认”。

   在**数据**页面上，数据集行中会出现一个锁形图标，表示标签规则已启用。

   您现在可以在运行时系统中使用标签规则来设置标签值，如 [步骤 2：在运行时系统中为 RLS 标签分配值](#quicksight-dev-rls-tags-assign-values) 中所述。这些规则仅在处于活动状态时影响快速阅读器。
**重要**  
在数据集上分配并启用标签后，请确保授予 Quick authors 权限，以便在创作仪表板时查看数据集中的任何数据。  
要授予 Quick 作者查看数据集中数据的权限，请创建权限文件或查询以用作数据集规则。有关更多信息，请参阅 [为行级别安全性创建数据集规则](restrict-access-to-a-data-set-using-row-level-security.md#create-data-set-rules-for-row-level-security)。

创建基于标签的规则后，将出现一个新的**管理规则**表，其中会显示基于标签的规则之间的关系。要更改**管理规则**表中列出的规则，请选择规则后面的铅笔图标。然后添加或移除标签，并选择**更新**。要将更新后的规则应用于数据集，请选择**应用**。

### （可选）将 OR 条件添加到 RLS 标签
<a name="quicksight-dev-rls-tags-or"></a>

您还可以在基于标签的规则中添加 OR 条件，以进一步自定义向 Quick 账户用户显示数据的方式。当您在基于标签的规则中使用 OR 条件时，如果规则中定义的至少一个标签有效，则会显示 Quick 中的视觉效果。

**将 OR 条件添加到基于标签的规则**

1. 在**管理规则**表中，选择**添加 OR 条件**。

1. 在出现的**选择标签**下拉列表中，选择要创建 OR 条件的标签。您最多可以向**管理规则**表添加 50 个 OR 条件。您可以向数据集中的单列添加多个标签，但规则中至少需要包含一个列标签。

1. 选择**更新**将条件添加到规则，然后选择**应用**将更新后的规则应用于数据集。

### 使用 API 向数据集添加 RLS 标签
<a name="quicksight-dev-rls-tags-add-api"></a>

您也可以通过调用 `CreateDataSet` 或 `UpdateDataSet` API 操作，在数据集中配置并启用基于标签的行级别安全性。通过以下示例了解如何操作。

**重要**  
在 API 调用中配置会话标签时，  
将会话标签视为安全证书。不要向最终用户或客户端代码公开会话标签。
实现服务器端控制。确保会话标签完全由您可信的后端服务设置，而不是由最终用户可以修改的参数设置。
保护会话标签不被枚举。确保一个租户中的用户无法发现或猜测属于其他租户的 SessionTag 值。
查看您的架构。如果允许下游客户或合作伙伴直接调用 API，请评估这些用户是否可以为他们不应访问的租户指定 SessionTag 值。

------
#### [ CreateDataSet ]

以下示例展示了如何创建带 RLS 标签的数据集。该示例采用了前述的物流公司场景。标签在 `row-level-permission-tag-configuration` 元素中定义。标签在数据要受到保护的列上定义。有关此可选元素的更多信息，请参阅 *Amazon Quick API 参考[RowLevelPermissionTagConfiguration](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RowLevelPermissionTagConfiguration.html)*中的。

```
create-data-set
		--aws-account-id <value>
		--data-set-id <value>
		--name <value>
		--physical-table-map <value>
		[--logical-table-map <value>]
		--import-mode <value>
		[--column-groups <value>]
		[--field-folders <value>]
		[--permissions <value>]
		[--row-level-permission-data-set <value>]
		[--column-level-permission-rules <value>]
		[--tags <value>]
		[--cli-input-json <value>]
		[--generate-cli-skeleton <value>]
		[--row-level-permission-tag-configuration 
	'{
		"Status": "ENABLED",
		"TagRules": 
			[
				{
					"TagKey": "tag_retailer_id",
					"ColumnName": "retailer_id",
					"TagMultiValueDelimiter": ",",
					"MatchAllValue": "*"
				},
				{
					"TagKey": "tag_role",
					"ColumnName": "role"
				}
			],
		"TagRuleConfigurations":
			[
				tag_retailer_id
			],
			[
				tag_role
			]
	}'
]
```

本示例中的标签是在元素的 `TagRules` 部分中定义的。在本示例中，根据两列定义了两个标签：
+ `tag_retailer_id` 标签键是为 `retailer_id` 列定义的。对本示例中的物流公司而言，这将根据访问应用程序的零售商来设置行级别安全性。
+ `tag_role` 标签键是为 `role` 列定义的。对本示例中的物流公司而言，这将根据从特定零售商访问应用程序的用户的角色来设置额外的行级别安全性层。例如 `store_supervisor` 或 `manager`。

对于每个标签，您都可以定义 `TagMultiValueDelimiter` 和 `MatchAllValue`。这二者都是可选项。
+ `TagMultiValueDelimiter` – 此选项可以是任意字符串，用于在运行时系统中传递值时分隔值。此值最长可达 10 个字符。本示例使用逗号作为分隔符值。
+ `MatchAllValue` – 在要按数据集中该列的所有值进行筛选时，此选项可以是您希望使用的任何字符。您可以使用字符，而不是逐一列出值。如果指定了此值，其长度至少为一个字符，最多为 256 个字符。本示例使用星号作为通配值。

在为数据集列配置标签时，请使用强制属性 `Status` 开启或关闭标签。要启用标签规则，请为该属性使用值 `ENABLED`。启用标签规则后，就可以在运行时系统中使用这些规则来设置标签值，如 [步骤 2：在运行时系统中为 RLS 标签分配值](#quicksight-dev-rls-tags-assign-values) 中所述。

以下为响应定义的示例。

```
{
			"Status": 201,
			"Arn": "arn:aws:quicksight:us-west-2:11112222333:dataset/RLS-Dataset",
			"DataSetId": "RLS-Dataset",
			"RequestId": "aa4f3c00-b937-4175-859a-543f250f8bb2"
		}
```

------
#### [ UpdateDataSet ]

**UpdateDataSet**

您可以使用 `UpdateDataSet` API 操作为现有数据集添加或更新 RLS 标签。

以下为使用 RLS 标签更新数据集的示例。该示例采用了前述的物流公司场景。

```
update-data-set
		--aws-account-id <value>
		--data-set-id <value>
		--name <value>
		--physical-table-map <value>
		[--logical-table-map <value>]
		--import-mode <value>
		[--column-groups <value>
		[--field-folders <value>]
		[--row-level-permission-data-set <value>]
		[--column-level-permission-rules <value>]
		[--cli-input-json <value>]
		[--generate-cli-skeleton <value>]
				[--row-level-permission-tag-configuration 
	'{
		"Status": "ENABLED",
		"TagRules": 
			[
				{
					"TagKey": "tag_retailer_id",
					"ColumnName": "retailer_id",
					"TagMultiValueDelimiter": ",",
					"MatchAllValue": "*"
				},
				{
					"TagKey": "tag_role",
					"ColumnName": "role"
				}
			],
		"TagRuleConfigurations":
			[
				tag_retailer_id
			],
			[
				tag_role
			]
	}'
]
```

以下为响应定义的示例。

```
{
			"Status": 201,
			"Arn": "arn:aws:quicksight:us-west-2:11112222333:dataset/RLS-Dataset",
			"DataSetId": "RLS-Dataset",
			"RequestId": "aa4f3c00-b937-4175-859a-543f250f8bb2"
		}
```

------

**重要**  
在数据集上分配并启用标签后，请确保授予 Quick authors 权限，以便在创作仪表板时查看数据集中的任何数据。  
要授予 Quick 作者查看数据集中数据的权限，请创建权限文件或查询以用作数据集规则。有关更多信息，请参阅 [为行级别安全性创建数据集规则](restrict-access-to-a-data-set-using-row-level-security.md#create-data-set-rules-for-row-level-security)。

有关该`RowLevelPermissionTagConfiguration`元素的更多信息，请参阅 *Amazon Quick API 参考[RowLevelPermissionTagConfiguration](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RowLevelPermissionTagConfiguration.html)*中的。

## 步骤 2：在运行时系统中为 RLS 标签分配值
<a name="quicksight-dev-rls-tags-assign-values"></a>

您只能将 RLS 标签用于匿名嵌入。您可以使用 `GenerateEmbedUrlForAnonymousUser` API 操作为标签设置值。

**重要**  
在 API 调用中配置会话标签时，  
将会话标签视为安全证书。不要向最终用户或客户端代码公开会话标签。
实现服务器端控制。确保会话标签完全由您可信的后端服务设置，而不是由最终用户可以修改的参数设置。
保护会话标签不被枚举。确保一个租户中的用户无法发现或猜测属于其他租户的 SessionTag 值。
查看您的架构。如果允许下游客户或合作伙伴直接调用 API，请评估这些用户是否可以为他们不应访问的租户指定 SessionTag 值。

以下示例演示了如何为上一步数据集中定义的 RLS 标签分配值。

```
POST /accounts/AwsAccountId/embed-url/anonymous-user
	HTTP/1.1
	Content-type: application/json
	{
		“AwsAccountId”: “string”,
		“SessionLifetimeInMinutes”: integer,
		“Namespace”: “string”, // The namespace to which the anonymous end user virtually belongs
		“SessionTags”:  // Optional: Can be used for row-level security
			[
				{
					“Key”: “tag_retailer_id”,
					“Value”: “West,Central,South”
				}
				{
					“Key”: “tag_role”,
					“Value”: “shift_manager”
				}
			],
		“AuthorizedResourceArns”:
			[
				“string”
			],
		“ExperienceConfiguration”:
			{
				“Dashboard”:
					{
						“InitialDashboardId”: “string”
						// This is the initial dashboard ID the customer wants the user to land on. This ID goes in the output URL.
					}
			}
	}
```

以下为响应定义的示例。

```
HTTP/1.1 Status
	Content-type: application/json

	{
	"EmbedUrl": "string",
	"RequestId": "string"
	}
```

只有 `GenerateEmbedUrlForAnonymousUser` API 操作才支持无需在 Quick 中注册用户的 RLS。在此操作中，您可以在 `SessionTags` 下定义与数据集列关联的标签的值。

本示例定义了以下分配：
+ 值 `West`、`Central` 和 `South` 在运行时系统中分配给 `tag_retailer_id` 标签。数据集中的 `TagMultipleValueDelimiter` 中定义的分隔符使用一个逗号。要在列中使用调用值，可以将值设置为 *\$1*，该值在创建标签时定义为 `MatchAllValue`。
+ 值 `shift_manager` 被分配给 `tag_role` 标签。

使用生成的 URL 的用户只能查看 `role` 列中包含 `shift_manager` 值的行。该用户只能查看 `retailer_id` 列中的值 `West`、`Central` 或 `South`。

有关使用 `GenerateEmbedUrlForAnonymousUser` API 操作为匿名用户嵌入控制面板的更多信息[为匿名（未注册）用户嵌入 Amazon Quick Sight 控制面板](embedded-analytics-dashboards-for-everyone.md)，请参阅或[GenerateEmbedUrlForAnonymousUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html)在 *Amazon Quick API 参考*中

# 使用列级别安全性限制对数据集的访问
<a name="restrict-access-to-a-data-set-using-column-level-security"></a>

在 Quick 的企业版中，您可以通过配置列级安全性 (CLS) 来限制对数据集的访问。启用 CLS 的数据集或分析旁边有受限制的 ![\[The lock icon for CLS.\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/cls-restricted-icon.png) 符号。默认情况下，所有用户和组都有权访问数据。通过使用 CLS，您可以管理对数据集中特定列的访问权限。

如果您使用的分析或控制面板包含您无权访问的具有 CLS 限制的数据集，则您无法创建、查看或编辑使用受限字段的视觉对象。对于大多数视觉对象类型，如果视觉对象具有您无权访问的受限列，则您无法在分析或控制面板中看到该视觉对象。

表和数据透视表具有不同的行为。如果表或数据透视表在**行**或**列**字段井中使用受限列，而您无权访问这些受限列，则您无法在分析或控制面板中看到该视觉对象。如果表或数据透视表在**值**字段井中具有受限列，则您可以在分析或控制面板中看到该表，其中仅包含您有权访问的值。受限列的值显示为未授权。

要在分析或控制面板上启用列级别安全性，您需要管理员访问权限。

**使用 CLS 创建新分析**

1. 在快速入门页面上，选择**分析**选项卡。

1. 在右上角，选择**新分析**。

1. 选择一个数据集，然后选择**列级别安全性**。

1. 选择要限制的列，然后选择**下一步**。默认情况下，大多数用户和组都有权访问所有列。

1. 选择谁可以访问每列，然后选择**应用**以保存您的更改。

**将现有分析用于 CLS**

1. 在快速入门页面上，选择**数据**选项卡。

1. 在数据页面上，打开您的数据集

1. 在打开的数据集详细信息页面上，对于**列级别安别全性**，选择**设置**。

1. 选择要限制的列，然后选择**下一步**。默认情况下，大多数用户和组都有权访问所有列。

1. 选择谁可以访问每列，然后选择**应用**以保存您的更改。

**使用 CLS 创建控制面板**

1. 在快速导航窗格上，选择**分析**选项卡。

1. 选择要为其创建控制面板的分析。

1. 在右上角，选择**发布**。

1. 选择下列选项之一：
   + 要创建新控制面板，请选择**将新控制面板发布为**，然后为新控制面板输入名称。
   + 要替换现有的控制面板，选择**替换现有控制面板**，然后从列表中选择控制面板。

   此外，您可以选择**高级发布选项**。有关更多信息，请参阅 [发布控制面板](creating-a-dashboard.md)。

1. 选择 **Publish dashboard（发布控制面板）**。

1. （可选）执行以下操作之一：
   + 要发布而不共享某个控制面板，请在出现**与用户共享控制面板**屏幕时选择右上角的 **x**。您可以通过在应用程序栏中选择**共享**来稍后共享该控制面板。
   + 要共享该控制面板，请按照[共享 Amazon 快速浏览控制面板](sharing-a-dashboard.md)中的过程操作。

# 在 Amazon Quick 中以 IAM 角色身份运行查询
<a name="datasource-run-as-role"></a>

您可以对连接至 Amazon Athena、Amazon Redshift 或 Amazon S3 的数据来源使用精细的访问策略，而不是更广泛的权限，从而提高数据安全性。首先，您需要创建一个 AWS Identity and Access Management （IAM）角色，该角色的权限可在人员或 API 开始查询时激活。然后，Quick 管理员或开发人员将 IAM 角色分配给 Athena 或 Amazon S3 数据源。角色到位后，任何运行查询的人员或 API 都拥有运行查询所需的确切权限。

在承诺实施运行身份角色以提高数据安全性之前，需要考虑以下几点：
+ 阐述额外的安全措施为您带来的优势。
+ 与您的 Quick 管理员合作，了解向数据源添加角色是否有助于您更好地实现安全目标或要求。
+ 询问对于涉及的数据来源、人员和应用程序的数量，您的团队能否以可行的方式记录和维护这种类型的安全措施？ 如果不能，那么谁来承担这部分工作？
+ 在结构化组织中，将利益相关者分配到运营、开发和 IT 支持组成的平行团队中。询问他们的经验、建议以及是否愿意支持您的计划。
+ 在启动项目之前，请考虑进行概念验证，让需要访问数据的人员参与其中。

以下规则适用于在 Athena、Amazon Redshift 和 Amazon S3 中使用运行身份角色：
+ 每个数据源只能关联一个 RoleArn。数据来源的使用者（通常会访问数据集和视觉对象）可以生成许多不同类型的查询。该角色对正常工作和无法正常工作的查询设定了界限。
+ ARN 必须与使用它的 Quick 实例 AWS 账户 相同的 IAM 角色对应。
+ IAM 角色必须具有信任关系，允许 Quick 担任该角色。
+ 调用 Quick 的身份 APIs 必须拥有传递角色的权限，然后才能更新`RoleArn`属性。您只需要在创建或更新角色 ARN 时传递角色。之后不会重新评估权限。同样，省略角色 ARN 时不需要权限。
+ 省略角色 ARN 时，Athena 或 Amazon S3 数据来源将使用账户范围的角色和范围缩小策略。
+ 当存在角色 ARN 时，账户范围的角色和任何范围缩小策略都将被忽略。对于 Athena 数据来源，Lake Formation 权限不会被忽略。
+ 对于 Amazon S3 数据来源，必须可以使用 IAM 角色访问清单文件和清单文件指定的数据。
+ ARN 字符串需要与数据 AWS 区域 所在 AWS 账户 和查询位置中的现有 IAM 角色相匹配。

当 Quick 连接到中的其他服务时 AWS，它会使用 IAM 角色。默认情况下，Quick 为其使用的每项服务创建该角色的细化程度较低的版本，该角色由 AWS 账户 管理员管理。当您添加带有自定义权限策略的 IAM 角色 ARN 时，您会为需要额外保护的数据来源覆盖更广泛的角色。有关策略的更多信息，请参阅《IAM 用户指南》中的[创建客户管理型策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html)。

## 使用 Athena 数据来源运行查询
<a name="datasource-run-as-role-athena"></a>

使用 API 将 ARN 附加到 Athena 数据来源。为此，请在的[RoleArn](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RoleArn.html)属性中添加角色 ARN。[AthenaParameters](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_AthenaParameters.html)为了进行验证，您可以在**编辑 Athena 数据来源**对话框中查看角色 ARN。但是，**角色 ARN** 是一个只读字段。

首先，您需要一个自定义 IAM 角色，我们在以下示例中对此进行了演示。

请记住，以下代码示例仅用于学习。此示例仅在临时开发和测试环境中使用，不能在生产环境中使用。此示例中的策略不保护任何特定资源，这些资源必须位于可部署策略中。此外，即使是为了开发，您也需要添加自己的 AWS 账户信息。

以下命令创建一个简单的新角色并附加一些向 Quick 授予权限的策略。

```
aws iam create-role \
        --role-name TestAthenaRoleForQuickSight \
        --description "Test Athena Role For QuickSight" \
        --assume-role-policy-document '{
            "Version": "2012-10-17"		 	 	 ,
            "Statement": [
                {
                    "Effect": "Allow",
                    "Principal": {
                        "Service": "quicksight.amazonaws.com"
                    },
                    "Action": "sts:AssumeRole"
                }
            ]
        }'
```

确定或创建用于每个数据源的 IAM 角色后，使用附加策略 attach-role-policy。

```
aws iam attach-role-policy \
        --role-name TestAthenaRoleForQuickSight \
        --policy-arn arn:aws:iam::222222222222:policy/service-role/AWSQuickSightS3Policy1

    aws iam attach-role-policy \
        --role-name TestAthenaRoleForQuickSight \
        --policy-arn arn:aws:iam::aws:policy/service-role/AWSQuicksightAthenaAccess1

    aws iam attach-role-policy \
        --role-name TestAthenaRoleForQuickSight \
        --policy-arn arn:aws:iam::aws:policy/AmazonS3Access1
```



验证权限后，您可以通过创建新角色或更新现有角色在 Quick 数据源中使用该角色。使用这些命令时，请更新 AWS 账户 ID 并 AWS 区域 使其与您自己的 ID 相匹配。

请记住，这些示例代码片段不适用于生产环境。 AWS 强烈建议您为生产案例确定并使用一组最低权限策略。

```
aws quicksight create-data-source
        --aws-account-id 222222222222 \
        --region us-east-1 \
        --data-source-id "athena-with-custom-role" \
        --cli-input-json '{
            "Name": "Athena with a custom Role",
            "Type": "ATHENA",
            "data sourceParameters": {
                "AthenaParameters": {
                    "RoleArn": "arn:aws:iam::222222222222:role/TestAthenaRoleForQuickSight"
                }
            }
        }'
```

## 使用 Amazon Redshift 数据来源运行查询
<a name="datasource-run-as-role-redshift"></a>

将您的 Amazon Redshift 数据与运行身份角色联系起来，从而通过精细的访问策略提高数据安全性。您可以为使用公共网络或 VPC 连接的 Amazon Redshift 数据来源创建运行身份角色。您可以在**编辑 Amazon Redshift 数据来源**对话框中指定要使用的连接类型。Amazon Redshift Serverless 数据来源不支持运行方式角色。

首先，您需要一个自定义 IAM 角色，我们在以下示例中对此进行了演示。以下命令创建示例新角色并附加向 Quick 授予权限的策略。

```
aws iam create-role \
--role-name TestRedshiftRoleForQuickSight \
--description "Test Redshift Role For QuickSight" \
--assume-role-policy-document '{
    "Version": "2012-10-17"		 	 	 ,
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "quicksight.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}'
```

在您确定或创建用于每个数据来源的 IAM 角色后，请使用 `attach-role-policy` 附加策略。如果您要使用的角色附加了 `redshift:GetClusterCredentialsWithIAM` 权限，则 `DatabaseUser` 和 `DatabaseGroups` 的值是可选的。

```
aws iam attach-role-policy \
--role-name TestRedshiftRoleForQuickSight \
--policy-arn arn:aws:iam:111122223333:policy/service-role/AWSQuickSightRedshiftPolicy
    
        
aws iam create-policy --policy-name RedshiftGetClusterCredentialsPolicy1 \
--policy-document file://redshift-get-cluster-credentials-policy.json 


aws iam attach-role-policy \
--role-name TestRedshiftRoleForQuickSight \
--policy-arn arn:aws:iam:111122223333:policy/RedshiftGetClusterCredentialsPolicy1
// redshift-get-cluster-credentials-policy.json
{
    "Version": "2012-10-17"		 	 	 ,
    "Statement": [
        {
            "Sid": "RedshiftGetClusterCredentialsPolicy",
            "Effect": "Allow",
            "Action": [
                "redshift:GetClusterCredentials"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

上面的示例创建了一个使用 `RoleARN`、`DatabaseUser` 和 `DatabaseGroups` IAM 参数的数据来源。如果您只想通过 IAM `RoleARN` 参数建立连接，请将 `redshift:GetClusterCredentialsWithIAM` 权限附加到您的角色，如下例所示。

```
aws iam attach-role-policy \ 
--role-name TestRedshiftRoleForQuickSight \ 
--policy-arn arn:aws:iam:111122223333:policy/RedshiftGetClusterCredentialsPolicy1 // redshift-get-cluster-credentials-policy.json {
    "Version": "2012-10-17"		 	 	 ,
    "Statement": [ 
        {
            "Sid": "RedshiftGetClusterCredentialsPolicy", 
            "Effect": "Allow", 
            "Action": [ "redshift:GetClusterCredentialsWithIAM" ],
            "Resource": [ "*" ]
        }
    ]
}"
```

验证权限后，您可以通过创建新角色或更新现有角色在 Quick 数据源中使用该角色。使用这些命令时，请更新 AWS 账户 ID 和 AWS 区域，使其与您自己的账号 ID 和区域一致。

```
aws quicksight create-data-source \
--region us-west-2 \
--endpoint https://quicksight.us-west-2.quicksight.aws.com/ \
--cli-input-json file://redshift-data-source-iam.json \
redshift-data-source-iam.json is shown as below
{
    "AwsAccountId": "AWSACCOUNTID",
    "DataSourceId": "DATSOURCEID",
    "Name": "Test redshift demo iam",
    "Type": "REDSHIFT",
    "DataSourceParameters": {
        "RedshiftParameters": {
            "Database": "integ",
            "Host": "redshiftdemocluster.us-west-2.redshift.amazonaws.com",
            "Port": 8192,
            "ClusterId": "redshiftdemocluster",
            "IAMParameters": {
                "RoleArn": "arn:aws:iam::222222222222:role/TestRedshiftRoleForQuickSight",
                "DatabaseUser": "user",
                "DatabaseGroups": ["admin_group", "guest_group", "guest_group_1"]
            }
        }
    },
    "Permissions": [
      {
        "Principal": "arn:aws:quicksight:us-east-1:AWSACCOUNTID:user/default/demoname",
        "Actions": [
          "quicksight:DescribeDataSource",
          "quicksight:DescribeDataSourcePermissions",
          "quicksight:PassDataSource",
          "quicksight:UpdateDataSource",
          "quicksight:DeleteDataSource",
          "quicksight:UpdateDataSourcePermissions"
        ]
      }
    ]
}
```

如果您的数据来源使用 VPC 连接类型，请使用以下 VPC 配置。

```
{
    "AwsAccountId": "AWSACCOUNTID",
    "DataSourceId": "DATSOURCEID",
    "Name": "Test redshift demo iam vpc",
    "Type": "REDSHIFT",
    "DataSourceParameters": {
        "RedshiftParameters": {
            "Database": "mydb",
            "Host": "vpcdemo.us-west-2.redshift.amazonaws.com",
            "Port": 8192,
            "ClusterId": "vpcdemo",
            "IAMParameters": {
                "RoleArn": "arn:aws:iam::222222222222:role/TestRedshiftRoleForQuickSight",
                "DatabaseUser": "user",
                "AutoCreateDatabaseUser": true
            }
        }
    },
    "VpcConnectionProperties": { 
      "VpcConnectionArn": "arn:aws:quicksight:us-west-2:222222222222:vpcConnection/VPC Name"
    },
    "Permissions": [
      {
        "Principal": "arn:aws:quicksight:us-east-1:222222222222:user/default/demoname",
        "Actions": [
          "quicksight:DescribeDataSource",
          "quicksight:DescribeDataSourcePermissions",
          "quicksight:PassDataSource",
          "quicksight:UpdateDataSource",
          "quicksight:DeleteDataSource",
          "quicksight:UpdateDataSourcePermissions"
        ]
      }
    ]
}
```

如果您的数据来源使用 `redshift:GetClusterCredentialsWithIAM` 权限，但不使用 `DatabaseUser` 或 `DatabaseGroups` 参数，请向该角色授予对架构中部分或所有表的访问权限。要查看角色是否已被授予对特定表的 `SELECT` 权限，请在 Amazon Redshift 查询编辑器中输入以下命令。

```
SELECT
u.usename,
t.schemaname||'.'||t.tablename,
has_table_privilege(u.usename,t.tablename,'select') AS user_has_select_permission
FROM
pg_user u
CROSS JOIN
pg_tables t
WHERE
u.usename = 'IAMR:RoleName'
AND t.tablename = tableName
```

有关 Amazon Redshift 查询编辑器中的 `SELECT` 操作的更多信息，请参阅 [SELECT](https://docs.aws.amazon.com/redshift/latest/dg/r_SELECT_synopsis.html)。

要向角色授予 `SELECT` 权限，请在 Amazon Redshift 查询编辑器中输入以下命令。

```
GRANT SELECT ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA 
schema_name [, ...] } TO "IAMR:Rolename";
```

有关 Amazon Redshift 查询编辑器中的 `GRANT` 操作的更多信息，请参阅 [GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html)。

## 使用 Amazon S3 数据来源运行查询
<a name="datasource-run-as-role-s3"></a>

Amazon S3 数据源包含一个清单文件，Quick 使用该文件来查找和解析您的数据。您可以通过 Quick 控制台上传 JSON 清单文件，也可以提供指向 S3 存储桶中 JSON 文件的 URL。如果您选择提供 URL，则必须授予 Quick 访问在 Amazon S3 中的文件的权限。使用快速管理控制台来控制对清单文件及其引用的数据的访问权限。

借助该**RoleArn**属性，您可以通过覆盖账户范围角色的自定义 IAM 角色授予对清单文件及其引用的数据的访问权限。使用 API 将 ARN 附加到 Amazon S3 数据来源的清单文件。[为此，请在 S3Parameters 的[RoleArn](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RoleArn.html)属性中添加角色 ARN。](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_S3Parameters.html)为了进行验证，您可以在**编辑 S3 数据来源**对话框中查看角色 ARN。但是**角色 ARN** 是只读字段，如以下屏幕截图所示。

首先，请创建一个 Amazon S3 清单文件。然后，您可以在创建新的 Amazon S3 数据集时将其上传到 Amazon Quick，也可以将该文件放入包含您的数据文件的 Amazon S3 存储桶中。查看以下清单文件具体形式的示例：

```
{
    "fileLocations": [
        {
            "URIPrefixes": [
                "s3://quicksightUser-run-as-role/data/"
            ]
        }
    ],
    "globalUploadSettings": {
        "format": "CSV",
        "delimiter": ",",
        "textqualifier": "'",
        "containsHeader": "true"
    }
}
```

有关如何创建清单文件的说明，请参阅 [支持的 Amazon S3 清单文件格式](supported-manifest-file-format.md)。

创建清单文件并将其添加到 Amazon S3 存储桶或将其上传到 Quick 后，在 IAM 中创建或更新授予`s3:GetObject`访问权限的现有角色。以下示例说明如何使用 AWS API 更新现有 IAM 角色：

```
aws iam put-role-policy \
    --role-name QuickSightAccessToS3RunAsRoleBucket \
    --policy-name GrantS3RunAsRoleAccess \
    --policy-document '{
        "Version": "2012-10-17"		 	 	 ,
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "s3:ListBucket",
                "Resource": "arn:aws:s3:::s3-bucket-name"
            },
            {
                "Effect": "Allow",
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::s3-bucket-name/manifest.json"
            },
            {
                "Effect": "Allow",
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::s3-bucket-name/*"
            }
        ]
    }'
```

在您的策略授予 `s3:GetObject` 访问权限后，您可以开始创建将更新后的 `put-role-policy` 应用于 Amazon S3 数据来源清单文件的数据来源。

```
aws quicksight create-data-source --aws-account-id 111222333444 --region us-west-2 --endpoint https://quicksight.us-west-2.quicksight.aws.com/ \
    --data-source-id "s3-run-as-role-demo-source" \
    --cli-input-json '{
        "Name": "S3 with a custom Role",
        "Type": "S3",
        "DataSourceParameters": {
            "S3Parameters": {
                "RoleArn": "arn:aws:iam::111222333444:role/QuickSightAccessRunAsRoleBucket",
                "ManifestFileLocation": {
                    "Bucket": "s3-bucket-name", 
                    "Key": "manifest.json"
                }
            }
        }
    }'
```

验证权限后，您可以通过创建新角色或更新现有角色在 Quick 数据源中使用该角色。使用这些命令时，请务必更新 AWS 账户 ID 并 AWS 区域 与您自己的 ID 相匹配。

# 删除数据集
<a name="delete-a-data-set"></a>

**重要**  
目前，删除数据集的操作是不可撤销的操作，并且会导致不可逆的工作丢失。删除操作不会级联删除从属对象。不过，依赖对象会停止工作，即使您用相同的数据集来替换已删除数据集也是如此。

删除数据集之前，我们强烈建议您先将每个依赖分析或控制面板指向新的数据集。

目前，在依赖视觉对象仍然存在的情况下删除数据集时，包含这些视觉对象的分析和控制面板都无法接受新的元数据。它们仍然可见，但无法正常工作。无法通过添加相同的数据集来修复它们。

这是因为数据集包含的元数据是分析和控制面板不可或缺的组成部分，而分析和控制面板又依赖于该数据集。此元数据是为每个数据集唯一生成的。尽管 Quick Sight 引擎可以读取元数据，但它无法被人类读取（例如，它不包含字段名称）。因此，数据集的精确副本拥有不同的元数据。即使多个数据集共享相同的名称和相同的字段，但每个数据集的元数据是唯一的。

**删除数据集**

1. 请确保某人要继续使用的任何分析或控制面板未使用该数据集。

   在**数据**页面上，选择不再需要的数据集。然后选择右上角的**删除数据集**。

1. 如果您收到一条警告，指示此数据集正在使用中，请跟踪所有依赖分析和控制面板，并将其指向不同数据集。如果该操作不可行，请尝试以下一项或多项最佳实践，而不是将其删除：
   + 重命名数据集，以明确弃用该数据集。
   + 筛选数据，使数据集不包含行。
   + 删除其他人对数据集的访问权限。

   我们建议您通过可以使用的任何方式通知依赖对象所有者该数据集已被启用。还要确保您留出足够的时间，让他们采取相应的措施。

1. 确保在删除数据集后没有依赖对象停止工作，然后选择数据集并选择**删除数据集**。确认您的选择，或选择 **Cancel (取消)**。

**重要**  
目前，删除数据集的操作是不可撤销的操作，并且会导致不可逆的工作丢失。删除操作不会级联删除从属对象。不过，依赖对象会停止工作，即使您用相同的数据集来替换已删除数据集也是如此。

# 向分析中添加数据集
<a name="adding-a-data-set-to-an-analysis"></a>

创建分析之后，您可以将多个数据集添加到分析中。然后，您可以使用它们来创建更多视觉对象。

在分析中，您可以打开任何数据集进行编辑（例如添加或删除字段），或执行其他数据准备。您还可以删除或替换数据集。

当前选定的数据集显示在**数据**窗格顶部。这是当前选定的视觉对象使用的数据集。每个视觉对象只能使用一个数据集。选择其他视觉对象会将选定的数据集更改为该视觉对象使用的数据集。

要手动更改选定的数据集，请选择**数据**窗格顶部的数据集列表，然后选择其他数据集。如果不使用此数据集，此操作会取消选择当前选定的视觉对象。然后，选择使用选定的数据集的视觉对象。或者在**视觉对象**窗格中选择**添加**，以使用所选数据集创建新的视觉对象。

如果您在工具栏上选择**建议**以查看建议的视觉对象，您将看到基于当前选定的数据集的视觉对象。

仅在**筛选条件**窗格中显示当前选定的数据集的筛选条件，并且您只能在当前选定的数据集上创建筛选条件。

**Topics**
+ [替换数据集](replacing-data-sets.md)
+ [从分析中删除数据集](delete-a-data-set-from-an-analysis.md)

使用以下过程将数据集添加到分析中或者编辑分析使用的数据集。

**向分析添加数据集**

1. 在分析页面上，导航到**数据**窗格并展开**数据集**下拉列表。

1. 选择**添加新数据集**以添加数据集。或者，选择**管理数据集**以编辑数据集。有关编辑数据集的更多信息，请参阅 [编辑数据集](edit-a-data-set.md)。

1. 此时将显示数据集的列表。选择数据集，然后选择**选择**。要取消，请选择**取消**。

# 替换数据集
<a name="replacing-data-sets"></a>

在分析中，您可以添加、编辑、替换或删除数据集。使用此部分可以了解如何替换数据集。

在替换数据集时，如果您希望视觉对象按照设计的方式工作，新数据集应具有相似的列。替换数据集还会清除分析的撤销和重做历史记录。这意味着您不能在应用程序栏上使用撤消和重做按钮来浏览更改。因此，决定更改数据集时，您的分析设计应该是稳定的，而不能处于编辑阶段中。

**替换数据集**

1. 在分析页面上，导航到**数据**窗格并展开**数据集**下拉列表。

1. 选择**管理数据集**。

1. 选择要替换的数据集旁边的省略号（三个点），然后选择**替换**。

1. 在**选择替换数据集**页面中，从列表中选择数据集，然后选择**选择**。
**注意**  
替换数据集将清除此分析的撤销和重做历史记录。

数据集将替换为新数据集。字段列表和视觉对象将使用新数据集更新。

此时，您可以选择添加新数据集、编辑新数据集或者使用其他数据集来替换它。选择 **Close (关闭)** 以退出。

## 新数据集不匹配的情况
<a name="replacing-data-sets-2"></a>

在有些情况下，所选替换数据集不包含您的分析中的视觉对象、筛选条件、参数和计算字段使用的所有字段和层次结构。如果是，您将收到来自 Quick Sight 的警告，其中显示了不匹配或缺失的列的列表。

如果发生这种情况，您可以更新两个数据集之间的字段映射。

**更新字段映射**

1. 在**替换数据集不匹配**页面中，选择**更新字段映射**。

1. 在**更新字段映射**页面中，选择要映射的字段的下拉菜单，然后从列表中选择要映射到的字段。

   如果新数据集中缺少该字段，请选择**忽略此字段**。

1. 选择**确认**以确认更新。

1. 选择**关闭**以关闭页面并返回分析。

数据集将替换为新数据集。字段列表和视觉对象将使用新数据集更新。

使用新数据集中现在缺少的字段的任何视觉对象都会更新为空白。您可以向视觉对象中重新添加字段或从分析中删除视觉对象。

如果您在替换数据集之后改变了主意，仍可以恢复。假设您替换了数据集，然后发现更改分析来匹配新数据集太困难。您可以撤销对分析所做的任何更改。然后，您可以用原始数据集或者更加符合分析要求的数据集来替换新数据集。

# 从分析中删除数据集
<a name="delete-a-data-set-from-an-analysis"></a>

使用以下过程从分析中删除数据集。

**从分析中删除数据集**

1. 在分析页面上，导航到**数据**窗格并展开**数据集**下拉列表。

1. 选择**管理数据集**。

1. 选择要替换的数据集旁边的省略号（三个点），然后选择**移除**。如果数据集是分析中的唯一数据集，则无法删除。

1. 选择**关闭**，关闭此对话框。

# 在 Amazon Quick Sight 中使用数据源
<a name="working-with-data-sources"></a>

使用数据来源访问外部数据存储。Amazon S3 数据来源会保存清单文件信息。相比之下，Salesforce 和数据库数据来源保存连接信息，例如凭证。在这些情况下，您可以轻松从数据存储中创建多个数据集，而无需重新输入信息。系统不会为文本文件或 Microsoft Excel 文件保存连接信息。

**Topics**
+ [创建数据源](create-a-data-source.md)
+ [编辑数据来源](edit-a-data-source.md)
+ [删除数据来源](delete-a-data-source.md)

# 创建数据源
<a name="create-a-data-source"></a>


|  | 
| --- |
|    目标受众：Amazon Quick 作者  | 

作为 Amazon Quick 的分析作者，您无需对用于连接数据的基础设施有任何了解。您只需设置一次新数据来源。

设置数据源后，您可以通过 Quick 控制台中的磁贴对其进行访问。可以使用该数据来源创建一个或多个数据集。设置数据集后，您还可以从其磁贴访问数据集。通过抽象技术细节，Amazon Quick Sight 简化了数据连接。

**注意**  
您无需为打算手动上传的文件存储连接设置。有关文件上传的更多信息，请参阅[创建数据集](creating-data-sets.md)。

在开始向 Amazon Quick 添加新的数据源连接配置文件之前，请先收集连接到数据源所需的信息。在某些情况下，您可能会打算从文件复制和粘贴设置。如果是这样，请确保文件不包含格式字符（列表项目符号或编号）或空格字符（空格、制表符）。还应确保文件不包含非文本“乱码”字符，例如非 ASCII、空值 (ASCII 0) 和控制字符。

以下列表包含收集最常用设置的信息：
+ 要连接到的数据来源。

  确保您知道需要连接到哪个源以进行报告。此源可能与存储或处理数据或提供数据访问的源不同。

  例如，假设您是新加入一家大公司的分析师。您希望分析订购系统中的数据，该系统使用 Oracle。但是，您无法直接查询联机事务处理 (OLTP) 数据。数据子集被提取并存储在 Amazon S3 上的存储桶中，但您也无权访问该子集。您的新同事解释说，他们使用 AWS Glue 抓取工具来读取和 AWS Lake Formation 访问文件。通过更多的研究，你会发现你需要使用亚马逊 Athena 查询作为 Amazon Quick Sight 中的数据源。此处的重点是，选择哪种类型的数据来源并不总是非常明显。
+ 新数据来源磁贴的描述性名称。

  每个新数据来源连接都需要一个唯一的描述性名称。此名称显示在 Amazon Quick Sight 现有数据源列表中，该列表位于 “**创建数据集**” 屏幕的底部。使用一个可轻松地将您的数据来源与其他类似数据来源区分开的名称。您的新 Amazon Quick Sight 数据源配置文件会同时显示数据库软件徽标和您分配的自定义名称。
+ 要连接到的服务器或实例的名称。

  一个唯一名称或其他标识符，标识您的网络上的数据来源的服务器连接器。描述符取决于您要连接的服务器或实例，但通常是以下一个或多个：
  + 主机名
  + IP 地址
  + 集群 ID
  + 实例 ID
  + Connector
  + 基于站点的 URL
+ 要使用的数据集合的名称。

  描述符因数据来源而异，但通常是以下之一：
  + 数据库
  + Warehouse
  + S3 存储桶
  + 目录
  + 架构

  在某些情况下，您可能需要包含一个清单文件或查询。
+ 您希望 Amazon Quick Sight 使用的用户名。

  每次 Amazon Quick Sight 使用此数据源配置文件（磁贴）进行连接时，都会使用连接设置中的用户名。在一些情况下，这可能是您的个人登录信息。但是，如果您打算与其他人共享此信息，请向系统管理员询问如何创建用于 Amazon Quick Sight 连接的凭证。
+ 要使用的连接的类型。可以选择公有网络或 VPC 连接。如果有多个 VPC 连接可用，请确定要使用哪个连接来访问您的数据来源。
+ 一些数据来源需要进行额外设置，例如安全套接字层 (SSL) 或 API 令牌。

将连接设置另存为数据来源配置文件后，可以通过选择数据集磁贴来创建数据集。这些连接作为数据源连接配置文件存储在 Amazon Quick Sight 中。

要查看现有的连接配置文件，请打开快速入门页面，选择**数据**，选择**创建**，然后选择**新建数据集**。

有关受支持的数据来源连接和示例的列表，请参阅[通过集成和数据集连接到您的数据](connecting-to-data-examples.md)。

在 Quick Sight 中[创建数据源后，您可以在 Quick Sight 中创建包含来自已连接数据源的数据的数据集](https://docs.aws.amazon.com/quicksuite/latest/userguide/creating-data-sets)。您也可以随时[更新数据来源连接](https://docs.aws.amazon.com/quicksuite/latest/userguide/edit-a-data-source)信息。

# 编辑数据来源
<a name="edit-a-data-source"></a>

您可以编辑现有数据库数据来源以更新连接信息，如服务器名称或用户凭证。还可以编辑现有的 Amazon Athena 数据来源以更新数据来源名称。您无法编辑 Amazon S3 或 Salesforce 数据来源。

## 编辑数据库数据来源
<a name="edit-a-database-data-source"></a>

可以使用以下过程编辑数据库数据来源。

1. 在快速入门页面中，选择左侧**的数据**。选择 “**创建**”，然后选择 “**新建数据集**”。

1. 选择数据库数据源。

1. 选择 **Edit Data Source**。

1. 修改数据来源信息：
   + 如果您正在编辑的是自动发现的数据库数据来源，则可修改以下任意设置：
     + 对于**数据来源名称**，输入数据来源的名称。
     + 对于 **Instance ID (实例 ID)**，从提供的列表中选择要连接到的实例或集群的名称。
     + **Database name** 会显示 **Instance ID** 集群或实例的默认数据库。如果要在该集群或实例上使用不同的数据库，请输入其名称。
     + 对于 **UserName**，输入有权执行以下操作的用户帐户的用户名：
       + 访问目标数据库。
       + 在该数据库中读取要使用的任何表（对其执行 `SELECT` 语句）。
     + 对于**密码**，输入您输入的账户的密码。
   + 如果您编辑的是外部数据库数据来源，则可修改以下任意设置：
     + 对于**数据来源名称**，输入数据来源的名称。
     + 对于 **Database server (数据库服务器)**，输入以下值之一：
       + 对于 Amazon Redshift 集群，输入集群的端点（不带端口号）。例如，如果终端节点值为 `clustername.1234abcd.us-west-2.redshift.amazonaws.com:1234`，则输入 `clustername.1234abcd.us-west-2.redshift.amazonaws.com`。在 Amazon Redshift 控制台中，您可以在集群详细信息页面上的**端点**字段中获取端点值。
       + 对于 PostgreSQL、MySQL 或 SQL Server 的 Amazon EC2 实例，请输入公有 DNS 地址。在 EC2 控制台中，您可以在实例详细信息窗格中的 **Public DNS** 字段中获取公有 DNS 值。
       + 对于 PostgreSQL、MySQL 或 SQL Server 的非 Amazon EC2 实例，请输入数据库服务器的主机名或公有 IP 地址。
     + 对于 **Port (端口)**，输入集群或实例在连接上使用的端口。
     + 对于 **Database name (数据库名称)**，输入要使用的数据库的名称。
     + 对于 **UserName**，输入有权执行以下操作的用户帐户的用户名：
       + 访问目标数据库。
       + 在该数据库中读取要使用的任何表（对其执行 `SELECT` 语句）。
     + 对于**密码**，输入您输入的账户的密码。

1. 选择 **Validate connection**。

1. 如果连接验证成功，请选择 **Update data source**。如果未成功，则更正连接信息，然后重新验证。

1. 如果要使用更新的数据来源创建新数据集，请按照 [使用数据库创建数据集](create-a-database-data-set.md) 中的说明继续操作。否则，请关闭 **Choose your table (选择表)** 对话框。

## 编辑 Athena 数据来源
<a name="revoking-access-to-shared-data-sources"></a>

使用以下过程编辑 Athena 数据来源。

1. 在快速入门页面中，选择左侧**的数据**。选择 “**创建**”，然后选择 “**新建数据集**”。

1. 选择 Athena 数据源。

1. 选择 **Edit Data Source**。

1. 对于**数据来源名称**，输入一个新名称。

1. 随即出现**管理数据来源共享**屏幕。在 **Users (用户)** 选项卡中，找到要删除的用户。

1. 如果要使用更新的数据来源创建新数据集，请按照 [使用 Amazon Athena 数据创建数据集](create-a-data-set-athena.md) 中的说明继续操作。否则，请关闭 **Choose your table (选择表)** 对话框。

# 删除数据来源
<a name="delete-a-data-source"></a>

如果不再需要使用数据来源，您可以将其删除。删除基于查询的数据库数据来源会使所有与之关联的数据集都不可用。删除 Amazon S3、Salesforce 或基于 SPICE 的数据库数据来源不会影响您使用任何关联的数据集。这是因为数据存储在 [SPICE](spice.md) 中。但是，您无法再刷新这些数据集。

**删除数据来源**

1. 选择要删除的数据来源。

1. 选择**删除**。

# 刷新 Amazon Quick Sight 的数据
<a name="refreshing-data"></a>

刷新数据时，Amazon Quick Sight 会根据连接属性和数据的存储位置以不同的方式处理数据集。

如果 Quick Sight 使用直接查询连接到数据存储，则当您打开关联的数据集、分析或仪表板时，数据会自动刷新。筛选条件控件每 24 小时自动刷新一次。

要刷新SPICE数据集，Quick Sight 必须使用存储的凭据独立进行身份验证才能连接到数据。Quick Sight 无法刷新手动上传的数据（即使从 S3 存储桶中也是如此SPICE），因为 Quick Sight 不存储其连接和位置元数据。如果要自动刷新存储在 S3 存储桶中的数据，请使用 **S3** 数据来源卡片创建数据集。

对于手动上传到 SPICE 的文件，可以通过再次导入文件来手动刷新这些文件。如果要为新文件重复使用原始数据集的名称，请先重命名或删除原始数据集。然后为新数据集指定首选名称。此外，请检查各个字段名称的名称和数据类型是否相同。打开您的分析，然后用新的数据集替换原始数据集。有关更多信息，请参阅 [替换数据集](replacing-data-sets.md)。

您可以随时刷新 [SPICE](spice.md) 数据集。刷新会再次将数据导入 SPICE，因此，数据将包含自上次导入以来的所有更改。

对于 Amazon Quick Sight 标准版，您可以随时对SPICE数据进行完全刷新。对于 Amazon Quick Sight 企业版，您可以随时进行完全刷新或增量刷新（仅限基于 SQL 的数据源）。

**注意**  
如果数据集使用 CustomSQL，则增量刷新可能不会让您受益。如果 SQL 查询很复杂，则数据库可能无法通过回顾时间窗口优化筛选条件。这可能会导致提取数据的查询比完全刷新所需的时间更长。我们建议您尝试通过重构自定义 SQL 来缩短查询执行时间。请注意，结果可能会因您作优化的类型而异。

您可以使用以下任何一种方法刷新 SPICE 数据：
+ 您可以使用**数据集**页面上的选项。
+ 您可以在编辑数据集的同时刷新数据集。
+ 您可以在数据集设置中计划刷新。
+ 您可以使用 [CreateIngestion](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateIngestion.html)API 操作刷新数据。

创建或编辑 SPICE 数据集时，可以启用有关数据加载状态的电子邮件通知。如果数据加载或刷新失败，此选项会通知数据集的拥有者。要开启通知，请选择**完成数据集创建**屏幕上显示的**刷新失败时向拥有者发送电子邮件**选项。此选项不适用于您在数据集页面上使用**上传文件**创建的数据集。

在以下主题中，您可以了解有关刷新和使用 SPICE 数据的不同方法的说明。

**Topics**
+ [将数据导入到 SPICE](spice.md)
+ [刷新 SPICE 数据](refreshing-imported-data.md)
+ [在分析中使用 SPICE 数据](spice-in-an-analysis.md)
+ [查看 SPICE 摄取历史记录](view-history-of-spice-ingestion.md)
+ [对跳过行错误进行问题排查](troubleshooting-skipped-rows.md)
+ [SPICE 摄取错误代码](errors-spice-ingestion.md)
+ [更新数据集中的文件](updating-file-dataset.md)

# 将数据导入到 SPICE
<a name="spice"></a>

当您将数据导入数据集而不是使用直接 SQL 查询时，*SPICE数据会因为其存储方式而变成数据*。 *SPICE (Super-fast, Parallel, In-memory Calculation Engine)*是 Amazon Quick Sight 使用的强大内存引擎。该引擎设计为快速执行高级计算及快速提供数据。在企业版中，SPICE 中存储的数据采用静态加密。

创建或编辑数据集时，除非数据集包含已上传的文件，否则您可以选择使用 SPICE 或直接查询。将数据导入（也称为*摄取*）SPICE 可以节省时间和金钱：
+ 分析查询处理速度加快。
+ 无需等待直接查询处理完成。
+ 存储在 SPICE 中的数据可以多次重复使用，而不会产生额外成本。如果您使用的数据来源按查询收费，则在首次创建数据集时以及稍后刷新数据集时，您需要支付查询数据的费用。

SPICE分别为每个容量分配 AWS 区域。默认SPICE容量会自动分配给您的房屋 AWS 区域。对于每个 AWS 账户，SPICE容量由所有使用 Quick Sight 的用户在一个账户中共享 AWS 区域。除非你选择购买一些，否则另一个 AWS 区域 没有SPICE容量。Quick Sight 管理员可以查看每个[SPICE](#spice)容量中有多少 AWS 区域 以及其中有多少当前正在使用中。Quick Sight 管理员可以根据需要购买更多SPICE容量或释放未使用的SPICE容量。有关更多信息，请参阅 [配置SPICE内存容量](managing-spice-capacity.md)。

**Topics**
+ [估计 SPICE 数据集的大小](#spice-capacity-formula)

## 估计 SPICE 数据集的大小
<a name="spice-capacity-formula"></a>

SPICE相对于您的 Quick 账户SPICE容量而言，数据集的大小称为*逻辑大小*。数据集的逻辑大小与数据集的源文件或表的大小不同。数据集的逻辑大小的计算发生在数据准备期间定义所有数据类型转换和计算列之后。这些字段在 SPICE 中以增强查询性能的方式实现。您在分析中所做的任何更改都不会影响 SPICE 中数据的逻辑大小。只有在数据集中保存的更改才能应用到 SPICE 容量。

SPICE 数据集的逻辑大小取决于数据集字段的数据类型和数据集中的行数。三种类型的 SPICE 数据是小数、日期和字符串。您可以在数据准备阶段转换字段的数据类型以满足您的数据可视化需求。例如，您要导入的文件可能包含所有字符串（文本）。但为了在分析中以有意义的方式使用这些数据，可以通过将数据类型更改为适当的形式来准备数据。包含价格的字段可以从字符串更改为小数，而包含日期的字段可以从字符串更改为日期。您还可以创建计算字段并从源表中排除不需要的字段。当您完成数据集的准备并且所有转换完成后，您可以估算最终模式的逻辑大小。

**注意**  
地理空间数据类型使用元数据来解释物理数据类型。经度和纬度都是数字。所有其他地理空间类别都是字符串。

在下面的公式中，小数和日期按每个单元格 8 个字节计算，并附加 4 个辅助字节。字符串是根据 UTF-8 编码的文本长度加上辅助的 24 个字节来计算的。字符串数据类型需要更多空间，因为 SPICE 需要额外的索引才能提供高查询性能。

```
Logical dataset size in bytes =
(Number of Numeric cells *  (12 bytes per cell))
+ (Number of Date cells    *  (12 bytes per cell))
+ SUM ((24 bytes + UTF-8 encoded length) per Text cell)
```

上面的公式仅应用于估算 SPICE 中单个数据集的大小。SPICE容量使用量是特定区域中一个账户中所有数据集的总大小。Quick Sight 不建议您使用此公式来估计 Quick Sight 账户使用的总SPICE容量。

# 刷新 SPICE 数据
<a name="refreshing-imported-data"></a>

## 刷新数据集
<a name="refresh-spice-data"></a>

使用以下过程在 “数据” 选项卡中根据 Amazon S3 或数据库数据源刷新**数据[SPICE](spice.md)**集。如果数据库中有架构更改，Quick Sight 将无法自动检测到它，从而导致摄取失败。编辑并保存数据集以更新架构并避免摄取失败。

**从 “SPICE数据” 选项卡刷新数据**

1. 从左侧导航菜单中选择 “**数据**”。在**数据集**选项卡中，选择要将其打开的数据集。

1. 在打开的数据集详细信息页面上，选择**刷新**选项卡，然后选择**立即刷新**。

1. 将刷新类型保留为**完全刷新**。

1. 如果刷新的是 Amazon S3 数据集，请为 **S3 清单**选择以下任一选项：
   + 要使用您上次向 Amazon Quick Sight 提供的相同**清单文件，请选择 “现有清单**”。如果您更改了位于上次提供的文件位置或 URL 处的清单文件，则返回数据将反映这些更改。
   + 要通过从本地网络上传新的清单文件来指定清单文件，请选择 **Upload Manifest**，然后选择 **Upload manifest file**。对于 **Open**，请选择一个文件，然后选择 **Open**。
   + 要提供 URL 以指定新的清单文件，请在 **Input manifest URL (输入清单 URL)** 中输入清单的 URL。您可以通过以下方式在 Amazon S3 控制台中找到清单文件 URL：打开清单文件的上下文菜单（单击右键），选择**属性**，然后查看**链接**框。

1. 选择**刷新**。

1. 如果刷新的是 Amazon S3 数据集，请选择**确定**，然后再次选择**确定**。

   如果刷新的是数据库数据集，请选择**确定**。

## 增量刷新数据集
<a name="refresh-spice-data-incremental"></a>


|  | 
| --- |
|  适用于：企业版  | 

对于基于 SQL 的数据来源，例如 Amazon Redshift、Amazon Athena、PostgreSQL 或 Snowflake，您可以在回顾时间窗口内增量刷新数据。

*增量刷新*仅查询数据集在指定的回顾时间窗口内定义的数据。它将该窗口的时间范围内对数据集进行的所有插入、删除和修改从其来源传输到数据集。该窗口中当前位于 SPICE 的数据将被删除并替换为新数据。

使用增量刷新后，每次刷新时查询和传输的数据会减少。例如，假设您有一个包含 18 万条记录的数据集，其中包括从 1 月 1 日到 6 月 30 日的数据。7 月 1 日，您对数据进行增量刷新，回顾时间窗口为七天。Quick Sight查询数据库，要求提供自6月24日（7天前）以来的所有数据，即7,000条记录。然后，Quick Sight删除6月24 SPICE 日及以后的当前数据，并追加新查询的数据。第二天（7月2日），Quick Sight也做了同样的事情，但是从6月25日开始查询（又是7,000条记录），然后从同一日期的现有数据集中删除。系统不必每天摄取 18 万条记录，而只需摄取 7,000 条记录。

使用以下过程从 “[SPICE](spice.md)数据集” 选项卡中增量刷新基于 SQL 数据源**的数据集**。

**增量刷新基于 SQL SPICE 的数据集**

1. 从左侧导航菜单中选择 “**数据**”。在**数据集**选项卡上，选择要将其打开的数据集。

1. 在打开的数据集详细信息页面上，选择**刷新**选项卡，然后选择**立即刷新**。

1. 对于**刷新类型**，选择**增量刷新**。

1. 如果这是您第一次对数据集进行增量刷新，请选择**配置**。

1. 在**配置增量刷新**页面上，执行以下操作：

   1. 对于**日期列**，选择回顾时间窗口所基于的日期列。

   1. 对于**窗口大小**，输入**大小**的数字，然后选择要回顾更改的时间长度。

      您可以选择刷新从现在开始的指定小时数、天数或周数内发生的数据更改。例如，您可以选择刷新在当前日期后两周内发生的数据更改。

1. 选择**提交**。

## 在数据准备期间刷新数据集
<a name="refresh-spice-data-prep"></a>

要在数据准备期间刷新基于 Amazon S3 或数据库数据来源的 [SPICE](spice.md) 数据集，请按照以下过程操作。

**在数据准备期间刷新 SPICE 数据**

1. 从左侧导航菜单中选择 “**数据**”。在**数据集**选项卡上，选择数据集，然后选择**编辑数据集**。

1. 在数据集屏幕上，选择**立即刷新**。

1. 将刷新类型设置为**完全刷新**。

1. （可选）如果刷新的是 Amazon S3 数据集，请为 **S3 清单**选择以下任一选项：
   + 要使用您上次提供给 Amazon Quick Sight 的**清单文件，请选择现有清单**。如果您更改了位于上次提供的文件位置或 URL 处的清单文件，则返回数据将反映这些更改。
   + 要通过从本地网络上传新的清单文件来指定清单文件，请选择 **Upload Manifest**，然后选择 **Upload manifest file**。对于 **Open**，请选择一个文件，然后选择 **Open**。
   + 要提供 URL 以指定新的清单文件，请在 **Input manifest URL (输入清单 URL)** 中输入清单的 URL。您可以通过以下方式在 Amazon S3 控制台中找到清单文件 URL：打开清单文件的上下文菜单（单击右键），选择**属性**，然后查看**链接**框。

1. 选择**刷新**。

1. 如果刷新的是 Amazon S3 数据集，请选择**确定**，然后再次选择**确定**。

   如果刷新的是数据库数据集，请选择**确定**。

## 按计划刷新数据集
<a name="schedule-data-refresh"></a>

要计划刷新数据，请按照以下过程操作。如果数据集基于直接查询而未存储在 [SPICE](spice.md) 中，您可以打开数据集以刷新数据。您也可以刷新分析或控制面板中的页面以刷新数据。

**按计划刷新 [SPICE](spice.md) 数据**

1. 从左侧导航菜单中选择 “**数据**”。在**数据集**选项卡上，选择要将其打开的数据集。

1. 在打开的数据集详细信息页面上，选择**刷新**选项卡，然后选择**添加新计划**。

1. 在**创建刷新计划**屏幕上，为您的计划选择各项设置：

   1. 对于 **Time zone (时区)**，选择适用于数据刷新的时区。

   1. 对于**开始时间**，选择刷新开始日期和时间。使用 HH:MM 和 24 小时格式，例如，13:30。

   1. 对于**频率**，选择以下任一选项：
      + 对于 Standard 或 Enterprise 版，您可以选择 **Daily（每天）**、**Weekly（每周）**或 **Monthly（每月）**。
        + **每天**：每天重复。
        + **每周**：在每周的同一天重复。
        + **Monthly**：在每月的同一天重复。要在每月的 29、30 或 31 日刷新数据，请从列表中选择 **Last day of month**。
      + 对于 Enterprise 版，您可以选择 **Hourly（每小时）**。此设置将从您选择的时间开始每小时刷新一次您的数据集。因此，如果您选择 1:05 作为开始时间，数据将每个小时刷新一次，刷新时间为整点的五分钟后。

        如果您决定使用每小时刷新，则无法同时使用额外的刷新计划。要创建每小时刷新计划，请删除该数据集的任何其他现有计划。此外，在创建每日、每周或每月计划之前，请删除任何现有的每小时计划。

1. 选择**保存**。

计划的数据集提取将在计划日期和时间的 10 分钟内进行。

使用 Quick 控制台，您可以为每个数据集创建五个计划。创建五个计划后，**创建**按钮会变成禁用状态。

## 按计划增量刷新数据集
<a name="schedule-data-refresh-incremental"></a>


|  | 
| --- |
|  适用于：企业版  | 

对于基于 SQL 的数据来源，例如 Amazon Redshift、Athena、PostgreSQL 或 Snowflake，您可以安排增量刷新。使用以下过程在 “[SPICE](spice.md)数据集” 选项卡中基于 SQL 数据源以增量方式刷新**数据集**。

**为基于 SQL 的 SPICE 数据集设置增量刷新计划**

1. 从左侧导航菜单中选择 “**数据**”。在**数据集**选项卡上，选择要将其打开的数据集。

1. 在打开的数据集详细信息页面上，选择**刷新**选项卡，然后选择**添加新计划**。

1. 在**创建计划**页面上，对于**刷新类型**，选择**增量刷新**。

1. 如果这是您对该数据集进行的首次增量刷新，请选择**配置**，然后执行以下操作：

   1. 对于**日期列**，选择回顾时间窗口所基于的日期列。

   1. 对于**窗口大小**，输入**大小**的数字，然后选择要回顾更改的时间长度。

      您可以选择刷新从现在开始的指定小时数、天数或周数内发生的数据更改。例如，您可以选择刷新在当前日期后两周内发生的数据更改。

   1. 选择**提交**。

1. 对于 **Time zone (时区)**，选择适用于数据刷新的时区。

1. 对于 **Repeats（重复）**，选择以下选项之一：
   + 您可以选择**每 15 分钟**、**每 30 分钟**、**每小时**、**每天**、**每周**或**每月**。
     + **每 15 分钟**：从您选择的时间开始，每 15 分钟重复一次。因此，如果您选择 1:05 作为开始时间，则数据将在 1:20 刷新，然后在 1:35 再次刷新，依此类推。
     + **每 30 分钟**：从您选择的时间开始，每 30 分钟重复一次。因此，如果您选择 1:05 作为开始时间，则数据将在 1:35 刷新，然后在 2:05 再次刷新，依此类推。
     + **每小时**：从您选择的时间开始，每小时重复一次。因此，如果您选择 1:05 作为开始时间，数据将每个小时刷新一次，刷新时间为整点的五分钟后。
     + **每天**：每天重复。
     + **每周**：在每周的同一天重复。
     + **Monthly**：在每月的同一天重复。要在每月的 29、30 或 31 日刷新数据，请从列表中选择 **Last day of month**。
   + 如果您决定使用每 15 或 30 分钟或每小时刷新，则无法同时使用额外的刷新计划。要按照每 15 分钟、每 30 分钟或每小时创建刷新计划，请移除该数据集的所有其他现有计划。此外，在创建每天、每周或每月计划之前，请删除任何现有的每分钟或小时计划。

1. 对于**开始**，选择刷新开始日期。

1. 对于**时间**，指定应开始刷新的时间。使用 HH:MM 和 24 小时格式，例如，13:30。

计划的数据集提取将在计划日期和时间的 10 分钟内进行。

在某些情况下，增量刷新数据集可能会出现问题，导致您想要回滚数据集。或者，您可能不想再增量刷新数据集。在这种情况下，您可以删除计划刷新。

为此，请在**数据集**页面上选择数据集，选择**计划刷新**，然后选择计划刷新右侧的 x 图标。删除增量刷新配置会启动完全刷新。作为此完全刷新的一部分，所有为增量刷新准备的配置都将被删除。

# 在分析中使用 SPICE 数据
<a name="spice-in-an-analysis"></a>

当您使用存储数据创建分析时，**字段列表**窗格顶部的数据集列表旁边会显示数据导入指示符。首次打开分析并导入数据集时，会出现一个微调图标。

SPICE 导入完成后，指示符将显示成功导入的行所占百分比。可视化窗格顶部还会显示一条消息，以提供导入和跳过的行数。

如果跳过了任何行，您可以在此消息栏中选择 **View summary**，以查看有关这些行无法导入的原因的详细信息。要编辑数据集并解决导致跳行的问题，请选择**编辑数据集**。有关跳行常见原因的更多信息，请参阅[对跳过行错误进行问题排查](troubleshooting-skipped-rows.md)。

如果导入完全失败，则数据导入指示符将显示为感叹号图标，并显示 **Import failed (导入失败)** 消息。

# 查看 SPICE 摄取历史记录
<a name="view-history-of-spice-ingestion"></a>

您可以查看 SPICE 数据集的摄取历史记录以了解一些信息，例如最近的摄取的开始时间及其状态。

SPICE 摄取历史记录页面包含以下信息：
+ 提取的开始日期和时间 (UTC)
+ 提取状态
+ 提取所花的时间
+ 数据集中聚合行的数量。
+ 刷新过程中摄取的数量。
+ 跳过的行和成功摄取的行（已导入）
+ 刷新的任务类型：计划、完全刷新等

要查看数据集的 SPICE 摄取历史记录，请按照以下过程操作。

**查看数据集的 SPICE 摄取历史记录**

1. 在主页上，选择左边**的数据**。

1. 在**数据集**选项卡上，选择要检查的数据集。

1. 在打开的数据集详细信息页面上，选择**刷新**选项卡。

   SPICE 摄取历史记录显示在底部。

1. （可选）选择一个时间范围以筛选从过去 1 小时到最近 90 天的条目。

1. （可选）选择一种特定的作业状态以筛选相应的条目，例如 **Running (正在运行)** 或 **Completed (已完成)**。否则，您可以选择 **All (全部)** 以查看所有条目。

# 对跳过行错误进行问题排查
<a name="troubleshooting-skipped-rows"></a>

当您导入数据时，Amazon Quick Sight 会预览您的部分数据。如果由于任何原因无法解释某行，Quick Sight 会跳过该行。在某些情况下，导入将失败。发生这种情况时，Quick Sight 会返回一条解释失败原因的错误消息。

幸运的是，可能出错的情况并不多。通过注意以下示例，可以避免某些问题：
+ 请确保字段数据类型与字段数据没有不一致，例如，具有数字数据类型的字段中偶尔会包含字符串数据的情况。以下是一些在扫描表格内容时可能难以检测到的示例：
  + `''` – 使用空字符串表示缺失值
  + `'NULL'` – 使用“null”词表示缺失值
  + `$1000` – 在货币值中包含美元符号会将其转换为字符串
  + `'O'Brien'` – 使用标点符号来标记本身包含相同标点符号的字符串。

  但是，这类错误并不总是那么容易发现，尤其是在数据量很大或数据是手动输入的情况下。例如，有些客户服务或销售应用程序需要输入客户口头提供的信息。最初输入数据的人可能以错误字段输入了数据。他们可能添加了字符或数字，或者忘记添加字符或数字。例如，他们可能输入了“0/10/12020”的日期，或者本应输入年龄的字段中输入性别。
+ 无论是否有标题，请确保正确处理导入的文件。如果有标题行，请确保选择**包含标题**上传选项。
+ 确保数据不超过一个或多个 [数据来源限额](data-source-limits.md)。
+ 确保数据与 [支持的数据类型和值](supported-data-types-and-values.md) 兼容。
+ 确保计算字段包含适用于计算的数据，而不是与计算字段中的函数不兼容或被函数排除在外。例如，如果您的数据集中有一个使用的计算字段[parseDate](parseDate-function.md)，Quick Sight 会跳过该字段不包含有效日期的行。

Quick Sight 提供了SPICE引擎尝试摄取数据时发生的错误的详细列表。当保存的数据集报告跳过行时，您可以查看错误，以便采取措施修复问题。

**查看在 SPICE 摄取（数据导入）期间跳过的行的错误**

1. 选择左边**的数据**。在 “**数据集**” 选项卡中，选择有问题的数据集将其打开。

1. 在打开的数据集详细信息页面上，选择**刷新**选项卡。

   SPICE 摄取历史记录显示在底部。

1. 对于出现错误的摄取，请选择**查看错误摘要**。此链接位于**状态**列下。

1. 检查打开的**文件导入日志**。它会显示以下部分：
   + **摘要** – 提供一个百分比分数，用于表示总导入行数中跳过的行数。例如，如果在总共 1,728 行中跳过了 864 行，则分数为 50.00％。
   + **跳过的行数** – 提供每组相似的已跳过行的行数、字段名称和错误消息。
   + **问题排查** – 提供下载包含错误信息的文件的链接。

1. 在**问题排查**下，选择**下载错误行文件**。

   错误文件中每个错误都占一行。文件名为 `error-report_123_fe8.csv`，其中 `123_fe8` 替换为唯一标识字符串。文件包含以下列：
   + **ERROR\$1TYPE** – 导入此行时发生的错误的类型或错误代码。可以在该过程之后的 [SPICE 摄取错误代码](errors-spice-ingestion.md) 部分中查找此错误。
   + **COLUMN\$1NAME** – 数据中导致错误的列的名称。
   + 导入行中的所有列（其余列复制整行数据）。如果一行中有多个错误，则该行可能会在此文件中出现多次。

1. 选择**编辑数据集**对数据集进行更改。您可以筛选数据、省略字段、更改数据类型、调整现有计算字段以及添加用于验证数据的计算字段。

1. 在完成错误代码所示的更改后，请再次导入数据。如果日志中出现更多 SPICE 摄取错误，请再次执行此过程以修复所有剩余错误。

**提示**  
如果您无法使用数据集编辑器在合理时间内解决数据问题，请咨询拥有数据的管理员或开发人员。从长远来看，比起在准备用于分析的数据时添加异常处理，清理接近数据来源的数据会更加经济高效。通过从源头上进行修复，可以避免多人以不同方式修复错误，从而导致日后出现不同报告结果。

**练习对跳过行进行问题排查**

1. 下载 [samples/csv-files-for-troubleshooting-skipped-rows.zip](samples/csv-files-for-troubleshooting-skipped-rows.zip)。

1. 将文件解压缩到一个文件夹，您可以使用该文件夹将示例.csv 文件上传到 Quick Sight 中。

   zip 文件包含以下两个文本文件：
   + `sample dataset - data ingestion error.csv` – 包含导致跳过行问题的示例 .csv 文件。您可以尝试自己导入文件，以了解错误过程是如何运行的。
   + `sample data ingestion error file`— 将示例.csv 文件导入 Quick Sight 时在SPICE摄取过程中生成的示例错误文件。

1. 按照以下步骤导入数据：

   1. 选择**数据、数据****集**选项卡、**新建**、**数据集**。

   1. 选择 **Upload a file** (上传文件)。

   1. 查找并选择名为 `sample dataset - data ingestion error.csv` 的文件。

   1. 选择**上传文件**、**编辑设置并准备数据**。

   1. 选择**保存**退出。

1. 选择数据集查看其信息，然后选择**查看错误摘要**。检查错误和数据以帮助您解决问题。

# SPICE 摄取错误代码
<a name="errors-spice-ingestion"></a>

以下错误代码和说明列表可以帮助您了解将数据摄取到 SPICE 中时出现的问题并对其进行排查。

## 跳过的行的错误代码
<a name="errors-skipped-rows-during-import"></a>

以下错误代码和说明列表可以帮助您了解和排查被跳过行的问题。

****ARITHMETIC\$1EXCEPTION**** – 处理值时发生算术异常。

****ENCODING\$1EXCEPTION**** – 将数据转换和编码为 SPICE 时发生未知异常。

****OPENSEARCH\$1CURSOR\$1NOT\$1ENABLED — 该 OpenSearch域未启用**** SQL 游标 ()。`"opendistro.sql.cursor.enabled" : "true"`有关更多信息，请参阅 [授权连接到 Amazon 服务 OpenSearch](opensearch.md)。

****INCORRECT\$1FIELD\$1COUNT**** – 一行或多行中的字段过多。确保每行中的字段数与架构中定义的字段数一致。

****INCORCT\$1SAGEMAKER\$1OUTPUT\$1FIELD\$1COUNT — AI 输出的字段数量意****外。SageMaker 

****INDEX\$1OUT\$1OF\$1BOUNDS**** – 系统请求的索引对于正在处理的数组或列表无效。

****MALFORMED\$1DATE**** – 字段中的值无法转换为有效日期。例如，如果尝试转换包含类似 `"sale date"` 或 `"month-1"` 等值的字段，则该操作会生成格式错误的日期错误。要修复此错误，请删除数据来源中的非日期值。检查导入的文件中的数据是否混有列标题。如果字符串包含无法转换的日期或时间，请参阅 [使用不支持的日期或自定义日期](using-unsupported-dates.md)。

****MISSING\$1SAGEMAKER\$1OUTPUT\$1FIELD — AI 输出中的一个字段意****外为空。SageMaker 

****NUMBER\$1BITWIDTH\$1TOO\$1LARGE**** – 数值超过 SPICE 中支持的长度。例如，数值超过 19 位，这是 `bigint` 数据类型的长度。对于非数学值的长数字序列，请使用 `string` 数据类型。

****NUMBER\$1PARSE\$1FAILURE**** – 数字字段中的值不是数字。例如，数据类型为 `int` 的字段包含字符串或浮点数。

****SAGEMAKER\$1OUTPUT\$1COLUMN\$1TYPE\$1MISMATCH — AI 架构中定义的数据类型与从 AI 收到的数据类型不匹配****。 SageMaker SageMaker 

****STRING\$1TRUNCATION**** – SPICE 正在截断字符串。如果字符串的长度超过 SPICE 限额，字符串会被截断。有关 SPICE的更多信息，请参阅[将数据导入到 SPICE](spice.md)。有关限额的更多信息，请参阅[服务配额](https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html)。

****UNDEFINED**** – 摄取数据时发生未知错误。

****UNSUPPORTED\$1DATE\$1VALUE**** – 日期字段包含的日期采用支持的格式，但不在受支持的日期范围内，例如“12/31/1399”或“01/01/10000”。有关更多信息，请参阅 [使用不支持的日期或自定义日期](using-unsupported-dates.md)。

## 数据导入期间的错误代码
<a name="errors-during-import"></a>

对于失败的导入和数据刷新作业，Quick Sight 会提供错误代码，指明导致失败的原因。以下错误代码和说明列表可以帮助您了解将数据摄取到 SPICE 中时出现的问题并对其进行排查。

****ACCOUNT\$1CAPACITY\$1LIMIT\$1EXCEEDED**** – 该数据超过您的当前 SPICE 容量。购买更多 SPICE 容量或清理现有的 SPICE 数据，然后重试该摄取。

****CONNECTION\$1FAILURE —**** Amazon Quick Sight 无法连接到您的数据源。检查数据来源连接设置，然后重试。

****CUSTOMER\$1ERROR**** – 在解析数据时出现问题。如果问题仍然存在，请联系 Amazon Quick Sight 技术支持。

****DATA\$1SET\$1DELETED**** – 在摄取期间删除了数据来源或数据集或变得不可用。

****DATA\$1SET\$1SIZE\$1LIMIT\$1EXCEEDED**** – 该数据集超过允许的最大 SPICE 数据集大小。使用筛选条件减小数据集大小，然后重试。有关 SPICE 限额的信息，请参阅 [数据来源限额](data-source-limits.md)。

****DATA\$1SOURCE\$1AUTH\$1FAILED**** – 数据来源身份验证失败。检查您的凭证，然后使用**编辑数据来源**选项以替换过期的凭证。

****DATA\$1SOURCE\$1CONNECTION\$1FAILED**** – 数据来源连接失败。检查 URL，然后重试。如果该错误仍然存在，请与数据来源管理员联系以获得帮助。

****DATA\$1SOURCE\$1NOT\$1FOUND**** – 找不到数据来源。查看您的 Amazon Quick Sight 数据源。

****DATA\$1TOLERANCE\$1EXCEPTION**** – 无效行太多。Amazon Quick Sight 已达到可以跳过并继续摄取的行数配额。检查数据，然后重试。

****FAILURE\$1TO\$1ASSUME\$1ROLE — Amazon Quick Sight 无法担任正确的 (IAM) 角色****。 AWS Identity and Access Management 在 IAM 控制台中验证 `Amazon Quick Sight-service-role` 的策略。

****FAILURE\$1TO\$1PROCESS\$1JSON\$1FILE — Amazon Quick Sight 无法将清单文件****解析为有效的 JSON。

****IAM\$1ROLE\$1NOT\$1AVAILABLE**** — Amazon Quick Sight 无权访问数据源。要管理 Amazon Quick Sight 对 AWS 资源的权限，请以管理员身份前往 “**管理 Amazon Quick Sight**” 选项下的 “**安全和权限**” 页面。

****INGESTION\$1CANCELED**** – 用户已取消摄取。

****INGESTION\$1SUPERSEDED**** – 另一个工作流已取代该摄取。当创建新的摄取而另一个摄取仍在进行中时，就会发生这种情况。避免在短时间内多次手动编辑数据集，因为每次手动编辑都会创建一个新的摄取，它将取代并结束之前的摄取。

****INTERNAL\$1SERVICE\$1ERROR**** – 出现内部服务错误。

****INVALID\$1DATA\$1SOURCE\$1CONFIG**** – 在连接设置中显示无效的值。检查连接详细信息，然后重试。

****INVALID\$1DATAPREP\$1SYNTAX**** – 计算字段表达式包含无效的语法。更正语法，然后重试。

****INVALID\$1DATE\$1FORMAT**** – 显示无效的日期格式。

****IOT\$1DATA\$1SET\$1FILE\$1EMP**** TY — 未找到分析数据。 AWS IoT 检查您的账户，然后重试。

****IOT\$1FILE\$1NOT\$1FOUND — 找不到****指定的分析文件。 AWS IoT 检查您的账户，然后重试。

****OAUTH\$1TOKEN\$1FAILURE**** – 数据来源的凭证已过期。续订您的凭证，然后重试该提取。

****PASSWORD\$1AUTHENTICATION\$1FAILURE**** – 为数据来源显示不正确的凭证。更新数据来源凭证，然后重试该提取。

****PERMISSION\$1DENIED**** – 访问请求的资源被数据来源拒绝。在重试之前，请向您的数据库管理员申请权限或确保已向 Amazon Quick Sight 授予适当的权限。

****QUERY\$1TIMEOUT**** – 数据来源查询在等待响应时超时。检查数据来源日志，然后重试。

****ROW\$1SIZE\$1LIMIT\$1EXCEEDED**** – 行大小限额超过最大值。

****S3\$1FILE\$1INACCESSIBLE**** – 无法连接到 S3 存储桶。在连接 S3 存储桶之前，请务必向 Amazon Quick Sight 和用户授予必要的权限。

****S3\$1MANIFEST\$1ERROR**** – 无法连接到 S3 数据。确保 S3 清单文件有效。还要验证 S3 数据的访问权限。Amazon Quick Sight 和 Amazon Quick Sight 用户都需要权限才能连接 S3 数据。

****S3\$1UPLOADED\$1FILE\$1DELETED**** –（在两次摄取之间）删除了摄取的一个或多个文件。检查 S3 存储桶，然后重试。

****SOURCE\$1 API\$1LIMIT \$1EXCEEDED\$1**** FAILURE — 此次摄取超过了该数据源的 API 配额。请与数据来源管理员联系以获得帮助。

****SOURCE\$1RESOURCE\$1LIMIT\$1EXCEEDED**** – 查询超过数据来源的资源限额。涉及的资源示例可能包括并发查询限额、连接限额和物理服务器资源。请与数据来源管理员联系以获得帮助。

****SPICE\$1TABLE\$1NOT\$1**** FOUND — Amazon Quick Sight 数据源或数据集在摄取期间被删除或不可用。在 Amazon Quick Sight 中检查您的数据集并重试。有关更多信息，请参阅 [对跳过行错误进行问题排查](troubleshooting-skipped-rows.md)。

****SQL\$1EXCEPTION**** – 出现常规 SQL 错误。该错误可能是由于查询超时、资源限制、查询之前或查询期间的意外数据定义语言 (DDL) 更改以及其他数据库错误造成的。检查数据库设置和查询，然后重试。

****SQL\$1INVALID\$1PARAMETER\$1VALUE**** – 显示无效的 SQL 参数。检查 SQL，然后重试。

****SQL\$1NUMERIC\$1OVERFLOW**** — Amazon Quick Sight 遇到了数字异常。out-of-range 检查相关的值和计算的列是否溢出，然后重试。

****SQL\$1SCHEMA\$1MISMATCH\$1ERROR — 数据源架构与 Ama**** zon Quick Sight 数据集不匹配。更新您的 Amazon Quick Sight 数据集定义。

****SQL\$1TABLE\$1NOT\$1FOUND**** — Amazon Quick Sight 在数据源中找不到该表。验证数据集或自定义 SQL 中指定的表，然后重试。

****SSL\$1CERTIFICATE\$1VALIDATION\$1**** FAILURE — Amazon Quick Sight 无法验证数据库服务器上的安全套接字层 (SSL) 证书。与数据库管理员一起检查该服务器上的 SSL 状态，然后重试。

****UNRESOLVABLE\$1HOS**** T — Amazon Quick Sight 无法解析数据源的主机名。验证数据来源的主机名，然后重试。

****UNROUTABLE\$1HOS**** T — Amazon Quick Sight 无法访问你的数据源，因为它位于私有网络内。确保您的私有 VPC 连接在企业版中配置正确，或者允许 Amazon Quick Sight IP 地址范围允许标准版连接。

# 更新数据集中的文件
<a name="updating-file-dataset"></a>

要获取最新版本的文件，您可以更新数据集中的文件。您可以更新以下类型的文件：
+ 逗号分隔（CSV）和制表符分隔（TSV）的文本文件
+ 扩展和常用日志格式文件（ELF 和 CLF）
+ 平面或半结构化数据文件（JSON）
+ Microsoft Excel（XLSX）文件

在更新文件之前，请确保新文件的字段顺序与数据集中当前原始文件的字段顺序相同。如果两个文件之间存在字段（列）差异，则会发生错误，您需要先修复差异，才能尝试再次更新。您可以通过编辑新文件使其匹配原始文件来实现此目的。请注意，如果要添加新字段，可以将它们附加到文件中的原始字段之后。例如，在 Microsoft Excel 电子表格中，可以在原始字段的右侧附加新字段。

**更新数据集中的文件**

1. 在 Quick Sight 中，选择左边**的数据**。

1. 在**数据集**选项卡中，选择要更新的数据集，然后选择**编辑数据集**。

1. 在打开的数据准备页面上，选择要更新的文件的下拉列表，然后选择**更新文件**。

1. 在打开的**更新文件**页面上，选择**上传文件**，然后导航到一个文件。

   Quick Sight 会扫描文件。

1. 如果文件是 Microsoft Excel 文件，请在打开的**选择您的工作表**页面上选择所需的工作表，然后选择**选择**。

1. 在接下来的页面中选择**确认文件更新**。此时会显示部分工作表列的预览供您参考。

   文件更新成功的消息会显示在右上角，并更新表格预览以显示新的文件数据。

# 使用 Amazon Quick Sight 准备数据
<a name="preparing-data"></a>

数据集存储您对该数据进行的任何数据准备，以便在多个分析中重复使用准备的数据。数据准备提供诸如添加计算字段、应用筛选条件、更改字段名称或数据类型之类的选项。如果您将 SQL 数据库作为数据来源的基础，则还可以使用数据准备来联接表。或者，您也可以输入一个 SQL 查询（如果您希望使用多个表中的数据）。

如果您想在 Amazon Quick Sight 中使用数据源之前对其进行转换，则可以根据自己的需要进行准备。然后，将该准备工作保存为数据集的一部分。

您可以在创建数据集时准备数据，或稍后进行编辑。有关创建新数据集并进行准备的更多信息，请参阅[创建数据集](creating-data-sets.md)。有关打开现有数据集以准备数据的更多信息，请参阅[编辑数据集](edit-a-data-set.md)。

可以使用以下主题了解数据准备的更多信息。

**Topics**
+ [数据准备体验（全新）](data-prep-experience-new.md)
+ [描述数据](describing-data.md)
+ [选择文件上传设置](choosing-file-upload-settings.md)
+ [数据准备经验（旧版）](data-prep-experience-legacy.md)
+ [使用 SQL 自定义数据](adding-a-SQL-query.md)
+ [添加地理空间数据](geospatial-data-prep.md)
+ [使用不支持的日期或自定义日期](using-unsupported-dates.md)
+ [向 Amazon Quick Sight 数据集添加唯一密钥](set-unique-key.md)
+ [将亚马逊 A SageMaker I 模型与 Amazon Quick Sight 集成](sagemaker-integration.md)
+ [准备数据集示例](preparing-data-sets.md)

# 数据准备体验（全新）
<a name="data-prep-experience-new"></a>

数据准备将原始数据转换为针对分析和可视化进行了优化的格式。在商业智能中，这一关键过程涉及清理、结构化和丰富数据，以获得有意义的业务见解。

Amazon Quick Sight 的数据准备界面通过直观的可视化体验彻底改变了这一流程，使用户无需使用 SQL 专业知识即可创建分析就绪的数据集。通过其现代、简化的方法，用户可以高效地创建和管理商业智能数据集。可视化界面提供了清晰、顺序的数据转换视图，使作者能够精确地跟踪从初始状态到最终输出的变化。

该平台强调协作和可重用性，使团队能够在整个组织中共享和重新调整工作流程。这种协作设计促进了数据转换实践的一致性，同时消除了多余的工作，最终促进了跨团队的标准化流程并提高了整体效率。

**Topics**
+ [数据准备体验中的组成部分](data-prep-components.md)
+ [数据准备步骤](data-prep-steps.md)
+ [高级工作流程功能](advanced-workflow-capabilities.md)
+ [仅限香料的功能](spice-only-features.md)
+ [在数据准备体验之间切换](switching-between-data-prep-experiences.md)
+ [新的数据准备体验不支持的功能](unsupported-features.md)
+ [数据准备限制](data-preparation-limits.md)
+ [摄取行为发生变化](ingestion-behavior-changes.md)
+ [常见问题](new-data-prep-faqs.md)

# 数据准备体验中的组成部分
<a name="data-prep-components"></a>

Amazon Quick Sight 的数据准备体验具有以下核心组成部分。

## 工作流
<a name="workflow-component"></a>

Quick Sight 的数据准备体验中的工作流程代表了一系列连续的数据转换步骤，这些步骤将引导您的数据集从原始状态转变为可用于分析的形式。这些工作流程专为可重复使用而设计，使分析师能够利用现有工作并在此基础上再接再厉，同时在整个组织中保持一致的数据转换标准。

虽然工作流可以容纳通过各种输入或通过 Divergence（将在后续章节中详细介绍）的多条路径，但它们最终必须汇聚到一个输出表中。这种统一的结构确保了数据的一致性和简化的分析能力。

## 转换
<a name="transformation-component"></a>

转换是一种特定的数据操作操作，它会更改数据的结构、格式或内容。Quick Sight 的数据准备体验提供各种转换类型，包括联接、筛选、聚合、透视、取消透视、追加和计算列。在重塑数据以满足分析要求方面，每种转换类型都有不同的用途。这些转换是作为工作流程中的单个步骤实施的。

## 步骤
<a name="step-component"></a>

步骤是指在工作流程中应用的相同类型的同质变换的集合。每个步骤都包含一个或多个相同转换类别的相关操作。例如，“重命名” 步骤可以包括多列重命名操作，而 “筛选” 步骤可以包含多个筛选条件，所有这些条件都作为工作流程中的一个单元进行管理。

大多数步骤可以包括多个操作，但有两个值得注意的例外：Join 和 Append 步骤仅限于每个步骤两个输入表。要联接或追加两个以上的表，可以按顺序创建其他 “连接” 或 “追加” 步骤。

步骤按顺序显示，每个步骤都建立在先前步骤的结果之上，允许您跟踪数据的渐进转换。要重命名或删除某个步骤，请选择该步骤并选择三点菜单。

## Connector
<a name="connector-component"></a>

连接器通过指示工作流程方向的箭头将两个步骤连接起来。您可以通过选择连接器并按删除键来删除该连接器。要在两个现有步骤之间添加步骤，只需删除连接器，添加新步骤，然后通过在步骤之间拖动鼠标来重新连接这些步骤。

## 配置窗格
<a name="configure-pane-component"></a>

**配置窗格**是一个交互式区域，您可以在其中定义所选步骤的参数和设置。当您在工作流程中选择一个步骤时，此窗格会显示该特定转换类型的相关选项。例如，在配置 “联接” 步骤时，可以选择联接类型、匹配列和其他特定于联接的设置。“**配置” 窗格的** point-and-click界面无需了解 SQL 知识。

## 预览窗格
<a name="preview-pane-component"></a>

预**览窗格**显示应用当前转换步骤后显示的数据的实时样本。这种即时视觉反馈可帮助您在继续下一步之前验证每次转换是否都产生了预期的结果。当您修改步骤配置时，**预览窗格**会动态更新，从而可以放心地对数据转换进行迭代细化。

这些组件协同工作以创建直观、可视化的数据准备体验，使业务用户无需专业技术即可访问复杂的数据转换。

# 数据准备步骤
<a name="data-prep-steps"></a>

Amazon Quick Sight 的数据准备体验提供了 11 种强大的步骤类型，使您能够系统地转换数据。在数据准备工作流程中，每个步骤都有特定的用途。

可以通过 “配置” 窗格中的直观界面**配置**步骤，在 “**预览**” 窗格中可以看到即时反馈。可以按顺序组合步骤来创建复杂的数据转换，而无需 SQL 专业知识。

每个步骤都可以接收来自物理表的输入或上一步的输出。大多数步骤都接受单个输入，但 Append 和 Join 步骤除外，它们只需要两个输入。

## Input
<a name="input-step"></a>

“输入” 步骤允许您从多个来源选择和导入数据，以便在后续步骤中进行转换，从而在 Quick Sight 中启动数据准备工作流程。

**输入选项**
+ **添加数据集**

  利用现有的 Quick Sight 数据集作为输入源，在团队已经准备好和优化的数据基础上再接再厉。
+ **添加数据源**

  通过选择特定的数据库对象并提供连接参数，直接连接到 Amazon Redshift、Athena、RDS 等数据库或其他支持的来源。
+ **添加文件上传**

  以 CSV、TSV、Excel 或 JSON 等格式直接从本地文件导入数据。

**配置**

“输入” 步骤无需配置。**预览**窗格显示您导入的数据以及源信息，包括连接详细信息、表名和列元数据。

**使用说明**
+ 单个工作流程中可以存在多个输入步骤。
+ 您可以在工作流程中的任何时候添加输入步骤。

## 添加计算列
<a name="add-calculated-columns-step"></a>

“添加计算列” 步骤允许您使用对现有列执行计算的行级表达式创建新列。您可以使用标量（行级）函数和运算符创建新列，也可以应用引用现有列的行级计算。

**配置**

要配置 “添加计算列” 步骤，请在 “**配置**” 窗格中执行以下操作：

1. 为您的新计算列命名。

1. [使用计算编辑器构建表达式，该编辑器支持行级函数和运算符（例如 [ifelse](ifelse-function.md) 和 round）。](round-function.md)

1. 保存您的计算结果。

1. 预览表达式结果。

1. 根据需要添加更多计算列。

**使用说明**
+ 此步骤仅支持标量（行级）计算。
+ 在 SPICE 中，计算的列是实现的，并在后续步骤中用作标准列。

## 更改数据类型
<a name="change-data-type-step"></a>

Quick Sight 通过支持四种抽象数据类型来简化数据类型管理：`date``decimal``integer`、、和`string`。这些抽象类型通过自动将各种源数据类型映射到其 Quick Sight 等效数据类型来消除复杂性。例如，、、`tinyint``smallint``integer`、和`bigint`都映射到`integer`、while `date`、`datetime`、和`timestamp`都映射到`date`。

这种抽象意味着您只需要了解 Quick Sight 的四种数据类型，因为在与不同的数据源交互时，Quick Sight 会自动处理所有底层数据类型的转换和计算。

**配置**

要配置 “更改数据类型” 步骤，请在 “**配置**” 窗格中执行以下操作：

1. 选择要转换的列。

1. 选择目标数据类型（`string`、`integer``decimal`、或`date`）。

1. 对于日期转换，请指定格式设置并根据输入格式预览结果。在 Quick Sight 中查看[支持的日期格式](supported-data-types-and-values.md)。

1. 根据需要添加其他列进行转换。

**使用说明**
+ 为了提高效率，只需一个步骤即可转换多列的数据类型。
+ 使用 SPICE 时，所有数据类型更改都将在导入的数据中实现。

## 重命名列
<a name="rename-columns-step"></a>

“重命名列” 步骤使您可以修改列名，使其更具描述性、用户友好性并与组织的命名惯例保持一致。

**配置**

要配置 “重命名列” 步骤，请在 “**配置**” 窗格中执行以下操作：

1. 选择要命名的列。

1. 为所选列输入新名称。

1. 根据需要添加更多要重命名的列。

**使用说明**
+ 所有列名在您的数据集中必须是唯一的。

## 选择列
<a name="select-columns-step"></a>

“选择列” 步骤使您可以通过包含、排除列和重新排序列来简化数据集。这有助于通过删除不必要的列并按逻辑顺序组织剩余的列进行分析来优化数据结构。

**配置**

要配置 “选择列” 步骤，请在 “**配置**” 窗格中执行以下操作：

1. 选择要包含在输出中的特定列。

1. 按您的首选顺序选择列以建立顺序。

1. 使用 **“全选”** 可按其原始顺序包括其余列。

1. 取消选中不需要的列，将其排除在外。

**主要特点**
+ 输出列按选择顺序显示。
+ **“全选”** 将保留原始列顺序。

**使用说明**
+ 未选中的列将从后续步骤中删除。
+ 通过删除不必要的列来优化数据集大小。

## Append
<a name="append-step"></a>

追加步骤垂直合并两个表，类似于 SQL UNION ALL 操作。Quick Sight 会自动按名称而不是按顺序匹配列，即使表的列顺序不同或列数各不相同，也能实现高效的数据整合。

**配置**

要配置 “追加” 步骤，请在 “**配置**” 窗格中执行以下操作：

1. 选择两个要追加的输入表。

1. 查看输出列顺序。

1. 检查两个表中存在哪些列与单个表中存在哪些列。

**主要特征**
+ 按名称而不是按顺序匹配列。
+ 保留两个表中的所有行，包括重复行。
+ 支持具有不同列数的表。
+ 按照表 1 的列顺序进行匹配列，然后添加表 2 中的唯一列。
+ 显示所有列的清晰源指示符

**使用说明**
+ 追加具有不同名称的列时，请先使用 “重命名” 步骤。
+ 每个 Append 步骤恰好组合了两个表；使用附加步骤可以创建更多表。

## 联接
<a name="join-step"></a>

“联接” 步骤根据指定列中的匹配值水平合并来自两个表的数据。Quick Sight 支持 “左外”、“右外”、“全外” 和 “内连接” 类型，为您的分析需求提供了灵活的选项。该步骤包括智能列冲突解决方案，可自动处理重复的列名。虽然自联接不能作为特定的联接类型使用，但使用工作流程差异可以获得类似的结果。

**配置**

要配置 “加入” 步骤，请在 “**配置**” 窗格中执行以下操作：

1. 选择两个要连接的输入表。

1. 选择您的联接类型（左外、右外、全外或内部）。

1. 指定每个表中的联接键。

1. 查看自动解决的列名冲突。

**主要特征**
+ 支持多种联接类型，以满足不同的分析需求。
+ 自动解析重复的列名。
+ 接受计算列作为联接键。

**使用说明**
+ 联接键必须具有兼容的数据类型；如果需要，请使用 “更改数据类型” 步骤。
+ 每个 Join 步骤恰好组合两个表；使用其他 Join 步骤可以创建更多表。
+ 在 “加入” 之后创建 “重命名” 步骤，以自定义自动解析的列标题。

## 聚合
<a name="aggregate-step"></a>

“聚合” 步骤允许您通过对列进行分组和应用聚合操作来汇总数据。这种强大的转换功能可根据您的指定维度将详细数据浓缩为有意义的摘要。Quick Sight 通过直观的界面简化了复杂的 SQL 操作，提供了全面的聚合功能，包括`ListAgg`和等高级字符串操作`ListAgg distinct`。

**配置**

要配置 “聚合” 步骤，请在 “**配置**” 窗格中执行以下操作：

1. 选择要作为分组依据的列。

1. 为度量列选择聚合函数。

1. 自定义输出列名称。

1. 针对 `ListAgg` 和 `ListAgg distinct`：

   1. 选择要聚合的列。

   1. 选择分隔符（逗号、短划线、分号或垂直线）。

1. 预览汇总数据。

**每种数据类型支持的函数**


| 数据类型 | 支持的函数 | 
| --- | --- | 
|  数值  |  `Average`, `Sum` `Count`, `Count Distinct` `Max`, `Min`  | 
|  日期  |  `Count`, `Count Distinct` `Max`, `Min` `ListAgg`，`ListAgg distinct`（仅限日期）  | 
|  字符串  |  `ListAgg`, `ListAgg distinct` `Count`, `Count Distinct` `Max`, `Min`  | 

**主要特征**
+ 对同一步骤中的列应用不同的聚合函数。
+ 不使用聚合函数@@ **的分组方式**充当 SQL SELECT DISTIN
+ `ListAgg`连接所有值；仅`ListAgg distinct`包括唯一值。
+ `ListAgg`默认情况下，函数保持升序排序顺序。

**使用说明**
+ 聚合可显著减少数据集中的行数。
+ `ListAgg`还有`ListAgg distinct`支持`date`价值观，但不是`datetime`。
+ 使用分隔符自定义字符串连接输出。

## 筛选条件
<a name="filter-step"></a>

使用 “筛选” 步骤，您可以通过仅包括符合特定条件的行来缩小数据集的范围。您可以在一个步骤中应用多个筛选条件，所有这些条件都通过`AND`逻辑组合在一起，以帮助将分析重点放在相关数据上。

**配置**

要配置 “筛选器” 步骤，请在 “**配置**” 窗格中执行以下操作：

1. 选择要筛选的列。

1. 选择比较运算符。

1. 根据列的数据类型指定筛选值。

1. 如果需要，可以在不同的列中添加其他筛选条件。

**注意**  
带有 “在” 或 “不在” 的字符串筛选器：输入多个值（每行一个）。
数字和日期筛选器：输入单个值（“介于” 除外，它需要两个值）。

**每种数据类型支持的运算符**


| 数据类型 | 支持的运算符 | 
| --- | --- | 
|  整数和十进制  |  等于，不等于 大于，小于 大于或等于，小于或等于 介于  | 
|  日期  |  之后，之前 介于 大于或等于、等于、等于或等于  | 
|  字符串  |  等于，不等于 开头为，结尾为 包含，不包含 在，不在  | 

**使用说明**
+ 在单个步骤中应用多个筛选条件。
+ 混合不同数据类型的条件。
+ 实时预览筛选结果。

## 转置
<a name="pivot-step"></a>

Pivot 步骤将行值转换为唯一的列，将数据从长格式转换为宽格式，以便于比较和分析。这种转换需要对值过滤、聚合和分组进行规范，以便有效地管理输出列。

**配置**

要配置 Pivot 步骤，请在 “**配置**” 窗格中使用以下内容：

1. **透视列**：选择其值将成为列标题的列（例如，类别）。

1. **透视列行值**：筛选要包含的特定值（例如，技术、办公用品）。

1. **输出列标题**：自定义新的列标题（默认为透视列值）。

1. **值列**：选择要汇总的列（例如，销售额）。

1. **聚合函数**：选择聚合方法（例如，Sum）。

1. **分组依**据：指定组织列（例如，区段）。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/pivot.png)


**每种数据类型支持的运算符**


| 数据类型 | 支持的运算符 | 
| --- | --- | 
|  整数和十进制  |  `Average`, `Sum` `Count`, `Count Distinct` `Max`, `Min`  | 
|  日期  |  `Count`, `Count Distinct` `Max`, `Min` `ListAgg`，`ListAgg distinct`（仅限日期值）  | 
|  字符串  |  `ListAgg`, `ListAgg distinct` `Count`, `Count Distinct` `Max`, `Min`  | 

**使用说明**
+ 每个转置的列都包含来自值列的聚合值。
+ 为清晰起见，自定义列标题。
+ 实时预览转换结果。

## 取消透视
<a name="unpivot-step"></a>

Unpivot 步骤将列转换为行，将宽数据转换为更长、更窄的格式。这种转换有助于将分布在多列中的数据组织成更具结构性的格式，以便于分析和可视化。

**配置**

要配置 Unpivot 步骤，请在 “**配置**” 窗格中执行以下操作：

1. 选择要取消透视成行的列。

1. 定义输出列的行值。默认值为原始列名。一些例子包括技术、办公用品和家具。

1. 命名两个新的输出列。
   + **未转置的列标题**：以前的列名（例如，类别）的名称
   + **未旋转的列值**：未旋转值的名称（例如，Sales）

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/unpivot.png)


**主要特征**
+ 在输出中保留所有未旋转的列。
+ 自动创建两个新列：一个用于以前的列名，另一个用于其对应的值。
+ 将宽数据转换为长格式。

**使用说明**
+ 所有未转置的列都必须具有兼容的数据类型。
+ 取消旋转后，行数通常会增加。
+ 在应用更改之前，请实时预览更改。

# 高级工作流程功能
<a name="advanced-workflow-capabilities"></a>

Amazon Quick Sight 的数据准备体验提供了复杂的功能，可增强您创建复杂、可重复使用的数据转换的能力。本节介绍两项可扩展工作流程潜力的强大功能。

Divergence 使您能够从单个步骤创建多个转换路径，从而允许以后可以重新组合的并行处理流。此功能对于诸如自连接和并行转换之类的复杂场景特别有用。

复合数据集允许您使用现有数据集作为构建块来构建分层数据结构。此功能可促进团队之间的协作，并通过可重复使用的分层转换确保一致的业务逻辑。

这些功能共同提供灵活的工作流程设计、增强的团队协作和可重复使用的数据转换。它们可确保清晰的数据沿袭并支持可扩展的数据准备解决方案，使您的组织能够高效、清晰地处理日益复杂的数据场景。

## 分歧
<a name="divergence"></a>

Divergence 使您能够从工作流程中的单个步骤创建多个并行转换路径。这些路径可以独立转换，然后重新组合，从而实现复杂的数据准备方案，例如自联接。

**创建不同的路径**

要启动分歧，请在工作流程中执行以下操作：

1. 选择要在其中创建背离的步骤。

1. 选择出现的 **\$1** 图标。

1. 配置出现的新分支。

1. 对每条路径应用所需的变换。

1. 使用 Join 或 Append 步骤将路径重组为单个输出。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/divergence.png)


**主要特征**
+ 从一个步骤中创建多达五条发散路径。
+ 对每条路径应用不同的变换。
+ 使用 “连接” 或 “追加” 步骤重新组合路径。
+ 独立预览每条路径中的更改。

**最佳实践**
+ 使用差异来实现自联接。
+ 为并行转换创建数据副本。
+ 规划您的重组策略（加入或追加）。
+ 保持清晰的路径命名，以提高工作流程的可见性。

## 复合数据集
<a name="composite-datasets"></a>

复合数据集使您能够在现有数据集的基础上进行构建，创建可在整个组织中共享和重复使用的分层数据转换结构。在 SPICE 和直接查询模式下，Quick Sight 支持多达 10 个级别的复合数据集。

**创建复合数据集**

要创建复合数据集，请在工作流程中执行以下操作：

1. 创建新数据集时选择 “输入” 步骤。

1. 在 “**添加数据” 下选择 “数据****集**” 作为来源。

1. 选择要构建的现有数据集。

1. 根据需要应用其他变换。

1. 另存为新数据集。

**主要特征**
+ 构建分层数据转换结构。
+ 支持多达 10 个级别的数据集嵌套。
+ 兼容 SPICE 和直接查询。
+ 保持清晰的数据沿袭。
+ 启用特定于团队的变换。

此功能增强了不同团队之间的协作。例如，


|  角色 | Action | Output | 
| --- | --- | --- | 
|  全球分析师  |  使用全球业务逻辑创建数据集  |  数据集 A  | 
|  美洲分析师  |  使用数据集 A，添加区域逻辑  |  数据集 B  | 
|  美西分析师  |  使用数据集 B，添加本地逻辑  |  数据集 C  | 

这种分层方法通过为转型层分配明确的所有权，在整个组织中促进业务逻辑的一致性。它创建了可追溯的数据谱系，同时支持多达 10 个级别的数据集嵌套，从而实现受控和系统的数据转换管理。

**最佳实践**
+ 为每个转换层建立明确的所有权。
+ 记录数据集的关系和依赖关系。
+ 根据业务需求规划层次结构深度。
+ 保持一致的命名惯例。
+ 仔细查看和更新上游数据集。

# 仅限香料的功能
<a name="spice-only-features"></a>

Amazon Quick Sight 的 SPICE（超快速、并行、内存计算引擎）支持某些计算密集型的数据准备功能。这些转换是在 SPICE 中实现的，以获得最佳性能，而不是在查询时执行。

**仅限香料的功能**


| Steps | 其他功能 | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/spice-only-features.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/spice-only-features.html)  | 

**SPICE 和 DirectQuery**


| Steps | 其他功能 | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/spice-only-features.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/spice-only-features.html)  | 

**最佳实践**
+ 将 SPICE 用于需要仅限 Spice 功能的工作流程。
+ 选择 SPICE 可优化复杂转换和大型数据集的性能。
+ 当不需要仅限 Spice 的功能时，可以考虑 DirectQuery 满足实时数据需求。

# 在数据准备体验之间切换
<a name="switching-between-data-prep-experiences"></a>

传统数据准备体验是指在 2025 年 10 月之前存在的 Amazon Quick Sight 中以前的数据准备界面。新的数据准备体验是显示 step-by-step转换序列的增强型可视化界面。旧数据集是在新的数据准备体验之前创建的数据集，而新数据集是指在 2025 年 10 月之后创建的数据集。

创建新数据集时，Quick Sight 会自动引导您进入新的数据准备体验。此可视化界面为数据转换任务提供了增强的功能和更高的可用性。

## 选择退出选项
<a name="opt-out"></a>

在保存和发布数据集之前，如果愿意，您可以选择切换回传统的数据准备体验。这种灵活性使团队能够按照自己的节奏进行过渡，同时熟悉新界面。

**重要**  
如果在新体验中保存并发布了数据集，则无法选择返回旧版体验。这是设计使然，因为新体验具有重要的新功能，而传统体验不支持这些功能。因此，不支持将数据集从一种体验直接转换为另一种体验。您需要创建一个新的数据集才能切换到旧版体验。

## 过渡工作流程
<a name="transition-workflow"></a>

在新的或旧版体验中保存数据集后，转换就无法直接从一种体验转换为另一种体验。但是，如果存在已发布的数据集版本，则可以使用版本控制转到旧版体验中的先前版本。

传统数据集将继续只能通过旧版界面进行查看和编辑。这样可以保持与先前建立的工作流程的兼容性。

在完全过渡之前，请花点时间熟悉新的数据准备体验。在处理旧数据集时，可以考虑使用新的体验创建新版本，以便将来进行修改。如果需要，可使用版本控制来维护对数据集旧版本的访问权限。记录从传统体验过渡到新体验时工作流程中的任何变化，以确保团队协调一致。

# 新的数据准备体验不支持的功能
<a name="unsupported-features"></a>

虽然新的数据准备体验提供了增强的功能，但尚不支持旧版体验中的某些功能。本节概述了这些功能，并为处理受影响的工作流程提供了指导。

使用不支持的数据源时，Amazon Quick Sight 会自动默认使用旧版体验。对于其他不支持的功能，请选择数据准备页面右上角的**切换到旧版体验**。在旧版体验中创建的规则数据集仍与旧版和新版体验数据集兼容。

## 不支持的数据源
<a name="unsupported-data-sources"></a>

以下数据源目前仅在旧版体验中可用。


| 数据来源 | Details | 
| --- | --- | 
|  Salesforce  |  自动默认为旧版体验  | 
|  Google Sheets  |  自动默认为旧版体验  | 
|  S3 分析  |  **支持 S3 数据源**  | 

## 其他不支持的功能
<a name="other-unsupported-features"></a>

以下功能目前仅在旧版体验中可用。


| 功能类别 | 不支持的功能 | 
| --- | --- | 
|  数据集管理  |  [增量刷新](refreshing-imported-data.md#refresh-spice-data-incremental)、[数据集参数](dataset-parameters.md)、[列文件夹](organizing-fields-folder.md)、[列描述](describing-data.md)  | 
|  数据类型  |  [地理空间](geospatial-data-prep.md)[、[ELF/CLF 格式](supported-data-sources.md#file-data-sources)、S3 中的 Zip/ 文件 GZip ](supported-data-sources.md#file-data-sources)  | 
|  配置选项  |  [文件上传设置中的 “从行开始”](choosing-file-upload-settings.md)，JODA 日期格式  | 
|  从传统体验中选择父数据集  |  父数据集和子数据集必须存在于同一个体验环境中。您不能将旧版体验数据集用作新体验数据集的父数据集。  | 

## 未来发展
<a name="future-development"></a>

Amazon Quick Sight 计划将来在新的数据准备体验中实现这些功能。这种方法可确保新数据准备体验的初始发布优先考虑以下几点：

**增强的功能**
+ 视觉变换工作流程
+ 提高流程透明度
+ 通过 Divergence 获得高级制备技术
+ 强大的新功能，例如追加、聚合和透视

**灵活采用**

用户可以在发布数据集之前在体验之间进行选择，从而在团队按照自己的节奏过渡的同时确保工作流程不间断。这种方法允许立即访问新功能，同时通过传统体验保持对特殊需求的支持。

# 数据准备限制
<a name="data-preparation-limits"></a>

Amazon Quick Sight 的数据准备体验旨在处理企业级数据集，同时保持最佳性能。以下限制可确保功能可靠。

## 数据集大小限制 (SPICE)
<a name="dataset-size-limits"></a>
+ **输出大小**：高达 2TB 或 20 亿行
+ **总输入大小**：组合输入源不能超过 2TB
+ **辅助表大小**：合并大小限制为 20GB

**注意**  
主表是指工作流程中具有最大大小的表；所有其他表都是次要表。

## 工作流程结构限制
<a name="workflow-structure-limits"></a>
+ **最大步骤**：每个工作流程最多 256 个转换步骤
+ **源表**：每个工作流程最多 32 个导入步骤
+ **输出列**：工作流程中任何步骤最多有 2048 列，最终输出表有 2000 列
+ **发散路径**：单个步骤最多有 5 条路径（仅限 SPICE，不适用于 DirectQuery）
+ 以@@ **数据集为源**：SPICE 和 DirectQuery

这些限制旨在平衡灵活性与性能，实现复杂的数据转换，同时确保最佳的分析能力。

# 摄取行为发生变化
<a name="ingestion-behavior-changes"></a>

新的数据准备体验引入了 SPICE 摄取期间处理数据质量问题的重要变化。这一变化会显著影响数据集中的数据完整性和透明度。

在传统体验中，当遇到数据类型不一致（例如日期格式不正确或[类似问题](errors-spice-ingestion.md)）时，在摄取过程中会跳过包含有问题单元格的整行。这种方法会减少最终数据集中的行数，从而可能掩盖数据质量问题。

新体验采用了更精细的方法来解决数据不一致问题。遇到有问题的单元格时，只有不一致的值才会转换为空值，同时保留整行。这种保留可确保其他列中的相关数据仍然可供分析。

**对数据集质量的影响**

当源数据包含不一致时，在新体验中创建的数据集通常会比旧版数据集包含更多的行。这种增强的方法有几个好处：
+ 通过保留所有行来提高数据的完整性
+ 提高识别数据质量问题的透明度
+ 更好地了解有问题的值以进行补救
+ 将相关数据保存在未受影响的列中

这一变化使分析师能够更有效地识别和解决数据质量问题，而不必在数据集中忽略有问题的行。

# 常见问题
<a name="new-data-prep-faqs"></a>

## 1. 用户何时需要从全新体验切换到传统体验？
<a name="faq-1"></a>

用户在处理包含当前[不支持的功能](unsupported-features.md)的数据集时，必须返回旧版体验。Quick Sight正在积极努力将这些功能整合到即将发布的版本中的新体验中。

## 2. 当尝试在新体验中添加数据集时，为什么数据集会显示为灰色？ 数据集能否在传统体验和新体验之间进行组合？
<a name="faq-2"></a>

目前，父数据集和子数据集必须存在于同一个体验环境中。您无法合并旧体验和新体验的数据集，因为新体验包括旧版体验中不提供的其他功能，例如追加功能、Pivot 功能和 Divergence。

**使用旧版体验中的父数据集**

要使用旧版体验中的父数据集，您可以切换回该环境。只需导航到数据准备页面，然后选择右上角的 “**切换回传统体验**” 即可。在那里，您可以根据需要创建子数据集。

**未来发展**

我们计划实施允许用户将旧数据集升级到新体验的功能。这种升级后的路径将允许在新体验中使用旧的家长数据集。

## 3. 为什么 Quick Sight 在实现与传统体验完全相同的功能之前推出新的数据准备体验？
<a name="faq-3"></a>

新的数据准备体验是通过广泛的客户合作开发的，旨在应对现实世界的分析挑战。最初的发布会优先考虑：

**增强的功能**
+ 视觉变换工作流程
+ 提高流程透明度
+ 通过 Divergence 获得高级制备技术
+ 强大的新功能，例如追加、聚合和透视

**灵活采用**

用户可以在发布数据集之前在体验之间进行选择，从而在团队按照自己的节奏过渡的同时确保工作流程不间断。这种方法允许立即访问新功能，同时通过传统体验保持对特殊需求的支持。

## 4. 目前仅在旧版体验中可用的功能是否会添加到新体验中？
<a name="faq-4"></a>

可以。Quick Sight正在积极努力将传统功能整合到新体验中。

## 5. API 更改如何影响现有的数据集创建脚本？
<a name="faq-5"></a>

Quick Sight 在引入新功能的同时保持了向后兼容性：
+ 现有脚本：旧版 API 脚本将继续运行，在旧版体验中创建数据集
+ API 命名：当前 API 名称保持不变
+ 新功能：其他 API 格式支持新体验的增强功能
+ 文档：我们的 API 参考中提供了新体验的完整 API 规范

## 6. 发布后，数据集能否在体验之间进行转换？
<a name="faq-6"></a>
+ 未来迁移路径：Quick Sight将在未来添加一项功能，以轻松将旧数据集迁移到新体验。
+ 单向流程：由于高级功能依赖性，不支持将数据集从新体验转换为旧格式

# 描述数据
<a name="describing-data"></a>

使用 Amazon Quick Sight，您可以添加有关数据集中列（字段）的信息或*元数据*。通过添加元数据，可以使数据集变得不言自明且更易于重用。这样做可以帮助数据管理员及其客户了解数据的来源及其含义。这是一种与使用数据集或将其与其他数据集组合以构建控制面板的用户进行沟通的方式。元数据对于组织之间共享的信息尤其重要。

向数据集添加元数据后，任何使用该数据集的用户都可以使用字段描述。正在主动浏览**字段**列表的用户在字段名称上停下来时就会出现列描述。正在编辑数据集或分析的用户可以看到列描述，但查看控制面板的用户看不见。描述未格式化。您可以输入换行符和格式标记，编辑器会保留这些编辑。但是，显示的描述工具提示只能显示单词、数字和符号，而不能显示格式。

**编辑列或字段的描述**

1. 从 Quick 主页中，选择左侧**的数据**。

1. 在 “**数据**” 选项卡中，选择要处理的数据集。

1. 在打开的数据集详细信息页面上，选择右上角的**编辑数据集**。

1. 在打开的数据集页面上，在底部的表格预览或左侧的字段列表中选择列。

1. 要添加或更改描述，请执行以下操作之一：
   + 在屏幕底部，通过字段名称旁边的铅笔图标打开字段的设置。
   + 在字段列表中，从字段名称旁边的菜单 中打开字段的设置。然后从上下文菜单中选择**编辑名称和描述**。

1. 添加或更改字段的描述。

   要删除现有描述，请删除“描述”框中的所有文本。

1. （可选）对于**名称**，如果要更改字段的名称，可以在此处输入新名称。

1. 选择 **Apply (应用)** 以保存更改。选择取消以退出。

# 选择文件上传设置
<a name="choosing-file-upload-settings"></a>

如果使用的是文件数据来源，请确认上传设置，并在必要时进行更正。

**重要**  
如果需要更改上传设置，请在对数据集进行任何其他更改之前进行这些更改。更改上传设置会导致 Amazon Quick Sight 重新导入文件。该过程会覆盖您到目前为止所做的任何更改。

## 更改文本文件上传设置
<a name="change-text-file-upload-settings"></a>

文本文件上传设置包括文件标题指示符、文件格式、文本分隔符、文本限定符和起始行。如果使用的是 Amazon S3 数据来源，您选择的上传设置将应用于您选择在该数据集中使用的所有文件。

要更改文本文件上传设置，请按照以下过程操作。

1. 在数据准备页上，选择展开图标打开 **Upload Settings** 窗格。

1. 在 **File format** 中，选择文件格式类型。

1. 如果选择了 **custom separated (CUSTOM)** 格式，请在 **Delimiter** 中指定分隔符。

1. 如果文件不包含标题行，请取消选中 **Files include headers** 复选框。

1. 如果要从第一行以外的行开始，请在 **Start from row** 中指定行号。如果选中了 **Files include headers** 复选框，则将新的起始行被视为标题行。如果未选中 **Files include headers** 复选框，则将新的起始行视为第一个数据行。

1. 在 **Text qualifier** 中，选择文本限定符：单引号 (') 或双引号 (")。

## 更改 Microsoft Excel 文件上传设置
<a name="change-excel-file-upload-settings"></a>

Microsoft Excel 文件上传设置包括范围标题指示符和整个工作表选择器。

要更改 Microsoft Excel 文件上传设置，请按照以下过程操作。

1. 在数据准备页上，选择展开图标打开 **Upload Settings** 窗格。

1. 将 **Upload whole sheet** 保留为选中状态。

1. 如果文件不包含标题行，请取消选中 **Range contains headers** 复选框。

# 数据准备经验（旧版）
<a name="data-prep-experience-legacy"></a>

**Topics**
+ [添加计算](working-with-calculated-fields.md)
+ [联接数据](joining-data.md)
+ [准备数据字段以便在 Amazon Quick Sight 中进行分析](preparing-data-fields.md)
+ [使用 Amazon Quick Sight 筛选数据](adding-a-filter.md)
+ [预览数据集中的表](previewing-tables-in-a-dataset.md)

# 添加计算
<a name="working-with-calculated-fields"></a>

使用以下一项或多项创建计算字段以转换数据：
+ [运算符](arithmetic-and-comparison-operators.md)
+ [函数](functions.md)
+ 包含数据的字段
+ 其他计算字段

您可以在数据准备期间或从分析页面中向数据集添加计算字段。如果在数据准备期间将计算字段添加到数据集中，则可以在使用该数据集的所有分析中使用该字段。在将一个计算字段添加到分析中的数据集时，只能在此分析中使用该字段。有关添加计算字段的更多信息，请参阅以下主题。

**Topics**
+ [添加计算字段](adding-a-calculated-field-analysis.md)
+ [Amazon Quick Sight 中的评估顺序](order-of-evaluation-quicksight.md)
+ [在 Quick Sight 中使用关卡感知计算](level-aware-calculations.md)
+ [Amazon Quick 的计算字段函数和运算符参考](calculated-field-reference.md)

# 添加计算字段
<a name="adding-a-calculated-field-analysis"></a>

使用以下一项或多项创建计算字段以转换数据：
+ [运算符](arithmetic-and-comparison-operators.md)
+ [函数](functions.md)
+ 聚合函数（只能将这些函数添加到分析中）
+ 包含数据的字段
+ 其他计算字段

您可以在数据准备期间或从分析页面中向数据集添加计算字段。如果在数据准备期间将计算字段添加到数据集中，则可以在使用该数据集的所有分析中使用该字段。在将一个计算字段添加到分析中的数据集时，只能在此分析中使用该字段。

分析同时支持单行操作和聚合操作。单行操作是指为每行提供 (可能) 不同的结果的操作。聚合操作提供的结果始终与整个行集相同。例如，如果您使用不带任何条件的简单字符串函数，它将更改每一行。如果您使用聚合函数，该规则将应用于组中的所有行。如果要查询美国的总销售额，则相同的数量应用于整个集合。如果需要特定状态的数据，则总销售额会反映新分组。它仍将为整个集合提供一个结果。

通过在分析内创建聚合的计算字段，您可以深入了解数据。在每个级别相应地重新计算聚合字段的值。数据集准备期间不能有这种类型的聚合。

例如，假设您要计算每个国家/地区、区域和州/省的利润百分比。您可以在分析中添加计算字段，`(sum(salesAmount - cost)) / sum(salesAmount)`。随后，在分析师深入到地理位置时，将计算每个国家/地区、区域和州/省的该字段。

**Topics**
+ [将计算字段添加到分析](#using-the-calculated-field-editor-analysis)
+ [将计算字段添加到数据集](#using-the-calculated-field-editor)
+ [处理计算字段中的十进制值](#handling-decimal-fields)

## 将计算字段添加到分析
<a name="using-the-calculated-field-editor-analysis"></a>

当您将数据集添加到分析中时，数据集中存在的每个计算字段都会添加到分析中。您可以在分析级别添加其他计算字段，以创建仅在该分析中可用的计算字段。

**将计算字段添加到分析**

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

1. 打开要更改的分析。

1. 在**数据**窗格中，选择左上角的**添加**，然后选择 **\$1 计算字段**。

   1. 在打开的计算编辑器中，执行以下操作：

   1. 为计算字段输入名称。

   1. 使用数据集、函数和运算符中的字段输入公式。

1. 完成后，选择**保存**。

有关如何使用 Quick Sight 中的可用函数创建公式的更多信息，请参阅[Amazon Quick 的计算字段函数和运算符参考函数和运算符](calculated-field-reference.md)。

## 将计算字段添加到数据集
<a name="using-the-calculated-field-editor"></a>

Amazon Quick Sight 作者可以在数据集创建的数据准备阶段生成计算字段。当您为数据集创建计算字段时，该字段将成为数据集中的新列。所有使用该数据集的分析都会继承该数据集的计算字段。

如果计算字段在行级别运行，并且数据集存储在行级别SPICE，则 Quick Sight 会在中计算并具体化结果。SPICE如果计算字段依赖于聚合函数，Quick Sight 会保留公式并在生成分析时执行计算。此类计算字段称为非具体化计算字段。

**为数据集添加或编辑计算字段**

1. 打开您希望使用的数据集。有关更多信息，请参阅 [编辑数据集](edit-a-data-set.md)。

1. 在“数据准备”页面上，执行以下操作：
   + 要创建新字段，请选择左侧的**添加计算字段**。
   + 要编辑现有的计算字段，请从左侧的**计算字段**中选择该字段，然后从上下文（右键单击）菜单中选择**编辑**。

1. 在计算编辑器中，为**添加标题**输入描述性名称来命名新的计算字段。此名称出现在数据集的字段列表中，因此应与其他字段相似。在本示例中，我们将字段命名为 `Total Sales This Year`。

1. （可选）添加注释，例如用斜杠和星号将文本括起来，以说明表达式的作用。

   ```
   /* Calculates sales per year for this year*/
   ```

1. 确定要使用的指标、函数和其他项目。在本示例中，我们需要确定以下内容：
   + 要使用的指标
   + 函数：`ifelse` 和 `datediff`

   我们想构建一个语句，类似于“如果销售发生在今年，则显示总销售额，否则显示 0。”

   要添加 `ifelse` 函数，请打开**函数**列表。选择**全部**以关闭所有函数的列表。现在，您应该会看到函数组：**聚合**、**条件**、**日期**等。

   选择**条件**，然后双击 `ifelse` 将其添加到工作区。

   ```
   ifelse()
   ```

1. 将光标放在工作区的括号内，然后添加三个空白行。

   ```
   ifelse(
                                               
                                               
                                               
   )
   ```

1. 将光标放在第一个空白行上，找到 `dateDiff` 函数。它列在**日期**下的**函数**中。您也可以通过输入 **date** 使用**搜索功能**查找。`dateDiff` 函数返回名称中包含 *`date`* 的所有函数。它不会返回**日期**下列出的所有函数；例如，搜索结果中缺少 `now` 函数。

   双击 `dateDiff` 将其添加到 `ifelse` 语句的第一个空白行。

   ```
   ifelse(
   dateDiff()                                            
                                               
                                               
   )
   ```

   添加 `dateDiff` 使用的参数。将光标放在 `dateDiff` 括号内以开始添加 `date1`、`date2` 和 `period`：

   1. 对于 `date1`：第一个参数是包含日期的字段。在**字段**下找到它，然后双击它或输入其名称将其添加到工作区。

   1. 对于 `date2`，添加逗号，然后选择 `truncDate()` 作为**函数**。在括号内添加周期和日期，如下所示：**truncDate( "YYYY", now() )**

   1. 对于 `period`：在 `date2` 后面添加逗号并输入 **YYYY**。这是一年的周期。要查看所有支持的周期列表，在**函数**列表中找到 `dateDiff`，然后选择**了解更多**以打开文档。如果您已经像现在一样查看文档，请参阅 [dateDiff](dateDiff-function.md)。

   如果您愿意，可以添加一些空格以提高可读性。表达式应如下所示。

   ```
   ifelse(
      dateDiff( {Date}, truncDate( "YYYY", now() ) ,"YYYY" )                                       
                                               
                                               
   )
   ```

1. 指定返回值。在我们的示例中，`ifelse` 中的第一个参数需要返回 `TRUE` 或 `FALSE` 的值。因为我们想要当前年份，并且将其与今年进行比较，所以指定 `dateDiff` 语句应返回 `0`。对于销售年份和当前年份之间没有区别的行，`ifelse` 的 `if` 部分评估为 true。

   ```
      dateDiff( {Date}, truncDate( "YYYY", now() ) ,"YYYY" ) = 0 
   ```

   要为去年 `TotalSales` 创建字段，可以将 `0` 更改为 `1`。

   使用 `addDateTime` 而不是 `truncDate`，也能达到同样的目的。然后，对于之前的每一年，更改 `addDateTime` 的第一个参数来代表每一年。为此，您可以使用 `-1` 表示去年，`-2` 表示之前的一年，依此类推。如果您使用 `addDateTime`，则将每年的 `dateDiff` 函数保留为 `= 0`。

   ```
      dateDiff( {Discharge Date}, addDateTime(-1, "YYYY", now() ) ,"YYYY" ) = 0 /* Last year */
   ```

1. 将光标移到 `dateDiff` 下方的第一个空白行。添加逗号。

   对于 `ifelse` 语句的 `then` 部分，我们需要选择包含销售额的度量（指标）`TotalSales`。

   要选择字段，打开**字段**列表，然后双击字段将其添加到屏幕上。或者可以输入名称。在包含空格的名称周围添加大括号 `{ }`。您的指标可能有不同的名称。您可以通过字段前面的数字符号（**\$1**）判断哪个字段是指标。

   现在，表达式应如下所示。

   ```
   ifelse(
      dateDiff( {Date}, truncDate( "YYYY", now() ) ,"YYYY" ) = 0
      ,{TotalSales}                            
                                              
   )
   ```

1. 添加 `else` 子句。`ifelse` 函数不需要子句，但我们想添加。出于报告的目的，您通常不希望有任何 null 值，因为有时会省略带 null 值的行。

   我们将 ifelse 的其余部分设置为 `0`。结果是，对于包含往年销售额的行，该字段为 `0`。

   为此，请在空白行上添加一个逗号，然后添加 `0`。如果您在开头添加了注释，则最终 `ifelse` 表达式应如下所示。

   ```
   /* Calculates sales per year for this year*/
   ifelse(
      dateDiff( {Date}, truncDate( "YYYY", now() ) ,"YYYY" ) = 0
      ,{TotalSales}                            
      ,0                                         
   )
   ```

1. 选择右上角的**保存**以保存您所做的工作。

   如果表达式中有错误，编辑器会在底部显示错误消息。检查表达式中是否有红色的波浪线，然后将光标悬停在该行上以查看错误消息内容。常见错误包括标点符号缺失、参数缺失、拼写错误和数据类型无效。

   要避免进行任何更改，请选择**取消**。

**将参数值添加到计算字段**

1. 您可以在计算字段中引用参数。通过将参数添加到表达式中，可以添加该参数的当前值。

1. 要添加参数，打开**参数**列表，然后选择要包含其值的参数。

1. （可选）要手动向将参数添加到表达式，请键入参数的名称。然后用大括号 `{}` 将其括起来，并加上 `$` 前缀，例如 `${parameterName}`。

您可以更改数据集中任何字段的数据类型，包括计算字段的类型。您只能选择与字段中的数据相匹配的数据类型。

**更改计算字段的数据类型**
+ 对于**计算字段**（左侧），选择要更改的字段，然后从上下文（右键单击）菜单中选择**更改数据类型**。

与数据集中的其他字段不同，计算字段无法禁用。相反，可以将其删除。

**删除计算字段**
+ 对于**计算字段**（左侧），选择要更改的字段，然后从上下文（右键单击）菜单中选择**删除**。

## 处理计算字段中的十进制值
<a name="handling-decimal-fields"></a>

当您的数据集使用直接查询模式时，十进制数据类型的计算由数据集来源引擎的行为决定。在某些特定情况下，Quick Sight 会应用特殊处理来确定输出计算的数据类型。

当您的数据集使用 SPICE 查询模式并且计算字段被具体化时，结果的数据类型取决于特定的函数运算符和输入的数据类型。下表显示了一些数值计算字段的预期行为。

**一元运算符**

下表显示了根据您使用的运算符和输入值的数据类型输出哪种数据类型。例如，如果您在 `abs` 计算中输入一个整数，则输出值的数据类型为整数。


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/adding-a-calculated-field-analysis.html)

**二元运算符**

下表根据您输入的两个值的数据类型显示输出哪种数据类型。例如，对于算术运算符，如果您提供两个整数数据类型，则计算结果将输出为整数。

对于基本运算符（\$1、-、\$1）：


|  | **整数** | **十进制定点** | **十进制浮点** | 
| --- | --- | --- | --- | 
|  **整数**  |  整数  |  十进制定点  |  十进制浮点  | 
|  **十进制定点**  |  十进制定点  |  十进制定点  |  十进制浮点  | 
|  **十进制浮点**  |  十进制浮点  |  十进制浮点  |  十进制浮点  | 

对于除法运算符（/）：


|  | **整数** | **十进制定点** | **十进制浮点** | 
| --- | --- | --- | --- | 
|  **整数**  |  十进制浮点  |  十进制浮点  |  十进制浮点  | 
|  **十进制定点**  |  十进制浮点  |  十进制定点  |  十进制浮点  | 
|  **十进制浮点**  |  十进制浮点  |  十进制浮点  |  十进制浮点  | 

对于指数运算符和模数运算符（^、%）：


|  | **整数** | **十进制定点** | **十进制浮点** | 
| --- | --- | --- | --- | 
|  **整数**  |  十进制浮点  |  十进制浮点  |  十进制浮点  | 
|  **十进制定点**  |  十进制浮点  |  十进制浮点  |  十进制浮点  | 
|  **十进制浮点**  |  十进制浮点  |  十进制浮点  |  十进制浮点  | 

# Amazon Quick Sight 中的评估顺序
<a name="order-of-evaluation-quicksight"></a>

当您打开或更新分析时，在显示分析之前，Amazon Quick Sight 会按特定顺序评估分析中配置的所有内容。Amazon Quick Sight 将配置转换为数据库引擎可以运行的查询。无论您连接到数据库、软件即服务 (SaaS) 源还是 Amazon Quick Sight 分析引擎 ([SPICE](spice.md))，查询都会以类似的方式返回数据。

如果您了解评估配置的顺序，您就知道指示将特定筛选器或计算应用于数据的顺序。

下图显示了评估顺序。左侧的列显示了未涉及等级感知计算窗口（LAC-W）或聚合（LAC-A）函数时的评估顺序。第二列显示了包含要在预筛选条件（`PRE_FILTER`）等级计算 LAC-W 表达式的计算字段的分析评估顺序。第三列显示了包含要在预聚合（`PRE_AGG`）等级计算 LAC-W 表达式的计算字段的分析评估顺序。最后一列显示了包含要计算 LAC-W 表达式的计算字段的分析评估顺序。在下图中，显示了评估顺序的详细说明。有关等级感知计算的更多信息，请参阅 [在 Quick Sight 中使用关卡感知计算](level-aware-calculations.md)。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/order-of-evaluation2.png)


以下列表显示了 Amazon Quick Sight 在您的分析中应用配置的顺序。在数据集中设置的任何内容都在分析之外发生，例如，数据集级别的计算、筛选器和安全设置。它们都应用于基础数据。以下列表仅涵盖分析内发生的内容。

1. **LAC-W 预筛选条件等级**：在分析筛选条件之前按原始表基数评估数据

   1. **简单计算**：在标量等级进行计算，无需任何聚合或窗口计算。例如 `date_metric/60, parseDate(date, 'yyyy/MM/dd'), ifelse(metric > 0, metric, 0), split(string_column, '|' 0)`。

   1. **LAC-W 函数 PRE\$1FILTER**：如果视觉对象中涉及任何 LAC-W PRE\$1FILTER 表达式，则 Amazon Quick Sight 首先在原始表级别计算窗口函数，然后再计算任何筛选器。如果在筛选条件中使用 LAC-W PRE\$1FILTER 表达式，则此时将应用该表达式。例如 `maxOver(Population, [State, County], PRE_FILTER) > 1000`。

1. **LAC-W PRE\$1AGG**：在聚合之前按原始表基数评估数据

   1. **分析期间添加的筛选条件**：此时将应用为视觉对象中的未聚合字段创建的筛选条件，这与 WHERE 子句类似。例如 `year > 2020`。

   1. **LAC-W 函数 PRE\$1AGG**：如果视觉对象中涉及任何 LAC-W PRE\$1AGG 表达式，Amazon Quick Sight 会在应用任何聚合之前计算窗口函数。如果在筛选条件中使用 LAC-W PRE\$1AGG 表达式，则此时将应用该表达式。例如 `maxOver(Population, [State, County], PRE_AGG) > 1000`。

   1. **顶部/底部 N 个筛选器**：在维度上配置为显示 top/bottom N 个项目的筛选器。

1. **LAC-A 等级**：在视觉对象聚合之前，在自定义等级评估聚合

   1. **自定义等级聚合**：如果视觉对象中涉及任何 LAC-A 表达式，则此时会对其进行计算。Amazon 根据上述筛选条件之后的表格QuickSight 计算聚合，并按计算字段中指定的维度进行分组。例如 `max(Sales, [Region])`。

1. **视觉对象等级**：在视觉对象等级评估聚合和聚合后表计算，并将其余配置应用于视觉对象

   1. **视觉对象等级聚合**：应始终应用视觉对象聚合，表格表格除外（其维度为空）。使用此设置，将根据字段井中的字段计算聚合，并按视觉对象中的维度进行分组。如果任何筛选条件构建在聚合之上，则此时将应用该筛选条件，类似于 HAVING 子句。例如 `min(distance) > 100`。

   1. **表计算**：如果视觉对象中引用了任何聚合后表计算（应将聚合表达式作为操作数），则此时会对其进行计算。Amazon Quick Sight 在可视化聚合之后执行窗口计算。同样，也会应用构建在此类计算上的筛选条件。

   1. **其他类别计算**：此类计算仅存在于line/bar/pie/donut图表中。有关更多信息，请参阅 [显示限制](working-with-visual-types.md#display-limits)。

   1. **总计和小计**：如果需要，可以在圆环图（仅限总计）、表格（仅限总计）和数据透视表中计算总计和小计。

# 在 Quick Sight 中使用关卡感知计算
<a name="level-aware-calculations"></a>


|  | 
| --- |
|    适用于：企业版和标准版  | 

通过*等级感知计算*（LAC），您可以指定要计算窗口函数或聚合函数的粒度等级。LAC 函数有两种类型：等级感知计算 – 聚合（LAC-A）函数和等级感知计算 – 窗口（LAC-W）函数。

**Topics**
+ [LAC-A 函数](#level-aware-calculations-aggregate)
+ [LAC-A 函数](#level-aware-calculations-window)

## 等级感知计算 – 聚合（LAC-A）函数
<a name="level-aware-calculations-aggregate"></a>

通过 LAC-A 函数，您可以指定在哪个等级对计算进行分组。通过向现有聚合函数（例如 `sum() , max() , count()`）添加参数，您可以定义聚合所需的任何分组依据等级。添加的等级可以是任何维度，其独立于添加到视觉对象的维度。例如：

```
sum(measure,[group_field_A])
```

要使用 LAC-A 函数，请在计算编辑器中直接键入这些函数，方法是将预期的聚合等级添加为括号中的第二个参数。以下是用于比较的聚合函数和 LAC-A 函数的示例。
+ 聚合函数：`sum({sales})`
+ LAC-A 函数：`sum({sales}, [{Country},{Product}])`

LAC-A 结果是用方括号 `[ ]` 中的指定级别计算的，可用作聚合函数的操作数。聚合函数的分组依据等级为视觉对象等级，**分组依据**字段添加到视觉对象的字段井中。

除了在方括号 `[ ]` 中创建静态 LAC 组密钥外，您还可以通过在方括号中放置参数 `$visualDimensions` 来使其动态适应视觉对象分组依据字段。这是系统提供的参数，与用户定义的参数截然不同。`[$visualDimensions]` 参数表示添加到当前视觉对象中**分组依据**字段井中的字段。以下示例说明如何将组密钥动态添加到视觉对象维度，或将组密钥从视觉对象维度中移除
+ 带有动态添加组密钥的 LAC-A：`sum({sales}, [${visualDimensions},{Country},{Products}])`

  在计算视觉对象等级聚合之前，它会计算按 `country`、`products` 以及**分组依据**字段井中的任何其他字段分组的销售总额。
+ 带有动态移除组密钥的 LAC-A：`sum({sales}, [${visualDimensions},!{Country},!{Products}])`

  在计算视觉对象等级聚合之前，它会计算按视觉对象**分组依据**字段井中的字段（`country` 和 `product` 除外）分组的销售总额。

您可以在 LAC 表达式中指定添加的组密钥或删除的组密钥，但不能同时指定两者。

以下聚合函数支持 LAC-A 函数：
+ [avg](avg-function.md)
+ [count](count-function.md)
+ [distinct\$1count](distinct_count-function.md)
+ [max](max-function.md)
+ [median](median-function.md)
+ [min](min-function.md)
+ [percentile](percentile-function.md)
+ [percentileCont](percentileCont-function.md)
+ [percentileDisc（百分位数）](percentileDisc-function.md)
+ [stdev](stdev-function.md)
+ [stdevp](stdevp-function.md)
+ [sum](sum-function.md)
+ [var](var-function.md)
+ [varp](varp-function.md)

### LAC-A 示例
<a name="level-aware-calculations-aggregate-examples"></a>

您可以使用 LAC-A 函数执行以下操作：
+ 运行独立于与视觉对象中的等级的计算。例如，如果您进行以下计算，则仅汇总国家/地区等级的销售数量，但不汇总视觉对象中其他维度（区域或产品）的销售数量。

  ```
  sum({Sales},[{Country}])
  ```
+ 对不在视觉对象中的维度运行计算。例如，如果您使用以下函数，则可以按区域计算各个国家/地区的平均销售总额。

  ```
  sum({Sales},[{Country}])
  ```

  尽管国家/地区不包含在视觉对象中，但 LAC-A 函数首先汇总国家/地区等级的销售额，然后通过视觉对象等级计算生成每个区域的平均销售额。如果未使用 LAC-A 函数来指定登记，则按每个区域的最低粒度等级（数据集的基本等级）计算平均销售额（显示在销售额列中）。
+ 将 LAC-A 与其他聚合函数和 LAC-W 函数结合使用。有两种方法可以将 LAC-A 函数与其他函数嵌套。
  + 创建计算时，可以编写嵌套语法。例如，LAC-A 函数可以与 LAC-W 函数嵌套，以计算每种产品平均价格的各国家/地区的总销售额：

    ```
    sum(avgOver({Sales},[{Product}],PRE_AGG),[{Country}])
    ```
  + 将 LAC-A 函数添加到视觉对象时，可以将计算与您在字段井中选择的视觉对象等级聚合函数进一步嵌套。有关更改视觉对象中字段聚合的更多信息，请参阅 [使用字段井在字段上更改或添加聚合](changing-field-aggregation.md#change-field-aggregation-field-wells)。

### LAC-A 限制
<a name="level-aware-calculations-aggregate-limitations"></a>

以下限制适用于 LAC-A 函数：
+ 所有累加性和非累加性聚合函数都支持 LAC-A 函数，例如 `sum()`、`count()` 和 `percentile()`。以 “if” 结尾的条件聚合函数（例如`sumif()`和）不支持 LAC-A 函数`countif()`，也不支持periodToDate以 “” 开头的周期聚合函数，例如`periodToDateSum()`和`periodToDateMax()`。
+ 表和数据透视表中的 LAC-A 函数目前不支持行级和列级总计。在图表中添加行级或列级总计时，总数将显示为空白。其他非 LAC 维度不受影响。
+ 目前不支持嵌套的 LAC-A 函数。支持与常规聚合函数和 LAC-W 函数嵌套的 LAC-A 函数的有限功能。

  例如，有效函数如下所示：
  + `Aggregation(LAC-A())`。例如：`max(sum({sales}, [{country}]))`
  + `LAC-A(LAC-W())`。例如：`sum(sumOver({Sales},[{Product}],PRE_AGG), [{Country}])`

  以下函数无效：
  + `LAC-A(Aggregation())`。例如：`sum(max({sales}), [{country}])`
  + `LAC-A(LAC-A())`。例如：`sum(max({sales}, [{country}]),[category])`
  + `LAC-W(LAC-A())`。例如：`sumOver(sum({Sales},[{Product}]),[{Country}],PRE_AGG)`

## 等级感知计算 – 窗口（LAC-A）函数
<a name="level-aware-calculations-window"></a>

通过 LAC-W 函数，您可以指定用于计算的窗口或分区。LAC-W 函数是一组可以在预筛选条件或预聚合等级运行的窗口函数，例如 `sumover()`、`(maxover)`、`denseRank`。例如：`sumOver(measure,[partition_field_A],pre_agg)`。

LAC-W 函数以前称为等级感知聚合（LAA）。

LAC-W 函数可以帮助您回答以下类型的问题：
+ 我有多少客户只下了 1 个采购订单？ 或 11 个？ 或 50 个？ 我们希望视觉对象使用计数作为维度而不是视觉对象中的度量。
+ 对于终身支出超过 10 万美元的客户，每个细分市场的总销售额是多少？ 该视觉对象应只显示细分市场和每个细分市场的总销售额。
+ 每个行业对整个公司利润的贡献（占总利润的百分比）是多少？ 我们希望能够筛选视觉对象以显示一些行业，以及它们如何为所展示行业的总销售额做出贡献。但是，我们还希望看到每个行业占整个公司总销售额的百分比（包括筛选出的行业）。
+ 与行业平均值相比，每个类别的总销售额是多少？ 行业平均值应包括所有类别，即使在筛选后也是如此。
+ 我的客户是如何分组到累积支出范围的？ 我们想使用分组作为维度而不是指标。

对于更复杂的问题，你可以在 Quick Sight 对你的设置进行评估的特定点之前注入计算或过滤器。要直接影响您的结果，您可以将计算级别关键字添加到表计算。有关 Quick Sight 如何评估查询的更多信息，请参阅[Amazon Quick Sight 中的评估顺序](order-of-evaluation-quicksight.md)。

LAC-W 函数支持以下计算等级：
+ **`PRE_FILTER`**— 在应用分析中的筛选器之前，Quick Sight 会评估预过滤器的计算结果。然后，将应用在这些预筛选计算上配置的所有筛选器。
+ **`PRE_AGG`**— 在计算显示屏级别的聚合之前，Quick Sight 会执行预聚合计算。然后，将应用在这些预聚合计算上配置的所有筛选器。此工作发生在应用顶部和底部 *N* 个筛选器之前。

您可以将 `PRE_FILTER` 或 `PRE_AGG` 关键字用作以下表计算函数中的参数。在指定计算级别时，可在函数中使用未聚合的度量。例如，您可以使用 `countOver({ORDER ID}, [{Customer ID}], PRE_AGG)`。通过使用 `PRE_AGG`，您可以指定 `countOver` 在预聚合级别执行。
+ [avgOver](avgOver-function.md)
+ [countOver](countOver-function.md)
+ [denseRank](denseRank-function.md)
+ [distinctCountOver](distinctCountOver-function.md)
+ [minOver](minOver-function.md)
+ [maxOver](maxOver-function.md)
+ [percentileRank](percentileRank-function.md)
+ [rank](rank-function.md)
+ [stdevOver](stdevOver-function.md)
+ [stdevpOver](stdevpOver-function.md)
+ [sumOver](sumOver-function.md)
+ [varOver](varOver-function.md)
+ [varpOver](varpOver-function.md)

默认情况下，每个函数的第一个参数都必须是聚合的度量。如果您使用 `PRE_FILTER` 或 `PRE_AGG`，则对第一个参数使用非聚合度量。

对于 LAC-W 函数，视觉对象聚合默认为 `MIN` 以消除重复项。要更改聚合，请打开字段的上下文菜单（右键单击），然后选择另一个不同聚合。

有关在现实生活场景中何时以及如何使用 LAC-W 函数的示例，请参阅 AWS 大数据博客中的以下文章：[使用 Amazon 中的关卡感知聚合创建高级见解](https://aws.amazon.com/jp/blogs/big-data/create-advanced-insights-using-level-aware-aggregations-in-amazon-quicksight/)。QuickSight

# Amazon Quick 的计算字段函数和运算符参考
<a name="calculated-field-reference"></a>

您可以在数据准备期间或从分析页面中向数据集添加计算字段。如果在数据准备期间将计算字段添加到数据集中，则可以在使用该数据集的所有分析中使用该字段。在将一个计算字段添加到分析中的数据集时，只能在此分析中使用该字段。

您可以使用以下函数和运算符来创建计算字段以转换数据。

**Topics**
+ [运算符](arithmetic-and-comparison-operators.md)
+ [按类别列出函数](functions-by-category.md)
+ [函数](functions.md)
+ [聚合函数](calculated-field-aggregations.md)
+ [表计算函数](table-calculation-functions.md)

# 运算符
<a name="arithmetic-and-comparison-operators"></a>

您可以在计算字段中使用以下运算符。Quick 使用标准运算顺序：括号、指数、乘法、除法、加法、减法 (PEMDAS)。等于（=）和不等于（<>）比较区分大小写。
+ 加 (\$1)
+ 减 (−)
+ 乘 (\$1)
+ 除 (/)
+ 取模（%）– 另请参阅以下列表中的 `mod()`。
+ 幂（^）– 另请参阅以下列表中的 `exp()`。
+ 等于 (=)
+ 不等于 (<>)
+ 大于（>）
+ 大于或等于 (>=)
+ 小于（<）
+ 小于或等于（<=）
+ AND
+ 或
+ NOT

Amazon Quick 支持将以下数学函数应用于表达式。
+ `[https://docs.aws.amazon.com/quicksight/latest/user/mod-function.html](https://docs.aws.amazon.com/quicksight/latest/user/mod-function.html)(number, divisor)` – 查找将一个数字除以除数之后的余数。
+ `[https://docs.aws.amazon.com/quicksight/latest/user/log-function.html](https://docs.aws.amazon.com/quicksight/latest/user/log-function.html)(expression) ` – 返回给定表达式的以 10 为底的对数。
+ `[https://docs.aws.amazon.com/quicksight/latest/user/ln-function.html](https://docs.aws.amazon.com/quicksight/latest/user/ln-function.html)(expression) ` – 返回给定表达式的自然对数。
+ `[https://docs.aws.amazon.com/quicksight/latest/user/abs-function.html](https://docs.aws.amazon.com/quicksight/latest/user/abs-function.html)(expression) ` – 返回给定表达式的绝对值。
+ `[https://docs.aws.amazon.com/quicksight/latest/user/sqrt-function.html](https://docs.aws.amazon.com/quicksight/latest/user/sqrt-function.html)(expression) ` – 返回给定表达式的平方根。
+ `[https://docs.aws.amazon.com/quicksight/latest/user/exp-function.html](https://docs.aws.amazon.com/quicksight/latest/user/exp-function.html)(expression) ` – 返回以自然常数 *e* 为底且以指定表达式为幂的值。

要使冗长的计算更易于阅读，您可以使用圆括号来澄清分组和计算优先级。在以下语句中，不需要圆括号。首先处理乘法语句，然后将结果与 5 相加，返回值 26。但是，圆括号使语句更易于阅读，因此也易于维护。

```
5 + (7 * 3)
```

因为圆括号排在运算顺序的第一位，所以您可以改变运用其他运算符的顺序。例如，在以下语句中，先处理加法语句，然后将结果乘以 3 以返回值 36。

```
(5 + 7) * 3
```

## 示例：算术运算符
<a name="operator-example-multiple-operators"></a>

以下示例使用多个算术运算符确定扣除折扣后的销售总额。

```
(Quantity * Amount) - Discount
```

## 示例：（/）除法
<a name="operator-example-division-operators"></a>

下面的示例使用除法将 3 除以 2。返回值 1.5。Amazon Quick 使用浮点除法。

```
3/2
```

## 示例：（=）等于
<a name="operator-example-equal"></a>

使用 = 执行区分大小写的值比较。比较为 TRUE 的行包括在结果集中。

在以下示例中，在结果中包含 `Region` 字段为 **South** 的行。如果 `Region` 为 **south**，则排除这些行。

```
Region = 'South'
```

在下例中，比较结果为 FALSE。

```
Region = 'south'
```

以下示例显示一个比较，它将 `Region` 全部转换为大写形式 (**SOUTH**)，然后与 **SOUTH** 进行比较。这会返回区域为 **south**、**South** 或 **SOUTH** 的行。

```
toUpper(Region) = 'SOUTH'
```

## 示例：（<>）
<a name="operator-example-not-equal"></a>

不等号 <> 意味着*小于或大于*。

因此，如果 **x<>1**，则可以说成 *x 小于 1 或大于 1*。< 和 > 是一起计算的。或者说成 *x 是除 1 以外的任何值*。或者，*x 不等于 1*。

**注意**  
使用 <>，而不是 \$1=。

下例比较 `Status Code` 与数字值。这会返回 `Status Code` 不等于 **1** 的行。

```
statusCode <> 1
```

以下示例比较多个 `statusCode` 值。在此情况下，活动记录具有 `activeFlag = 1`。该示例返回以下条件之一适用的行：
+ 对于活动记录，显示状态不是 1 或 2 的行
+ 对于非活动记录，显示状态为 99 或 -1 的行

```
( activeFlag = 1 AND (statusCode <> 1 AND statusCode <> 2) )
OR
( activeFlag = 0 AND (statusCode= 99 OR statusCode= -1) )
```

## 示例：(^)
<a name="operator-example-power"></a>

幂符号 `^` 表示 * 的 * 次幂。您可以将幂运算符与任何数值字段和任何有效指数一起使用。

以下示例是 2 的 4 次幂或 (2 \$1 2 \$1 2 \$1 2) 的简单表达式。这会返回值 16。

```
2^4
```

以下示例计算收入字段的平方根。

```
revenue^0.5
```

## 示例：AND、OR 和 NOT
<a name="operator-example-and-or-not"></a>

以下示例使用 AND、OR 和 NOT 来比较多个表达式。表达式中使用了条件运算符，以标记不在华盛顿或俄勒冈州、享受特别促销并且订单超过 10 个的最大客户。如果没有返回值，则使用值“n/a”。

```
ifelse(( (NOT (State = 'WA' OR State = 'OR')) AND Orders > 10), 'Special Promotion XYZ', 'n/a')
```

## 示例：创建比较列表如“in”或“not in”
<a name="operator-example-in-or-not-in"></a>

此例使用运算符来创建比较，以查找在指定值列表中存在或不存在的值。

以下示例比较 `promoCode` 与一个指定值列表。该示例返回 `promoCode` 位于列表 **(1, 2, 3)** 中的行。

```
promoCode    = 1
OR promoCode = 2
OR promoCode = 3
```

以下示例比较 `promoCode` 与一个指定值列表。该示例返回 `promoCode` 没有位于列表 **(1, 2, 3)** 中的行。

```
NOT(promoCode = 1
OR promoCode  = 2
OR promoCode  = 3
)
```

另一种表示方法是提供一个列表，其中 `promoCode` 不等于列表中的任何项。

```
promoCode     <> 1
AND promoCode <> 2
AND promoCode <> 3
```

## 示例：创建“between”比较
<a name="operator-example-between"></a>

该示例使用比较运算符创建一个比较，以显示介于两个值之间的值。

以下示例检查 `OrderDate` 并返回 `OrderDate` 介于 2016 年第一天与最后一天之间的行。在这种情况下，我们希望包含第一天和最后一天，因此我们在比较运算符上使用了“或等于”。

```
OrderDate >= "1/1/2016" AND OrderDate <= "12/31/2016"
```

# 按类别列出函数
<a name="functions-by-category"></a>

在本节中，您可以找到 Amazon Quick 中按类别排序的可用功能列表。

**Topics**
+ [聚合函数](#aggregate-functions)
+ [条件函数](#conditional-functions)
+ [日期函数](#date-functions)
+ [数字函数](#numeric-functions)
+ [数学函数](#mathematical-functions)
+ [字符串函数](#string-functions)
+ [表计算](#table-calculations)

## 聚合函数
<a name="aggregate-functions"></a>

Amazon Quick 中计算字段的聚合函数包括以下内容。这些仅在分析和可视化期间可用。所有这些函数都会返回按选定的一个或多个维度分组的值。对于每个聚合，还有一个有条件聚合。它们根据条件执行相同类型的聚合。
+ [https://docs.aws.amazon.com/quicksight/latest/user/avg-function.html](https://docs.aws.amazon.com/quicksight/latest/user/avg-function.html) 计算指定度量中的一组数字的平均值，并按照选定的一个或多个维度分组。
+ [https://docs.aws.amazon.com/quicksight/latest/user/avgIf-function.html](https://docs.aws.amazon.com/quicksight/latest/user/avgIf-function.html) 根据条件语句计算平均值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/count-function.html](https://docs.aws.amazon.com/quicksight/latest/user/count-function.html) 计算维度或度量中包含的值的个数，并按照选定的一个或多个维度分组。
+ [https://docs.aws.amazon.com/quicksight/latest/user/countIf-function.html](https://docs.aws.amazon.com/quicksight/latest/user/countIf-function.html) 根据条件语句计算计数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/distinct_count-function.html](https://docs.aws.amazon.com/quicksight/latest/user/distinct_count-function.html) 计算维度或度量中包含的不同值的个数，并按照选定的一个或多个维度分组。
+ [https://docs.aws.amazon.com/quicksight/latest/user/distinct_countIf-function.html](https://docs.aws.amazon.com/quicksight/latest/user/distinct_countIf-function.html) 根据条件语句计算不同值计数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/max-function.html](https://docs.aws.amazon.com/quicksight/latest/user/max-function.html) 返回指定度量的最大值，并按照选定的一个或多个维度分组。
+ [https://docs.aws.amazon.com/quicksight/latest/user/maxIf-function.html](https://docs.aws.amazon.com/quicksight/latest/user/maxIf-function.html) 根据条件语句计算最大值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/median-function.html](https://docs.aws.amazon.com/quicksight/latest/user/median-function.html) 返回指定度量的中值，并按照选定的一个或多个维度进行分组。
+ [https://docs.aws.amazon.com/quicksight/latest/user/medianIf-function.html](https://docs.aws.amazon.com/quicksight/latest/user/medianIf-function.html) 根据条件语句计算中位数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/min-function.html](https://docs.aws.amazon.com/quicksight/latest/user/min-function.html) 返回指定度量的最小值，并按照选定的一个或多个维度分组。
+ [https://docs.aws.amazon.com/quicksight/latest/user/minIf-function.html](https://docs.aws.amazon.com/quicksight/latest/user/minIf-function.html) 根据条件语句计算最小值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/percentile-function.html](https://docs.aws.amazon.com/quicksight/latest/user/percentile-function.html)（`percentileDisc` 的别名）计算指定度量的第 *n* 个百分位数，并按照选定的一个或多个维度分组。
+ [https://docs.aws.amazon.com/quicksight/latest/user/percentileCont-function.html](https://docs.aws.amazon.com/quicksight/latest/user/percentileCont-function.html) 根据指定度量的数字的连续分布计算第 *n* 个百分位数，并按照选定的一个或多个维度分组。
+ [percentileDisc（百分位数）根据指定度量的实际数字（按所选一个或多个维度分组）](https://docs.aws.amazon.com/quicksight/latest/user/percentileDisc-function.html)计算第 *n* 个百分位数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodToDateAvg-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodToDateAvg-function.html) 按给定时间粒度（例如一个季度）到某个时间点的指定度量计算一组数字的平均值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodToDateCount-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodToDateCount-function.html) 按给定时间粒度（例如一个季度）到某个时间点的维度或度量（包括重复项）计算数值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodToDateMax-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodToDateMax-function.html) 返回给定时间粒度（例如一个季度）到某个时间点的指定度量的最大值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodToDateMedian-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodToDateMedian-function.html) 返回给定时间粒度（例如一个季度）到某个时间点的指定度量的中值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodToDateMin-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodToDateMin-function.html) 返回给定时间粒度（例如一个季度）到某个时间点的指定度量或日期的最小值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodToDatePercentile-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodToDatePercentile-function.html) 按给定时间粒度（例如一个季度）到某个时间点的度量中的实际值计算百分位数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodToDatePercentileCont-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodToDatePercentileCont-function.html) 按给定时间粒度（例如一个季度）到某个时间点的度量中数值的连续分布计算百分位数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodToDateStDev-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodToDateStDev-function.html) 根据样本按给定时间粒度（例如一个季度）到某个时间点的指定度量计算一组数字的标准差。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodToDateStDevP-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodToDateStDevP-function.html) 根据样本按给定时间粒度（例如一个季度）到某个时间点的指定度量计算一组数字的总体标准差。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodToDateSum-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodToDateSum-function.html) 按给定时间粒度（例如一个季度）到某个时间点的指定度量计算一组数字的和。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodToDateVar-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodToDateVar-function.html) 按给定时间粒度（例如一个季度）到某个时间点的指定度量计算一组数字的样本方差。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodToDateVarP-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodToDateVarP-function.html) 按给定时间粒度（例如一个季度）到某个时间点的指定度量计算一组数字的总体方差。
+ [https://docs.aws.amazon.com/quicksight/latest/user/stdev-function.html](https://docs.aws.amazon.com/quicksight/latest/user/stdev-function.html) 根据样本按指定的度量计算一组数字的标准差，并按照选定的一个或多个维度分组。
+ [https://docs.aws.amazon.com/quicksight/latest/user/stdevIf-function.html](https://docs.aws.amazon.com/quicksight/latest/user/stdevIf-function.html) 根据条件语句计算样本标准差。
+ [https://docs.aws.amazon.com/quicksight/latest/user/stdevp-function.html](https://docs.aws.amazon.com/quicksight/latest/user/stdevp-function.html) 根据总体偏差计算指定度量中的一组数字的标准差，并按照选定的一个或多个维度分组。
+ [https://docs.aws.amazon.com/quicksight/latest/user/stdevpIf-function.html](https://docs.aws.amazon.com/quicksight/latest/user/stdevpIf-function.html) 根据条件语句计算总体偏差。
+ [https://docs.aws.amazon.com/quicksight/latest/user/var-function.html](https://docs.aws.amazon.com/quicksight/latest/user/var-function.html) 根据样本按指定的度量计算一组数字的方差，并按照选定的一个或多个维度分组。
+ [https://docs.aws.amazon.com/quicksight/latest/user/varIf-function.html](https://docs.aws.amazon.com/quicksight/latest/user/varIf-function.html) 根据条件语句计算样本方差。
+ [https://docs.aws.amazon.com/quicksight/latest/user/varp-function.html](https://docs.aws.amazon.com/quicksight/latest/user/varp-function.html) 根据总体偏差按指定的度量计算一组数字的方差，并按照选定的一个或多个维度分组。
+ [https://docs.aws.amazon.com/quicksight/latest/user/varpIf-function.html](https://docs.aws.amazon.com/quicksight/latest/user/varpIf-function.html) 根据条件语句计算总体方差。
+ [https://docs.aws.amazon.com/quicksight/latest/user/sum-function.html](https://docs.aws.amazon.com/quicksight/latest/user/sum-function.html) 按指定的度量对一组数字求和，并按照选定的一个或多个维度分组。
+ [https://docs.aws.amazon.com/quicksight/latest/user/sumIf-function.html](https://docs.aws.amazon.com/quicksight/latest/user/sumIf-function.html) 根据条件语句计算总和。

## 条件函数
<a name="conditional-functions"></a>

Amazon Quick 中计算字段的条件函数包括以下内容：
+ [https://docs.aws.amazon.com/quicksight/latest/user/coalesce-function.html](https://docs.aws.amazon.com/quicksight/latest/user/coalesce-function.html) 返回第一个不为 null 的参数值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/ifelse-function.html](https://docs.aws.amazon.com/quicksight/latest/user/ifelse-function.html) 对一组 *if*/*then* 表达式对进行计算，并返回计算结果为 true 的第一个 *if* 参数的 *then* 参数值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/in-function.html](https://docs.aws.amazon.com/quicksight/latest/user/in-function.html) 评估一个表达式以查看它是否在给定的值列表中。
+ [https://docs.aws.amazon.com/quicksight/latest/user/isNotNull-function.html](https://docs.aws.amazon.com/quicksight/latest/user/isNotNull-function.html) 对表达式求值以确定其是否为 null。
+ [https://docs.aws.amazon.com/quicksight/latest/user/isNull-function.html](https://docs.aws.amazon.com/quicksight/latest/user/isNull-function.html) 对表达式求值以确定其是否为 null。如果表达式为 null，`isNull` 将返回 true，否则，将返回 false。
+ [https://docs.aws.amazon.com/quicksight/latest/user/notIn-function.html](https://docs.aws.amazon.com/quicksight/latest/user/notIn-function.html) 评估一个表达式以查看它是否不在给定的值列表中。
+ [https://docs.aws.amazon.com/quicksight/latest/user/nullIf-function.html](https://docs.aws.amazon.com/quicksight/latest/user/nullIf-function.html) 比较两个表达式。如果表达式相等，该函数返回 null。如果表达式不相等，该函数返回第一个表达式。
+ [https://docs.aws.amazon.com/quicksight/latest/user/switch-function.html](https://docs.aws.amazon.com/quicksight/latest/user/switch-function.html) 返回与第一个等于条件表达式的标签相匹配的表达式。

## 日期函数
<a name="date-functions"></a>

Amazon Quick 中计算字段的日期函数包括以下内容：
+ [https://docs.aws.amazon.com/quicksight/latest/user/addDateTime-function.html](https://docs.aws.amazon.com/quicksight/latest/user/addDateTime-function.html) 在提供的日期或时间中增加或减少时间单位。
+ [https://docs.aws.amazon.com/quicksight/latest/user/addWorkDays-function.html](https://docs.aws.amazon.com/quicksight/latest/user/addWorkDays-function.html) 将给定的工作日数与提供的日期或时间相加或相减。
+ [https://docs.aws.amazon.com/quicksight/latest/user/dateDiff-function.html](https://docs.aws.amazon.com/quicksight/latest/user/dateDiff-function.html) 返回两个日期字段相差的天数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/epochDate-function.html](https://docs.aws.amazon.com/quicksight/latest/user/epochDate-function.html) 将纪元日期转换为标准日期。
+ [https://docs.aws.amazon.com/quicksight/latest/user/extract-function.html](https://docs.aws.amazon.com/quicksight/latest/user/extract-function.html) 返回日期值的指定部分。
+ [https://docs.aws.amazon.com/quicksight/latest/user/formatDate-function.html](https://docs.aws.amazon.com/quicksight/latest/user/formatDate-function.html) 使用您指定的模式格式化日期。
+ 如果给定的日期时间值是工作日，[https://docs.aws.amazon.com/quicksight/latest/user/isWorkDay-function.html](https://docs.aws.amazon.com/quicksight/latest/user/isWorkDay-function.html) 返回 TRUE。
+ [https://docs.aws.amazon.com/quicksight/latest/user/netWorkDays-function.html](https://docs.aws.amazon.com/quicksight/latest/user/netWorkDays-function.html) 返回所提供的两个日期值之间的工作日数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/now-function.html](https://docs.aws.amazon.com/quicksight/latest/user/now-function.html) 返回当前日期和时间，同时将设置用于数据库，或将 UTC 用于文件和 Salesforce。
+ [https://docs.aws.amazon.com/quicksight/latest/user/truncDate-function.html](https://docs.aws.amazon.com/quicksight/latest/user/truncDate-function.html) 返回表示日期指定部分的日期值。

## 数字函数
<a name="numeric-functions"></a>

Amazon Quick 中计算字段的数值函数包括以下内容：
+ [https://docs.aws.amazon.com/quicksight/latest/user/ceil-function.html](https://docs.aws.amazon.com/quicksight/latest/user/ceil-function.html) 将小数值向上舍入为大于它的最接近整数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/decimalToInt-function.html](https://docs.aws.amazon.com/quicksight/latest/user/decimalToInt-function.html) 将小数值转换为整数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/floor-function.html](https://docs.aws.amazon.com/quicksight/latest/user/floor-function.html) 将小数值向下舍入到小于它的最接近整数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/intToDecimal-function.html](https://docs.aws.amazon.com/quicksight/latest/user/intToDecimal-function.html) 将整数值转换为小数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/round-function.html](https://docs.aws.amazon.com/quicksight/latest/user/round-function.html) 将小数值舍入为最接近的整数，或者，如果指定了精度，则舍入到最接近的小数位数。

## 数学函数
<a name="mathematical-functions"></a>

Amazon Quick 中计算字段的数学函数包括以下内容：
+ `[https://docs.aws.amazon.com/quicksight/latest/user/mod-function.html](https://docs.aws.amazon.com/quicksight/latest/user/mod-function.html)(number, divisor)` – 查找将一个数字除以除数之后的余数。
+ `[https://docs.aws.amazon.com/quicksight/latest/user/log-function.html](https://docs.aws.amazon.com/quicksight/latest/user/log-function.html)(expression) ` – 返回给定表达式的以 10 为底的对数。
+ `[https://docs.aws.amazon.com/quicksight/latest/user/ln-function.html](https://docs.aws.amazon.com/quicksight/latest/user/ln-function.html)(expression) ` – 返回给定表达式的自然对数。
+ `[https://docs.aws.amazon.com/quicksight/latest/user/abs-function.html](https://docs.aws.amazon.com/quicksight/latest/user/abs-function.html)(expression) ` – 返回给定表达式的绝对值。
+ `[https://docs.aws.amazon.com/quicksight/latest/user/sqrt-function.html](https://docs.aws.amazon.com/quicksight/latest/user/sqrt-function.html)(expression) ` – 返回给定表达式的平方根。
+ `[https://docs.aws.amazon.com/quicksight/latest/user/exp-function.html](https://docs.aws.amazon.com/quicksight/latest/user/exp-function.html)(expression) ` – 返回以自然常数 *e* 为底且以指定表达式为幂的值。

## 字符串函数
<a name="string-functions"></a>

Amazon Quick 中计算字段的字符串（文本）函数包括以下内容：
+ [https://docs.aws.amazon.com/quicksight/latest/user/concat-function.html](https://docs.aws.amazon.com/quicksight/latest/user/concat-function.html) 连接两个或多个字符串。
+ [https://docs.aws.amazon.com/quicksight/latest/user/contains-function.html](https://docs.aws.amazon.com/quicksight/latest/user/contains-function.html) 检查表达式是否包含子字符串。
+ [https://docs.aws.amazon.com/quicksight/latest/user/endsWith-function.html](https://docs.aws.amazon.com/quicksight/latest/user/endsWith-function.html) 检查表达式是否以指定的子字符串结尾。
+ [https://docs.aws.amazon.com/quicksight/latest/user/left-function.html](https://docs.aws.amazon.com/quicksight/latest/user/left-function.html) 返回字符串最左侧指定数量的字符。
+ [https://docs.aws.amazon.com/quicksight/latest/user/locate-function.html](https://docs.aws.amazon.com/quicksight/latest/user/locate-function.html) 查找另一个字符串内的某个子字符串，并返回该子字符串之前的字符数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/ltrim-function.html](https://docs.aws.amazon.com/quicksight/latest/user/ltrim-function.html) 从字符串中移除前置空格。
+ [https://docs.aws.amazon.com/quicksight/latest/user/parseDate-function.html](https://docs.aws.amazon.com/quicksight/latest/user/parseDate-function.html) 解析一个字符串，以确定它是否包含某个日期值，如果找到则返回该日期。
+ [https://docs.aws.amazon.com/quicksight/latest/user/parseDecimal-function.html](https://docs.aws.amazon.com/quicksight/latest/user/parseDecimal-function.html) 解析字符串以确定其是否包含小数值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/parseInt-function.html](https://docs.aws.amazon.com/quicksight/latest/user/parseInt-function.html) 解析字符串以确定其是否包含整数值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/parseJson-function.html](https://docs.aws.amazon.com/quicksight/latest/user/parseJson-function.html) 解析来自本机 JSON 或文本字段中 JSON 对象的值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/replace-function.html](https://docs.aws.amazon.com/quicksight/latest/user/replace-function.html) 将一个字符串的一部分用新字符串替换。
+ [https://docs.aws.amazon.com/quicksight/latest/user/right-function.html](https://docs.aws.amazon.com/quicksight/latest/user/right-function.html) 返回字符串最右侧指定数量的字符。
+ [https://docs.aws.amazon.com/quicksight/latest/user/rtrim-function.html](https://docs.aws.amazon.com/quicksight/latest/user/rtrim-function.html) 从字符串中移除尾随空格。
+ [https://docs.aws.amazon.com/quicksight/latest/user/split-function.html](https://docs.aws.amazon.com/quicksight/latest/user/split-function.html) 根据您选择的分隔符将字符串拆分为一个子字符串数组，并返回由位置指定的项目。
+ [https://docs.aws.amazon.com/quicksight/latest/user/startsWith-function.html](https://docs.aws.amazon.com/quicksight/latest/user/startsWith-function.html) 检查表达式是否以指定的子字符串开头。
+ [https://docs.aws.amazon.com/quicksight/latest/user/strlen-function.html](https://docs.aws.amazon.com/quicksight/latest/user/strlen-function.html) 返回一个字符串中的字符数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/substring-function.html](https://docs.aws.amazon.com/quicksight/latest/user/substring-function.html) 从指定位置开始，返回一个字符串中指定数量的字符。
+ [https://docs.aws.amazon.com/quicksight/latest/user/toLower-function.html](https://docs.aws.amazon.com/quicksight/latest/user/toLower-function.html) 将字符串全部转为小写格式。
+ [https://docs.aws.amazon.com/quicksight/latest/user/toString-function.html](https://docs.aws.amazon.com/quicksight/latest/user/toString-function.html) 将输入表达式转为字符串格式。
+ [https://docs.aws.amazon.com/quicksight/latest/user/toUpper-function.html](https://docs.aws.amazon.com/quicksight/latest/user/toUpper-function.html) 将字符串全部转为大写格式。
+ [https://docs.aws.amazon.com/quicksight/latest/user/trim-function.html](https://docs.aws.amazon.com/quicksight/latest/user/trim-function.html) 从字符串中同时移除前置和尾随空格。

## 表计算
<a name="table-calculations"></a>

表计算由一组在分析中提供上下文的函数组成。它们为扩充的聚合分析提供支持。通过使用这些计算，您可以满足常见的业务方案要求，如计算总数的百分比、运行总和、差值、常见基准和排名。

在分析特定视觉对象中的数据时，您可以将表计算应用于当前数据集，以了解维度如何影响度量或它们如何相互影响。可视化数据是基于当前数据集的结果集，并应用了所有筛选条件、字段选择和自定义项。要查看该结果集的确切内容，您可以将视觉对象导出为文件。表计算函数 对数据执行运算以显示字段之间的关系。

**基于查找的函数**
+ [https://docs.aws.amazon.com/quicksight/latest/user/difference-function.html](https://docs.aws.amazon.com/quicksight/latest/user/difference-function.html) 计算基于一组分区和排序的度量与基于另一组分区和排序的度量之间的差值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/lag-function.html](https://docs.aws.amazon.com/quicksight/latest/user/lag-function.html) 计算度量的滞后（上一个）值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/lead-function.html](https://docs.aws.amazon.com/quicksight/latest/user/lead-function.html) 计算度量的前导（下一个）值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/percentDifference-function.html](https://docs.aws.amazon.com/quicksight/latest/user/percentDifference-function.html) 计算当前值和比较值之间的百分比差值。

**Over 函数**
+ [https://docs.aws.amazon.com/quicksight/latest/user/avgOver-function.html](https://docs.aws.amazon.com/quicksight/latest/user/avgOver-function.html) 计算度量在一个或多个维度中的平均值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/countOver-function.html](https://docs.aws.amazon.com/quicksight/latest/user/countOver-function.html) 计算字段在一个或多个维度中的计数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/distinctCountOver-function.html](https://docs.aws.amazon.com/quicksight/latest/user/distinctCountOver-function.html) 计算指定等级上按指定属性划分的操作数的不同计数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/maxOver-function.html](https://docs.aws.amazon.com/quicksight/latest/user/maxOver-function.html) 计算度量在一个或多个维度中的最大值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/minOver-function.html](https://docs.aws.amazon.com/quicksight/latest/user/minOver-function.html) 度量在一个或多个维度中的最小值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/percentileOver-function.html](https://docs.aws.amazon.com/quicksight/latest/user/percentileOver-function.html)（`percentileDiscOver` 的别名）计算按维度列表分区的度量的第 *n* 个百分位数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/percentileContOver-function.html](https://docs.aws.amazon.com/quicksight/latest/user/percentileContOver-function.html) 根据按维度列表分区的度量的数字的连续分布计算第 *n* 个百分位数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/percentileDiscOver-function.html](https://docs.aws.amazon.com/quicksight/latest/user/percentileDiscOver-function.html) 根据按维度列表分区的度量的实际数字计算第 *n* 个百分位数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/percentOfTotal-function.html](https://docs.aws.amazon.com/quicksight/latest/user/percentOfTotal-function.html) 计算度量在总数中所占的百分比。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodOverPeriodDifference-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodOverPeriodDifference-function.html) 计算按期间粒度和偏移量指定的两个不同时间段内的度量差异。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodOverPeriodLastValue-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodOverPeriodLastValue-function.html) 计算按周期粒度和偏移量指定的上一个时间段中度量的最后一个（上一个）值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodOverPeriodPercentDifference-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodOverPeriodPercentDifference-function.html) 计算按期间粒度和偏移量指定的两个不同时间段内的度量差异百分比。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodToDateAvgOverTime-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodToDateAvgOverTime-function.html) 计算给定时间粒度（例如一个季度）到某个时间点的度量的平均值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodToDateCountOverTime-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodToDateCountOverTime-function.html) 计算给定时间粒度（例如一个季度）到某个时间点的维度或度量的计数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodToDateMaxOverTime-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodToDateMaxOverTime-function.html) 计算给定时间粒度（例如一个季度）到某个时间点的维度或日期的最大值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodToDateMinOverTime-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodToDateMinOverTime-function.html) 计算给定时间粒度（例如一个季度）到某个时间点的维度或日期的最小值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/periodToDateSumOverTime-function.html](https://docs.aws.amazon.com/quicksight/latest/user/periodToDateSumOverTime-function.html) 计算给定时间粒度（例如一个季度）到某个时间点的度量的总和。
+ [https://docs.aws.amazon.com/quicksight/latest/user/sumOver-function.html](https://docs.aws.amazon.com/quicksight/latest/user/sumOver-function.html) 计算度量在一个或多个维度中的总和。
+ [https://docs.aws.amazon.com/quicksight/latest/user/stdevOver-function.html](https://docs.aws.amazon.com/quicksight/latest/user/stdevOver-function.html) 根据样本计算按选定的一个属性或多个属性划分的指定度量的标准差。
+ [https://docs.aws.amazon.com/quicksight/latest/user/stdevpOver-function.html](https://docs.aws.amazon.com/quicksight/latest/user/stdevpOver-function.html) 根据总体偏差计算按选定的一个属性或多个属性划分的指定度量的标准差。
+ [https://docs.aws.amazon.com/quicksight/latest/user/varOver-function.html](https://docs.aws.amazon.com/quicksight/latest/user/varOver-function.html) 根据样本计算按选定的一个属性或多个属性划分的指定度量的方差。
+ [https://docs.aws.amazon.com/quicksight/latest/user/varpOver-function.html](https://docs.aws.amazon.com/quicksight/latest/user/varpOver-function.html) 根据总体偏差计算按选定的一个属性或多个属性划分的指定度量的方差。

**排名函数**
+ [https://docs.aws.amazon.com/quicksight/latest/user/rank-function.html](https://docs.aws.amazon.com/quicksight/latest/user/rank-function.html) 计算度量或维度的排名。
+ [https://docs.aws.amazon.com/quicksight/latest/user/denseRank-function.html](https://docs.aws.amazon.com/quicksight/latest/user/denseRank-function.html) 计算度量或维度的排名，忽略重复值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/percentileRank-function.html](https://docs.aws.amazon.com/quicksight/latest/user/percentileRank-function.html) 根据百分位数计算指标或维度的排名。

**运行函数**
+ [https://docs.aws.amazon.com/quicksight/latest/user/runningAvg-function.html](https://docs.aws.amazon.com/quicksight/latest/user/runningAvg-function.html) 计算度量的运行平均值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/runningCount-function.html](https://docs.aws.amazon.com/quicksight/latest/user/runningCount-function.html) 计算度量的运行计数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/runningMax-function.html](https://docs.aws.amazon.com/quicksight/latest/user/runningMax-function.html) 计算度量的运行最大值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/runningMin-function.html](https://docs.aws.amazon.com/quicksight/latest/user/runningMin-function.html) 计算度量的运行最小值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/runningSum-function.html](https://docs.aws.amazon.com/quicksight/latest/user/runningSum-function.html) 计算度量的运行总和。

**窗口函数**
+ [https://docs.aws.amazon.com/quicksight/latest/user/firstValue-function.html](https://docs.aws.amazon.com/quicksight/latest/user/firstValue-function.html) 计算按指定属性划分和排序的聚合度量或维度的第一个值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/lastValue-function.html](https://docs.aws.amazon.com/quicksight/latest/user/lastValue-function.html) 计算按指定属性划分和排序的聚合度量或维度的最后一个值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/windowAvg-function.html](https://docs.aws.amazon.com/quicksight/latest/user/windowAvg-function.html) 计算按指定属性进行分区和排序的自定义窗口中聚合度量的平均值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/windowCount-function.html](https://docs.aws.amazon.com/quicksight/latest/user/windowCount-function.html) 计算按指定属性进行分区和排序的自定义窗口中聚合度量的计数。
+ [https://docs.aws.amazon.com/quicksight/latest/user/windowMax-function.html](https://docs.aws.amazon.com/quicksight/latest/user/windowMax-function.html) 计算按指定属性进行分区和排序的自定义窗口中聚合度量的最大值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/windowMin-function.html](https://docs.aws.amazon.com/quicksight/latest/user/windowMin-function.html) 计算按指定属性进行分区和排序的自定义窗口中聚合度量的最小值。
+ [https://docs.aws.amazon.com/quicksight/latest/user/windowSum-function.html](https://docs.aws.amazon.com/quicksight/latest/user/windowSum-function.html) 计算按指定属性进行分区和排序的自定义窗口中聚合度量的总和。

# 函数
<a name="functions"></a>

在本节中，您可以找到 Amazon Quick 中提供的功能列表。要查看按类别排序的函数列表以及简要定义，请参阅[按类别划分的函数](https://docs.aws.amazon.com/quicksight/latest/user/functions-by-category.html)。

**Topics**
+ [addDateTime](addDateTime-function.md)
+ [addWorkDays](addWorkDays-function.md)
+ [Abs](abs-function.md)
+ [Ceil](ceil-function.md)
+ [Coalesce](coalesce-function.md)
+ [Concat](concat-function.md)
+ [contains](contains-function.md)
+ [decimalToInt](decimalToInt-function.md)
+ [dateDiff](dateDiff-function.md)
+ [endsWith](endsWith-function.md)
+ [epochDate](epochDate-function.md)
+ [Exp](exp-function.md)
+ [Extract](extract-function.md)
+ [Floor](floor-function.md)
+ [formatDate](formatDate-function.md)
+ [Ifelse](ifelse-function.md)
+ [in](in-function.md)
+ [intToDecimal](intToDecimal-function.md)
+ [isNotNull](isNotNull-function.md)
+ [isNull](isNull-function.md)
+ [isWorkDay](isWorkDay-function.md)
+ [Left](left-function.md)
+ [Locate](locate-function.md)
+ [Log](log-function.md)
+ [Ln](ln-function.md)
+ [Ltrim](ltrim-function.md)
+ [Mod](mod-function.md)
+ [netWorkDays](netWorkDays-function.md)
+ [Now](now-function.md)
+ [notIn](notIn-function.md)
+ [nullIf](nullIf-function.md)
+ [parseDate](parseDate-function.md)
+ [parseDecimal](parseDecimal-function.md)
+ [parseInt](parseInt-function.md)
+ [parseJson](parseJson-function.md)
+ [Replace](replace-function.md)
+ [Right](right-function.md)
+ [Round](round-function.md)
+ [Rtrim](rtrim-function.md)
+ [Split](split-function.md)
+ [Sqrt](sqrt-function.md)
+ [startsWith](startsWith-function.md)
+ [Strlen](strlen-function.md)
+ [Substring](substring-function.md)
+ [switch](switch-function.md)
+ [toLower](toLower-function.md)
+ [toString](toString-function.md)
+ [toUpper](toUpper-function.md)
+ [trim](trim-function.md)
+ [truncDate](truncDate-function.md)

# addDateTime
<a name="addDateTime-function"></a>

`addDateTime` 在一个日期时间值中加上或减去一个时间单位。例如，`addDateTime(2,'YYYY',parseDate('02-JUL-2018', 'dd-MMM-yyyy') )` 将返回 `02-JUL-2020`。您可以使用该函数对日期和时间数据执行日期运算。

## 语法
<a name="addDateTime-function-syntax"></a>

```
addDateTime(amount, period, datetime)
```

## Arguments
<a name="addDateTime-function-arguments"></a>

 *amount*   
一个正或负的整数值，表示您希望在提供的日期时间字段中增加或减少的时间。

 *时段*   
一个正值或负值，表示您希望在提供的日期时间字段中增加或减少的时间。有效时间段如下所示：  
+ YYYY：返回日期的年份部分。
+ Q：返回日期所属的季度（1–4）。
+ MM：返回日期的月份部分。
+ DD：返回日期的日期部分。
+ WK：返回日期的星期部分。在 Amazon Quick 中，本周从周日开始。
+ HH：返回日期的小时部分。
+ MI：返回日期的分钟部分。
+ SS：返回日期的秒部分。
+ MS：返回日期的毫秒部分。

 *datetime*   
您希望执行日期运算的日期或时间。

## 返回类型
<a name="addDateTime-function-return-type"></a>

日期时间

## 示例
<a name="addDateTime-function-example"></a>

假设您具有一个名为 `purchase_date` 并具有以下值的字段。

```
2018 May 13 13:24
2017 Jan 31 23:06
2016 Dec 28 06:45
```

通过使用以下计算，`addDateTime` 修改这些值，如下所示。

```
addDateTime(-2, 'YYYY', purchaseDate)

2016 May 13 13:24
2015 Jan 31 23:06
2014 Dec 28 06:45


addDateTime(4, 'DD', purchaseDate)

2018 May 17 13:24
2017 Feb 4 23:06
2017 Jan 1 06:45


addDateTime(20, 'MI', purchaseDate)

2018 May 13 13:44
2017 Jan 31 23:26
2016 Dec 28 07:05
```

# addWorkDays
<a name="addWorkDays-function"></a>

`addWorkDays` 将指定的工作日数与给定的日期值相加或相减。该函数返回工作日的日期，该日期落在给定输入日期值之后或之前的指定工作日。

## 语法
<a name="addWorkDays-function-syntax"></a>

```
addWorkDays(initDate, numWorkDays)
```

## Arguments
<a name="addWorkDays-function-arguments"></a>

*initDate*  
用作计算开始日期的有效非 NULL 日期。  
+ **数据集字段** – 要向其添加此函数的数据集中的任何 `date` 字段。
+ **日期函数** – 从其他 `date` 函数输出的任何日期，例如 `parseDate`、`epochDate`、`addDateTime` 等。  
**Example**  

  ```
  addWorkDays(epochDate(1659484800), numWorkDays)
  ```
+ **计算字段**-任何返回`date`值的快速计算字段。  
**Example**  

  ```
  calcFieldStartDate = addDateTime(10, “DD”, startDate)
  addWorkDays(calcFieldStartDate, numWorkDays)
  ```
+ **参数**-任何 Quick `datetime` 参数。  
**Example**  

  ```
  addWorkDays($paramStartDate, numWorkDays)
  ```
+ 上述参数值的任意组合。

 *numWorkDays*   
用作计算结束日期的非 NULL 整数。  
+ **文本** – 直接在表达式编辑器中键入的整数文本。  
**Example**  

  ```
  ```
+ **数据集字段** – 数据集中的任何日期字段   
**Example**  

  ```
  ```
+ **标量函数或计算**-任何从另一个函数返回整数输出的标量 Quick 函数`decimalToInt`，例如`abs`，等等。  
**Example**  

  ```
  addWorkDays(initDate, decimalToInt(sqrt (abs(numWorkDays)) ) )
  ```
+ **计算字段**-任何返回`date`值的快速计算字段。  
**Example**  

  ```
  someOtherIntegerCalcField = (num_days * 2) + 12
  addWorkDays(initDate, someOtherIntegerCalcField)
  ```
+ **参数**-任何 Quick `datetime` 参数。  
**Example**  

  ```
  addWorkDays(initDate, $param_numWorkDays)
  ```
+ 上述参数值的任意组合。

## 返回类型
<a name="addWorkDays-function-return-type"></a>

整数 

## 输出值
<a name="addWorkDays-function-output-type"></a>

预期的输出值包括：
+ 正整数（当 start\$1date < end\$1date 时）
+ 负整数（当 start\$1date > end\$1date 时）
+ 当其中一个或两个参数从 `dataset field` 中获得空值时，则为 NULL。

## 输入错误
<a name="addWorkDays-function-errors"></a>

不允许使用的参数值会导致错误，如以下示例所示。
+ 不允许在表达式中使用文本 NULL 作为参数。  
**Example**  

  ```
  addWorkDays(NULL, numWorkDays) 
  ```  
**Example**  

  ```
  Error
  At least one of the arguments in this function does not have correct type. 
  Correct the expression and choose Create again.
  ```
+ 不允许在表达式中使用字符串文本作为参数，或者使用除日期之外的任何其他数据类型。在以下示例中，字符串 **"2022-08-10"** 看起来像日期，但实际上是一个字符串。要使用该字符串，您必须使用可转换为日期数据类型的函数。  
**Example**  

  ```
  addWorkDays("2022-08-10", 10)
  ```  
**Example**  

  ```
  Error
  Expression addWorkDays("2022-08-10", numWorkDays) for function addWorkDays has 
  incorrect argument type addWorkDays(String, Number). 
  Function syntax expects Date, Integer.
  ```

## 示例
<a name="addWorkDays-function-example"></a>

正整数作为 `numWorkDays` 参数将生成输入日期将来的日期。负整数作为 `numWorkDays` 参数将生成输入日期过去的结果日期。无论输入日期是工作日还是周末，`numWorkDays` 参数的零值都生成与输入日期相同的值。

`addWorkDays` 函数的运算粒度为：`DAY`。在任何低于或高于 `DAY` 等级的粒度下都无法保持准确度。

```
addWorkDays(startDate, endDate)
```

假设有一个名为 `employmentStartDate` 的字段，其值如下：

```
2022-08-10 2022-08-06 2022-08-07 
```

使用上面的字段并进行以下计算，`addWorkDays` 返回修改后的值，如下所示：

```
addWorkDays(employmentStartDate, 7)

2022-08-19 
2022-08-16 
2022-08-16 

addWorkDays(employmentStartDate, -5)

2022-08-02 
2022-08-01 
2022-08-03 

addWorkDays(employmentStartDate, 0)

2022-08-10 
2022-08-06 
2022-08-07
```

以下示例根据每位员工的实际工作天数计算 2 年内支付给每位员工的按比例奖金总额。

```
last_day_of_work = addWorkDays(employment_start_date, 730)
total_days_worked = netWorkDays(employment_start_date, last_day_of_work)
total_bonus = total_days_worked * bonus_per_day
```

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/addWorkDays-function-example.png)


# Abs
<a name="abs-function"></a>

`abs` 返回给定表达式的绝对值。

## 语法
<a name="abs-function-syntax"></a>

```
abs(expression)
```

## Arguments
<a name="abs-function-arguments"></a>

 *expression*   
表达式必须是数字。它可以是字段名、文本值或其他函数。

# Ceil
<a name="ceil-function"></a>

`ceil` 将小数值向上舍入为大于它的最接近整数。例如，`ceil(29.02)` 将返回 `30`。

## 语法
<a name="ceil-function-syntax"></a>

```
ceil(decimal)
```

## Arguments
<a name="ceil-function-arguments"></a>

 *decimal*   
使用小数数据类型的字段、文本值（如 **17.62**）或对输出小数的其他函数的调用。

## 返回类型
<a name="ceil-function-return-type"></a>

整数

## 示例
<a name="ceil-function-example"></a>

以下示例将一个小数字段向上舍入为大于它的最接近整数。

```
ceil(salesAmount)
```

以下是给定的字段值。

```
20.13
892.03
57.54
```

对于这些字段值，将返回以下值。

```
21
893
58
```

# Coalesce
<a name="coalesce-function"></a>

`coalesce` 返回第一个不为 null 的参数值。当找到非 null 值时，将不计算该列表中的剩余参数。如果所有参数都为 null，则结果为 null。0 长度字符串是有效值，系统不将其等同于 null。

## 语法
<a name="coalesce-function-syntax"></a>

```
coalesce(expression1, expression2 [, expression3, ...])
```

## Arguments
<a name="coalesce-function-arguments"></a>

`coalesce` 接受两个或多个表达式作为参数。所有表达式必须具有相同的数据类型或能够隐式转换为相同的数据类型。

 *expression*   
该表达式可以是数字、日期时间或字符串。它可以是字段名、文本值或其他函数。

## 返回类型
<a name="coalesce-function-return-type"></a>

`coalesce` 返回数据类型与输入参数相同的值。

## 示例
<a name="coalesce-function-example"></a>

下面的示例检索某位客户的账单地址（如果存在）、其街道地址（如果没有账单地址）或返回“No address listed (未列出地址)”（如果两个地址都不存在）。

```
coalesce(billingAddress, streetAddress, 'No address listed')
```

# Concat
<a name="concat-function"></a>

`concat` 连接两个或多个字符串。

## 语法
<a name="concat-function-syntax"></a>

```
concat(expression1, expression2 [, expression3 ...])
```

## Arguments
<a name="concat-function-arguments"></a>

`concat` 接受两个或多个字符串表达式作为参数。

 *expression*   
表达式必须是字符串。它可以是使用字符串数据类型的字段的名称、文本值（如 **'12 Main Street'**）或对输出字符串的其他函数的调用。

## 返回类型
<a name="concat-function-return-type"></a>

字符串

## 示例
<a name="concat-function-example"></a>

以下示例连接三个字符串字段，并添加适当的间距。

```
concat(salutation, ' ', firstName, ' ', lastName)
```

以下是给定的字段值。

```
salutation     firstName          lastName
-------------------------------------------------------
Ms.            Li                  Juan
Dr.            Ana Carolina        Silva
Mr.            Nikhil              Jayashankar
```

对于这些字段值，将返回以下值。

```
Ms. Li Juan
Dr. Ana Carolina Silva
Mr. Nikhil Jayashankar
```

以下示例连接两个字符串文本值。

```
concat('Hello', 'world')
```

将返回以下值。

```
Helloworld
```

# contains
<a name="contains-function"></a>

`contains` 评估您指定的子字符串是否存在于表达式中。如果表达式包含子字符串，则返回 true，否则返回 false。

## 语法
<a name="contains-function-syntax"></a>

```
contains(expression, substring, string-comparison-mode)
```

## Arguments
<a name="contains-function-arguments"></a>

 *expression*   
表达式必须是字符串。它可以是使用字符串数据类型的字段的名称、文本值（如 **'12 Main Street'**）或对输出字符串的其他函数的调用。

 *substring*   
要根据*表达式*检查的字符集。子字符串可在*表达式*中出现一次或多次。

 *string-comparison-mode*   
（可选）指定要使用的字符串比较模式：  
+ `CASE_SENSITIVE` – 字符串比较区分大小写。
+ `CASE_INSENSITIVE` – 字符串比较不区分大小写。
留空时此值默认为 `CASE_SENSITIVE`。

## 返回类型
<a name="contains-function-return-type"></a>

布尔值

## 示例
<a name="contains-function-example"></a>

### 默认区分大小写的示例
<a name="contains-function-example-default-case-sensitive"></a>

以下区分大小写的示例评估 `state_nm` 是否包含 **New**。

```
contains(state_nm, "New")
```

以下是给定的字段值。

```
New York
new york
```

对于这些字段值，将返回以下值。

```
true
false
```

### 不区分大小写的示例
<a name="contains-function-example-case-insensitive"></a>

以下不区分大小写的示例评估 `state_nm` 是否包含 **new**。

```
contains(state_nm, "new", CASE_INSENSITIVE)
```

以下是给定的字段值。

```
New York
new york
```

对于这些字段值，将返回以下值。

```
true
true
```

### 带条件语句的示例
<a name="contains-function-example-conditional-statements"></a>

包含函数可用作以下 If 函数中的条件语句：[avgIf](https://docs.aws.amazon.com/quicksight/latest/user/avgIf-function.html)、[minIf](https://docs.aws.amazon.com/quicksight/latest/user/minIf-function.html)、[distinct\$1countIf](https://docs.aws.amazon.com/quicksight/latest/user/distinct_countIf-function.html)、[countIf](https://docs.aws.amazon.com/quicksight/latest/user/countIf-function.html)、[maxIf](https://docs.aws.amazon.com/quicksight/latest/user/maxIf-function.html)、[medianIf](https://docs.aws.amazon.com/quicksight/latest/user/medianIf-function.html)、[stdevIf](https://docs.aws.amazon.com/quicksight/latest/user/stdevIf-function.html)、[stdevpIf](https://docs.aws.amazon.com/quicksight/latest/user/stdevpIf-function.html)、[sumIf](https://docs.aws.amazon.com/quicksight/latest/user/sumIf-function.html)、[varIf](https://docs.aws.amazon.com/quicksight/latest/user/varIf-function.html) 和 [varpIf](https://docs.aws.amazon.com/quicksight/latest/user/varpIf-function.html)。

以下示例仅在 `state_nm` 包含 **New** 时才对 `Sales` 进行求和。

```
sumIf(Sales,contains(state_nm, "New"))
```

### 不包含示例
<a name="contains-function-example-does-not-contain"></a>

条件 `NOT` 运算符可用于评估表达式是否不包含指定的子字符串。

```
NOT(contains(state_nm, "New"))
```

### 使用数值的示例
<a name="contains-function-example-numeric-values"></a>

通过应用 `toString` 函数，可以在表达式或子字符串参数中使用数值。

```
contains(state_nm, toString(5) )
```

# decimalToInt
<a name="decimalToInt-function"></a>

`decimalToInt` 删除小数点和后面的数字以将小数值转换为整数数据类型。`decimalToInt` 不向上舍入。例如，`decimalToInt(29.99)` 将返回 `29`。

## 语法
<a name="decimalToInt-function-syntax"></a>

```
decimalToInt(decimal)
```

## Arguments
<a name="decimalToInt-function-arguments"></a>

 *decimal*   
使用小数数据类型的字段、文本值（如 **17.62**）或对输出小数的其他函数的调用。

## 返回类型
<a name="decimalToInt-function-return-type"></a>

整数

## 示例
<a name="decimalToInt-function-example"></a>

以下示例将一个小数字段转换为整数。

```
decimalToInt(salesAmount)
```

以下是给定的字段值。

```
 20.13
892.03
 57.54
```

对于这些字段值，将返回以下值。

```
 20
892
 57
```

# dateDiff
<a name="dateDiff-function"></a>

`dateDiff` 返回两个日期字段相差的天数。如果包含期间的值，则 `dateDiff` 返回期间间隔中的差异，而不是天数差异。

## 语法
<a name="dateDiff-function-syntax"></a>

```
dateDiff(date1, date2,[period])
```

## Arguments
<a name="dateDiff-function-arguments"></a>

`dateDiff` 接受两个日期作为参数。指定期间是可选的。

 *日期 1*   
比较中的第一个日期。它可以是日期字段，也可以是对输出日期的其他函数的调用。

 *日期 2*   
比较中的第二个日期。它可以是日期字段，也可以是对输出日期的其他函数的调用。

 *时段*   
要返回的差异的期间（用引号括起来）。有效时间段如下所示：  
+ YYYY：返回日期的年份部分。
+ 问：这将返回日期所属季度的第一天的日期。
+ MM：返回日期的月份部分。
+ DD：返回日期的日期部分。
+ WK：返回日期的星期部分。在 Amazon Quick 中，本周从周日开始。
+ HH：返回日期的小时部分。
+ MI：返回日期的分钟部分。
+ SS：返回日期的秒部分。
+ MS：返回日期的毫秒部分。

## 返回类型
<a name="dateDiff-function-return-type"></a>

整数

## 示例
<a name="dateDiff-function-example"></a>

以下示例返回两个日期相差的天数。

```
dateDiff(orderDate, shipDate, "MM")
```

以下是给定的字段值。

```
orderDate          shipdate
=============================
01/01/18            03/05/18
09/13/17            10/20/17
```

对于这些字段值，将返回以下值。

```
2
1
```

# endsWith
<a name="endsWith-function"></a>

`endsWith` 评估表达式是否以您指定的子字符串结尾。如果表达式以子字符串结尾，`endsWith` 返回 true，否则返回 false。

## 语法
<a name="endsWith-function-syntax"></a>

```
endsWith(expression, substring, string-comparison-mode)
```

## Arguments
<a name="endsWith-function-arguments"></a>

 *expression*   
表达式必须是字符串。它可以是使用字符串数据类型的字段的名称、文本值（如 **'12 Main Street'**）或对输出字符串的其他函数的调用。

 *substring*   
要根据*表达式*检查的字符集。子字符串可在*表达式*中出现一次或多次。

 *string-comparison-mode*   
（可选）指定要使用的字符串比较模式：  
+ `CASE_SENSITIVE` – 字符串比较区分大小写。
+ `CASE_INSENSITIVE` – 字符串比较不区分大小写。
留空时此值默认为 `CASE_SENSITIVE`。

## 返回类型
<a name="endsWith-function-return-type"></a>

布尔值

## 示例
<a name="endsWith-function-example"></a>

### 默认区分大小写的示例
<a name="endsWith-function-example-default-case-sensitive"></a>

以下区分大小写的示例评估 `state_nm` 是否以 **"York"** 结尾。

```
endsWith(state_nm, "York")
```

以下是给定的字段值。

```
New York
new york
```

对于这些字段值，将返回以下值。

```
true
false
```

### 不区分大小写的示例
<a name="endsWith-function-example-case-insensitive"></a>

以下不区分大小写的示例评估 `state_nm` 是否以 **"york"** 结尾。

```
endsWith(state_nm, "york", CASE_INSENSITIVE)
```

以下是给定的字段值。

```
New York
new york
```

对于这些字段值，将返回以下值。

```
true
true
```

### 带条件语句的示例
<a name="endsWith-function-example-conditional-statements"></a>

`endsWith` 函数可用作以下 If 函数中的条件语句：[avgIf](https://docs.aws.amazon.com/quicksight/latest/user/avgIf-function.html)、[minIf](https://docs.aws.amazon.com/quicksight/latest/user/minIf-function.html)、[distinct\$1countIf](https://docs.aws.amazon.com/quicksight/latest/user/distinct_countIf-function.html)、[countIf](https://docs.aws.amazon.com/quicksight/latest/user/countIf-function.html)、[maxIf](https://docs.aws.amazon.com/quicksight/latest/user/maxIf-function.html)、[medianIf](https://docs.aws.amazon.com/quicksight/latest/user/medianIf-function.html)、[stdevIf](https://docs.aws.amazon.com/quicksight/latest/user/stdevIf-function.html)、[stdevpIf](https://docs.aws.amazon.com/quicksight/latest/user/stdevpIf-function.html)、[sumIf](https://docs.aws.amazon.com/quicksight/latest/user/sumIf-function.html)、[varIf](https://docs.aws.amazon.com/quicksight/latest/user/varIf-function.html) 和 [varpIf](https://docs.aws.amazon.com/quicksight/latest/user/varpIf-function.html)。

以下示例仅在 `state_nm` 以 **"York"** 结尾为时才对 `Sales` 进行求和。

```
sumIf(Sales,endsWith(state_nm, "York"))
```

### 不包含示例
<a name="endsWith-function-example-does-not-start-with"></a>

条件 `NOT` 运算符可用于评估表达式是否不以指定的子字符串开头。

```
NOT(endsWith(state_nm, "York"))
```

### 使用数值的示例
<a name="endsWith-function-example-numeric-values"></a>

通过应用 `toString` 函数，可以在表达式或子字符串参数中使用数值。

```
endsWith(state_nm, toString(5) )
```

# epochDate
<a name="epochDate-function"></a>

`epochDate`[使用 Joda 项目文档中类中指定的格式模式语法，将纪元日期转换为 yyyy-mm-dd **T** kk: mm: ss.sss **Z** 格式的标准日期。 DateTimeFormat](http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html)例如，`2015-10-15T19:11:51.003Z`。

`epochDate`支持与基于 Quick (SPICE) 中存储的数据集的分析一起使用。

## 语法
<a name="epochDate-function-syntax"></a>

```
epochDate(epochdate)
```

## Arguments
<a name="epochDate-function-arguments"></a>

 *epochdate*   
一个纪元日期，它是以整数 (自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的秒数) 形式表示的日期。  
*epochdate* 必须为整数。它可以是使用整数数据类型的字段的名称、字面整数值，也可以是对输出整数的其他函数的调用。如果整数值大于 10 位数，则会丢弃第 10 位以后的数字。

## 返回类型
<a name="epochDate-function-return-type"></a>

日期

## 示例
<a name="epochDate-function-example"></a>

以下示例将纪元日期转换为标准日期。

```
epochDate(3100768000)
```

将返回以下值。

```
2068-04-04T12:26:40.000Z
```

# Exp
<a name="exp-function"></a>

`exp` 返回以自然常数 e 为底且以给定表达式为幂的值。

## 语法
<a name="exp-function-syntax"></a>

```
exp(expression)
```

## Arguments
<a name="exp-function-arguments"></a>

 *expression*   
表达式必须是数字。它可以是字段名、文本值或其他函数。

# Extract
<a name="extract-function"></a>

`extract` 返回日期值的指定部分。如果对不包含时间信息的日期发出时间相关部分请求，则返回 0。

## 语法
<a name="extract-function-syntax"></a>

```
extract(period, date)
```

## Arguments
<a name="extract-function-arguments"></a>

 *时段*   
希望从日期值中提取的时间段。有效时间段如下所示：  
+ YYYY：返回日期的年份部分。
+ Q：返回日期所属的季度（1–4）。
+ MM：返回日期的月份部分。
+ DD：返回日期的日期部分。
+ WD：返回周日期 (以整数表示，星期日为 1)。
+ HH：返回日期的小时部分。
+ MI：返回日期的分钟部分。
+ SS：返回日期的秒部分。
+ MS：返回日期的毫秒部分。
**注意**  
在版本 0.216 以下的 Presto 数据库中，不支持提取毫秒。

 *date*   
它可以是日期字段，也可以是对输出日期的其他函数的调用。

## 返回类型
<a name="extract-function-return-type"></a>

整数

## 示例
<a name="extract-function-example"></a>

以下示例从日期值中提取日期。

```
extract('DD', orderDate)
```

以下是给定的字段值。

```
orderDate
=========
01/01/14  
09/13/16
```

对于这些字段值，将返回以下值。

```
01
13
```

# Floor
<a name="floor-function"></a>

`floor` 将小数值向下舍入到小于它的最接近整数。例如，`floor(29.08)` 将返回 `29`。

## 语法
<a name="floor-function-syntax"></a>

```
floor(decimal)
```

## Arguments
<a name="floor-function-arguments"></a>

 *decimal*   
使用小数数据类型的字段、文本值（如 **17.62**）或对输出小数的其他函数的调用。

## 返回类型
<a name="floor-function-return-type"></a>

整数

## 示例
<a name="floor-function-example"></a>

以下示例将一个小数字段向下舍入为小于它的最接近整数。

```
floor(salesAmount)
```

以下是给定的字段值。

```
20.13
892.03
57.54
```

对于这些字段值，将返回以下值。

```
20
892
57
```

# formatDate
<a name="formatDate-function"></a>

`formatDate` 使用您指定的模式格式化日期。在准备数据时，可以使用 `formatDate` 重新格式化日期。要在分析中重新格式化日期，请从日期字段的上下文菜单中选择格式选项。

## 语法
<a name="formatDate-function-syntax"></a>

```
formatDate(date, ['format'])
```

## Arguments
<a name="formatDate-function-arguments"></a>

 *date*   
它可以是日期字段，也可以是对输出日期的其他函数的调用。

 *format*   
(可选) 包含要应用的格式模式的字符串。此参数接受[支持的日期格式中指定的格式](https://docs.aws.amazon.com/quicksight/latest/user/supported-date-formats.html)模式。  
如果不指定格式，则此字符串默认为 yyyy-MM-dd**T**kk:mm:ss:SSS 格式。

## 返回类型
<a name="formatDate-function-return-type"></a>

字符串

## 示例
<a name="formatDate-function-example"></a>

以下示例设置 UTC 日期的格式。

```
formatDate(orderDate, 'dd-MMM-yyyy')
```

以下是给定的字段值。

```
order date      
=========
2012-12-14T00:00:00.000Z  
2013-12-29T00:00:00.000Z
2012-11-15T00:00:00.000Z
```

对于这些字段值，将返回以下值。

```
13 Dec 2012
28 Dec 2013
14 Nov 2012
```

## 示例
<a name="formatDate-function-example2"></a>

如果日期包含单引号或撇号，例如 `yyyyMMdd'T'HHmmss`，则可以使用以下方法之一来处理此日期格式。
+ 使用双引号括住整个日期，如以下示例所示：

  ```
  formatDate({myDateField}, "yyyyMMdd'T'HHmmss")
  ```
+ 通过在单引号或撇号的左侧添加反斜杠 (`\`) 来转义单引号或撇号，如以下示例所示：

  ```
  formatDate({myDateField}, 'yyyyMMdd\'T\'HHmmss')
  ```

# Ifelse
<a name="ifelse-function"></a>

`ifelse` 对一组 *if*/*then* 表达式对进行计算，并返回计算结果为 true 的第一个 *if* 参数的 *then* 参数值。如果所有 *if* 参数的计算结果都不为 true，则返回 *else* 参数的值。

## 语法
<a name="ifelse-function-syntax"></a>

```
ifelse(if-expression-1, then-expression-1 [, if-expression-n, then-expression-n ...], else-expression)
```

## Arguments
<a name="ifelse-function-arguments"></a>

`ifelse` 需要一个或多个 *if*/*then* 表达式对，*else* 参数只需要一个表达式。

 *if-expression*   
表达式的计算结果为 true 或 false。它可以是字段名称（如 **address1**）、文本值（如 **'Unknown'**）或其他函数（如 `toString(salesAmount)`）。例如，`isNotNull(FieldName)`。  
如果您在 `if` 参数中使用了多个 AND 和 OR 运算符，请给语句加上括号以确定处理顺序。例如，以下 `if` 参数返回 2000 年 1、2 或 5 月份的记录。  

```
ifelse((month = 5 OR month < 3) AND year = 2000, 'yes', 'no')
```
以下 `if` 参数使用相同的运算符，但返回任意年份的 5 月份的记录，或者返回 2000 年 1 或 2 月份的记录。  

```
ifelse(month = 5 OR (month < 3 AND year = 2000), 'yes', 'no')
```

 *then-expression*   
在 *if* 参数的计算结果为 true 时，将返回该表达式。它可以是字段名称（如 **address1**）、文本值（如 **'Unknown'**）或对其他函数的调用。该表达式的数据类型必须与其他 `then` 参数和 `else` 参数相同。

 *else-expression*   
该表达式在所有 *if* 参数的计算结果都不为 true 时返回。它可以是字段名称（如 **address1**）、文本值（如 **'Unknown'**）或其他函数（如 `toString(salesAmount)`）。该表达式的数据类型必须与所有 `then` 参数相同。

## 返回类型
<a name="ifelse-function-return-type"></a>

`ifelse` 返回与 *then-expression* 中的值具有相同数据类型的值。*then* 和 *else* 表达式返回的所有数据都必须是相同的数据类型或转换为相同的数据类型。

## 示例
<a name="ifelse-function-example"></a>

以下示例为字段 `country` 生成一列别名。

```
ifelse(country = "United States", "US", country = "China", "CN", country = "India", "IN", "Others") 
```

对于此类用例，根据文本列表评估字段中的每个值，并返回与第一个匹配值相对应的结果，建议使用函数 switch 来简化您的工作。可以使用 [https://docs.aws.amazon.com/quicksight/latest/user/switch-function.html](https://docs.aws.amazon.com/quicksight/latest/user/switch-function.html) 将前面的示例重写为以下语句：

```
switch(country,"United States","US","China","CN","India","IN","Others")
```

以下示例将每位客户的销售额归类为人类可读的级别。

```
ifelse(salesPerCustomer < 1000, “VERY_LOW”, salesPerCustomer < 10000, “LOW”, salesPerCustomer < 100000, “MEDIUM”, “HIGH”)
```

以下示例使用 AND、OR 和 NOT 来比较多个表达式，表达式中使用了条件运算符，以标记不在华盛顿或俄勒冈州、享受特别促销并且订单超过 10 个的最大客户。如果没有返回值，则使用值 `'n/a'`。

```
ifelse(( (NOT (State = 'WA' OR State =  'OR')) AND Orders > 10),  'Special Promotion XYZ',  'n/a')
```

以下示例仅使用 OR 生成一个新列，该列包含与每个 `country` 对应的大洲名称。

```
ifelse(country = "United States" OR country = "Canada", "North America", country = "China" OR country = "India" OR country = "Japan", "Asia", "Others")
```

可以简化前面的示例，如下一个示例所示。以下示例使用 `ifelse` 和 [https://docs.aws.amazon.com/quicksight/latest/user/in-function.html](https://docs.aws.amazon.com/quicksight/latest/user/in-function.html) 在新列中为测试值位于文本列表中的任何行创建值。您也可以将 `ifelse` 与 [https://docs.aws.amazon.com/quicksight/latest/user/notIn-function.html](https://docs.aws.amazon.com/quicksight/latest/user/notIn-function.html) 搭配使用。

```
ifelse(in(country,["United States", "Canada"]), "North America", in(country,["China","Japan","India"]),"Asia","Others")
```

作者可以将文本列表保存在多值参数中，并在 [https://docs.aws.amazon.com/quicksight/latest/user/in-function.html](https://docs.aws.amazon.com/quicksight/latest/user/in-function.html) 或 [https://docs.aws.amazon.com/quicksight/latest/user/notIn-function.html](https://docs.aws.amazon.com/quicksight/latest/user/notIn-function.html) 函数中使用该参数。除了文本列表存储在两个多值参数中之外，以下示例与前面的示例相同。

```
ifelse(in(country,${NorthAmericaCountryParam}), "North America", in(country,${AsiaCountryParam}),"Asia", "Others") 
```

以下示例根据销售总额为销售记录分配一个组。每个 `if-then` 短语的结构都模仿了 *between* 的行为，这个关键字目前在计算字段表达式中不起作用。例如，比较 `salesTotal >= 0 AND salesTotal < 500` 的结果返回的值与 SQL 比较 `salesTotal between 0 and 499` 的值相同。

```
ifelse(salesTotal >= 0 AND salesTotal < 500, 'Group 1', salesTotal >= 500 AND salesTotal < 1000, 'Group 2', 'Group 3')
```

以下示例通过使用 `coalesce` 返回第一个非 NULL 值来测试 NULL 值。无需记住日期字段中 NULL 的含义，而是可以使用可读的描述来代替。如果断开连接日期为 NULL，则该示例将返回暂停日期，除非这两个日期均为 NULL。然后 `coalesce(DiscoDate, SuspendDate, '12/31/2491')` 返回 `'12/31/2491'`。返回值必须与其他数据类型匹配。这个日期可能看起来像是一个不寻常的值，但是 25 世纪的日期合理地模拟了“时间结束”，即数据集市中的最高日期。

```
ifelse (  (coalesce(DiscoDate, SuspendDate, '12/31/2491') = '12/31/2491'),  'Active subscriber', 'Inactive subscriber')
```

以下内容以更具可读性的格式显示了一个更复杂的示例，只是为了说明您不需要将代码全部压缩成一长行。此示例提供了对调查结果值的多重比较。它处理此字段的潜在 NULL 值，并对两个可接受的范围进行分类。它还会标记一个需要更多测试的范围和另一个无效（超出范围）的范围。对于所有剩余值，它会应用 `else` 条件，并将该行标记为在该行上的日期三年后需要重新测试。

```
ifelse
( 
    isNull({SurveyResult}), 'Untested',  
    {SurveyResult}=1, 'Range 1', 
    {SurveyResult}=2, 'Range 2', 
    {SurveyResult}=3, 'Need more testing',
    {SurveyResult}=99, 'Out of Range',
    concat  
    (
        'Retest by ', 
        toString    
        (
           addDateTime(3, "YYYY", {Date}) 
        )
    )
)
```

以下示例将“手动”创建的区域名称分配给一组州。它还使用空格和 `/* */` 中包装的注释来简化代码的维护。

```
ifelse 
(    /* NE REGION*/
     locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) > 0,
    'Northeast',

     /* SE REGION*/
     locate('Georgia, Alabama, South Carolina, Louisiana',{State}) > 0,
    'Southeast',

    'Other Region'
)
```

区域标记的逻辑分解如下：

1. 我们列出了要为每个区域设置的州，用引号将每个列表括起来，使每个列表成为一个字符串，如下所示：
   + `'New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire'`
   + `'Georgia, Alabama, South Carolina, Louisiana'`
   + 您可以添加更多设置，也可以根据需要使用国家/地区、城市、省份或 What3Words。

1. 我们询问列表中是否找到了 `State`（每行）的值，如果在列表中找到该州，则使用 `locate` 函数返回一个非零值，如下所示。

   ```
   locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) 
   
   and
   
   locate('Georgia, Alabama, South Carolina, Louisiana',{State})
   ```

1. `locate` 函数返回的是数字而不是 `TRUE` 或 `FALSE`，但 `ifelse` 需要使用 `TRUE`/`FALSE` 布尔值。为了解决这个问题，我们可以将 `locate` 的结果与一个数字进行比较。如果该州在列表中，则返回值大于零。

   1. 询问该州是否存在。

      ```
      locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) > 0
      ```

   1. 如果存在该区域，则将其标记为特定区域，在本例中为东北区域。

      ```
      /*The if expression:*/     locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) > 0,
      /*The then expression:*/   'Northeast',
      ```

1. 因为我们有不在列表中的州，也因为 `ifelse` 需要单个 `else` 表达式，所以我们提供 `'Other Region'` 作为剩余州的标签。

   ```
   /*The if expression:*/     locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) > 0,
   /*The then expression:*/   'Northeast',
   /*The else expression:*/   'Other Region'
   ```

1. 我们将所有这些都包装在 `ifelse( )` 函数中以获得最终版本。以下示例省略了原始版本中的东南区域的州。您可以重新添加这些州来代替 *`<insert more regions here>`* 标签。

   如果要添加更多区域，则可以构造这两行的更多副本，并根据自己的目的更改州列表。您可以将区域名称更改为适合自己的名称，也可以将字段名称从 `State` 更改为所需的任何名称。

   ```
   ifelse 
   (
   /*The if expression:*/     locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) > 0,
   /*The then expression:*/   'Northeast',
   
   /*<insert more regions here>*/
   
   /*The else expression:*/   'Other Region'
   )
   ```
**注意**  
还有其他方法可以对 if 表达式进行初始比较。例如，假设您提出了一个问题：“这个列表中没有缺少哪些州？” 而不是“列表上有哪些州？” 如果您这样做，可能会用不同的措辞。您可以将 locate 语句与零进行比较以查找列表中缺少的值，然后使用 NOT 运算符将它们归类为“未缺失”，如下所示。  

   ```
   /*The if expression:*/      NOT (locate('New York, New Jersey, Connecticut, Vermont, Maine, Rhode Island, New Hampshire',{State}) = 0),
   ```
两个版本都是正确的。您选择的版本应该对您和您的团队最有意义，这样您就可以轻松对其进行维护。如果所有选项看起来都相同，请选择最简单的选项。

# in
<a name="in-function"></a>

`in` 评估文本列表中是否存在表达式。如果列表包含表达式，则返回 true，否则返回 false。对于字符串类型输入，`in` 区分大小写。

`in` 接受两种文本列表，一种是手动输入的列表，另一种是[多值参数](https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html)。

## 语法
<a name="in-function-syntax"></a>

使用手动输入的列表：

```
in(expression, [literal-1, ...])  
```

使用多值参数：

```
in(expression, $multivalue_parameter)
```

## 参数
<a name="in-function-arguments"></a>

 *expression*   
要与文本列表中的元素进行比较的表达式。可以是字段名称（例如 `address`）、字面值（例如“**Unknown**”）、单值参数或对另一个标量函数的调用，前提是此函数不是聚合函数或表计算。

 *文本列表*   
（必填）这可以是手动输入的列表或多值参数。此参数最多接受 5,000 个元素。但是，在直接查询第三方数据来源（例如 Oracle 或 Teradata）时，限制可能会更小。  
+ ***手动输入的列表*** – 列表中的一个或多个要与表达式进行比较的文本值。列表应用方括号括起来。所有要比较的文本必须与表达式具有相同的数据类型。
+ ***多值参数*** – 作为文本列表传入的预定义多值参数。多值参数必须与表达式具有相同的数据类型。


## 返回类型
<a name="in-function-return-type"></a>

布尔值：TRUE/FALSE

## 使用静态列表的示例
<a name="in-function-example-static-list"></a>

以下示例评估 `origin_state_name` 字段的字符串列表中的值。比较字符串类型输入时，`in` 仅支持区分大小写的比较。

```
in(origin_state_name,["Georgia", "Ohio", "Texas"])
```

以下是给定的字段值。

```
"Washington"
        "ohio"
        "Texas"
```

对于这些字段值，将返回以下值。

```
false
        false
        true
```

第三个返回值为 true，因为只有“Texas”是包含的值之一。

以下示例评估 `fl_date` 字段的字符串列表中的值。为了匹配类型，`toString` 用于将日期类型转换为字符串类型。

```
in(toString(fl_date),["2015-05-14","2015-05-15","2015-05-16"])
```

![\[函数示例结果的图像，以表格形式显示。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/in-function-example-manual-list.png)


表达式参数中支持文本和 NULL 值，以便与列表中的文本进行比较。以下两个示例都将生成一列 TRUE 值的新列。

```
in("Washington",["Washington","Ohio"])
```

```
in(NULL,[NULL,"Ohio"])
```

## 使用多值参数的示例
<a name="in-function-example-mutivalue-parameter"></a>

假设作者创建了一个包含所有州名列表的[多值参数](https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html)。然后，作者添加了一个控件，允许读者从列表中选择值。

接下来，读者从参数的下拉列表控件中选择三个值，即“Georgia”、“Ohio”和“Texas”。在本例中，以下表达式等同于第一个示例，其中这三个州名称作为文本列表传递，以便与 `original_state_name` 字段进行比较。

```
in (origin_state_name, ${stateName MultivalueParameter})
```

## 使用 `ifelse` 的示例
<a name="in-function-example-with-ifelse"></a>

`in` 可以作为布尔值嵌套在其他函数中。一个例子是，作者可以计算列表中的任何表达式并使用 `in` 和 `ifelse` 返回他们想要的值。以下示例评估航班的 `dest_state_name` 是否位于特定的美国州列表中，并根据比较结果返回不同的州类别。

```
ifelse(in(dest_state_name,["Washington", "Oregon","California"]), "WestCoastUSState", "Other US State")
```

![\[函数示例结果的图像，以表格形式显示。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/in-function-with-ifelse.png)


# intToDecimal
<a name="intToDecimal-function"></a>

`intToDecimal` 将整数值转换为小数数据类型。

## 语法
<a name="intToDecimal-function-syntax"></a>

```
intToDecimal(integer)
```

## Arguments
<a name="intToDecimal-function-arguments"></a>

 *int*   
使用整数数据类型的字段、文本值（如 **14**）或对输出整数的其他函数的调用。

## 返回类型
<a name="intToDecimal-function-return-type"></a>

传统数据准备体验中的十进制（固定）。

全新的数据准备体验中的十进制（浮点型）。

## 示例
<a name="intToDecimal-function-example"></a>

以下示例将一个整数字段转换为小数。

```
intToDecimal(price)
```

以下是给定的字段值。

```
20
892
57
```

对于这些字段值，将返回以下值。

```
20.0
892.0
58.0
```

您可以在分析中应用任意格式设置，例如，将 `price` 格式化为货币。

# isNotNull
<a name="isNotNull-function"></a>

`isNotNull` 对表达式求值以确定其是否为 null。如果表达式不为 null，`isNotNull` 将返回 true，否则，将返回 false。

## 语法
<a name="isNotNull-function-syntax"></a>

```
isNotNull(expression)
```

## Arguments
<a name="isNotNull-function-arguments"></a>

 *expression*   
表达式的计算结果为 null 或非 null。它可以是字段名称（如 **address1**）或对输出字符串的其他函数的调用。

## 返回类型
<a name="isNotNull-function-return-type"></a>

布尔值

## 示例
<a name="isNotNull-function-example"></a>

以下示例计算 sales\$1amount 字段的值是否为 null。

```
isNotNull(salesAmount)
```

以下是给定的字段值。

```
20.13
(null)
57.54
```

对于这些字段值，将返回以下值。

```
true
false
true
```

# isNull
<a name="isNull-function"></a>

`isNull` 对表达式求值以确定其是否为 null。如果表达式为 null，`isNull` 将返回 true，否则，将返回 false。

## 语法
<a name="isNull-function-syntax"></a>

```
isNull(expression)
```

## Arguments
<a name="isNull-function-arguments"></a>

 *expression*   
表达式的计算结果为 null 或非 null。它可以是字段名称（如 **address1**）或对输出字符串的其他函数的调用。

## 返回类型
<a name="isNull-function-return-type"></a>

布尔值

## 示例
<a name="isNull-function-example"></a>

以下示例计算 sales\$1amount 字段的值是否为 null。

```
isNull(salesAmount)
```

以下是给定的字段值。

```
20.13
(null)
57.54
```

对于这些字段值，将返回以下值。

```
false
true
false
```

以下示例测试 `ifelse` 语句中的 NULL 值，改为返回人类可读的值。

```
ifelse( isNull({ActiveFlag}) , 'Inactive',  'Active') 
```

# isWorkDay
<a name="isWorkDay-function"></a>

`isWorkDay` 评估给定的日期时间值以确定该值是否为工作日。

`isWorkDay` 假设标准每周工作 5 天，从星期一开始，到星期五结束。假设星期六和星期日为周末。该函数始终按 `DAY` 粒度计算其结果，并且不包括给定的输入日期。

## 语法
<a name="isWorkDay-function-syntax"></a>

```
isWorkDay(inputDate)
```

## Arguments
<a name="isWorkDay-function-arguments"></a>

 *inputDate*   
要评估的日期时间值。有效值如下所示：  
+ 数据集字段：要向其添加此函数的数据集中的任何 `date` 字段。
+ 日期函数：从其他 `date` 函数输出的任何日期，例如，`parseDate`。
+ 计算字段：任何返回`date`值的快速计算字段。
+ 参数：任何 Quick `DateTime` 参数。

## 返回类型
<a name="isWorkDay-function-return-type"></a>

整数（`0` 或 `1`）

## 示例
<a name="isWorkDay-function-example"></a>

以下示例确定 `application_date` 字段是否为工作日。

假设有一个名为 `application_date` 的字段，其值如下：

```
2022-08-10 
2022-08-06 
2022-08-07
```

当您使用这些字段并添加以下计算时，`isWorkDay` 返回以下值：

```
isWorkDay({application_date})     
                                                     
1
0
0
```

以下示例使用条件格式筛选在工作日结束雇佣的员工，并确定他们的雇佣是在工作日还是周末开始：

```
is_start_date_work_day = isWorkDay(employment_start_date)
is_end_date_work_day = isWorkDay(employment_end_date)
```

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/isWorkDay-example.png)


# Left
<a name="left-function"></a>

`left` 返回字符串最左侧的字符，包括空格。您可以指定要返回的字符数。

## 语法
<a name="left-function-syntax"></a>

```
left(expression, limit)
```

## Arguments
<a name="left-function-arguments"></a>

 *expression*   
表达式必须是字符串。它可以是使用字符串数据类型的字段的名称、文本值（如 **'12 Main Street'**）或对输出字符串的其他函数的调用。

 *limit*   
要从 *expression* 返回的字符数，从字符串中的第一个字符开始。

## 返回类型
<a name="left-function-return-type"></a>

字符串

## 示例
<a name="left-function-example"></a>

以下示例返回字符串中的前 3 个字符。

```
left('Seattle Store #14', 3)
```

将返回以下值。

```
Sea
```

# Locate
<a name="locate-function"></a>

`locate` 查找您在一个字符串中指定的子字符串，并返回子字符串的第一个字符在该字符串中的位置。如果未找到子字符串，该函数将返回 0。该函数以 1 为基准。

## 语法
<a name="locate-function-syntax"></a>

```
locate(expression, substring, start)
```

## Arguments
<a name="locate-function-arguments"></a>

 *expression*   
表达式必须是字符串。它可以是使用字符串数据类型的字段的名称、文本值（如 **'12 Main Street'**）或对输出字符串的其他函数的调用。

 *substring*   
您要在 *expression* 中查找的一组字符。子字符串可在 *expression* 中出现一次或多次。

 *start*   
(可选) 如果 *substring* 出现多次，请使用 *start* 确定该函数应从字符串中的哪一位置开始查找子字符串。例如，假设您要查找某个子字符串的第二个示例，并且您认为它通常会出现在前 10 个字符之后，则指定 *start* (开始) 值为 10。应该从 1 开始。

## 返回类型
<a name="locate-function-return-type"></a>

整数

## 示例
<a name="locate-function-example"></a>

以下示例返回有关子字符串“and”在字符串中首次出现的位置的信息。

```
locate('1 and 2 and 3 and 4', 'and')
```

将返回以下值。

```
3
```

以下示例返回有关子字符串“and”在字符串中第四个字符后首次出现的位置的信息。

```
locate('1 and 2 and 3 and 4', 'and', 4)
```

将返回以下值。

```
9
```

# Log
<a name="log-function"></a>

`log` 返回给定表达式的以 10 为底的对数。

## 语法
<a name="log-function-syntax"></a>

```
log(expression)
```

## Arguments
<a name="log-function-arguments"></a>

 *expression*   
表达式必须是数字。它可以是字段名、文本值或其他函数。

# Ln
<a name="ln-function"></a>

`ln` 返回给定表达式的自然对数。

## 语法
<a name="ln-function-syntax"></a>

```
ln(expression)
```

## Arguments
<a name="ln-function-arguments"></a>

 *expression*   
表达式必须是数字。它可以是字段名、文本值或其他函数。

# Ltrim
<a name="ltrim-function"></a>

`ltrim` 从字符串中移除前置空格。

## 语法
<a name="ltrim-function-syntax"></a>

```
ltrim(expression)
```

## Arguments
<a name="ltrim-function-arguments"></a>

 *expression*   
表达式必须是字符串。它可以是使用字符串数据类型的字段的名称、文本值（如 **'12 Main Street'**）或对输出字符串的其他函数的调用。

## 返回类型
<a name="ltrim-function-return-type"></a>

字符串

## 示例
<a name="ltrim-function-example"></a>

以下示例从字符串中删除前置空格。

```
ltrim('   Seattle Store #14')
```

将返回以下值。

```
Seattle Store #14
```

# Mod
<a name="mod-function"></a>

使用 `mod` 函数查找将一个数字除以除数之后的余数。您可以互换使用 `mod` 函数或取模运算符 (%)。

## 语法
<a name="mod-function-syntax"></a>

```
mod(number, divisor)
```

```
number%divisor
```

## Arguments
<a name="mod-function-arguments"></a>

 *number*   
数字是您要除以并查找其余数的正整数。

 *除数*   
除数是您要除的正整数。如果除数为零，则此函数将返回除以 0 错误。

## 示例
<a name="mod-function-example"></a>

以下示例返回 17 除以 6 时的取模。第一个示例使用 % 运算符，第二个示例使用 mod 函数。

```
17%6
```

```
mod( 17, 6 )
```

将返回以下值。

```
5
```

# netWorkDays
<a name="netWorkDays-function"></a>

`netWorkDays`返回提供的两个日期字段之间的工作日数，甚至返回使用其他快速日期函数（例如`parseDate`或`epochDate`作为整数）生成的自定义日期值。

`netWorkDays` 假设标准每周工作 5 天，从星期一开始，到星期五结束。假设星期六和星期日为周末。计算结果包括 `startDate` 和 `endDate`。该函数运行并显示 DAY 粒度的结果。

## 语法
<a name="netWorkDays-function-syntax"></a>

```
netWorkDays(startDate, endDate)
```

## Arguments
<a name="netWorkDays-function-arguments"></a>

 *startDate*   
用作计算开始日期的有效非 NULL 日期。  
+ 数据集字段：要向其添加此函数的数据集中的任何 `date` 字段。
+ 日期函数：从其他 `date` 函数输出的任何日期，例如，`parseDate`。
+ 计算字段：任何返回`date`值的快速计算字段。
+ 参数：任何 Quick `DateTime` 参数。
+ 上述参数值的任意组合。

 *endDate*   
用作计算结束日期的有效非 NULL 日期。  
+ 数据集字段：要向其添加此函数的数据集中的任何 `date` 字段。
+ 日期函数：从其他 `date` 函数输出的任何日期，例如，`parseDate`。
+ 计算字段：任何返回`date`值的快速计算字段。
+ 参数：任何 Quick `DateTime` 参数。
+ 上述参数值的任意组合。

## 返回类型
<a name="netWorkDays-function-return-type"></a>

整数 

## 输出值
<a name="netWorkDays-function-output-type"></a>

预期的输出值包括：
+ 正整数（当 start\$1date < end\$1date 时）
+ 负整数（当 start\$1date > end\$1date 时）
+ 当其中一个或两个参数从 `dataset field` 中获得空值时，则为 NULL。

## 示例
<a name="netWorkDays-function-example"></a>

以下示例返回介于两个日期之间的工作日数。

假设有一个名为 `application_date` 的字段，其值如下：

```
netWorkDays({startDate}, {endDate})
```

以下是给定的字段值。

```
startDate	endDate	netWorkDays
        9/4/2022	9/11/2022	5
        9/9/2022	9/2/2022	-6
        9/10/2022	9/11/2022	0
        9/12/2022	9/12/2022	1
```

以下示例计算每位员工的工作天数和为每位员工每天支出的工资：

```
days_worked = netWorkDays({employment_start_date}, {employment_end_date})
        salary_per_day = {salary}/{days_worked}
```

以下示例使用条件格式筛选在工作日结束雇佣的员工，并确定他们的雇佣是在工作日还是周末开始：

```
is_start_date_work_day = netWorkDays(employment_start_date)
        is_end_date_work_day = netWorkDays(employment_end_date)
```

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/netWorkDays-function-example.png)


# Now
<a name="now-function"></a>

对于直接查询数据库的数据库数据集，`now` 使用数据库服务器指定的设置和格式返回当前日期和时间。对于 SPICE 和 Salesforce 数据集，`now` 会返回 UTC 日期和时间，格式为 `yyyy-MM-ddTkk:mm:ss:SSSZ`（例如，2015-10-15T19:11:51:003Z）。

## 语法
<a name="now-function-syntax"></a>

```
now()
```

## 返回类型
<a name="now-function-return-type"></a>

日期

# notIn
<a name="notIn-function"></a>

`notIn` 评估文本列表中是否存在表达式。如果列表不包含表达式，`notIn` 返回 true，否则返回 false。对于字符串类型输入，`notIn` 区分大小写。

`notIn` 接受两种文本列表，一种是手动输入的列表，另一种是[多值参数](https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html)。

## 语法
<a name="notIn-function-syntax"></a>

使用手动输入的列表：

```
notIn(expression, [literal-1, ...])  
```

使用多值参数：

```
notIn(expression, $multivalue_parameter)
```

## 参数
<a name="notIn-function-arguments"></a>

 *expression*   
要与文本列表中的元素进行比较的表达式。可以是字段名称（例如 `address`）、字面值（例如“**Unknown**”）、单值参数或对另一个标量函数的调用，前提是此函数不是聚合函数或表计算。

 *文本列表*   
（必填）这可以是手动输入的列表或多值参数。此参数最多接受 5,000 个元素。但是，在直接查询第三方数据来源（例如 Oracle 或 Teradata）时，限制可能会更小。  
+ ***手动输入的列表*** – 列表中的一个或多个要与表达式进行比较的文本值。列表应用方括号括起来。所有要比较的文本必须与表达式具有相同的数据类型。
+ ***多值参数*** – 作为文本列表传入的预定义多值参数。多值参数必须与表达式具有相同的数据类型。


## 返回类型
<a name="notIn-function-return-type"></a>

布尔值：TRUE/FALSE

## 使用手动输入列表的示例
<a name="notIn-function-example-manual-list"></a>

以下示例评估 `origin_state_name` 字段的字符串列表中的值。比较字符串类型输入时，`notIn` 仅支持区分大小写的比较。

```
notIn(origin_state_name,["Georgia", "Ohio", "Texas"])
```

以下是给定的字段值。

```
"Washington"
        "ohio"
        "Texas"
```

对于这些字段值，将返回以下值。

```
true
        true
        false
```

第三个返回值为 false，因为只有“Texas”是排除的值之一。

以下示例评估 `fl_date` 字段的字符串列表中的值。为了匹配类型，`toString` 用于将日期类型转换为字符串类型。

```
notIn(toString(fl_date),["2015-05-14","2015-05-15","2015-05-16"])
```

![\[函数示例结果的图像，以表格形式显示。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/notin-function-example-manual-list.png)


表达式参数中支持文本和 NULL 值，以便与列表中的文本进行比较。以下两个示例都将生成一列 FALSE 值的新列。

```
notIn("Washington",["Washington","Ohio"])
```

```
notIn(NULL,[NULL,"Ohio"])
```

## 使用多值参数的示例
<a name="notIn-function-example-mutivalue-parameter"></a>

假设作者创建了一个包含所有州名列表的[多值参数](https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html)。然后，作者添加了一个控件，允许读者从列表中选择值。

接下来，读者从参数的下拉列表控件中选择三个值，即“Georgia”、“Ohio”和“Texas”。在本例中，以下表达式等同于第一个示例，其中这三个州名称作为文本列表传递，以便与 `original_state_name` 字段进行比较。

```
notIn (origin_state_name, ${stateName MultivalueParameter})
```

## 使用 `ifelse` 的示例
<a name="notIn-function-example-with-ifelse"></a>

`notIn` 可以作为布尔值嵌套在其他函数中。一个例子是，作者可以计算列表中的任何表达式并使用 `notIn` 和 `ifelse` 返回他们想要的值。以下示例评估航班的 `dest_state_name` 是否位于特定的美国州列表中，并根据比较结果返回不同的州类别。

```
ifelse(notIn(dest_state_name,["Washington", "Oregon","California"]), "notWestCoastUSState", "WestCoastUSState")
```

![\[函数示例结果的图像，以表格形式显示。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/notin-function-with-ifelse.png)


# nullIf
<a name="nullIf-function"></a>

`nullIf` 比较两个表达式。如果表达式相等，该函数返回 null。如果表达式不相等，该函数返回第一个表达式。

## 语法
<a name="nullIf-function-syntax"></a>

```
nullIf(expression1, expression2)
```

## Arguments
<a name="nullIf-function-arguments"></a>

`nullIf` 接受两个表达式作为参数。

 *expression*   
该表达式可以是数字、日期时间或字符串。它可以是字段名、文本值或其他函数。

## 返回类型
<a name="nullIf-function-return-type"></a>

字符串

## 示例
<a name="nullIf-function-example"></a>

如果发货延迟的原因未知，以下示例将返回 null。

```
nullIf(delayReason, 'unknown')
```

以下是给定的字段值。

```
delayReason
============
unknown         
back ordered 
weather delay
```

对于这些字段值，将返回以下值。

```
(null)
back ordered 
weather delay
```

# parseDate
<a name="parseDate-function"></a>

`parseDate`解析字符串以确定其是否包含日期值，并以该格式返回标准日期`yyyy-MM-ddTkk:mm:ss.SSSZ`（使用 Joda 项目文档中 C [lass DateTimeFormat](http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html) 中指定的格式模式语法），例如 2015-10-15T19:11:51.003 Z。该函数返回所有包含某个有效格式日期的行，并跳过任何其他行，包括具有 null 值的行。

Quick 支持的日期范围为世界标准时间 1900 年 1 月 1 日 00:00:00:00 至世界标准时间 2037 年 12 月 31 日 23:59:59。有关更多信息，请参阅[支持的日期格式](https://docs.aws.amazon.com/quicksight/latest/user/supported-date-formats.html)。

## 语法
<a name="parseDate-function-syntax"></a>

```
parseDate(expression, ['format'])
```

## Arguments
<a name="parseDate-function-arguments"></a>

 *expression*   
表达式必须是字符串。它可以是使用字符串数据类型的字段的名称、文本值（如 **'1/1/2016'**）或对输出字符串的其他函数的调用。

 *format*   
(可选) 包含 *date\$1string* 必须匹配的格式模式的字符串。例如，如果您使用的字段包含类似的数据**01/03/2016**，则可以指定格式 “MM/dd/yyyy”。如果不指定格式，则默认为 `yyyy-MM-dd`。将跳过数据不符合 *format* 的行。  
根据所使用的数据集类型，支持不同的日期格式。可以使用下表了解支持的日期格式的详细信息。    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/parseDate-function.html)

## 返回类型
<a name="parseDate-function-return-type"></a>

日期

## 示例
<a name="parseDate-function-example"></a>

下面的示例对 `prodDate` 进行求值以确定其是否包含日期值。

```
parseDate(prodDate, 'MM/dd/yyyy')
```

以下是给定的字段值。

```
prodDate
--------
01-01-1999
12/31/2006
1/18/1982 
7/4/2010
```

对于这些字段值，将返回以下行。

```
12-31-2006T00:00:00.000Z
01-18-1982T00:00:00.000Z
07-04-2010T00:00:00.000Z
```

# parseDecimal
<a name="parseDecimal-function"></a>

`parseDecimal` 解析字符串以确定其是否包含小数值。该函数返回包含小数、整数或 null 值的所有行，并跳过所有其他行。如果行包含整数值，则作为最多有 4 位小数的小数返回。例如，值“2”返回为“2.0”。

## 语法
<a name="parseDecimal-function-syntax"></a>

```
parseDecimal(expression)
```

## Arguments
<a name="parseDecimal-function-arguments"></a>

 *expression*   
表达式必须是字符串。它可以是使用字符串数据类型的字段的名称、文本值（如 **'9.62'**）或对输出字符串的其他函数的调用。

## 返回类型
<a name="parseDecimal-function-return-type"></a>

传统数据准备体验中的十进制（固定）。

全新的数据准备体验中的十进制（浮点型）。

## 示例
<a name="parseDecimal-function-example"></a>

下面的示例对 `fee` 进行求值以确定其是否包含小数值。

```
parseDecimal(fee)
```

以下是给定的字段值。

```
fee
--------
2
2a
12.13
3b
3.9
(null)
198.353398
```

对于这些字段值，将返回以下行。

```
2.0
12.13
3.9
(null)
198.3533
```

# parseInt
<a name="parseInt-function"></a>

`parseInt` 解析字符串以确定其是否包含整数值。该函数返回包含小数、整数或 null 值的所有行，并跳过所有其他行。如果行包含小数值，则返回向下舍入到的最接近的整数。例如，值“2.99”返回为“2”。

## 语法
<a name="parseInt-function-syntax"></a>

```
parseInt(expression)
```

## Arguments
<a name="parseInt-function-arguments"></a>

 *expression*   
表达式必须是字符串。它可以是使用字符串数据类型的字段的名称、文本值（如 **'3'**）或对输出字符串的其他函数的调用。

## 返回类型
<a name="parseInt-function-return-type"></a>

整数

## 示例
<a name="parseInt-function-example"></a>

下面的示例对 `feeType` 进行求值以确定其是否包含整数值。

```
parseInt(feeType)
```

以下是给定的字段值。

```
feeType
--------
2
2.1
2a
3
3b
(null)
5
```

对于这些字段值，将返回以下行。

```
2
2
3
(null)
5
```

# parseJson
<a name="parseJson-function"></a>

使用 `parseJson` 从 JSON 对象提取值。

如果您的数据集存储在 Quick 中SPICE，则可以在准备数据集`parseJson`时使用，但不能在分析期间存储在计算字段中。

对于直接查询，您可以在数据准备和分析期间使用 `parseJson`。`parseJson` 函数适用于字符串或 JSON 本机数据类型，具体视方言而定（如下表所示）。


| Dialect | Type | 
| --- | --- | 
| PostgreSQL | JSON | 
| Amazon Redshift | 字符串 | 
| Microsoft SQL Server | 字符串 | 
| MySQL | JSON | 
| Teradata | JSON | 
| Oracle | 字符串 | 
| ：Presto | 字符串 | 
| Snowflake | 半结构化数据类型对象和数组 | 
| Hive | 字符串 | 

## 语法
<a name="parseJson-function-syntax"></a>

```
parseJson(fieldName, path)
```

## Arguments
<a name="parseJson-function-arguments"></a>

 *fieldName*   
包含您要解析的 JSON 对象的字段。

 *path*   
要从 JSON 对象中解析的数据元素的路径。路径参数仅支持字母、数字和空格。有效的路径语法包括：  
+ *\$1* – 根对象
+ *.* – 子运算符
+ *[ ]* – 数组的下标运算符

## 返回类型
<a name="parseJson-function-return-type"></a>

字符串

## 示例
<a name="parseJson-function-example-query"></a>

以下示例评估传入的 JSON 以检索项目数量的值。通过在数据准备期间使用它，您可以从 JSON 创建表。

```
parseJson({jsonField}, “$.items.qty”)
```

下面显示了 JSON 内容。

```
{
    "customer": "John Doe",
    "items": {
        "product": "Beer",
        "qty": 6
    },
    "list1": [
        "val1",
        "val2"
    ],
    "list2": [
        {
            "list21key1": "list1value1"
        }
    ]
}
```

在本示例中，将返回以下值。

```
6
```

## 示例
<a name="parseJson-function-example"></a>

以下示例评估 `JSONObject1` 以提取第一个键值对（KVP）（其标签为 `"State"`），并将该值分配给正在创建的计算字段。

```
parseJson(JSONObject1, “$.state”)
```

以下是给定的字段值。

```
JSONObject1
-----------
{"State":"New York","Product":"Produce","Date Sold":"1/16/2018","Sales Amount":"$3423.39"}
{"State":"North Carolina","Product":"Bakery Products","Date Sold":"2/1/2018","Sales Amount":"$3226.42"}
{"State":"Utah","Product":"Water","Date Sold":"4/24/2018","Sales Amount":"$7001.52"}
```

对于这些字段值，将返回以下行。

```
New York
North Carolina
Utah
```

# Replace
<a name="replace-function"></a>

`replace` 将字符串的一部分替换为您指定的其他字符串。

## 语法
<a name="replace-function-syntax"></a>

```
replace(expression, substring, replacement)
```

## Arguments
<a name="replace-function-arguments"></a>

 *expression*   
表达式必须是字符串。它可以是使用字符串数据类型的字段的名称、文本值（如 **'12 Main Street'**）或对输出字符串的其他函数的调用。

 *substring*   
*expression* 中您要替换的一组字符。子字符串可在 *expression* 中出现一次或多次。

 *replacement*   
您要用来替换 *substring* 的字符串。

## 返回类型
<a name="replace-function-return-type"></a>

字符串

## 示例
<a name="replace-function-example"></a>

以下示例将子字符串“and”替换为“or”。

```
replace('1 and 2 and 3', 'and', 'or')
```

返回以下字符串。

```
1 or 2 or 3
```

# Right
<a name="right-function"></a>

`right` 返回字符串中最右侧的字符，包括空格。您可以指定要返回的字符数。

## 语法
<a name="right-function-syntax"></a>

```
right(expression, limit)
```

## Arguments
<a name="right-function-arguments"></a>

 *expression*   
表达式必须是字符串。它可以是使用字符串数据类型的字段的名称、文本值（如 **'12 Main Street'**）或对输出字符串的其他函数的调用。

 *limit*   
要从 *expression* 返回的字符数，从字符串中的最后一个字符开始。

## 返回类型
<a name="right-function-return-type"></a>

字符串

## 示例
<a name="right-function-example"></a>

以下示例返回字符串中的最后 5 个字符。

```
right('Seattle Store#14', 12)
```

将返回以下值。

```
tle Store#14
```

# Round
<a name="round-function"></a>

`round` 将小数值舍入为最接近的整数 (如果未指定小数位数) 或舍入到最接近的小数位数 (如果指定小数位数)。

## 语法
<a name="round-function-syntax"></a>

```
round(decimal, scale)
```

## Arguments
<a name="round-function-arguments"></a>

 *decimal*   
使用小数数据类型的字段、文本值（如 **17.62**）或对输出小数的其他函数的调用。

 *小数位数*   
用于返回值的小数位数。

## 返回类型
<a name="round-function-return-type"></a>


| 操作数 | 旧版数据准备体验中的返回类型 | 全新的数据准备体验中的返回类型 | 
| --- | --- | --- | 
|  INT  |  十进制（固定）  |  十进制（固定）  | 
|  十进制（固定）  |  十进制（固定）  |  十进制（固定）  | 
|  十进制（浮点数）  |  十进制（固定）  |  十进制（浮点数）  | 

## 示例
<a name="round-function-example"></a>

以下示例将一个小数字段舍入为最接近的两位小数。

```
round(salesAmount, 2)
```

以下是给定的字段值。

```
20.1307
892.0388
57.5447
```

对于这些字段值，将返回以下值。

```
20.13
892.04
58.54
```

# Rtrim
<a name="rtrim-function"></a>

`rtrim` 从字符串中移除尾随空格。

## 语法
<a name="rtrim-function-syntax"></a>

```
rtrim(expression)
```

## Arguments
<a name="rtrim-function-arguments"></a>

 *expression*   
表达式必须是字符串。它可以是使用字符串数据类型的字段的名称、文本值（如 **'12 Main Street'**）或对输出字符串的其他函数的调用。

## 返回类型
<a name="rtrim-function-return-type"></a>

字符串

## 示例
<a name="rtrim-function-example"></a>

以下示例从字符串中删除尾随空格。

```
rtrim('Seattle Store #14   ')
```

对于这些字段值，将返回以下值。

```
Seattle Store #14
```

# Split
<a name="split-function"></a>

`split` 根据您选择的分隔符将字符串拆分为一个子字符串数组，并返回由位置指定的项目。

只能在准备数据期间将 `split` 添加到计算字段，而不是添加到分析中。对 Microsoft SQL Server 的直接查询不支持此函数。

## 语法
<a name="split-function-syntax"></a>

```
split(expression, delimiter , position)
```

## Arguments
<a name="split-function-arguments"></a>

 *expression*   
表达式必须是字符串。它可以是使用字符串数据类型的字段的名称、文本值（如 **'12 Main Street;1402 35th Ave;1818 Elm Ct;11 Janes Lane'**）或对输出字符串的其他函数的调用。

 *分隔符*   
划定在何处将字符串拆分为子字符串的字符。例如，`split('one|two|three', '|', 2)` 变为以下内容。  

```
one
two
three
```
如果选择 `position = 2`，`split` 将返回 `'two'`。

 *position*   
(必需) 要从数组中返回的项目的位置。数组中的第一个项目的位置为 1。

## 返回类型
<a name="split-function-return-type"></a>

字符串数组

## 示例
<a name="split-function-example"></a>

以下示例将字符串拆分为一个数组 (将分号字符 (;) 作为分隔符)，并返回数组的第三个元素。

```
split('123 Test St;1402 35th Ave;1818 Elm Ct;11 Janes Lane', ';', 3)
```

将返回以下项目。

```
1818 Elm Ct
```

该函数跳过包含 null 值或空字符串的项目。

# Sqrt
<a name="sqrt-function"></a>

`sqrt` 返回给定表达式的平方根。

## 语法
<a name="sqrt-function-syntax"></a>

```
sqrt(expression)
```

## Arguments
<a name="sqrt-function-arguments"></a>

 *expression*   
表达式必须是数字。它可以是字段名、文本值或其他函数。

# startsWith
<a name="startsWith-function"></a>

`startsWith` 评估表达式是否以您指定的子字符串开头。如果表达式以子字符串开头，`startsWith` 返回 true，否则返回 false。

## 语法
<a name="startsWith-function-syntax"></a>

```
startsWith(expression, substring, string-comparison-mode)
```

## Arguments
<a name="startsWith-function-arguments"></a>

 *expression*   
表达式必须是字符串。它可以是使用字符串数据类型的字段的名称、文本值（如 **'12 Main Street'**）或对输出字符串的其他函数的调用。

 *substring*   
要根据*表达式*检查的字符集。子字符串可在*表达式*中出现一次或多次。

 *string-comparison-mode*   
（可选）指定要使用的字符串比较模式：  
+ `CASE_SENSITIVE` – 字符串比较区分大小写。
+ `CASE_INSENSITIVE` – 字符串比较不区分大小写。
留空时此值默认为 `CASE_SENSITIVE`。

## 返回类型
<a name="startsWith-function-return-type"></a>

布尔值

## 示例
<a name="startsWith-function-example"></a>

### 默认区分大小写的示例
<a name="startsWith-function-example-default-case-sensitive"></a>

以下区分大小写的示例评估 `state_nm` 是否以 **New** 开头。

```
startsWith(state_nm, "New")
```

以下是给定的字段值。

```
New York
new york
```

对于这些字段值，将返回以下值。

```
true
false
```

### 不区分大小写的示例
<a name="startsWith-function-example-case-insensitive"></a>

以下不区分大小写的示例评估 `state_nm` 是否以 **new** 开头。

```
startsWith(state_nm, "new", CASE_INSENSITIVE)
```

以下是给定的字段值。

```
New York
new york
```

对于这些字段值，将返回以下值。

```
true
true
```

### 带条件语句的示例
<a name="startsWith-function-example-conditional-statements"></a>

`startsWith` 函数可用作以下 If 函数中的条件语句：[avgIf](https://docs.aws.amazon.com/quicksight/latest/user/avgIf-function.html)、[minIf](https://docs.aws.amazon.com/quicksight/latest/user/minIf-function.html)、[distinct\$1countIf](https://docs.aws.amazon.com/quicksight/latest/user/distinct_countIf-function.html)、[countIf](https://docs.aws.amazon.com/quicksight/latest/user/countIf-function.html)、[maxIf](https://docs.aws.amazon.com/quicksight/latest/user/maxIf-function.html)、[medianIf](https://docs.aws.amazon.com/quicksight/latest/user/medianIf-function.html)、[stdevIf](https://docs.aws.amazon.com/quicksight/latest/user/stdevIf-function.html)、[stdevpIf](https://docs.aws.amazon.com/quicksight/latest/user/stdevpIf-function.html)、[sumIf](https://docs.aws.amazon.com/quicksight/latest/user/sumIf-function.html)、[varIf](https://docs.aws.amazon.com/quicksight/latest/user/varIf-function.html) 和 [varpIf](https://docs.aws.amazon.com/quicksight/latest/user/varpIf-function.html)。

以下示例仅当 state\$1nm 以 **New** 开头时才对 `Sales` 求和。

```
sumIf(Sales,startsWith(state_nm, "New"))
```

### 不包含示例
<a name="startsWith-function-example-does-not-start-with"></a>

条件 `NOT` 运算符可用于评估表达式是否不以指定的子字符串开头。

```
NOT(startsWith(state_nm, "New"))
```

### 使用数值的示例
<a name="startsWith-function-example-numeric-values"></a>

通过应用 `toString` 函数，可以在表达式或子字符串参数中使用数值。

```
startsWith(state_nm, toString(5) )
```

# Strlen
<a name="strlen-function"></a>

`strlen` 返回字符串的字符数，包括空格。

## 语法
<a name="strlen-function-syntax"></a>

```
strlen(expression)
```

## Arguments
<a name="strlen-function-arguments"></a>

 *expression*   
expression 可以是使用字符串数据类型的字段的名称（如 **address1**）、文本值（如 **'Unknown'**）或其他函数（如 `substring(field_name,0,5)`）。

## 返回类型
<a name="strlen-function-return-type"></a>

整数

## 示例
<a name="strlen-function-example"></a>

以下示例返回指定字符串的长度。

```
strlen('1421 Main Street')
```

将返回以下值。

```
16
```

# Substring
<a name="substring-function"></a>

`substring` 返回字符串中的字符，从 *start* 参数指定的位置开始，延续 *length* 参数指定的字符数。

## 语法
<a name="substring-function-syntax"></a>

```
substring(expression, start, length)
```

## Arguments
<a name="substring-function-arguments"></a>

 *expression*   
expression 可以是使用字符串数据类型的字段的名称（如 **address1**）、文本值（如 **'Unknown'**）或其他函数（如 `substring(field_name,1,5)`）。

 *start*   
开始字符的位置。*start* 包含在内，因此，起始位置的字符是返回值中的第一个字符。*start* 的最小值为 1。

 *length*   
在 *start* 后面包含的其他字符数。*length* 包含 *start*，因此，返回的最后一个字符是起始字符后面的第（*length* – 1）个字符。

## 返回类型
<a name="substring-function-return-type"></a>

字符串

## 示例
<a name="substring-function-example"></a>

以下示例返回字符串中第 13 个到第 19 个字符。字符串的开头是索引 1，所以您从第一个字符开始计数。

```
substring('Fantasy and Science Fiction',13,7)
```

将返回以下值。

```
Science
```

# switch
<a name="switch-function"></a>

`switch` 在一组文本标签和 *return-expression* 配对中，将 *condition-expression* 与文本标签进行比较。然后，它返回与第一个等于 *condition-expression* 的文本标签相对应的 *return-expression*。如果没有等于 *condition-expression* 的标签，则 `switch` 返回 *default-expression*。每个 *return-expression* 和 *default-expression* 必须具有相同的数据类型。

## 语法
<a name="switch-function-syntax"></a>

```
switch(condition-expression, label-1, return-expression-1 [, label-n, return-expression-n ...], 
        default-expression)
```

## Arguments
<a name="switch-function-arguments"></a>

`switch` 需要一个或多个 *if*/*then* 表达式对，*else* 参数只需要一个表达式。

 *condition-expression*   
要与标签文本进行比较的表达式。它可以是字段名称（如 `address`）、文本值（如“`Unknown`”）或其他函数（如 `toString(salesAmount)`）。

 *label*   
要与 *condition-expression* 参数进行比较的文本，所有文本的数据类型都必须与 *condition-expression* 参数相同。`switch` 最多可接受 5000 个标签。

 *return-expression*   
其标签的值等于 *condition-expression* 的值时返回的表达式。它可以是字段名称（如 `address`）、文本值（如“`Unknown`”）或其他函数（如 `toString(salesAmount)`）。所有 *return-expression* 参数必须与 *default-expression* 具有相同的数据类型。

 *default-expression*   
任何标签参数的值都不等于 *condition-expression* 的值时返回的表达式。它可以是字段名称（如 `address`）、文本值（如“`Unknown`”）或其他函数（如 `toString(salesAmount)`）。*default-expression* 必须与所有 *return-expression* 参数具有相同的数据类型。

## 返回类型
<a name="switch-function-return-type"></a>

`switch` 返回与 *return-expression* 中的值具有相同数据类型的值。*return-expression* 和 *default-expression* 返回的所有数据都必须是相同的数据类型或转换为相同的数据类型。

## 一般示例
<a name="switch-function-example"></a>

以下示例返回输入区域名称的 AWS 区域 代码。

```
switch(region_name, 
               "US East (N. Virginia)", "us-east-1", 
               "Europe (Ireland)", "eu-west-1", 
               "US West (N. California)", "us-west-1", 
               "other regions")
```

以下是给定的字段值。

```
"US East (N. Virginia)"
        "US West (N. California)"
        "Asia Pacific (Tokyo)"
```

对于这些字段值，将返回以下值。

```
"us-east-1"
        "us-west-1"
        "other regions"
```

## 使用 switch 替换 `ifelse`
<a name="switch-instead-of-ifelse"></a>

以下 `ifelse` 用例等同于前面的示例，当 `ifelse` 评估一个字段的值是否等于不同的文本值时，改用 `switch` 是更好的选择。

```
ifelse(region_name = "US East (N. Virginia)", "us-east-1", 
               region_name = "Europe (Ireland)", "eu-west-1", 
               region_name = "US West (N. California)", "us-west-1", 
               "other regions")
```

## 表达式作为返回值
<a name="switch-expression-as-return-value"></a>

以下示例在 *return-expressions* 中使用表达式：

```
switch({origin_city_name}, 
               "Albany, NY", {arr_delay} + 20, 
               "Alexandria, LA", {arr_delay} - 10,
               "New York, NY", {arr_delay} * 2, 
               {arr_delay})
```

前面的示例更改了从特定城市起飞的每个航班的预期延误时间。

![\[函数示例结果的图像，以表格形式显示。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/switch-function-example.png)


# toLower
<a name="toLower-function"></a>

`toLower` 将字符串全部设置为小写格式。`toLower` 跳过包含 null 值的行。

## 语法
<a name="toLower-function-syntax"></a>

```
toLower(expression)
```

## Arguments
<a name="toLower-function-arguments"></a>

 *expression*   
表达式必须是字符串。它可以是使用字符串数据类型的字段的名称、文本值（如 **'12 Main Street'**）或对输出字符串的其他函数的调用。

## 返回类型
<a name="toLower-function-return-type"></a>

字符串

## 示例
<a name="toLower-function-example"></a>

以下示例将一个字符串值转换为小写。

```
toLower('Seattle Store #14')
```

将返回以下值。

```
seattle store #14
```

# toString
<a name="toString-function"></a>

`toString` 将输入表达式设置为字符串格式。`toString` 跳过包含 null 值的行。

## 语法
<a name="toString-function-syntax"></a>

```
toString(expression)
```

## Arguments
<a name="toString-function-arguments"></a>

 *expression*   
 expression 可以是任意数据类型的字段、文本值（如 **14.62**）或对返回任意数据类型的其他函数的调用。

## 返回类型
<a name="toString-function-return-type"></a>

字符串

## 示例
<a name="toString-function-example"></a>

下面的示例将 `payDate`（使用`date`数据类型）的值作为字符串返回。

```
toString(payDate)
```

以下是给定的字段值。

```
payDate
--------
1992-11-14T00:00:00.000Z
2012-10-12T00:00:00.000Z
1973-04-08T00:00:00.000Z
```

对于这些字段值，将返回以下行。

```
1992-11-14T00:00:00.000Z
2012-10-12T00:00:00.000Z
1973-04-08T00:00:00.000Z
```

# toUpper
<a name="toUpper-function"></a>

`toUpper` 将字符串全部设置为小写格式。`toUpper` 跳过包含 null 值的行。

## 语法
<a name="toUpper-function-syntax"></a>

```
toUpper(expression)
```

## Arguments
<a name="toUpper-function-arguments"></a>

 *expression*   
表达式必须是字符串。它可以是使用字符串数据类型的字段的名称、文本值（如 **'12 Main Street'**）或对输出字符串的其他函数的调用。

## 返回类型
<a name="toUpper-function-return-type"></a>

字符串

## 示例
<a name="toUpper-function-example"></a>

以下示例将一个字符串值转换为大写。

```
toUpper('Seattle Store #14')
```

将返回以下值。

```
SEATTLE STORE #14
```

# trim
<a name="trim-function"></a>

`trim` 从字符串中同时移除前置和尾随空格。

## 语法
<a name="trim-function-syntax"></a>

```
trim(expression)
```

## Arguments
<a name="trim-function-arguments"></a>

 *expression*   
表达式必须是字符串。它可以是使用字符串数据类型的字段的名称、文本值（如 **'12 Main Street'**）或对输出字符串的其他函数的调用。

## 返回类型
<a name="trim-function-return-type"></a>

字符串

## 示例
<a name="trim-function-example"></a>

以下示例从字符串中删除尾随空格。

```
trim('   Seattle Store #14   ')
```

对于这些字段值，将返回以下值。

```
Seattle Store #14
```

# truncDate
<a name="truncDate-function"></a>

`truncDate` 返回表示日期指定部分的日期值。例如，请求值 2012-09-02T00:00:00.000Z 的年份部分将返回 2012-01-01T00:00:00.000Z。如果为不包含时间信息的日期指定时间相关的时间段，则返回初始日期值 (不进行任何更改)。

## 语法
<a name="truncDate-function-syntax"></a>

```
truncDate('period', date)
```

## Arguments
<a name="truncDate-function-arguments"></a>

 *时段*   
希望返回的日期的时间段。有效时间段如下所示：  
+ YYYY：返回日期的年份部分。
+ 问：这将返回日期所属季度的第一天的日期。
+ MM：返回日期的月份部分。
+ DD：返回日期的日期部分。
+ WK：返回日期的星期部分。在 Amazon Quick 中，本周从周日开始。
+ HH：返回日期的小时部分。
+ MI：返回日期的分钟部分。
+ SS：返回日期的秒部分。
+ MS：返回日期的毫秒部分。

 *date*   
它可以是日期字段，也可以是对输出日期的其他函数的调用。

## 返回类型
<a name="truncDate-function-return-type"></a>

日期

## 示例
<a name="truncDate-function-example"></a>

以下示例返回表示订单日期月份的日期。

```
truncDate('MM', orderDate)
```

以下是给定的字段值。

```
orderDate      
=========
2012-12-14T00:00:00.000Z  
2013-12-29T00:00:00.000Z
2012-11-15T00:00:00.000Z
```

对于这些字段值，将返回以下值。

```
2012-12-01T00:00:00.000Z
2013-12-01T00:00:00.000Z
2012-11-01T00:00:00.000Z
```

# 聚合函数
<a name="calculated-field-aggregations"></a>

聚合函数仅在分析和可视化期间可用。所有这些函数都会返回按选定的一个或多个维度分组的值。对于每个聚合，还有一个有条件聚合。它们根据条件执行相同类型的聚合。

当计算字段公式包含一个聚合时，它将成为自定义聚合。为了确保您的数据显示准确，Amazon Quick 采用以下规则：
+ 自定义聚合不能包含嵌套的聚合函数。例如，此公式不起作用：`sum(avg(x)/avg(y))`。但是，在聚合函数的内部或外部嵌套非聚合函数有效。例如，`ceil(avg(x))` 可工作。`avg(ceil(x))` 也是如此。
+ 自定义聚合在任何组合中都不能同时包含聚合和非聚合字段。例如，此公式不起作用：`Sum(sales)+quantity`。
+ 筛选条件组不能同时包含聚合字段和非聚合字段。
+ 自定义聚合无法转换为维度。它们也无法作为维度放入字段井。
+ 在数据透视表中，自定义聚合无法添加到表计算。
+ 包含自定义聚合的散点图在字段井中的 **Group/Color** 下至少需要一个维度。

有关支持的函数和运算符的更多信息，请参阅 [Amazon Quick 的计算字段函数和运算符参考](https://docs.aws.amazon.com/quicksight/latest/user/calculated-field-reference.html)。

Quick 中计算字段的聚合函数包括以下内容。

**Topics**
+ [avg](avg-function.md)
+ [avgIf](avgIf-function.md)
+ [count](count-function.md)
+ [countIf](countIf-function.md)
+ [distinct\$1count](distinct_count-function.md)
+ [distinct\$1countIf](distinct_countIf-function.md)
+ [max](max-function.md)
+ [maxIf](maxIf-function.md)
+ [median](median-function.md)
+ [medianIf](medianIf-function.md)
+ [min](min-function.md)
+ [minIf](minIf-function.md)
+ [percentile](percentile-function.md)
+ [percentileCont](percentileCont-function.md)
+ [percentileDisc（百分位数）](percentileDisc-function.md)
+ [periodToDateAvg](periodToDateAvg-function.md)
+ [periodToDateCount](periodToDateCount-function.md)
+ [periodToDateMax](periodToDateMax-function.md)
+ [periodToDateMedian](periodToDateMedian-function.md)
+ [periodToDateMin](periodToDateMin-function.md)
+ [periodToDatePercentile](periodToDatePercentile-function.md)
+ [periodToDatePercentileCont](periodToDatePercentileCont-function.md)
+ [periodToDateStDev](periodToDateStDev-function.md)
+ [periodToDateStDevP](periodToDateStDevP-function.md)
+ [periodToDateSum](periodToDateSum-function.md)
+ [periodToDateVar](periodToDateVar-function.md)
+ [periodToDateVarP](periodToDateVarP-function.md)
+ [stdev](stdev-function.md)
+ [stdevp](stdevp-function.md)
+ [stdevIf](stdevIf-function.md)
+ [stdevpIf](stdevpIf-function.md)
+ [sum](sum-function.md)
+ [sumIf](sumIf-function.md)
+ [var](var-function.md)
+ [varIf](varIf-function.md)
+ [varp](varp-function.md)
+ [varpIf](varpIf-function.md)

# avg
<a name="avg-function"></a>

`avg` 函数以指定的度量计算一组数字的平均值，按照选定的一个或多个维度分组。例如，`avg(salesAmount)` 返回该度量的平均值，按 (可选的) 选定维度分组。

## 语法
<a name="avg-function-syntax"></a>

```
avg(decimal, [group-by level])
```

## Arguments
<a name="avg-function-arguments"></a>

 *decimal*   
参数必须是一个度量。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *分组依据等级*   
（可选）指定聚合分组依据的等级。添加的等级可以是任何维度，也可以是独立于添加到视觉对象的维度。  
参数必须是一个维度字段。分组依据等级必须用方括号 `[ ]` 括起来。有关更多信息，请参阅[级别感知计算-聚合 (LAC-A](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html)) 函数。

## 示例
<a name="avg-function-example"></a>

以下示例计算平均销售额。

```
avg({Sales})
```

您还可以使用视图或数据集中的一个或多个维度来指定在哪个等级对计算进行分组。这称为 LAC-A 函数。有关 LAC-A 函数的更多信息，请参阅[级别感知计算-聚合 (LAC-](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html) A) 函数。以下示例计算国家/地区等级的平均销售额，但不计算视觉对象中其他维度（区域或产品）的平均销售额。

```
avg({Sales}, [{Country}])
```

![\[仅在国家/地区等级汇总平均销售数量。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/avg-function-example.png)


# avgIf
<a name="avgIf-function"></a>

根据条件语句，`avgIf` 函数以指定的度量计算一组数字的平均值，按照选定的一个或多个维度分组。例如，如果条件的计算结果为 true，`avgIf(ProdRev,CalendarDay >= ${BasePeriodStartDate} AND CalendarDay <= ${BasePeriodEndDate} AND SourcingType <> 'Indirect')` 返回该度量的平均值，按（可选的）选定维度分组。

## 语法
<a name="avgIf-function-syntax"></a>

```
avgIf(dimension or measure, condition) 
```

## Arguments
<a name="avgIf-function-arguments"></a>

 *decimal*   
参数必须是一个度量。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *condition*   
单个语句中的一个或多个条件。

# count
<a name="count-function"></a>

`count` 函数计算维度或度量中包含的值的个数，按照选定的一个或多个维度分组。例如，`count(product type)` 返回产品类型的总数，按 (可选的) 选定维度分组，包括任何重复项。`count(sales)` 函数返回完成销售的总数，按 (可选的) 选定维度分组，如销售人员。

## 语法
<a name="count-function-syntax"></a>

```
count(dimension or measure, [group-by level])
```

## Arguments
<a name="count-function-arguments"></a>

 *维度或度量*   
参数必须是一个度量或一个维度。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *分组依据等级*   
（可选）指定聚合分组依据的等级。添加的等级可以是任何维度，也可以是独立于添加到视觉对象的维度。  
参数必须是一个维度字段。分组依据等级必须用方括号 `[ ]` 括起来。有关更多信息，请参阅[级别感知计算-聚合 (LAC-A](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html)) 函数。

## 示例
<a name="count-function-example"></a>

以下示例按视觉对象中的指定维度计算销售数量。在此示例中，显示了按月计算的销售数量。

```
count({Sales})
```

![\[按月计算的销售数量。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/count-function-example.png)


您还可以使用视图或数据集中的一个或多个维度来指定在哪个等级对计算进行分组。这称为 LAC-A 函数。有关 LAC-A 函数的更多信息，请参阅[级别感知计算-聚合 (LAC-](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html) A) 函数。以下示例计算国家/地区等级的销售数量，但不计算视觉对象中其他维度（区域或产品）的销售数量。

```
count({Sales}, [{Country}])
```

![\[仅在国家/地区等级汇总销售数量。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/count-function-example2.png)


# countIf
<a name="countIf-function"></a>

根据条件语句，`countIf` 函数计算维度或度量中包含的值的个数，按照选定的一个或多个维度分组。

## 语法
<a name="countIf-function-syntax"></a>

```
countIf(dimension or measure, condition)
```

## Arguments
<a name="countIf-function-arguments"></a>

 *维度或度量*   
参数必须是一个度量或一个维度。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *condition*   
单个语句中的一个或多个条件。

## 返回类型
<a name="countIf-function-return-type"></a>

整数

## 示例
<a name="countIf-function-example"></a>

以下函数返回符合条件的销售交易 (`Revenue`) 数量，包括任何重复项。

```
countIf (
    Revenue,
    # Conditions
        CalendarDay >= ${BasePeriodStartDate} AND 
        CalendarDay <= ${BasePeriodEndDate} AND 
        SourcingType <> 'Indirect'
)
```

# distinct\$1count
<a name="distinct_count-function"></a>

`distinct_count` 函数计算维度或度量中包含的不同值的个数，按照选定的一个或多个维度分组。例如，`distinct_count(product type)` 返回唯一产品类型的总数，按 (可选的) 选定维度分组，不包括重复项。`distinct_count(ship date)` 函数返回完成配送产品的日期总数，按 (可选的) 选定维度分组，如区域。

## 语法
<a name="distinct_count-function-syntax"></a>

```
distinct_count(dimension or measure, [group-by level])
```

## Arguments
<a name="distinct_count-function-arguments"></a>

 *维度或度量*   
参数必须是一个度量或一个维度。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *分组依据等级*   
（可选）指定聚合分组依据的等级。添加的等级可以是任何维度，也可以是独立于添加到视觉对象的维度。  
参数必须是一个维度字段。分组依据等级必须用方括号 `[ ]` 括起来。有关更多信息，请参阅[级别感知计算-聚合 (LAC-A](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html)) 函数。

## 示例
<a name="distinct_count-function-examples"></a>

以下示例计算订购商品的日期总数，按视觉对象中的选定维度（如区域）分组。

```
distinct_count({Order Date})
```

![\[每个区域订购商品的日期总数。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/distinct_count-function-example.png)


您还可以使用视图或数据集中的一个或多个维度来指定在哪个等级对计算进行分组。这称为 LAC-A 函数。有关 LAC-A 函数的更多信息，请参阅[级别感知计算-聚合 (LAC-](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html) A) 函数。以下示例计算国家/地区等级的平均销售额，但不计算视觉对象中其他维度（区域）的平均销售额。

```
distinct_count({Order Date}, [Country])
```

![\[每个国家/地区订购商品的日期总数。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/distinct_count-function-example2.png)


# distinct\$1countIf
<a name="distinct_countIf-function"></a>

根据条件语句，`distinct_countIf` 函数计算维度或度量中包含的不同值的个数，按照选定的一个或多个维度分组。例如，`distinct_countIf(product type)` 返回唯一产品类型的总数，按 (可选的) 选定维度分组，不包括重复项。如果条件的计算结果为 true，`distinct_countIf(ProdRev,CalendarDay >= ${BasePeriodStartDate} AND CalendarDay <= ${BasePeriodEndDate} AND SourcingType <> 'Indirect')` 函数返回完成配送产品的日期总数，按（可选的）选定维度（如区域）分组。

## 语法
<a name="distinct_countIf-function-syntax"></a>

```
distinct_countIf(dimension or measure, condition)
```

## Arguments
<a name="distinct_countIf-function-arguments"></a>

 *维度或度量*   
参数必须是一个度量或一个维度。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *condition*   
单个语句中的一个或多个条件。

# max
<a name="max-function"></a>

`max` 函数返回指定度量或日期的最大值，按照选定的一个或多个维度分组。例如，`max(sales goal)` 返回最大销售目标，按 (可选的) 选定维度分组。

## 语法
<a name="max-function-syntax"></a>

```
max(measure, [group-by level])
```

## Arguments
<a name="max-function-arguments"></a>

 *度量*   
参数必须是一个度量或一个日期。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。  
最大日期仅在表和数据透视表的 **Value (值)** 字段井中起作用。

 *分组依据等级*   
（可选）指定聚合分组依据的等级。添加的等级可以是任何维度，也可以是独立于添加到视觉对象的维度。  
参数必须是一个维度字段。分组依据等级必须用方括号 `[ ]` 括起来。有关更多信息，请参阅[级别感知计算-聚合 (LAC-A](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html)) 函数。

## 示例
<a name="max-function-example"></a>

以下示例将返回每个区域的最大销售额。将其与总销售额、最小销售额和销售额中值进行比较。

```
max({Sales})
```

![\[每个区域的最大销售额。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/min-max-median-function-example.png)


您还可以使用视图或数据集中的一个或多个维度来指定在哪个等级对计算进行分组。这称为 LAC-A 函数。有关 LAC-A 函数的更多信息，请参阅[级别感知计算-聚合 (LAC-](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html) A) 函数。以下示例计算国家/地区等级的最大销售额，但不计算视觉对象中其他维度（区域）的最大销售额。

```
max({Sales}, [Country])
```

![\[每个国家/地区的最大销售额。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/max-function-example2.png)


# maxIf
<a name="maxIf-function"></a>

根据条件语句，`maxIf` 函数返回指定度量的最大值，按照选定的一个或多个维度分组。例如，如果条件的计算结果为 true，`maxIf(ProdRev,CalendarDay >= ${BasePeriodStartDate} AND CalendarDay <= ${BasePeriodEndDate} AND SourcingType <> 'Indirect')` 返回最大销售目标，按（可选的）选定维度分组。

## 语法
<a name="maxIf-function-syntax"></a>

```
maxIf(measure, condition)
```

## Arguments
<a name="maxIf-function-arguments"></a>

 *度量*   
参数必须是一个度量。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *condition*   
单个语句中的一个或多个条件。

# median
<a name="median-function"></a>

`median` 聚合返回指定度量的中值，并按照选定的一个或多个维度进行分组。例如，`median(revenue)` 返回按（可选）选定维度分组的收入中值。

## 语法
<a name="median-function-syntax"></a>

```
median(measure, [group-by level])
```

## Arguments
<a name="median-function-arguments"></a>

 *度量*   
参数必须是一个度量。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *分组依据等级*   
（可选）指定聚合分组依据的等级。添加的等级可以是任何维度，也可以是独立于添加到视觉对象的维度。  
参数必须是一个维度字段。分组依据等级必须用方括号 `[ ]` 括起来。有关更多信息，请参阅[级别感知计算-聚合 (LAC-A](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html)) 函数。

## 示例
<a name="median-function-example"></a>

以下示例将返回每个区域的销售额中值。将其与总销售额、最大销售额和最小销售额进行比较。

```
median({Sales})
```

![\[每个区域的销售额中值。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/min-max-median-function-example.png)


您还可以使用视图或数据集中的一个或多个维度来指定在哪个等级对计算进行分组。这称为 LAC-A 函数。有关 LAC-A 函数的更多信息，请参阅[级别感知计算-聚合 (LAC-](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html) A) 函数。以下示例计算国家/地区等级的销售额中值，但不计算视觉对象中其他维度（区域）的销售额中值。

```
median({Sales}, [Country])
```

![\[每个国家/地区的销售额中值。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/median-function-example2.png)


# medianIf
<a name="medianIf-function"></a>

根据条件语句，`medianIf` 聚合返回指定度量的中值，并按照选定的一个或多个维度进行分组。例如，如果条件的计算结果为 true 时，`medianIf(Revenue,SaleDate >= ${BasePeriodStartDate} AND SaleDate <= ${BasePeriodEndDate})` 返回收入中值，按（可选的）选定维度分组。

## 语法
<a name="medianIf-function-syntax"></a>

```
medianIf(measure, condition)
```

## Arguments
<a name="medianIf-function-arguments"></a>

 *度量*   
参数必须是一个度量。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *condition*   
单个语句中的一个或多个条件。

# min
<a name="min-function"></a>

`min` 函数返回指定度量或日期的最小值，按照选定的一个或多个维度分组。例如，`min(return rate)` 返回最小收益率，按 (可选的) 选定维度分组。

## 语法
<a name="min-function-syntax"></a>

```
min(measure, [group-by level])
```

## Arguments
<a name="min-function-arguments"></a>

 *度量*   
参数必须是一个度量或一个日期。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。  
最小日期仅在表和数据透视表的 **Value (值)** 字段井中起作用。

 *分组依据等级*   
（可选）指定聚合分组依据的等级。添加的等级可以是任何维度，也可以是独立于添加到视觉对象的维度。  
参数必须是一个维度字段。分组依据等级必须用方括号 `[ ]` 括起来。有关更多信息，请参阅[级别感知计算-聚合 (LAC-A](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html)) 函数。

## 示例
<a name="min-function-example"></a>

以下示例返回每个区域的最小销售值。将其与总销售额、最大销售额和销售额中值进行比较。

```
min({Sales})
```

![\[每个区域的最小销售额。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/min-max-median-function-example.png)


您还可以使用视图或数据集中的一个或多个维度来指定在哪个等级对计算进行分组。这称为 LAC-A 函数。有关 LAC-A 函数的更多信息，请参阅[级别感知计算-聚合 (LAC-](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html) A) 函数。以下示例计算国家/地区等级的最小销售额，但不计算视觉对象中其他维度（区域）的最小销售额。

```
min({Sales}, [Country])
```

![\[每个国家/地区的最小销售额。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/min-function-example2.png)


# minIf
<a name="minIf-function"></a>

根据条件语句，`minIf` 函数返回指定度量的最小值，按照选定的一个或多个维度分组。例如，如果条件的计算结果为 true 时，`minIf(ProdRev,CalendarDay >= ${BasePeriodStartDate} AND CalendarDay <= ${BasePeriodEndDate} AND SourcingType <> 'Indirect')` 返回最小收益率，按（可选的）选定维度分组。

## 语法
<a name="minIf-function-syntax"></a>

```
minIf(measure, condition)
```

## Arguments
<a name="minIf-function-arguments"></a>

 *度量*   
参数必须是一个度量。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *condition*   
单个语句中的一个或多个条件。

# percentile
<a name="percentile-function"></a>

`percentile` 函数计算度量中值的百分位数，按字段井中的维度分组。Quick 中有两种百分位数计算可供选择：
+ [https://docs.aws.amazon.com/quicksight/latest/user/percentileCont-function.html](https://docs.aws.amazon.com/quicksight/latest/user/percentileCont-function.html) 使用线性内插来确定结果。
+ [percentileDisc（百分位数）](https://docs.aws.amazon.com/quicksight/latest/user/percentileDisc-function.html)使用实际值来确定结果。

`percentile` 函数是 `percentileDisc` 的别名。

# percentileCont
<a name="percentileCont-function"></a>

`percentileCont` 函数根据度量中数字的连续分布计算百分位数。其使用字段井中应用的分组和排序。其回答了如下问题：哪些值代表这个百分位数？ 要返回数据集中可能不存在的精确的百分位数值，请使用 `percentileCont`。要返回数据集中存在的最接近的百分位数值，请改用 `percentileDisc`。

## 语法
<a name="percentileCont-function-syntax"></a>

```
percentileCont(expression, percentile, [group-by level])
```

## Arguments
<a name="percentileCont-function-arguments"></a>

 *度量*   
指定用于计算百分位数的数值。参数必须是一个度量或指标。计算中将忽略 Null。

 *percentile*   
百分位数值可以是任何介于 0-100 的数字常数。百分比值 50 计算度量的中值。

 *分组依据等级*   
（可选）指定聚合分组依据的等级。添加的等级可以是任何维度，也可以是独立于添加到视觉对象的维度。  
参数必须是一个维度字段。分组依据等级必须用方括号 `[ ]` 括起来。有关更多信息，请参阅[级别感知计算-聚合 (LAC-A](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html)) 函数。

## 返回值
<a name="percentileCont-function-return-type"></a>

函数的结果为数字。

## 使用说明
<a name="percentileCont-usage-notes"></a>

`percentileCont` 函数根据指定度量中值的连续分布计算结果。根据视觉对象中的设置对值进行排序后，通过在值之间进行线性内插计算得出结果。其不同于 `percentileDisc`，后者只是从聚合的一组值中返回值。`percentileCont` 的结果可能存在于指定度量的值中，也可能不存在。

## percentileCont 的示例
<a name="percentileCont-examples"></a>

以下示例帮助解释 percentileCont 的工作原理。

**Example 比较中值、`percentileCont` 和 `percentileDisc`**  
以下示例使用 `median`、`percentileCont` 和 `percentileDisc` 函数显示维度（类别）的中值。中值与 percentileCont 值相同。`percentileCont` 内插一个值，该值可能存在于数据集中，也可能不存在。但是，`percentileDisc` 始终显示数据集中存在的值，因此两个结果可能不匹配。本示例的最后一列显示了两个值之间的差异。每个计算字段的代码如下所示：  
+ `50%Cont = percentileCont( example , 50 )`
+ `median = median( example )`
+ `50%Disc = percentileDisc( example , 50 )`
+ `Cont-Disc = percentileCont( example , 50 ) − percentileDisc( example , 50 )`
+ `example = left( category, 1 )`（举一个更简单的例子，我们使用这个表达式将类别的名称缩短为它们的第一个字母。）

```
  example     median       50%Cont      50%Disc      Cont-Disc
 -------- ----------- ------------ -------------- ------------ 
 A          22.48          22.48          22.24          0.24
 B          20.96          20.96          20.95          0.01
 C          24.92          24.92          24.92          0
 D          24.935         24.935         24.92          0.015
 E          14.48          14.48          13.99          0.49
```

**Example 第 100 个百分位数为最大值**  
以下示例显示了 `example` 字段的各种 `percentileCont` 值。计算字段 `n%Cont` 定义为 `percentileCont( {example} ,n)`。每列中的内插值表示属于该百分位数存储桶的数字。在某些情况下，实际数据值与内插值相匹配。例如，列 `100%Cont` 每行显示相同的值，因为 6783.02 是最大的数字。  

```
 example      50%Cont     75%Cont      99%Cont    100%Cont  
 --------- ----------- ----------- ------------ ----------- 

 A             20.97       84.307      699.99      6783.02  
 B             20.99       88.84       880.98      6783.02  
 C             20.99       90.48       842.925     6783.02  
 D             21.38       85.99       808.49      6783.02
```

您还可以使用视图或数据集中的一个或多个维度来指定在哪个等级对计算进行分组。这称为 LAC-A 函数。有关 LAC-A 函数的更多信息，请参阅[级别感知计算-聚合 (LAC-](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html) A) 函数。以下示例根据数字在国家/地区等级的连续分布来计算第 30 个百分位数，但不计算视觉对象中其他维度（区域）的第 30 个百分位数。

```
percentileCont({Sales}, 30, [Country])
```

![\[每个国家/地区的销售额百分位数。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/percentileCont-function-example-lac.png)


# percentileDisc（百分位数）
<a name="percentileDisc-function"></a>

`percentileDisc` 函数根据 `measure` 中的实际数字计算百分位数。其使用字段井中应用的分组和排序。`percentile` 函数是 `percentileDisc` 的别名。

使用此函数回答以下问题：此百分位数中存在哪些实际数据点？ 要返回数据集中存在的最接近的百分位数值，请使用 `percentileDisc`。要返回数据集中可能不存在的精确的百分位数值，请改用 `percentileCont`。

## 语法
<a name="percentileDisc-function-syntax"></a>

```
percentileDisc(expression, percentile, [group-by level])
```

## Arguments
<a name="percentileDisc-function-arguments"></a>

 *度量*   
指定用于计算百分位数的数值。参数必须是一个度量或指标。计算中将忽略 Null。

 *percentile*   
百分位数值可以是任何介于 0-100 的数字常数。百分比值 50 计算度量的中值。

 *分组依据等级*   
（可选）指定聚合分组依据的等级。添加的等级可以是任何维度，也可以是独立于添加到视觉对象的维度。  
参数必须是一个维度字段。分组依据等级必须用方括号 `[ ]` 括起来。有关更多信息，请参阅[级别感知计算-聚合 (LAC-A](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html)) 函数。

## 返回值
<a name="percentileDisc-function-return-type"></a>

函数的结果为数字。

## 使用说明
<a name="percentileDisc-usage-notes"></a>

`percentileDisc` 是一个假定离散分布模型的逆分布函数。该函数具有一个百分比值和一个排序规范，并返回给定集合中的元素。

对于给定的百分位数值 `P`，`percentileDisc` 使用视觉对象中的排序值，并返回大于或等于 `P` 的最小累积分布值的值。

## percentileDisc 的示例
<a name="percentileDisc-examples"></a>

以下示例帮助解释 percentileDisc 的工作原理。

**Example 比较中值、`percentileDisc` 和 `percentileCont`**  
以下示例使用 `percentileCont`、`percentileDisc` 和 `median` 函数显示维度（类别）的中值。中值与 percentileCont 值相同。`percentileCont` 内插一个值，该值可能存在于数据集中，也可能不存在。但是，`percentileDisc` 始终显示数据集中存在的最接近的值，因此两个结果可能不匹配。本示例的最后一列显示了两个值之间的差异。每个计算字段的代码如下所示：  
+ `50%Cont = percentileCont( example , 50 )`
+ `median = median( example )`
+ `50%Disc = percentileDisc( example , 50 )`
+ `Cont-Disc = percentileCont( example , 50 ) − percentileDisc( example , 50 )`
+ `example = left( category, 1 )`（举一个更简单的例子，我们使用这个表达式将类别的名称缩短为它们的第一个字母。）

```
 example     median       50%Cont      50%Disc      Cont-Disc
 -------- ----------- ------------ -------------- ------------ 
 A          22.48          22.48          22.24          0.24
 B          20.96          20.96          20.95          0.01
 C          24.92          24.92          24.92          0
 D          24.935         24.935         24.92          0.015
 E          14.48          14.48          13.99          0.49
```

**Example 第 100 个百分位数为最大值**  
以下示例显示了 `example` 字段的各种 `percentileDisc` 值。计算字段 `n%Disc` 定义为 `percentileDisc( {example} ,n)`。每列中的值都是数据集中的实际数字。  

```
 example     50%Disc      75%Disc        99%Disc      100%Disc
 -------- ----------- ------------ -------------- ------------ 
 A            20.97        73.98         699.99       6783.02
 B            42.19        88.84         820.08       6783.02
 C            30.52        90.48         733.44       6783.02
 D            41.38        85.99         901.29       6783.0
```

您还可以使用视图或数据集中的一个或多个维度来指定在哪个等级对计算进行分组。这称为 LAC-A 函数。有关 LAC-A 函数的更多信息，请参阅[级别感知计算-聚合 (LAC-](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html) A) 函数。以下示例根据数字在国家/地区等级的连续分布来计算第 30 个百分位数，但不计算视觉对象中其他维度（区域）的第 30 个百分位数。

```
percentile({Sales}, 30, [Country])
```

![\[每个国家/地区的销售额百分位数。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/percentile-function-example-lac.png)


# periodToDateAvg
<a name="periodToDateAvg-function"></a>

`periodToDateAvg` 函数按给定时间粒度（例如一个季度）到某个时间点（相对于该时间段）的指定度量计算一组数值的平均值。

## 语法
<a name="periodToDateAvg-function-syntax"></a>

```
periodToDateAvg(
	measure, 
	dateTime, 
	period, 
	endDate (optional))
```

## Arguments
<a name="periodToDateAvg-function-arguments"></a>

 *度量*   
参数必须是一个字段。结果中的 Null 值会被忽略。文本值不起作用。

 *dateTime*   
计算 PeriodToDate聚合的日期维度。

 *时段*   
您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。

 *endDate*   
（可选）您要结束计算periodToDate 聚合的日期维度。如果省略，默认为 `now()`。

## 示例
<a name="periodToDateAvg-function-example"></a>

以下示例计算 06-30-21 当周每种付款类型 week-to-date的最低票价金额。为了简单起见，我们只筛选了单笔付款。2021 年 6 月 30 日是星期三。Quick 在周日开始新的一周。在我们的示例中，就是 2021 年 6 月 27 日。

```
periodToDateAvg(fare_amount, pickUpDatetime, WEEK, parseDate("06-30-2021", "MM-dd-yyyy"))
```

![\[这是示例计算的结果图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/PTDAvgResults.png)


# periodToDateCount
<a name="periodToDateCount-function"></a>

`periodToDateCount` 函数按给定时间粒度（例如一个季度）到某个时间点（相对于该时间段）的维度或度量（包括重复项）计算数值。

## 语法
<a name="periodToDateCount-function-syntax"></a>

```
periodToDateCount(
	measure, 
	dateTime, 
	period, 
	endDate (optional))
```

## Arguments
<a name="periodToDateCount-function-arguments"></a>

 *度量*   
参数必须是一个字段。结果中的 Null 值会被忽略。文本值不起作用。

 *dateTime*   
计算 PeriodToDate聚合的日期维度。

 *时段*   
您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。

 *endDate*   
（可选）您要结束计算periodToDate 聚合的日期维度。如果省略，默认为 `now()`。

## 示例
<a name="periodToDateCount-function-example"></a>

以下示例计算 06-30-21 当周每种付款类型 week-to-date的最低票价金额。为了简单起见，我们只筛选了单笔付款。2021 年 6 月 30 日是星期三。Quick 在周日开始新的一周。在我们的示例中，就是 2021 年 6 月 27 日。

```
periodToDateCount(fare_amount, pickUpDatetime, WEEK, parseDate("06-30-2021", "MM-dd-yyyy"))
```

![\[这是示例计算的结果图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/PTDCountResults.png)


# periodToDateMax
<a name="periodToDateMax-function"></a>

`periodToDateMax` 函数返回给定时间粒度（例如一个季度）到某个时间点（相对于该时间点）的指定度量的最大值。

## 语法
<a name="periodToDateMax-function-syntax"></a>

```
periodToDateMax(
	measure, 
	dateTime, 
	period, 
	endDate (optional))
```

## Arguments
<a name="periodToDateMax-function-arguments"></a>

 *度量*   
参数必须是一个字段。结果中的 Null 值会被忽略。文本值不起作用。

 *dateTime*   
计算 PeriodToDate聚合的日期维度。

 *时段*   
您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。

 *endDate*   
（可选）您要结束计算periodToDate 聚合的日期维度。如果省略，默认为 `now()`。

## 示例
<a name="periodToDateMax-function-example"></a>

以下示例计算 06-30-21 当周每种付款类型 week-to-date的最低票价金额。为了简单起见，我们只筛选了单笔付款。2021 年 6 月 30 日是星期三。Quick 在周日开始新的一周。在我们的示例中，就是 2021 年 6 月 27 日。

```
periodToDateMax(fare_amount, pickUpDatetime, WEEK, parseDate("06-30-2021", "MM-dd-yyyy"))
```

![\[这是示例计算的结果图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/PTDMaxResults.png)


# periodToDateMedian
<a name="periodToDateMedian-function"></a>

`periodToDateMedian` 函数返回给定时间粒度（例如一个季度）到某个时间点（相对于该时间段）的指定度量的中值。

## 语法
<a name="periodToDateMedian-function-syntax"></a>

```
periodToDateMedian(
	measure, 
	dateTime, 
	period, 
	endDate (optional))
```

## Arguments
<a name="periodToDateMedian-function-arguments"></a>

 *度量*   
参数必须是一个字段。结果中的 Null 值会被忽略。文本值不起作用。

 *dateTime*   
计算 PeriodToDate聚合的日期维度。

 *时段*   
您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。

 *endDate*   
（可选）您要结束计算periodToDate 聚合的日期维度。如果省略，默认为 `now()`。

## 示例
<a name="periodToDateMedian-function-example"></a>

以下示例计算 06-30-21 当周每种付款类型 week-to-date的最低票价金额。为了简单起见，我们只筛选了单笔付款。2021 年 6 月 30 日是星期三。Quick 在周日开始新的一周。在我们的示例中，就是 2021 年 6 月 27 日。

```
periodToDateMedian(fare_amount, pickUpDatetime, WEEK, parseDate("06-30-2021", "MM-dd-yyyy"))
```

![\[这是示例计算的结果图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/PTDMedianResults.png)


# periodToDateMin
<a name="periodToDateMin-function"></a>

`periodToDateMin` 函数返回给定时间粒度（例如一个季度）到某个时间点（相对于该时间段）的指定度量或日期的最小值。

## 语法
<a name="periodToDateMin-function-syntax"></a>

```
periodToDateMin(
	measure, 
	dateTime, 
	period, 
	endDate (optional))
```

## Arguments
<a name="periodToDateMin-function-arguments"></a>

 *度量*   
参数必须是一个字段。结果中的 Null 值会被忽略。文本值不起作用。

 *dateTime*   
计算 PeriodToDate聚合的日期维度。

 *时段*   
您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。

 *endDate*   
（可选）您要结束计算periodToDate 聚合的日期维度。如果省略，默认为 `now()`。

## 示例
<a name="periodToDateMin-function-example"></a>

以下示例计算 06-30-21 当周每种付款类型 week-to-date的最低票价金额。为了简单起见，我们只筛选了单笔付款。2021 年 6 月 30 日是星期三。Quick 在周日开始新的一周。在我们的示例中，就是 2021 年 6 月 27 日。

```
periodToDateMin(fare_amount, pickUpDatetime, WEEK, parseDate("06-30-2021", "MM-dd-yyyy"))
```

![\[这是示例计算的结果图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/PTDMinResults.png)


# periodToDatePercentile
<a name="periodToDatePercentile-function"></a>

`periodToDatePercentile` 函数按给定时间粒度（例如一个季度）到某个时间点（相对于该时间段）的度量中的实际数值计算百分位数。其使用字段井中应用的分组和排序。

要返回数据集中存在的最接近的百分位数值，请使用 `periodToDatePercentile`。要返回数据集中可能不存在的精确的百分位数值，请改用 `periodToDatePercentileCont`。

## 语法
<a name="periodToDatePercentile-function-syntax"></a>

```
periodToDatePercentile(
	measure, 
	percentile, 
	dateTime, 
	period, 
	endDate (optional))
```

## Arguments
<a name="periodToDatePercentile-function-arguments"></a>

 *度量*   
参数必须是一个字段。结果中的 Null 值会被忽略。文本值不起作用。

 *percentile*   
百分位数值可以是任何介于 0-100 的数字常数。百分位数 50 计算度量的中值。

 *dateTime*   
计算 PeriodToDate聚合所依据的日期维度。

 *时段*   
您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。

 *endDate*   
（可选）您要结束计算periodToDate 聚合的日期维度。如果省略，默认为 `now()`。

## 示例
<a name="periodToDatePercentile-function-example"></a>

以下示例计算了 06-30- week-to-date 21 当周每种付款类型票价金额的第 90 个百分位数。为了简单起见，我们只筛选了单笔付款。2021 年 6 月 30 日是星期三。Quick 在周日开始新的一周。在我们的示例中，就是 2021 年 6 月 27 日。

```
periodToDatePercentile(fare_amount, 90, pickupDatetime, WEEK, parseDate("06-30-2021", "MM-dd-yyyy"))
```

![\[这是示例计算的收益图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/PTDPercentileResults.png)


# periodToDatePercentileCont
<a name="periodToDatePercentileCont-function"></a>

`periodToDatePercentileCont` 函数按给定时间粒度（例如一个季度）到该时间段某个时间点的度量中数值的连续分布计算百分位数。其使用字段井中应用的分组和排序。

要返回数据集中可能不存在的精确的百分位数值，请使用 `periodToDatePercentileCont`。要返回数据集中存在的最接近的百分位数值，请改用 `periodToDatePercentile`。

## 语法
<a name="periodToDatePercentileCont-function-syntax"></a>

```
periodToDatePercentileCont(
	measure, 
	percentile, 
	dateTime, 
	period, 
	endDate (optional))
```

## Arguments
<a name="periodToDatePercentileCont-function-arguments"></a>

 *度量*   
参数必须是一个字段。结果中的 Null 值会被忽略。文本值不起作用。

 *percentile*   
百分位数值可以是任何介于 0-100 的数字常数。百分位数 50 计算度量的中值。

 *dateTime*   
计算 PeriodToDate聚合所依据的日期维度。

 *时段*   
您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。

 *endDate*   
（可选）您要结束计算periodToDate 聚合的日期维度。如果省略，默认为 `now()`。

## 示例
<a name="periodToDatePercentileCont-function-example"></a>

以下示例计算了 06-30- week-to-date 21 当周每种付款类型票价金额的第 90 个百分位数。为了简单起见，我们只筛选了单笔付款。2021 年 6 月 30 日是星期三。Quick 在周日开始新的一周。在我们的示例中，就是 2021 年 6 月 27 日。

```
periodToDatePercentileCont(fare_amount, 90, pickupDatetime, WEEK, parseDate("06-30-2021", "MM-dd-yyyy"))
```

![\[这是示例计算的收益图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/PTDContPercentileResults.png)


# periodToDateStDev
<a name="periodToDateStDev-function"></a>

`periodToDateStDev` 函数按给定时间粒度（例如一个季度）到某个时间点（基于示例并相对于该时间段）的指定度量计算一组数值的标准偏差。

## 语法
<a name="periodToDateStDev-function-syntax"></a>

```
periodToDateStDev(
	measure, 
	dateTime, 
	period, 
	endDate (optional))
```

## Arguments
<a name="periodToDateStDev-function-arguments"></a>

 *度量*   
参数必须是一个字段。结果中的 Null 值会被忽略。文本值不起作用。

 *dateTime*   
计算 PeriodToDate聚合的日期维度。

 *时段*   
（可选）您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。

 *endDate*   
（可选）您要结束计算periodToDate 聚合的日期维度。如果省略，默认为 `now()`。

## 示例
<a name="periodToDateStDev-function-example"></a>

以下示例计算 06-30-21 当周每种付款类型 week-to-date的最低票价金额。为了简单起见，我们只筛选了单笔付款。2021 年 6 月 30 日是星期三。Quick 在周日开始新的一周。在我们的示例中，就是 2021 年 6 月 27 日。

```
periodToDateStDev(fare_amount, pickUpDatetime, WEEK, parseDate("06-30-2021", "MM-dd-yyyy"))
```

![\[这是示例计算的结果图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/PTDStDevResults.png)


# periodToDateStDevP
<a name="periodToDateStDevP-function"></a>

`periodToDateStDevP` 函数按给定时间粒度（例如一个季度）到某个时间点（基于该时间段的示例）的指定度量计算一组数值的总体标准偏差。

## 语法
<a name="periodToDateStDevP-function-syntax"></a>

```
periodToDateStDevP(
	measure, 
	dateTime, 
	period, 
	endDate (optional))
```

## Arguments
<a name="periodToDateStDevP-function-arguments"></a>

 *度量*   
参数必须是一个字段。结果中的 Null 值会被忽略。文本值不起作用。

 *dateTime*   
计算 PeriodToDate聚合的日期维度。

 *时段*   
您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。

 *endDate*   
（可选）您要结束计算periodToDate 聚合的日期维度。如果省略，默认为 `now()`。

## 示例
<a name="periodToDateStDevP-function-example"></a>

以下示例计算 06-30-21 当周每种付款类型 week-to-date的最低票价金额。为了简单起见，我们只筛选了单笔付款。2021 年 6 月 30 日是星期三。Quick 在周日开始新的一周。在我们的示例中，就是 2021 年 6 月 27 日。

```
periodToDateStDevP(fare_amount, pickUpDatetime, WEEK, parseDate("06-30-2021", "MM-dd-yyyy"))
```

![\[这是示例计算的结果图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/PTDStDevPResults.png)


# periodToDateSum
<a name="periodToDateSum-function"></a>

`periodToDateSum` 函数添加给定时间粒度（例如一个季度）到某个时间点（相对于该时间段）的指定度量。

## 语法
<a name="periodToDateSum-function-syntax"></a>

```
periodToDateSum(
	measure, 
	dateTime, 
	period, 
	endDate)
```

## Arguments
<a name="periodToDateSum-function-arguments"></a>

 *度量*   
参数必须是一个字段。结果中的 Null 值会被忽略。文本值不起作用。

 *dateTime*   
计算 PeriodToDate聚合的日期维度。

 *时段*   
您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。

 *endDate*   
（可选）您要结束计算periodToDate 聚合的日期维度。如果省略，默认为 `now()`。

## 示例
<a name="periodToDateSum-function-example"></a>

以下示例计算 2021 年 6 月 30 日当周每种付款类型的本周迄今付款总额。为了简单起见，我们只筛选了单笔付款。2021 年 6 月 30 日是星期三。Quick 在周日开始新的一周。在我们的示例中，就是 2021 年 6 月 27 日。

```
periodToDateSum(fare_amount, pickUpDateTime, WEEK, parseDate("06-30-2021", "MM-dd-yyyy"))
```

![\[这是示例的结果图像（附插图）。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/PTDSumResults.png)


# periodToDateVar
<a name="periodToDateVar-function"></a>

`periodToDateVar` 函数按给定时间粒度（例如一个季度）到该时间段的某个时间点的指定度量计算一组数值的样本方差。

## 语法
<a name="periodToDateVar-function-syntax"></a>

```
periodToDateVar(
	measure, 
	dateTime, 
	period, 
	endDate (optional))
```

## Arguments
<a name="periodToDateVar-function-arguments"></a>

 *度量*   
参数必须是一个字段。结果中的 Null 值会被忽略。文本值不起作用。

 *dateTime*   
计算 PeriodToDate聚合的日期维度。

 *时段*   
您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。

 *endDate*   
（可选）您要结束计算periodToDate 聚合的日期维度。如果省略，默认为 `now()`。

## 示例
<a name="periodToDateVar-function-example"></a>

以下示例计算 06-30-21 当周每种付款类型 week-to-date的最低票价金额。为了简单起见，我们只筛选了单笔付款。2021 年 6 月 30 日是星期三。Quick 在周日开始新的一周。在我们的示例中，就是 2021 年 6 月 27 日。

```
periodToDateVar(fare_amount, pickUpDatetime, WEEK, parseDate("06-30-2021", "MM-dd-yyyy"))
```

![\[这是示例计算的结果图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/PTDVarResults.png)


# periodToDateVarP
<a name="periodToDateVarP-function"></a>

`periodToDateVarP` 函数按给定时间粒度（例如一个季度）到某个时间点（相对于该时间段）的指定度量计算一组数值的总体方差。

## 语法
<a name="periodToDateVarP-function-syntax"></a>

```
periodToDateVarP(
	measure, 
	dateTime, 
	period, 
	endDate (optional))
```

## Arguments
<a name="periodToDateVarP-function-arguments"></a>

 *度量*   
参数必须是一个字段。结果中的 Null 值会被忽略。文本值不起作用。

 *dateTime*   
计算 PeriodToDate聚合的日期维度。

 *时段*   
您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。

 *endDate*   
（可选）您要结束计算periodToDate 聚合的日期维度。如果省略，默认为 `now()`。

## 示例
<a name="periodToDateVarP-function-example"></a>

以下示例计算 06-30-21 当周每种付款类型 week-to-date的最低票价金额。为了简单起见，我们只筛选了单笔付款。2021 年 6 月 30 日是星期三。Quick 在周日开始新的一周。在我们的示例中，就是 2021 年 6 月 27 日。

```
periodToDateVarP(fare_amount, pickUpDatetime, WEEK, parseDate("06-30-2021", "MM-dd-yyyy"))
```

![\[这是示例计算的结果图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/PTDVarPResults.png)


# stdev
<a name="stdev-function"></a>

`stdev` 函数根据样本计算指定度量中按选定的一个维度或多个维度分组的一组数字的标准差。

## 语法
<a name="stdev-function-syntax"></a>

```
stdev(measure, [group-by level])
```

## Arguments
<a name="stdev-function-arguments"></a>

 *度量*   
参数必须是一个度量。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *分组依据等级*   
（可选）指定聚合分组依据的等级。添加的等级可以是任何维度，也可以是独立于添加到视觉对象的维度。  
参数必须是一个维度字段。分组依据等级必须用方括号 `[ ]` 括起来。有关更多信息，请参阅[级别感知计算-聚合 (LAC-A](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html)) 函数。

## 示例
<a name="stdev-function-example"></a>

以下示例使用记录的测试分数样本返回一个等级的测试分数标准偏差。

```
stdev({Score})
```

您还可以使用视图或数据集中的一个或多个维度来指定在哪个等级对计算进行分组。这称为 LAC-A 函数。有关 LAC-A 函数的更多信息，请参阅[级别感知计算-聚合 (LAC-](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html) A) 函数。以下示例计算主题等级的测试分数标准偏差，但不计算视觉对象中其他维度（等级）的测试分数标准偏差。

```
stdev({Score}, [Subject])
```

# stdevp
<a name="stdevp-function"></a>

`stdevp` 函数计算指定度量中按选定的一个维度或多个维度分组的一组数字的标准差。

## 语法
<a name="stdevp-function-syntax"></a>

```
stdevp(measure, [group-by level])
```

## Arguments
<a name="stdevp-function-arguments"></a>

 *度量*   
参数必须是一个度量。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *分组依据等级*   
（可选）指定聚合分组依据的等级。添加的等级可以是任何维度，也可以是独立于添加到视觉对象的维度。  
参数必须是一个维度字段。分组依据等级必须用方括号 `[ ]` 括起来。有关更多信息，请参阅[级别感知计算-聚合 (LAC-A](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html)) 函数。

## 示例
<a name="stdev-function-example"></a>

以下示例使用记录的所有分数返回一个等级的测试分数标准偏差。

```
stdevp({Score})
```

您还可以使用视图或数据集中的一个或多个维度来指定在哪个等级对计算进行分组。这称为 LAC-A 函数。有关 LAC-A 函数的更多信息，请参阅[级别感知计算-聚合 (LAC-](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html) A) 函数。以下示例使用记录的所有分数计算主题等级的测试分数标准偏差，但不计算视觉对象中其他维度（等级）的测试分数标准偏差。

```
stdevp({Score}, [Subject])
```

# stdevIf
<a name="stdevIf-function"></a>

基于条件语句，`stdevIf` 函数根据样本计算指定度量中按选定的一个维度或多个维度分组的一组数字的标准差。

## 语法
<a name="stdevIf-function-syntax"></a>

```
stdevIf(measure, conditions)
```

## Arguments
<a name="stdevIf-function-arguments"></a>

 *度量*   
参数必须是一个度量。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *condition*   
单个语句中的一个或多个条件。

# stdevpIf
<a name="stdevpIf-function"></a>

基于条件语句，`stdevpIf` 函数根据总体偏差计算指定度量中按选定的一个维度或多个维度分组的一组数字的标准差。

## 语法
<a name="stdevpIf-function-syntax"></a>

```
stdevpIf(measure, conditions)
```

## Arguments
<a name="stdevpIf-function-arguments"></a>

 *度量*   
参数必须是一个度量。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *condition*   
单个语句中的一个或多个条件。

# sum
<a name="sum-function"></a>

`sum` 函数以指定的度量添加一组数字，按照选定的一个或多个维度分组。例如，`sum(profit amount)` 返回利润总额，按 (可选的) 选定维度分组。

## 语法
<a name="sum-function-syntax"></a>

```
sum(measure, [group-by level])
```

## Arguments
<a name="sum-function-arguments"></a>

 *度量*   
参数必须是一个度量。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *分组依据等级*   
（可选）指定聚合分组依据的等级。添加的等级可以是任何维度，也可以是独立于添加到视觉对象的维度。  
参数必须是一个维度字段。分组依据等级必须用方括号 `[ ]` 括起来。有关更多信息，请参阅[级别感知计算-聚合 (LAC-A](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html)) 函数。

## 示例
<a name="sum-function-example"></a>

以下示例返回销售总额。

```
sum({Sales})
```

您还可以使用视图或数据集中的一个或多个维度来指定在哪个等级对计算进行分组。这称为 LAC-A 函数。有关 LAC-A 函数的更多信息，请参阅[级别感知计算-聚合 (LAC-](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html) A) 函数。以下示例计算国家/地区等级的销售总额，但不计算视觉对象中其他维度（区域或产品）的销售总额。

```
sum(Sales, [Country])
```

![\[每个国家/地区的销售总额。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/sum-function-example.png)


# sumIf
<a name="sumIf-function"></a>

根据条件语句，`sumIf` 函数以指定的度量对一组数字求和，按照选定的一个或多个维度分组。例如，如果条件的计算结果为 true，`sumIf(ProdRev,CalendarDay >= ${BasePeriodStartDate} AND CalendarDay <= ${BasePeriodEndDate} AND SourcingType <> 'Indirect')` 返回利润总额，按（可选的）选定维度分组。

## 语法
<a name="sumIf-function-syntax"></a>

```
sumIf(measure, conditions)
```

## Arguments
<a name="sumIf-function-arguments"></a>

 *度量*   
参数必须是一个度量。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *condition*   
单个语句中的一个或多个条件。

## 示例
<a name="sumIf-function-example"></a>

以下示例使用带 `sumIf` 的计算字段来显示销售额（如果 `Segment` 等于 `SMB`）。

```
sumIf(Sales, Segment=’SMB’)
```

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/sumIfCalc.png)


以下示例使用带 `sumIf` 的计算字段来显示销售额（如果 `Segment` 等于 `SMB` 并且年份 `Order Date` 晚于 2022）。

```
sumIf(Sales, Segment=’SMB’ AND {Order Date} >=’2022-01-01’)
```

# var
<a name="var-function"></a>

`var` 函数计算指定度量中按选定的一个维度或多个维度分组的一组数字的样本方差。

## 语法
<a name="var-function-syntax"></a>

```
var(measure, [group-by level])
```

## Arguments
<a name="var-function-arguments"></a>

 *度量*   
参数必须是一个度量。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *分组依据等级*   
（可选）指定聚合分组依据的等级。添加的等级可以是任何维度，也可以是独立于添加到视觉对象的维度。  
参数必须是一个维度字段。分组依据等级必须用方括号 `[ ]` 括起来。有关更多信息，请参阅[级别感知计算-聚合 (LAC-A](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html)) 函数。

## 示例
<a name="var-function-example"></a>

以下示例返回测试分数样本的方差。

```
var({Scores})
```

您还可以使用视图或数据集中的一个或多个维度来指定在哪个等级对计算进行分组。这称为 LAC-A 函数。有关 LAC-A 函数的更多信息，请参阅[级别感知计算-聚合 (LAC-](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html) A) 函数。以下示例返回主题等级的测试分数样本的方差，但不返回视觉对象中其他维度（等级）的测试分数样本方差。

```
var({Scores}, [Subject]
```

# varIf
<a name="varIf-function"></a>

基于条件语句，`varIf` 函数根据样本计算指定度量中按选定的一个维度或多个维度分组的一组数字的方差。

## 语法
<a name="varIf-function-syntax"></a>

```
varIf(measure, conditions)
```

## Arguments
<a name="varIf-function-arguments"></a>

 *度量*   
参数必须是一个度量。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *condition*   
单个语句中的一个或多个条件。

# varp
<a name="varp-function"></a>

`varp` 函数计算指定度量中按选定的一个维度或多个维度分组的一组数字的总体方差。

## 语法
<a name="varp-function-syntax"></a>

```
varp(measure, [group-by level])
```

## Arguments
<a name="varp-function-arguments"></a>

 *度量*   
参数必须是一个度量。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *分组依据等级*   
（可选）指定聚合分组依据的等级。添加的等级可以是任何维度，也可以是独立于添加到视觉对象的维度。  
参数必须是一个维度字段。分组依据等级必须用方括号 `[ ]` 括起来。有关更多信息，请参阅[级别感知计算-聚合 (LAC-A](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html)) 函数。

## 示例
<a name="varp-function-example"></a>

以下示例返回测试分数的总体方差。

```
varp({Scores})
```

您还可以使用视图或数据集中的一个或多个维度来指定在哪个等级对计算进行分组。这称为 LAC-A 函数。有关 LAC-A 函数的更多信息，请参阅[级别感知计算-聚合 (LAC-](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations-aggregate.html) A) 函数。以下示例返回主题等级的测试分数总体方差，但不返回视觉对象中其他维度（等级）的测试分数总体方差。

```
varp({Scores}, [Subject]
```

# varpIf
<a name="varpIf-function"></a>

基于条件语句，`varpIf` 函数根据总体偏差计算指定度量中按选定的一个维度或多个维度分组的一组数字的方差。

## 语法
<a name="varpIf-function-syntax"></a>

```
varpIf(measure, conditions)
```

## Arguments
<a name="varpIf-function-arguments"></a>

 *度量*   
参数必须是一个度量。结果中的 Null 值会被忽略。文本值不起作用。参数必须是一个字段。

 *condition*   
单个语句中的一个或多个条件。

# 表计算函数
<a name="table-calculation-functions"></a>

在分析特定视觉对象中的数据时，您可以将表计算应用于当前数据集，以了解维度如何影响度量或它们如何相互影响。*可视化数据*是基于当前数据集的结果集，并应用了所有筛选条件、字段选择和自定义项。要查看该结果集的确切内容，您可以将视觉对象导出为文件。*表计算函数* 对数据执行运算以显示字段之间的关系。

在本节中，您可以找到表计算中可用函数的列表，这些函数可以在 Amazon Quick 中对可视化数据执行。

要查看按类别排序的函数列表以及简要定义，请参阅[按类别划分的函数](https://docs.aws.amazon.com/quicksight/latest/user/functions-by-category.html)。

**Topics**
+ [difference](difference-function.md)
+ [distinctCountOver](distinctCountOver-function.md)
+ [lag](lag-function.md)
+ [lead](lead-function.md)
+ [percentDifference](percentDifference-function.md)
+ [avgOver](avgOver-function.md)
+ [countOver](countOver-function.md)
+ [maxOver](maxOver-function.md)
+ [minOver](minOver-function.md)
+ [percentileOver](percentileOver-function.md)
+ [percentileContOver](percentileContOver-function.md)
+ [percentileDiscOver](percentileDiscOver-function.md)
+ [percentOfTotal](percentOfTotal-function.md)
+ [periodOverPeriodDifference](periodOverPeriodDifference-function.md)
+ [periodOverPeriodLastValue](periodOverPeriodLastValue-function.md)
+ [periodOverPeriodPercentDifference](periodOverPeriodPercentDifference-function.md)
+ [periodToDateAvgOverTime](periodToDateAvgOverTime-function.md)
+ [periodToDateCountOverTime](periodToDateCountOverTime-function.md)
+ [periodToDateMaxOverTime](periodToDateMaxOverTime-function.md)
+ [periodToDateMinOverTime](periodToDateMinOverTime-function.md)
+ [periodToDateSumOverTime](periodToDateSumOverTime-function.md)
+ [stdevOver](stdevOver-function.md)
+ [stdevpOver](stdevpOver-function.md)
+ [varOver](varOver-function.md)
+ [varpOver](varpOver-function.md)
+ [sumOver](sumOver-function.md)
+ [denseRank](denseRank-function.md)
+ [rank](rank-function.md)
+ [percentileRank](percentileRank-function.md)
+ [runningAvg](runningAvg-function.md)
+ [runningCount](runningCount-function.md)
+ [runningMax](runningMax-function.md)
+ [runningMin](runningMin-function.md)
+ [runningSum](runningSum-function.md)
+ [firstValue](firstValue-function.md)
+ [lastValue](lastValue-function.md)
+ [windowAvg](windowAvg-function.md)
+ [windowCount](windowCount-function.md)
+ [windowMax](windowMax-function.md)
+ [windowMin](windowMin-function.md)
+ [windowSum](windowSum-function.md)

# difference
<a name="difference-function"></a>

`difference` 函数计算基于一组分区和排序的度量与基于其他分区和排序的度量之间的差值。

`difference` 函数支持与基于 SPICE 和直接查询数据集的分析结合使用。

## 语法
<a name="difference-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
difference
	(
	     measure 
	     ,[ sortorder_field ASC_or_DESC, ... ]
	     ,lookup_index,
	     ,[ partition field, ... ] 
	)
```

## 参数
<a name="difference-function-arguments"></a>

 *度量*   
要查看差值的聚合度量。

 *排序顺序字段*   
要在对数据排序时使用的一个或多个度量和维度（以逗号分隔）。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *查找索引*   
查找索引可以为正数或负数，表示排序中的下一行（正数）或排序中的上一行（负数）。查找索引可以为 1-2,147,483,647。对于引擎 MySQL、MariaDB 和 Aurora MySQL 兼容版，查找索引仅限为 1。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

## 示例
<a name="difference-function-example"></a>

以下示例计算 `sum({Billed Amount})` 和下一行之间的差值（按 `Customer Region` 升序排序并按 `Service Line` 分区）。

```
difference(
     sum( {Billed Amount} ), 
     [{Customer Region} ASC],
     1,
     [{Service Line}]
)
```

以下示例计算 `Billed Amount` 和下一行之间的差值（按 `[{Customer Region}]` 分区）。表计算中的字段位于视觉对象的字段井中。

```
difference(
     sum( {Billed Amount} ), 
     [{Customer Region} ASC],
     1
)
```

红色突出显示部分显示每个金额如何相加 ( a \$1 b = c ) 以显示金额 a 和 c 之间的差值。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/differenceCalc.png)


# distinctCountOver
<a name="distinctCountOver-function"></a>

`distinctCountOver` 函数计算指定等级上按指定属性划分的操作数的不同计数。支持的等级为 `PRE_FILTER` 和 `PRE_AGG`。操作数必须是未聚合的。

## 语法
<a name="distinctCountOver-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
distinctCountOver
(
  measure or dimension field 
  ,[ partition_field, ... ]  
  ,calculation level 
)
```

## 参数
<a name="distinctCountOver-function-arguments"></a>

 *度量或维度字段*   
要进行计算的度量或维度，例如 `{Sales Amt}`。有效值为 `PRE_FILTER` 和 `PRE_AGG`。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *计算级别*  
（可选）指定要使用的计算级别：  
+ **`PRE_FILTER`** – 在数据集筛选条件之前计算预筛选条件计算。
+ **`PRE_AGG`** – 在将聚合以及前 *N* 个和后 N 个筛选条件应用于视觉对象之前计算预聚合计算。
空白时此值默认为 `POST_AGG_FILTER`。`POST_AGG_FILTER` 不是此操作的有效等级，将导致错误消息。有关更多信息，请参阅在 [Amazon Quick 中使用关卡感知计算](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations.html)。

## 示例
<a name="distinctCountOver-function-example"></a>

以下示例获取在 `PRE_AGG` 等级按 `City` 和 `State` 分区的 `Sales` 的不同计数。

```
distinctCountOver
(
  Sales, 
  [City, State], PRE_AGG
)
```

# lag
<a name="lag-function"></a>

`lag` 函数计算基于指定分区和排序的度量的滞后（上一个）值。

`lag` 支持用于基于 SPICE 和直接查询数据集的分析。

## 语法
<a name="lag-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
lag
(
lag
(
 measure
 ,[ sortorder_field ASC_or_DESC, ... ] 
 ,lookup_index
 ,[ partition_field, ... ] 
)] 
)
```

## 参数
<a name="lag-function-arguments"></a>

*度量*   
要获取滞后值的度量。这可能包括聚合，例如，`sum({Sales Amt})`。

*排序顺序字段*   
要在对数据排序时使用的一个或多个度量和维度（以逗号分隔）。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

*查找索引*   
查找索引可以为正数或负数，表示排序中的下一行（正数）或排序中的上一行（负数）。查找索引可以为 1-2,147,483,647。对于引擎 MySQL、MariaDB 和 Amazon Aurora MySQL 兼容版，查找索引仅限为 1。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

## 示例
<a name="lag-function-example"></a>

以下示例计算上一个 `sum(sales)`（按源州/省分区并按 `cancellation_code` 升序排序顺序排序）。

```
lag
(
     sum(Sales), 
     [cancellation_code ASC], 
     1, 
     [origin_state_nm]
)
```

以下示例使用计算字段和 `lag` 在当前行的金额旁边显示上一行的销售额（按 `Order Date` 排序）。表计算中的字段位于视觉对象的字段井中。

```
lag(
     sum({Sales}),
     [{Order Date} ASC],
     1
)
```

以下屏幕截图显示了示例的结果。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/lagCalc.png)


以下示例使用计算字段和 `lag` 在当前行的金额旁边显示上一行的销售额（按 `Order Date` 排序，按 `Segment` 划分）。

```
lag
	(
		sum(Sales),
		[Order Date ASC],
		1, [Segment]
	)
```

以下屏幕截图显示了示例的结果。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/lagCalc2.png)


# lead
<a name="lead-function"></a>

`lead` 函数计算基于指定分区和排序的度量的前导（下一个）值。

## 语法
<a name="lead-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
lead
(
     measure
     ,[ sortorder_field ASC_or_DESC, ... ]  
     ,lookup_index,
     ,[ partition_field, ... ]
)
```

## 参数
<a name="lead-function-arguments"></a>

*度量*   
要获取前导值的度量。这可能包括聚合，例如，`sum({Sales Amt})`。

*排序顺序字段*   
要在对数据排序时使用的一个或多个度量和维度（以逗号分隔）。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

*查找索引*   
查找索引可以为正数或负数，表示排序中的下一行（正数）或排序中的上一行（负数）。查找索引可以为 1-2,147,483,647。对于引擎 MySQL、MariaDB 和 Amazon Aurora MySQL 兼容版，查找索引仅限为 1。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

## 示例
<a name="lead-function-example"></a>

以下示例计算下一个 `sum(sales)`（按源州/省分区并按 `cancellation_code` 升序排序顺序排序）。

```
lead
(
     sum(sales), 
     [cancellation_code ASC], 
     1, 
     [origin_state_nm]
)
```

以下示例使用计算字段和 lead 在当前行的金额旁边显示下一行的金额（按 `Customer Segment` 排序）。表计算中的字段位于视觉对象的字段井中。

```
lead(
     sum({Billed Amount}),
     [{Customer Segment} ASC],
     1
)
```

以下屏幕截图显示了示例的结果。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/leadCalc.png)


# percentDifference
<a name="percentDifference-function"></a>

`percentDifference` 函数根据分区、排序和查找索引计算当前值和比较值之间的百分比差值。

## 语法
<a name="percentDifference-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
percentDifference
(
  measure 
  ,[ sortorder_field ASC_or_DESC, ... ]  
  ,lookup index
  ,[ partition_field, ... ] 
)
```

## 参数
<a name="percentDifference-function-arguments"></a>

 *度量*   
要查看百分比差值的聚合度量。

 *排序顺序字段*   
要在对数据排序时使用的一个或多个度量和维度（以逗号分隔）。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *查找索引*   
查找索引可以为正数或负数，表示排序中的下一行（正数）或排序中的上一行（负数）。查找索引可以为 1-2,147,483,647。对于引擎 MySQL、MariaDB 和 Aurora MySQL 兼容版，查找索引仅限为 1。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

## 示例
<a name="percentDifference-function-example"></a>

以下示例计算当前和上一 `State` 的 `sum(Sales)` 之间的百分比差值（按 `Sales` 排序）。

```
percentDifference
(
  sum(amount), 
  [sum(amount) ASC],
  -1, 
  [State]
)
```

以下示例计算特定 `Billed Amount` 在另一个 `Billed Amount` 中所占的百分比（按 `[{Customer Region} ASC]` 排序）。表计算中的字段位于视觉对象的字段井中。

```
percentDifference
(
  sum( {Billed Amount} ), 
  [{Customer Region} ASC],
  1
)
```

以下屏幕截图显示了示例的结果。红色字母显示 `Customer Region` **APAC** 的总额 `Billed Amount` 比 **EMEA** 区域的金额低 24%。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/percentDifference.png)


# avgOver
<a name="avgOver-function"></a>

`avgOver` 函数计算按维度列表划分的度量的平均值。

## 语法
<a name="avgOver-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
avgOver
(
     measure 
     ,[ partition_field, ... ] 
     ,calculation level 
)
```

以下示例显示 `Customer Region` 中的平均 `Billed Amount`。表计算中的字段位于视觉对象的字段井中。

```
avgOver
(
     sum({Billed Amount}),
     [{Customer Region}]
)
```

以下屏幕截图显示了示例的结果。通过添加 `Service Line`，将显示每个类别的总计费金额，并在计算字段中显示这三个值的平均值。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/avgOver.png)


## 参数
<a name="avgOver-function-arguments"></a>

 *度量*   
要进行计算的度量，例如 `sum({Sales Amt})`。如果计算级别设置为 `NULL` 或 `POST_AGG_FILTER`，则使用聚合。如果计算级别设置为 `PRE_FILTER` 或 `PRE_AGG`，请不要使用聚合。

 *分区字段*  
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *计算级别*  
（可选）指定要使用的计算级别：  
+ **`PRE_FILTER`** – 在数据集筛选条件之前计算预筛选条件计算。
+ **`PRE_AGG`** – 在将聚合以及前 *N* 个和后 N 个筛选条件应用于视觉对象之前计算预聚合计算。
+ **`POST_AGG_FILTER`** –（默认）在显示视觉对象时计算表格计算。
留空时此值默认为 `POST_AGG_FILTER`。有关更多信息，请参阅在 Quick [中使用关卡感知计算。](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations.html)

## 示例
<a name="avgOver-function-example"></a>

以下示例获取按 `City` 和 `State` 分区的平均 `sum(Sales)`。

```
avgOver
(
     sum(Sales), 
     [City, State]
)
```

# countOver
<a name="countOver-function"></a>

`countOver` 函数计算按维度列表划分的维度或度量的计数。

## 语法
<a name="countOver-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
countOver
(
  measure or dimension field 
  ,[ partition_field, ... ]  
  ,calculation level 
)
```

## 参数
<a name="countOver-function-arguments"></a>

 *度量或维度字段*   
要进行计算的度量或维度，例如 `sum({Sales Amt})`。如果计算级别设置为 `NULL` 或 `POST_AGG_FILTER`，则使用聚合。如果计算级别设置为 `PRE_FILTER` 或 `PRE_AGG`，请不要使用聚合。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *计算级别*  
（可选）指定要使用的计算级别：  
+ **`PRE_FILTER`** – 在数据集筛选条件之前计算预筛选条件计算。
+ **`PRE_AGG`** – 在将聚合以及前 *N* 个和后 N 个筛选条件应用于视觉对象之前计算预聚合计算。
+ **`POST_AGG_FILTER`** –（默认）在显示视觉对象时计算表格计算。
留空时此值默认为 `POST_AGG_FILTER`。有关更多信息，请参阅在 Quick [中使用关卡感知计算。](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations.html)

## 示例
<a name="countOver-function-example"></a>

以下示例获取按 `City` 和 `State` 分区的 `Sales` 的计数。

```
countOver
(
  Sales, 
  [City, State]
)
```

以下示例获取按 `City` 和 `State` 分区的 `{County}` 的计数。

```
countOver
(
  {County}, 
  [City, State]
)
```

以下示例显示 `Customer Region` 中的 `Billed Amount` 计数。表计算中的字段位于视觉对象的字段井中。

```
countOver
(
  sum({Billed Amount}),
  [{Customer Region}]
)
```

以下屏幕截图显示了示例的结果。由于不涉及其他字段，因此，计数为每个区域一个。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/countOver1.png)


如果添加其他字段，计数将发生变化。在以下屏幕截图中，我们添加 `Customer Segment` 和 `Service Line`。其中的每个字段包含三个唯一的值。由于具有 3 个类别、3 个服务行和 3 个区域，计算字段显示 9。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/countOver2.png)


如果在计算字段 `countOver( sum({Billed Amount}), [{Customer Region}, {Customer Segment}, {Service Line}]` 的分区字段中添加两个其他字段，则每一行的计数再次变为 1。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/countOver.png)


# maxOver
<a name="maxOver-function"></a>

`maxOver` 函数计算按维度列表划分的度量或日期的最大值。

## 语法
<a name="maxOver-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
maxOver
(
     measure 
     ,[ partition_field, ... ] 
     ,calculation level 
)
```

## 参数
<a name="maxOver-function-arguments"></a>

 *度量*   
要进行计算的度量，例如 `sum({Sales Amt})`。如果计算级别设置为 `NULL` 或 `POST_AGG_FILTER`，则使用聚合。如果计算级别设置为 `PRE_FILTER` 或 `PRE_AGG`，请不要使用聚合。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *计算级别*  
（可选）指定要使用的计算级别：  
+ **`PRE_FILTER`** – 在数据集筛选条件之前计算预筛选条件计算。
+ **`PRE_AGG`** – 在将聚合以及前 *N* 个和后 N 个筛选条件应用于视觉对象之前计算预聚合计算。
+ **`POST_AGG_FILTER`** –（默认）在显示视觉对象时计算表格计算。
留空时此值默认为 `POST_AGG_FILTER`。有关更多信息，请参阅在 Quick [中使用关卡感知计算。](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations.html)

## 示例
<a name="maxOver-function-example"></a>

以下示例计算按 `City` 和 `State` 分区的最大 `sum(Sales)`。

```
maxOver
(
     sum(Sales), 
     [City, State]
)
```

以下示例显示 `Customer Region` 中的最大 `Billed Amount`。表计算中的字段位于视觉对象的字段井中。

```
maxOver
(
     sum({Billed Amount}),
     [{Customer Region}]
)
```

以下屏幕截图显示了示例的结果。通过添加 `Service Line`，将显示每个类别的总计费金额，并在计算字段中显示这三个值的最大值。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/maxOver.png)


# minOver
<a name="minOver-function"></a>

`minOver` 函数计算按维度列表划分的度量或日期的最小值。

## 语法
<a name="minOver-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
minOver
(
     measure 
     ,[ partition_field, ... ] 
     ,calculation level 
)
```

## 参数
<a name="minOver-function-arguments"></a>

*度量*   
要进行计算的度量，例如 `sum({Sales Amt})`。如果计算级别设置为 `NULL` 或 `POST_AGG_FILTER`，则使用聚合。如果计算级别设置为 `PRE_FILTER` 或 `PRE_AGG`，请不要使用聚合。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *计算级别*  
（可选）指定要使用的计算级别：  
+ **`PRE_FILTER`** – 在数据集筛选条件之前计算预筛选条件计算。
+ **`PRE_AGG`** – 在将聚合以及前 *N* 个和后 N 个筛选条件应用于视觉对象之前计算预聚合计算。
+ **`POST_AGG_FILTER`** –（默认）在显示视觉对象时计算表格计算。
留空时此值默认为 `POST_AGG_FILTER`。有关更多信息，请参阅在 Quick [中使用关卡感知计算。](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations.html)

## 示例
<a name="minOver-function-example"></a>

以下示例计算按 `City` 和 `State` 分区的最小 `sum(Sales)`。

```
minOver
(     
     sum(Sales), 
     [City, State]
)
```

以下示例显示 `Customer Region` 中的最小 `Billed Amount`。表计算中的字段位于视觉对象的字段井中。

```
minOver
(
     sum({Billed Amount}),
     [{Customer Region}]
)
```

以下屏幕截图显示了示例的结果。通过添加 `Service Line`，将显示每个类别的总计费金额，并在计算字段中显示这三个值的最小值。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/minOver.png)


# percentileOver
<a name="percentileOver-function"></a>

`percentileOver` 函数计算按维度列表划分的度量的第 *n* 个百分位数。Quick 中有两种`percentileOver`计算方式可供选择：
+ [https://docs.aws.amazon.com/quicksight/latest/user/percentileContOver-function.html](https://docs.aws.amazon.com/quicksight/latest/user/percentileContOver-function.html) 使用线性内插来确定结果。
+ [https://docs.aws.amazon.com/quicksight/latest/user/percentileDiscOver-function.html](https://docs.aws.amazon.com/quicksight/latest/user/percentileDiscOver-function.html) 使用实际值来确定结果。

`percentileOver` 函数是 `percentileDiscOver` 的别名。

# percentileContOver
<a name="percentileContOver-function"></a>

`percentileContOver` 函数根据 `measure` 中的实际数字计算百分位数。其使用字段井中应用的分组和排序。结果按指定计算等级的指定维度划分。

使用此函数回答以下问题：此百分位数中存在哪些实际数据点？ 要返回数据集中存在的最接近的百分位数值，请使用 `percentileDiscOver`。要返回数据集中可能不存在的精确的百分位数值，请改用 `percentileContOver`。

## 语法
<a name="percentileContOver-function-syntax"></a>

```
percentileContOver (
    measure
  , percentile-n
  , [partition-by, …]
  , calculation-level
)
```

## Arguments
<a name="percentileContOver-function-arguments"></a>

 *度量*   
指定用于计算百分位数的数值。参数必须是一个度量或指标。计算中将忽略 Null。

 *percentile-n*   
百分位数值可以是任何介于 0-100 的数字常数。百分比值 50 计算度量的中值。

 *分区依据*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。如果包含多个单词，则将列表中的每个字段括在 \$1 \$1（大括号）内。整个列表括在 []（方括号）内。

 *计算等级*   
 指定在哪里执行与计算顺序相关的计算。支持三种计算等级：  
+ PRE\$1FILTER
+ PRE\$1AGG
+ POST\$1AGG\$1FILTER（默认）– 要使用此计算等级，请在 `measure` 上指定聚合，例如 `sum(measure)`。
在可视化中进行聚合之前应用 PRE\$1FILTER 和 PRE\$1AGG。对于这两个计算等级，您无法在计算字段表达式中的 `measure` 上指定聚合。要了解有关计算级别及其适用时间的更多信息，请参阅 [Amazon Quick 中的评估顺序和 Quick](https://docs.aws.amazon.com/quicksight/latest/user/order-of-evaluation-quicksight.html) [中的使用级别感知计算](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations.html)。

## 返回值
<a name="percentileContOver-function-return-type"></a>

函数的结果为数字。

## percentileContOver 的示例
<a name="percentileContOver-examples"></a>

以下示例有助于解释 percentileContOver 工作原理。

**Example 比较中值的计算等级**  
以下示例使用不同的计算等级和 `percentileContOver` 函数显示维度（类别）的中值。百分位数为 50。数据集按区域字段进行筛选。每个计算字段的代码如下所示：  
+ `example = left( category, 1 )`（一个简化示例。）
+ `pre_agg = percentileContOver ( {Revenue} , 50 , [ example ] , PRE_AGG)`
+ `pre_filter = percentileContOver ( {Revenue} , 50 , [ example ] , PRE_FILTER) `
+ `post_agg_filter = percentileContOver ( sum ( {Revenue} ) , 50 , [ example ], POST_AGG_FILTER )`

```
example   pre_filter     pre_agg      post_agg_filter
------------------------------------------------------
0            106,728     119,667            4,117,579
1            102,898      95,946            2,307,547
2             97,807      93,963              554,570  
3            101,043     112,585            2,709,057
4             96,533      99,214            3,598,358
5            106,293      97,296            1,875,648
6             97,118      69,159            1,320,672
7            100,201      90,557              969,807
```

# percentileDiscOver
<a name="percentileDiscOver-function"></a>

`percentileDiscOver` 函数根据 `measure` 中的实际数字计算百分位数。其使用字段井中应用的分组和排序。结果按指定计算等级的指定维度划分。`percentileOver` 函数是 `percentileDiscOver` 的别名。

使用此函数回答以下问题：此百分位数中存在哪些实际数据点？ 要返回数据集中存在的最接近的百分位数值，请使用 `percentileDiscOver`。要返回数据集中可能不存在的精确的百分位数值，请改用 `percentileContOver`。

## 语法
<a name="percentileDiscOver-function-syntax"></a>

```
percentileDiscOver (
     measure
   , percentile-n
   , [partition-by, …]
   , calculation-level
)
```

## Arguments
<a name="percentileDiscOver-function-arguments"></a>

 *度量*   
指定用于计算百分位数的数值。参数必须是一个度量或指标。计算中将忽略 Null。

 *percentile-n*   
百分位数值可以是任何介于 0-100 的数字常数。百分比值 50 计算度量的中值。

 *分区依据*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。如果包含多个单词，则将列表中的每个字段括在 \$1 \$1（大括号）内。整个列表括在 []（方括号）内。

 *计算等级*   
 指定在哪里执行与计算顺序相关的计算。支持三种计算等级：  
+ PRE\$1FILTER
+ PRE\$1AGG
+ POST\$1AGG\$1FILTER（默认）– 要使用此计算等级，需要在 `measure` 上指定聚合，例如 `sum(measure)`。
在可视化中进行聚合之前应用 PRE\$1FILTER 和 PRE\$1AGG。对于这两个计算等级，您无法在计算字段表达式中的 `measure` 上指定聚合。要了解有关计算级别及其适用时间的更多信息，请参阅 [Amazon Quick 中的评估顺序和 Quick](https://docs.aws.amazon.com/quicksight/latest/user/order-of-evaluation-quicksight.html) [中的使用级别感知计算](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations.html)。

## 返回值
<a name="percentileDiscOver-function-return-type"></a>

函数的结果为数字。

## percentileDiscOver 的示例
<a name="percentileDiscOver-examples"></a>

以下示例有助于解释 percentileDiscOver 工作原理。

**Example 比较中值的计算等级**  
以下示例使用不同的计算等级和 `percentileDiscOver` 函数显示维度（类别）的中值。百分位数为 50。数据集按区域字段进行筛选。每个计算字段的代码如下所示：  
+ `example = left( category, 1 )`（一个简化示例。）
+ `pre_agg = percentileDiscOver ( {Revenue} , 50 , [ example ] , PRE_AGG)`
+ `pre_filter = percentileDiscOver ( {Revenue} , 50 , [ example ] , PRE_FILTER) `
+ `post_agg_filter = percentileDiscOver ( sum ( {Revenue} ) , 50 , [ example ], POST_AGG_FILTER )`

```
example   pre_filter     pre_agg      post_agg_filter
------------------------------------------------------
0            106,728     119,667            4,117,579
1            102,898      95,946            2,307,547
2             97,629      92,046              554,570  
3            100,867     112,585            2,709,057
4             96,416      96,649            3,598,358
5            106,293      97,296            1,875,648
6             97,118      64,395            1,320,672
7             99,915      90,557              969,807
```

**Example 中值**  
以下示例计算按 `City` 和 `State` 分区的 `Sales` 的中值（第 50 个百分位数）。  

```
percentileDiscOver
(
  Sales, 
  50,
  [City, State]
)
```
以下示例计算按 `Customer Region` 分区的 `sum({Billed Amount})` 的第 98 个百分位数。表计算中的字段位于视觉对象的字段井中。  

```
percentileDiscOver
(
  sum({Billed Amount}), 
  98,
  [{Customer Region}]
)
```
以下屏幕截图显示这两个示例在图表上的样子。  

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/percentilOver-50-98.png)


# percentOfTotal
<a name="percentOfTotal-function"></a>

`percentOfTotal` 函数根据指定的维度计算度量在总数中所占的百分比。

## 语法
<a name="percentOfTotal-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
percentOfTotal
(
     measure 
     ,[ partition_field, ... ] 
)
```

## 参数
<a name="percentOfTotal-function-arguments"></a>

 *度量*   
要查看总数百分比的聚合度量。目前，`percentOfTotal` 不支持 `distinct count` 聚合。

 *分区字段*  
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

## 示例
<a name="percentOfTotal-function-example"></a>

以下示例创建一个计算以计算每个 `State` 在总数 `Sales` 中所占的百分比。

```
percentOfTotal
(
     sum(Sales), 
     [State]
)
```

以下示例计算特定 `Billed Amount` 在总数 `Billed Amount` 中所占的百分比（按 `[{Service Line} ASC]` 分区）。表计算中的字段位于视觉对象的字段井中。

```
percentOfTotal
(
     sum( {Billed Amount} ), 
     [{Service Line}]
)
```

以下屏幕截图显示了示例的结果。红色突出显示部分显示值为“`Billing`”的分区字段具有三个条目，每个区域一个条目。此服务行的总账单金额拆分为三个百分比，合计为 100%。这些百分比进行四舍五入，它们之和可能并不总是恰好为 100%。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/percentOfTotal.png)


# periodOverPeriodDifference
<a name="periodOverPeriodDifference-function"></a>

`periodOverPeriodDifference` 函数计算按期间粒度和偏移量指定的两个不同时间段内的度量差异。与差异计算不同，此函数使用基于日期的偏移量而不是固定大小的偏移量。这样可以确保仅比较正确日期，即使数据集中缺少数据点也是如此。

## 语法
<a name="periodOverPeriodDifference-function-syntax"></a>

```
periodOverPeriodDifference(
	measure, 
	date, 
	period, 
	offset)
```

## Arguments
<a name="periodOverPeriodDifference-function-arguments"></a>

 *度量*   
要对其执行 periodOverPeriod计算的聚合度量。

 *dateTime*   
我们计算 Period-Over-Period计算所依据的日期维度。

 *时段*   
（可选）您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。  
默认值为视觉对象日期维度粒度。

 *offset*   
（可选）偏移量可以是正整数或负整数，表示要与之比较的前一时段（按周期指定）。例如，偏移量为 1 的季度周期表示与上一季度进行比较。  
默认值是 1。

## 示例
<a name="periodOverPeriodDifference-function-example"></a>

以下示例使用计算字段 `PeriodOverPeriod` 来显示昨天的销售额差异

```
periodOverPeriodDifference(sum(Sales), {Order Date})
```

![\[这是示例计算的收益图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/MonthOverMonthDifference.png)


以下示例使用计算字段 `PeriodOverPeriod` 来显示前两个月的销售额差异。以下示例比较 `Mar2020` 和 `Jan2020` 的销售额。

```
periodOverPeriodDifference(sum(Sales),{Order Date}, MONTH, 1)
```

![\[这是示例计算的收益图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/MonthOverMonthDifference2.png)


# periodOverPeriodLastValue
<a name="periodOverPeriodLastValue-function"></a>

`periodOverPeriodLastValue` 函数计算按期间粒度和偏移量指定的上一个时间段中度量的最后一个（上一个）值。此函数使用基于日期的偏移量而不是固定大小的偏移量。这样可以确保仅比较正确日期，即使数据集中缺少数据点也是如此。

## 语法
<a name="periodOverPeriodLastValue-function-syntax"></a>

```
periodOverPeriodLastValue(
	measure, 
	date, 
	period, 
	offset)
```

## Arguments
<a name="periodOverPeriodLastValue-function-arguments"></a>

 *度量*   
要查看差值的聚合度量。

 *date*   
计算 periodOverPeriod计算所依据的日期维度。

 *时段*   
（可选）您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。  
此参数默认为视觉对象聚合的粒度

 *offset*   
（可选）偏移量可以是正整数或负整数，表示要与之比较的前一时段（按周期指定）。例如，偏移量为 1 的季度周期表示与上一季度进行比较。  
此参数默认值为 1。

## 示例
<a name="periodOverPeriodLastValue-function-example"></a>

以下示例使用视觉对象维度粒度和默认偏移量 1 计算销售额的逐月值。

```
periodOverPeriodLastValue(sum(Sales), {Order Date})
```

以下示例使用 `MONTH` 的固定粒度和固定偏移量 1 计算销售额的逐月值。

```
periodOverPeriodLastValue(sum(Sales), {Order Date},MONTH, 1)
```

![\[这是示例计算的收益图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/MonthOverMonthLastValue.png)


# periodOverPeriodPercentDifference
<a name="periodOverPeriodPercentDifference-function"></a>

`periodOverPeriodPercentDifference` 函数计算按期间粒度和偏移量指定的两个不同时间段内的百分比差异。与 percentDifference 不同，此函数使用基于日期的偏移量而不是固定大小的偏移量。这样可以确保仅比较正确日期，即使数据集中缺少数据点也是如此。

## 语法
<a name="periodOverPeriodPercentDifference-function-syntax"></a>

```
periodOverPeriodPercentDifference(
	measure, 
	date, 
	period, 
	offset)
```

## Arguments
<a name="periodOverPeriodPercentDifference-function-arguments"></a>

 *度量*   
要查看差值的聚合度量。

 *date*   
计算 periodOverPeriod计算所依据的日期维度。

 *时段*   
（可选）您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。  
此参数默认为视觉对象聚合的粒度

 *offset*   
（可选）偏移量可以是正整数或负整数，表示要与之比较的前一时段（按周期指定）。例如，偏移量为 1 的季度周期表示与上一季度进行比较。  
此参数默认值为 1。

## 示例
<a name="periodOverPeriodPercentDifference-function-example"></a>

以下示例使用视觉对象维度粒度和默认偏移量 1 计算销售额的逐月百分比差异。

```
periodOverPeriodPercentDifference(sum(Sales),{Order Date})
```

以下示例使用 `MONTH` 的固定粒度和固定偏移量 1 计算销售额的逐月百分比差异。

```
periodOverPeriodPercentDifference(sum(Sales), {Order Date}, MONTH, 1)
```

![\[这是示例计算的收益图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/MonthOverMonthPercentDifference.png)


# periodToDateAvgOverTime
<a name="periodToDateAvgOverTime-function"></a>

`periodToDateAvgOverTime` 函数计算给定时间粒度（例如一个季度）到某个时间点的平均值。

## 语法
<a name="periodToDateAvgOverTime-function-syntax"></a>

```
periodToDateAvgOverTime(
	measure, 
	dateTime,
	period)
```

## Arguments
<a name="periodToDateAvgOverTime-function-arguments"></a>

 *度量*   
要对其执行计算的聚合度量

 *dateTime*   
计算 PeriodOverTime计算所依据的日期维度。

 *时段*   
（可选）您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。  
默认值为视觉对象日期维度粒度。

## 示例
<a name="periodToDateAvgOverTime-function-example"></a>

以下函数计算逐月平均付款金额。

```
periodToDateAvgOverTime(sum({fare_amount}), pickupDatetime, MONTH)
```

![\[这是示例计算的结果图像（附插图）。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/PTDAvgOverTimeResults.png)


# periodToDateCountOverTime
<a name="periodToDateCountOverTime-function"></a>

`periodToDateCountOverTime` 函数计算给定时间粒度（例如一个季度）到某个时间点的维度或度量的计数。

## 语法
<a name="periodToDateCountOverTime-function-syntax"></a>

```
periodToDateCountOverTime(
	measure, 
	dateTime, 
	period)
```

## Arguments
<a name="periodToDateCountOverTime-function-arguments"></a>

 *度量*   
要对其执行计算的聚合度量

 *dateTime*   
计算 PeriodOverTime计算所依据的日期维度。

 *时段*   
（可选）您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。  
默认值为视觉对象日期维度粒度。

## 示例
<a name="periodToDateCountOverTime-function-example"></a>

以下示例计算逐月供应商数量。

```
periodToDateCountOverTime(count(vendorid), pickupDatetime, MONTH)
```

![\[这是示例计算的结果图像（附插图）。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/PTDCountOverTimeResults.png)


# periodToDateMaxOverTime
<a name="periodToDateMaxOverTime-function"></a>

`periodToDateMaxOverTime` 函数计算给定时间粒度（例如一个季度）到某个时间点的度量的最大值。

## 语法
<a name="periodToDateMaxOverTime-function-syntax"></a>

```
periodToDateMaxOverTime(
	measure, 
	dateTime, 
	period)
```

## Arguments
<a name="periodToDateMaxOverTime-function-arguments"></a>

 *度量*   
要对其执行计算的聚合度量

 *dateTime*   
计算 PeriodOverTime计算所依据的日期维度。

 *时段*   
（可选）您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。  
默认值为视觉对象日期维度粒度。

## 示例
<a name="periodToDateMaxOverTime-function-example"></a>

以下示例计算逐月最高付款金额。

```
periodToDatemaxOverTime(max({fare_amount}), pickupDatetime, MONTH)
```

![\[这是示例计算的结果图像（附插图）。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/PTDMaxOverTimeResults.png)


# periodToDateMinOverTime
<a name="periodToDateMinOverTime-function"></a>

`periodToDateMinOverTime` 函数计算给定时间粒度（例如一个季度）到某个时间点的度量的最小值。

## 语法
<a name="periodToDateMinOverTime-function-syntax"></a>

```
periodToDateMinOverTime(
	measure, 
	dateTime, 
	period)
```

## Arguments
<a name="periodToDateMinOverTime-function-arguments"></a>

 *度量*   
要对其执行计算的聚合度量

 *dateTime*   
计算 PeriodOverTime计算所依据的日期维度。

 *时段*   
（可选）您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。  
默认值为视觉对象日期维度粒度。

## 示例
<a name="periodToDateMinOverTime-function-example"></a>

以下示例计算逐月最低付款金额。

```
periodToDateMinOverTime(min({fare_amount}), pickupDatetime, MONTH)
```

![\[这是示例计算的结果图像（附插图）。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/PTDMinOverTimeResults.png)


# periodToDateSumOverTime
<a name="periodToDateSumOverTime-function"></a>

`periodToDateSumOverTime` 函数计算给定时间粒度（例如一个季度）到某个时间点的度量的总和。

## 语法
<a name="periodToDateSumOverTime-function-syntax"></a>

```
periodToDateSumOverTime(
	measure, 
	dateTime, 
	period)
```

## Arguments
<a name="periodToDateSumOverTime-function-arguments"></a>

 *度量*   
要对其执行计算的聚合度量

 *dateTime*   
计算 PeriodOverTime计算所依据的日期维度。

 *时段*   
（可选）您进行计算的时间段。`YEAR` 的粒度表示 `YearToDate` 计算，`Quarter` 表示 `QuarterToDate` 等等。有效的粒度包括 `YEAR`、`QUARTER`、`MONTH`、`WEEK`、`DAY`、`HOUR`、`MINUTE` 和 `SECONDS`。  
默认值为视觉对象日期维度粒度。

## 示例
<a name="periodToDateSumOverTime-function-example"></a>

以下函数返回逐月付款总金额。

```
periodToDateSumOverTime(sum({fare_amount}), pickupDatetime, MONTH)
```

![\[这是示例计算的结果图像（附插图）。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/PTDSumOverTime-example-results.png)


# stdevOver
<a name="stdevOver-function"></a>

`stdevOver` 函数根据样本计算按选定的一个属性或多个属性划分的指定度量的标准偏差。

## 语法
<a name="stdevOver-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
stdevOver
(
      measure 
     ,[ partition_field, ... ] 
     ,calculation level 
)
```

## 参数
<a name="stdevOver-function-arguments"></a>

*度量*   
要进行计算的度量，例如 `sum({Sales Amt})`。如果计算级别设置为 `NULL` 或 `POST_AGG_FILTER`，则使用聚合。如果计算级别设置为 `PRE_FILTER` 或 `PRE_AGG`，请不要使用聚合。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *计算级别*  
（可选）指定要使用的计算级别：  
+ **`PRE_FILTER`** – 在数据集筛选条件之前计算预筛选条件计算。
+ **`PRE_AGG`** – 在将聚合以及前 *N* 个和后 N 个筛选条件应用于视觉对象之前计算预聚合计算。
+ **`POST_AGG_FILTER`** –（默认）在显示视觉对象时计算表格计算。
留空时此值默认为 `POST_AGG_FILTER`。有关更多信息，请参阅在 Quick [中使用关卡感知计算。](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations.html)

## 示例
<a name="stdevOver-function-example"></a>

以下示例根据样本计算按 `City` 和 `State` 划分的 `sum(Sales)` 的标准差。

```
stdevOver
(
     sum(Sales), 
     [City, State]
)
```

以下示例根据样本计算 `Customer Region` 的 `Billed Amount` 的标准差。表计算中的字段位于视觉对象的字段井中。

```
stdevOver
(
     sum({Billed Amount}),
     [{Customer Region}]
)
```

# stdevpOver
<a name="stdevpOver-function"></a>

`stdevpOver` 函数根据总体偏差计算按选定的一个属性或多个属性划分的指定度量的标准偏差。

## 语法
<a name="stdevpOver-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
stdevpOver
(
     measure 
     ,[ partition_field, ... ] 
     ,calculation level 
)
```

## 参数
<a name="stdevpOver-function-arguments"></a>

*度量*   
要进行计算的度量，例如 `sum({Sales Amt})`。如果计算级别设置为 `NULL` 或 `POST_AGG_FILTER`，则使用聚合。如果计算级别设置为 `PRE_FILTER` 或 `PRE_AGG`，请不要使用聚合。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *计算级别*  
（可选）指定要使用的计算级别：  
+ **`PRE_FILTER`** – 在数据集筛选条件之前计算预筛选条件计算。
+ **`PRE_AGG`** – 在将聚合以及前 *N* 个和后 N 个筛选条件应用于视觉对象之前计算预聚合计算。
+ **`POST_AGG_FILTER`** –（默认）在显示视觉对象时计算表格计算。
留空时此值默认为 `POST_AGG_FILTER`。有关更多信息，请参阅在 Quick [中使用关卡感知计算。](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations.html)

## 示例
<a name="stdevpOver-function-example"></a>

以下示例根据总体偏差计算按 `City` 和 `State` 划分的 `sum(Sales)` 的标准差。

```
stdevpOver
(
     sum(Sales), 
     [City, State]
)
```

以下示例根据总体偏差计算 `Customer Region` 的 `Billed Amount` 的标准差。表计算中的字段位于视觉对象的字段井中。

```
stdevpOver
(
     sum({Billed Amount}),
     [{Customer Region}]
)
```

# varOver
<a name="varOver-function"></a>

`varOver` 函数根据样本计算按选定的一个属性或多个属性划分的指定度量的方差。

## 语法
<a name="varOver-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
varOver
(
     measure 
     ,[ partition_field, ... ] 
     ,calculation level 
)
```

## 参数
<a name="varOver-function-arguments"></a>

*度量*   
要进行计算的度量，例如 `sum({Sales Amt})`。如果计算级别设置为 `NULL` 或 `POST_AGG_FILTER`，则使用聚合。如果计算级别设置为 `PRE_FILTER` 或 `PRE_AGG`，请不要使用聚合。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *计算级别*  
（可选）指定要使用的计算级别：  
+ **`PRE_FILTER`** – 在数据集筛选条件之前计算预筛选条件计算。
+ **`PRE_AGG`** – 在将聚合以及前 *N* 个和后 N 个筛选条件应用于视觉对象之前计算预聚合计算。
+ **`POST_AGG_FILTER`** –（默认）在显示视觉对象时计算表格计算。
留空时此值默认为 `POST_AGG_FILTER`。有关更多信息，请参阅在 Quick [中使用关卡感知计算。](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations.html)

## 示例
<a name="varOver-function-example"></a>

以下示例根据样本计算按 `City` 和 `State` 划分的 `sum(Sales)` 的方差。

```
varOver
(
     sum(Sales), 
     [City, State]
)
```

以下示例根据样本计算 `Customer Region` 的 `Billed Amount` 的方差。表计算中的字段位于视觉对象的字段井中。

```
varOver
(
     sum({Billed Amount}),
     [{Customer Region}]
)
```

# varpOver
<a name="varpOver-function"></a>

`varpOver` 函数根据总体偏差计算按选定的一个属性或多个属性划分的指定度量的方差。

## 语法
<a name="varpOver-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
varpOver
(
     measure 
     ,[ partition_field, ... ] 
     ,calculation level 
)
```

## 参数
<a name="varpOver-function-arguments"></a>

*度量*   
要进行计算的度量，例如 `sum({Sales Amt})`。如果计算级别设置为 `NULL` 或 `POST_AGG_FILTER`，则使用聚合。如果计算级别设置为 `PRE_FILTER` 或 `PRE_AGG`，请不要使用聚合。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *计算级别*  
（可选）指定要使用的计算级别：  
+ **`PRE_FILTER`** – 在数据集筛选条件之前计算预筛选条件计算。
+ **`PRE_AGG`** – 在将聚合以及前 *N* 个和后 N 个筛选条件应用于视觉对象之前计算预聚合计算。
+ **`POST_AGG_FILTER`** –（默认）在显示视觉对象时计算表格计算。
留空时此值默认为 `POST_AGG_FILTER`。有关更多信息，请参阅在 Quick [中使用关卡感知计算。](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations.html)

## 示例
<a name="varpOver-function-example"></a>

以下示例根据总体偏差计算按 `City` 和 `State` 划分的 `sum(Sales)` 的方差。

```
varpOver
(
     sum(Sales), 
     [City, State]
)
```

以下示例根据总体偏差计算 `Customer Region` 的 `Billed Amount` 的方差。表计算中的字段位于视觉对象的字段井中。

```
varpOver
(
     sum({Billed Amount}),
     [{Customer Region}]
)
```

# sumOver
<a name="sumOver-function"></a>

 `sumOver` 函数计算按维度列表划分的度量的总和。

## 语法
<a name="sumOver-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
sumOver
(
     measure 
     ,[ partition_field, ... ] 
     ,calculation level 
)
```

## 参数
<a name="sumOver-function-arguments"></a>

*度量*   
要进行计算的度量，例如 `sum({Sales Amt})`。如果计算级别设置为 `NULL` 或 `POST_AGG_FILTER`，则使用聚合。如果计算级别设置为 `PRE_FILTER` 或 `PRE_AGG`，请不要使用聚合。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *计算级别*  
（可选）指定要使用的计算级别：  
+ **`PRE_FILTER`** – 在数据集筛选条件之前计算预筛选条件计算。
+ **`PRE_AGG`** – 在将聚合以及前 *N* 个和后 N 个筛选条件应用于视觉对象之前计算预聚合计算。
+ **`POST_AGG_FILTER`** –（默认）在显示视觉对象时计算表格计算。
留空时此值默认为 `POST_AGG_FILTER`。有关更多信息，请参阅在 Quick [中使用关卡感知计算。](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations.html)

## 示例
<a name="sumOver-function-example"></a>

以下示例计算 `sum(Sales)` 的总和（按 `City` 和 `State` 分区）。

```
sumOver
(
     sum(Sales), 
     [City, State]
)
```

以下示例计算 `Customer Region` 中的 `Billed Amount` 的总和。表计算中的字段位于视觉对象的字段井中。

```
sumOver
(
     sum({Billed Amount}),
     [{Customer Region}]
)
```

以下屏幕截图显示了示例的结果。通过添加 `Customer Segment`，将为 `Customer Region` 计算每个类别的计费金额总和，并显示在计算字段中。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/sumOver.png)


# denseRank
<a name="denseRank-function"></a>

`denseRank` 函数计算某个度量或维度相对于指定分区的排名。它仅对每个项目计数一次（忽略重复的值），并分配“无孔的”排名，以使重复的值具有相同的排名。

## 语法
<a name="denseRank-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
denseRank
(
  [ sort_order_field ASC_or_DESC, ... ] 
  ,[ partition_field, ... ] 
)
```

## 参数
<a name="denseRank-function-arguments"></a>

 *排序顺序字段*   
要在对数据排序时使用的一个或多个聚合字段（度量和/或维度），以逗号分隔。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *计算级别*  
（可选）指定要使用的计算级别：  
+ **`PRE_FILTER`** – 在数据集筛选条件之前计算预筛选条件计算。
+ **`PRE_AGG`** – 在将聚合以及前 *N* 个和后 N 个筛选条件应用于视觉对象之前计算预聚合计算。
+ **`POST_AGG_FILTER`** –（默认）在显示视觉对象时计算表格计算。
留空时此值默认为 `POST_AGG_FILTER`。有关更多信息，请参阅在 Quick [中使用关卡感知计算。](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations.html)

## 示例
<a name="denseRank-function-example"></a>

以下示例根据降序排序顺序按 `State` 和 `City` 对 `max(Sales)` 进行密集排名。将为具有相同 `max(Sales)` 的任何城市分配相同的排名，并且下一个城市紧靠这些城市进行连续排名。例如，如果三个城市具有相同的排名，则第四个城市排名第二。

```
denseRank
(
  [max(Sales) DESC], 
  [State, City]
)
```

以下示例根据降序排序顺序按 `State` 对 `max(Sales)` 进行密集排名。将为具有相同 `max(Sales)` 的任何州/省分配相同的排名，并且下一个州/省紧靠这些州/省进行连续排名。例如，如果三个州/省具有相同的排名，则第四个州/省排名第二。

```
denseRank
(
  [max(Sales) DESC], 
  [State]
)
```

# rank
<a name="rank-function"></a>

`rank` 函数计算某个度量或维度相对于指定分区的排名。它计算一次每个项目（即使是重复的），并分配一个“带孔的”排名以考虑到重复的值。

## 语法
<a name="rank-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
rank
(
  [ sort_order_field ASC_or_DESC, ... ]
  ,[ partition_field, ... ] 
)
```

## 参数
<a name="rank-function-arguments"></a>

 *排序顺序字段*   
要在对数据排序时使用的一个或多个聚合度量和维度（以逗号分隔）。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *计算级别*  
（可选）指定要使用的计算级别：  
+ **`PRE_FILTER`** – 在数据集筛选条件之前计算预筛选条件计算。
+ **`PRE_AGG`** – 在将聚合以及前 *N* 个和后 N 个筛选条件应用于视觉对象之前计算预聚合计算。
+ **`POST_AGG_FILTER`** –（默认）在显示视觉对象时计算表格计算。
留空时此值默认为 `POST_AGG_FILTER`。有关更多信息，请参阅在 Quick [中使用关卡感知计算。](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations.html)

## 示例
<a name="rank-function-example"></a>

以下示例根据降序排序顺序按 `State` 和 `City` 在 `State` **WA** 中对 `max(Sales)` 进行排名。将为具有相同 `max(Sales)` 的任何城市分配相同的排名，但下一个排名包括所有以前存在的排名计数。例如，如果三个城市具有相同的排名，则第四个城市排名第四。

```
rank
(
  [max(Sales) DESC], 
  [State, City]
)
```

以下示例根据升序排序顺序按 `State` 对 `max(Sales)` 进行排名。将为具有相同 `max(Sales)` 的任何州/省分配相同的排名，但下一个排名包括所有以前存在的排名计数。例如，如果三个州/省具有相同的排名，则第四个州/省排名第四。

```
rank
(
  [max(Sales) ASC], 
  [State]
)
```

以下示例按总数 `Billed Amount` 对 `Customer Region` 进行排名。表计算中的字段位于视觉对象的字段井中。

```
rank(
  [sum({Billed Amount}) DESC]
)
```

在以下屏幕截图中显示了示例的结果以及总数 `Billed Amount`，因此，您可以了解每个区域是如何进行排名的。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/rankCalc.png)


# percentileRank
<a name="percentileRank-function"></a>

`percentileRank` 函数计算某个度量或维度相对于指定分区的百分位数排名。百分位数排名值 (*x*) 表示当前项目高于指定分区中值的*x*百分比。百分位数排名值范围从 0（包含）到 100（不包含）。

## 语法
<a name="percentileRank-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
percentileRank
(
      [ sort_order_field ASC_or_DESC, ... ] 
     ,[ {partition_field}, ... ]
)
```

## 参数
<a name="percentileRank-function-arguments"></a>

 *排序顺序字段*   
要在对数据排序时使用的一个或多个聚合度量和维度（以逗号分隔）。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *计算级别*  
（可选）指定要使用的计算级别：  
+ **`PRE_FILTER`** – 在数据集筛选条件之前计算预筛选条件计算。
+ **`PRE_AGG`** – 在将聚合以及前 *N* 个和后 N 个筛选条件应用于视觉对象之前计算预聚合计算。
+ **`POST_AGG_FILTER`** –（默认）在显示视觉对象时计算表格计算。
留空时此值默认为 `POST_AGG_FILTER`。有关更多信息，请参阅在 Quick [中使用关卡感知计算。](https://docs.aws.amazon.com/quicksight/latest/user/level-aware-calculations.html)

## 示例
<a name="percentileRank-function-example"></a>

以下示例按 `State` 的降序顺序执行 `max(Sales)` 的百分位数排名。

```
percentileRank
(
     [max(Sales) DESC], 
     [State]
)
```

以下示例按总和 `Billed Amount` 执行 `Customer Region` 的百分位数排名。表计算中的字段位于视觉对象的字段井中。

```
percentileRank(
     [sum({Billed Amount}) DESC],
     [{Customer Region}]
)
```

在以下屏幕截图中显示了示例的结果以及总数 `Billed Amount`，因此，您可以了解每个区域是如何进行比较的。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/percentileRank.png)


# runningAvg
<a name="runningAvg-function"></a>

`runningAvg` 函数计算基于指定维度和排序顺序的度量的运行平均值。

## 语法
<a name="runningAvg-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
runningAvg
(
  measure 
  ,[ sortorder_field ASC_or_DESC, ... ]  
  ,[ partition_field, ... ] 
)
```

## 参数
<a name="runningAvg-function-arguments"></a>

 *度量*   
要查看其运行平均值的聚合度量。

 *排序顺序字段*   
要在对数据排序时使用的一个或多个度量和维度（以逗号分隔）。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *分区字段*  
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

## 示例
<a name="runningAvg-function-example"></a>

以下示例计算 `sum(Sales)` 的运行平均值（按 `Sales` 排序，并按 `City` 和 `State` 分区）。

```
runningAvg
(
  sum(Sales), 
  [Sales ASC], 
  [City, State]
)
```

以下示例计算 `Billed Amount` 的运行平均值（按月排序 (`[truncDate("MM",Date) ASC]`)）。表计算中的字段位于视觉对象的字段井中。

```
runningAvg
(
  sum({Billed Amount}),
  [truncDate("MM",Date) ASC]
)
```

# runningCount
<a name="runningCount-function"></a>

`runningCount` 函数计算基于指定维度和排序顺序的度量或维度的运行计数。

## 语法
<a name="runningCount-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
runningCount
(
  measure_or_dimension 
  ,[ sortorder_field ASC_or_DESC, ... ]  
  ,[ partition_field, ... ] 
)
```

## 参数
<a name="runningCount-function-arguments"></a>

 *measure or dimension*   
要查看其运行计数的聚合度量或维度。

 *排序顺序字段*   
要在对数据排序时使用的一个或多个度量和维度（以逗号分隔）。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *分区字段*  
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

## 示例
<a name="runningCount-function-example"></a>

以下示例计算 `sum(Sales)` 的运行计数（按 `Sales` 排序，并按 `City` 和 `State` 分区）。

```
runningCount
(
  sum(Sales), 
  [Sales ASC], 
  [City, State]
)
```

以下示例计算 `Billed Amount` 的运行计数（按月排序 (`[truncDate("MM",Date) ASC]`)）。表计算中的字段位于视觉对象的字段井中。

```
runningCount
(
  sum({Billed Amount}),
  [truncDate("MM",Date) ASC]
)
```

# runningMax
<a name="runningMax-function"></a>

`runningMax` 函数计算基于指定维度和排序顺序的度量的运行最大值。

## 语法
<a name="runningMax-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
runningMax
(
  measure 
  ,[ sortorder_field ASC_or_DESC, ... ]  
  ,[ partition_field, ... ] 
)
```

## 参数
<a name="runningMax-function-arguments"></a>

 *度量*   
要查看其运行最大值的聚合度量。

 *排序顺序字段*   
要在对数据排序时使用的一个或多个度量和维度（以逗号分隔）。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *分区字段*  
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

## 示例
<a name="runningMax-function-example"></a>

以下示例计算 `sum(Sales)` 的运行最大值（按 `Sales` 排序，并按 `City` 和 `State` 分区）。

```
runningMax
(
  sum(Sales), 
  [Sales ASC], 
  [City, State]
)
```

以下示例计算 `Billed Amount` 的运行最大值（按月排序 (`[truncDate("MM",Date) ASC]`)）。表计算中的字段位于视觉对象的字段井中。

```
runningMax
(
  sum({Billed Amount}),
  [truncDate("MM",Date) ASC]
)
```

# runningMin
<a name="runningMin-function"></a>

`runningMin` 函数计算基于指定维度和排序顺序的度量的运行最小值。

## 语法
<a name="runningMin-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
runningMin
(
  measure 
  ,[ sortorder_field ASC_or_DESC, ... ]  
  ,[ partition_field, ... ] 
)
```

## 参数
<a name="runningMin-function-arguments"></a>

 *度量*   
要查看其运行最小值的聚合度量。

 *排序顺序字段*   
要在对数据排序时使用的一个或多个度量和维度（以逗号分隔）。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *分区字段*  
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

## 示例
<a name="runningMin-function-example"></a>

以下示例计算 `sum(Sales)` 的运行最小值（按 `Sales` 排序，并按 `City` 和 `State` 分区）。

```
runningMin
(
  sum(Sales), 
  [Sales ASC], 
  [City, State]
)
```

以下示例计算 `Billed Amount` 的运行最小值（按月排序 (`[truncDate("MM",Date) ASC]`)）。表计算中的字段位于视觉对象的字段井中。

```
runningMin
(
  sum({Billed Amount}),
  [truncDate("MM",Date) ASC]
)
```

# runningSum
<a name="runningSum-function"></a>

`runningSum` 函数计算基于指定维度和排序顺序的度量的运行总和。

## 语法
<a name="runningSum-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
runningSum
(
  measure 
  ,[ sortorder_field ASC_or_DESC, ... ]  
  ,[ partition_field, ... ] 
)
```

## 参数
<a name="runningSum-function-arguments"></a>

 *度量*   
要查看运行总和的聚合度量。

 *排序顺序字段*   
要在对数据排序时使用的一个或多个度量和维度（以逗号分隔）。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

 *分区字段*  
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

## 示例
<a name="runningSum-function-example"></a>

以下示例计算 `sum(Sales)` 的运行总和（按 `Sales` 排序，并按 `City` 和 `State` 分区）。

```
runningSum
(
  sum(Sales), 
  [Sales ASC], 
  [City, State]
)
```

以下示例计算 `Billed Amount` 的运行总和（按月排序 (`[truncDate("MM",Date) ASC]`)）。表计算中的字段位于视觉对象的字段井中。

```
runningSum
(
  sum({Billed Amount}),
  [truncDate("MM",Date) ASC]
)
```

以下屏幕截图显示了示例的结果。红色标签显示每个金额如何与下一金额相加 (`a + b = c`)，从而得出新的总额。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/runningSum.png)


# firstValue
<a name="firstValue-function"></a>

`firstValue` 函数计算按指定属性划分和排序的聚合度量或维度的第一个值。

## 语法
<a name="firstValue-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
firstValue
	(
	     aggregated measure or dimension, 
	     [ sort_attribute ASC_or_DESC, ... ],
	     [ partition_by_attribute, ... ] 
	)
```

## 参数
<a name="firstValue-function-arguments"></a>

*聚合度量或维度*   
要查看其第一个值的聚合度量或维度。

*sort attribute*   
要在对数据排序时使用的一个或多个聚合字段（度量和/或维度），以逗号分隔。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果列表中的某个字段不止包含一个单词，则用 \$1 \$1 （大括号）将该字段括起来。整个列表括在 []（方括号）内。

*按属性划分*  
（可选）要在划分时使用的一个或多个度量或维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

## 示例
<a name="firstValue-function-example"></a>

以下示例计算第一个 `Destination Airport`，按 `Flight Date` 排序，按 `Flight Date` 的升序顺序和 `Origin Airport` 划分。

```
firstValue(
    {Destination Airport}
    [{Flight Date} ASC],
    [
        {Origin Airport},
        {Flight Date}
    ]
)
```

# lastValue
<a name="lastValue-function"></a>

`lastValue` 函数计算按指定属性划分和排序的聚合度量或维度的最后一个值。

## 语法
<a name="lastValue-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
lastValue
	(
	     aggregated measure or dimension,
	     [ sort_attribute ASC_or_DESC, ... ],
	     [ partition_by_attribute, ... ] 
	)
```

## 参数
<a name="lastValue-function-arguments"></a>

*聚合度量或维度*   
要查看其最后一个值的聚合度量或维度。

*sort attribute*   
要在对数据排序时使用的一个或多个聚合字段（度量和/或维度），以逗号分隔。您可以指定升序 (`ASC`) 或降序 (`DESC`) 排序顺序。  
如果列表中的某个字段不止包含一个单词，则用 \$1 \$1 （大括号）将该字段括起来。整个列表括在 []（方括号）内。

*按属性划分*  
（可选）要在划分时使用的一个或多个度量或维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

## 示例
<a name="lastValue-function-example"></a>

以下示例计算 `Destination Airport` 的最后一个值。该计算按 `Flight Date` 值排序，并按 `Flight Date` 值的升序排序和 `Origin Airport` 值划分。

```
lastValue(
    [{Destination Airport}],
    [{Flight Date} ASC],
    [
        {Origin Airport},
    	truncDate('DAY', {Flight Date})
    ]
)
```

# windowAvg
<a name="windowAvg-function"></a>

`windowAvg` 函数计算按指定属性划分和排序的自定义窗口中聚合度量的平均值。通常，在视觉对象显示指标和日期字段的时间序列上使用自定义窗口函数。例如，您可以使用 `windowAvg` 来计算移动平均值，这通常用于消除折线图中的噪声。

MySQL 8 之前和 MariaDB 10.2 之前的版本不支持窗口函数。

## 语法
<a name="windowAvg-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
windowAvg
	(
	     measure 
            , [sort_order_field ASC/DESC, ...]
            , start_index
            , end_index
	     ,[ partition_field, ... ] 
	)
```

## 参数
<a name="windowAvg-function-arguments"></a>

*度量*   
要获取其平均值的聚合度量，例如，`sum({Revenue})`。

*sort attribute*   
要在对数据排序时使用的一个或多个聚合字段（度量和/或维度），以逗号分隔。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果列表中的某个字段不止包含一个单词，则用 \$1 \$1 （大括号）将该字段括起来。整个列表括在 []（方括号）内。

*start index*   
起始索引 (start index) 是一个正整数，指示当前行之上的 *n* 行。起始索引 计算当前行上方的可用数据点，而不是计算实际时间段。如果数据稀疏（例如，缺少几个月或几年），请相应地调整索引。

*end index*   
结束索引 (end index) 是一个正整数，指示当前行之下的 *n* 行。结束索引 计算当前行下方的可用数据点，而不是计算实际时间段。如果数据稀疏（例如，缺少几个月或几年），请相应地调整索引。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果列表中的某个字段不止包含一个单词，则用 \$1 \$1 （大括号）将该字段括起来。整个列表括在 []（方括号）内。

## 示例
<a name="windowAvg-function-example"></a>

以下示例计算 `sum(Revenue)` 的移动平均值（按 `SaleDate` 分区）。计算包括当前行上方的 3 行和下面的 2 行。

```
windowAvg
	(
	     sum(Revenue), 
	     [SaleDate ASC],
	     3,
            2
	)
```

下面的屏幕截图显示了此移动平均值示例的结果。sum(Revenue) 字段添加到图表中，以显示该收入与收入移动平均值之间的差异。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/windowAvg.png)


# windowCount
<a name="windowCount-function"></a>

`windowCount` 函数计算按指定属性划分和排序的自定义窗口中聚合度量或维度的计数。通常，在视觉对象显示指标和日期字段的时间序列上使用自定义窗口函数。

MySQL 8 之前和 MariaDB 10.2 之前的版本不支持窗口函数。

## 语法
<a name="windowCount-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
windowCount
	(
	     measure_or_dimension 
            , [sort_order_field ASC/DESC, ...]
            , start_index
            , end_index
	     ,[ partition_field, ... ] 
	)
```

## 参数
<a name="windowCount-function-arguments"></a>

*measure or dimension*   
要获取其平均值的聚合度量，例如，`sum({Revenue})`。

*sort attribute*   
要在对数据排序时使用的一个或多个聚合字段（度量和/或维度），以逗号分隔。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果列表中的某个字段不止包含一个单词，则用 \$1 \$1 （大括号）将该字段括起来。整个列表括在 []（方括号）内。

*start index*   
起始索引 (start index) 是一个正整数，指示当前行之上的 *n* 行。起始索引 计算当前行上方的可用数据点，而不是计算实际时间段。如果数据稀疏（例如，缺少几个月或几年），请相应地调整索引。

*end index*   
结束索引 (end index) 是一个正整数，指示当前行之下的 *n* 行。结束索引 计算当前行下方的可用数据点，而不是计算实际时间段。如果数据稀疏（例如，缺少几个月或几年），请相应地调整索引。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果列表中的某个字段不止包含一个单词，则用 \$1 \$1 （大括号）将该字段括起来。整个列表括在 []（方括号）内。

## 示例
<a name="windowCount-function-example"></a>

以下示例计算 `sum(Revenue)` 的移动计数（按 `SaleDate` 分区）。计算包括当前行上方的 3 行和下面的 2 行。

```
windowCount
	(
	     sum(Revenue), 
	     [SaleDate ASC],
	     3,
               2
	)
```

# windowMax
<a name="windowMax-function"></a>

`windowMax` 函数计算按指定属性划分和排序的自定义窗口中聚合度量的最大值。通常，在视觉对象显示指标和日期字段的时间序列上使用自定义窗口函数。您可以使用 `windowMax` 来帮助确定指标在一段时间内的最大值。

MySQL 8 之前和 MariaDB 10.2 之前的版本不支持窗口函数。

## 语法
<a name="windowMax-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
windowMax
	(
	     measure 
            , [sort_order_field ASC/DESC, ...]
            , start_index
            , end_index
	     ,[ partition_field, ... ] 
	)
```

## 参数
<a name="windowMax-function-arguments"></a>

*度量*   
要获取其平均值的聚合度量，例如，`sum({Revenue})`。

*sort attribute*   
要在对数据排序时使用的一个或多个聚合字段（度量和/或维度），以逗号分隔。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果列表中的某个字段不止包含一个单词，则用 \$1 \$1 （大括号）将该字段括起来。整个列表括在 []（方括号）内。

*start index*   
起始索引 (start index) 是一个正整数，指示当前行之上的 *n* 行。起始索引 计算当前行上方的可用数据点，而不是计算实际时间段。如果数据稀疏（例如，缺少几个月或几年），请相应地调整索引。

*end index*   
结束索引 (end index) 是一个正整数，指示当前行之下的 *n* 行。结束索引 计算当前行下方的可用数据点，而不是计算实际时间段。如果数据稀疏（例如，缺少几个月或几年），请相应地调整索引。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果包含多个单词，则将列表中的每个字段括在 \$1\$1（大括号）内。整个列表括在 []（方括号）内。

## 示例
<a name="windowMax-function-example"></a>

以下示例计算按 `SaleDate` 分区的 `sum(Revenue)` 的随后 12 个月最大值。计算包括当前行上方的 12 行和下面的 0 行。

```
windowMax
	(
	     sum(Revenue), 
	     [SaleDate ASC],
	     12,
               0
	)
```

以下屏幕截图显示了此随后 12 个月示例的结果。sum(Revenue) 字段添加到了图表中，以显示该收入与随后 12 个月最大收入之间的差异。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/windowMax.png)


# windowMin
<a name="windowMin-function"></a>

`windowMin` 函数计算按指定属性划分和排序的自定义窗口中聚合度量的最小值。通常，在视觉对象显示指标和日期字段的时间序列上使用自定义窗口函数。您可以使用 `windowMin` 来帮助确定指标在一段时间内的最小值。

MySQL 8 之前和 MariaDB 10.2 之前的版本不支持窗口函数。

## 语法
<a name="windowMin-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
windowMin
	(
	     measure 
            , [sort_order_field ASC/DESC, ...]
            , start_index
            , end_index
	     ,[ partition_field, ... ] 
	)
```

## 参数
<a name="windowMin-function-arguments"></a>

*度量*   
要获取其平均值的聚合度量，例如，`sum({Revenue})`。

*sort attribute*   
要在对数据排序时使用的一个或多个聚合字段（度量和/或维度），以逗号分隔。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果列表中的某个字段不止包含一个单词，则用 \$1 \$1 （大括号）将该字段括起来。整个列表括在 []（方括号）内。

*start index*   
起始索引 (start index) 是一个正整数，指示当前行之上的 *n* 行。起始索引 计算当前行上方的可用数据点，而不是计算实际时间段。如果数据稀疏（例如，缺少几个月或几年），请相应地调整索引。

*end index*   
结束索引 (end index) 是一个正整数，指示当前行之下的 *n* 行。结束索引 计算当前行下方的可用数据点，而不是计算实际时间段。如果数据稀疏（例如，缺少几个月或几年），请相应地调整索引。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果列表中的某个字段不止包含一个单词，则用 \$1 \$1 （大括号）将该字段括起来。整个列表括在 []（方括号）内。

## 示例
<a name="windowMin-function-example"></a>

以下示例计算按 `SaleDate` 分区的 `sum(Revenue)` 的随后 12 个月最小值。计算包括当前行上方的 12 行和下面的 0 行。

```
windowMin
	(
	     sum(Revenue), 
	     [SaleDate ASC],
	     12,
               0
	)
```

以下屏幕截图显示了此随后 12 个月示例的结果。sum(Revenue) 字段添加到了图表中，以显示该收入与随后 12 个月最小收入之间的差异。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/windowMin.png)


# windowSum
<a name="windowSum-function"></a>

`windowSum` 函数计算按指定属性划分和排序的自定义窗口中聚合度量的总和。通常，在视觉对象显示指标和日期字段的时间序列上使用自定义窗口函数。

MySQL 8 之前和 MariaDB 10.2 之前的版本不支持窗口函数。

## 语法
<a name="windowSum-function-syntax"></a>

括号是必需的。要查看哪些参数是可选的，请参阅以下说明。

```
windowSum
	(
	     measure 
            , [sort_order_field ASC/DESC, ...]
            , start_index
            , end_index
	     ,[ partition_field, ... ] 
	)
```

## 参数
<a name="windowSum-function-arguments"></a>

*度量*   
要获取其总和的聚合度量，例如，`sum({Revenue})`。  
对于引擎 MySQL、MariaDB 和兼容 MySQL 的 Amazon Aurora，查找索引仅限为 1。MySQL 8 之前和 MariaDB 10.2 之前的版本不支持窗口函数。

*sort attribute*   
要在对数据排序时使用的一个或多个聚合字段（度量和/或维度），以逗号分隔。您可以指定升序 (**ASC**) 或降序 (**DESC**) 排序顺序。  
如果列表中的某个字段不止包含一个单词，则用 \$1 \$1 （大括号）将该字段括起来。整个列表括在 []（方括号）内。

*start index*   
起始索引 (start index) 是一个正整数，指示当前行之上的 *n* 行。起始索引 计算当前行上方的可用数据点，而不是计算实际时间段。如果数据稀疏（例如，缺少几个月或几年），请相应地调整索引。

*end index*   
结束索引 (end index) 是一个正整数，指示当前行之下的 *n* 行。结束索引 计算当前行下方的可用数据点，而不是计算实际时间段。如果数据稀疏（例如，缺少几个月或几年），请相应地调整索引。

 *分区字段*   
（可选）要在分区时使用的一个或多个维度（以逗号分隔）。  
如果列表中的某个字段不止包含一个单词，则用 \$1 \$1 （大括号）将该字段括起来。整个列表括在 []（方括号）内。

## 示例
<a name="windowSum-function-example"></a>

以下示例计算 `sum(Revenue)` 的移动总和（按 `SaleDate` 排序）。计算包括当前行上方的 2 行和前面的 1 行。

```
windowSum
	(
	     sum(Revenue), 
	     [SaleDate ASC],
	     2,
            1
	)
```

以下示例显示随后 12 个月的总和。

```
windowSum(sum(Revenue),[SaleDate ASC],12,0)
```

下面的屏幕截图显示了此随后 12 个月总和示例的结果。`sum(Revenue)` 字段添加到图表中，以显示该收入与随后 12 个月总和收入之间的差异。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/windowSum.png)


# 联接数据
<a name="joining-data"></a>

您可以使用 Amazon Quick Sight 中的联接界面来联接来自一个或多个数据源的对象。通过使用 Amazon Quick Sight 加入数据，您可以合并不同的数据，而无需复制来自不同来源的数据。

## 联接数据集的类型
<a name="join-dataset-types"></a>

在两个 Quick Sight *逻辑表*之间执行联接，其中每个逻辑表都包含有关如何获取数据的信息。在 Quick Sight 中编辑数据集时，页面上半部分的联接图将每个逻辑表显示为矩形块。

Quick Sight 中有两种不同类型的联接数据集：同源数据集和跨源数据集。数据集没有任何联接或满足以下所有条件时，该数据集视为同源数据集：
+ 如果任何逻辑表引用了 Quick Sight 数据源：
  + 此数据集中的所有逻辑表都必须引用相同的 Quick Sight 数据源。如果两个单独的 Quick Sight 数据源引用同一个底层数据库，则不适用。它必须是完全相同的 Quick Sight 数据源。有关使用单个数据来源的更多信息，请参阅 [使用现有的数据来源创建数据集](create-a-data-set-existing.md)。
+ 如果任何逻辑表引用的是作为父数据集的 Quick Sight 数据集：
  + 父数据集必须使用直接查询。
  + 父数据集必须引用相同的 Quick Sight 数据源。

如果不满足上述条件，则数据集被视为跨源联接数据集。

## 关于联接数据集的事实
<a name="join-faqs"></a>

同源和跨源数据集联接都有以下限制。

### 联接数据集中可以包含的表数上限是多少？
<a name="w2aac35c13c25b9b9b5"></a>

所有联接数据集最多可以包含 32 个表。

### 联接数据能有多大？
<a name="w2aac35c13c25b9b9b7"></a>

允许的最大联接大小由所使用的查询模式和查询引擎决定。下表提供了有关要联接的表的不同大小限制的信息。大小限制适用于所有辅助表的总和。主表没有联接大小限制。
+ **同源表**-当表源自单个查询数据源时，Quick Sight 对联接大小不施加任何限制。这不会覆盖源查询引擎可能存在的联接大小限制。
+ **跨源数据集** - 这种类型的联接包含来自不同数据来源但未存储在 SPICE 中的表。对于这些类型的联接，Quick Sight 会自动识别数据集中最大的表。所有其他辅助表的总大小必须小于 1 GB。
+ **存储在 SPICE 中的数据集** - 这种类型的联接包含全部提取到 SPICE 的表。此联接中所有辅助表的总大小不能超过 20 GB。

有关 SPICE 数据库大小计算的更多信息，请参阅 [估计 SPICE 数据集的大小](spice.md#spice-capacity-formula)。

### 联接数据集可以使用直接查询吗？
<a name="w2aac35c13c25b9b9b9"></a>

假设使用直接查询没有其他限制，则同源数据集支持直接查询。例如，S3 数据来源不支持直接查询，因此同源的 S3 数据集仍必须使用 SPICE。

跨源数据集必须使用 SPICE。

### 联接中可以使用计算字段吗？
<a name="w2aac35c13c25b9b9c11"></a>

所有联接数据集都可以使用计算字段，但不能在任何 on 子句中使用计算字段。

### 联接中可以使用地理数据吗？
<a name="w2aac35c13c25b9b9c13"></a>

同源数据集支持地理数据类型，但不能在任何 on 子句中使用地理字段。

跨源数据集不支持任何形式的地理数据。

有关跨数据源联接表的一些示例，请参阅 AWS 大数据博客上的 “[在 Amazon Quick Sight 上跨数据源联接](https://aws.amazon.com/blogs/big-data/joining-across-data-sources-on-amazon-quicksight/)” 一文。

## 创建联接
<a name="create-a-join"></a>

要联接表以便在数据集中使用，请按照以下过程操作。在开始之前，请导入或连接到您的数据。您可以在 Amazon Quick Sight 支持的任何数据源之间创建联接，但物联网 (IoT) 数据除外。例如，您可以在 Amazon S3 存储桶中添加逗号分隔值 (.csv) 文件、表、视图、SQL 查询或 JSON 对象。

**添加一个或多个联接**

1. 打开您希望使用的数据集。

1. （可选）在开始之前，请根据数据样本决定是否要禁用自动生成的预览。要将其关闭，请选择右上角的**自动预览**。默认情况下，此选项处于打开状态。

1. 如果您尚未选择查询模式，请选择**查询模式**。

   选择 **SPICE** 将您的数据集存储在 [SPICE](spice.md) 中，或者选择**直接查询**以每次提取实时数据。如果您的数据集包含一个或多个手动上传的文件，则您的数据集将自动存储在 SPICE 中。

   如果您愿意 **SPICE**，则数据会被提取到 Quick Sight 中。使用数据集的视觉对象在 SPICE 中运行查询，而不是在数据库上运行查询。

   如果选择**直接查询**，则不会将数据摄取到 SPICE。使用数据集的视觉对象数据库上运行查询，而不是在 SPICE 中运行查询。

   如果选择**查询模式**，请确保在联接中设置唯一键（如果适用），以提高加载视觉对象时的性能。

1. 在数据准备页面上，选择**添加数据**。

1. 在打开的**添加数据**页面中，选择以下选项之一，然后完成以下步骤：
   + 从数据集中添加数据：

     1. 选择**数据集**。

     1. 从列表中选择一个数据集。

     1. 选定**选择**。
   + 从数据来源添加数据：

     1. 选择**数据来源**。

     1. 从列表中选择一个数据来源。

     1. 选定**选择**。

     1. 从列表中选择一个表。

     1. 选定**选择**。
   + 通过多次添加表来创建自联接。名称后面会出现一个计数器。例如 **Product**、**Product (2)** 和 **Product (3)**。**字段**或**筛选条件**部分中的字段名称包括相同的计数器，以便您查看字段来自表的哪个实例。
   + 选择**上传文件**，然后选择要联接的文件以添加新文件。

1. （可选）选择**使用自定义 SQL** 打开查询编辑器并为 SQL 数据来源编写查询。

1. （可选）添加数据后，通过选择每个表格的菜单图标与其进行交互。通过拖放表来重新排列。

   将出现一个带有红点的图标，以表示您需要配置此联接。对于尚未配置的联接，会出现两个红点。要创建联接，请选择第一个联接配置图标。

1. （可选）要更改现有联接，请通过选择两个表之间的联接图标来重新打开**联接配置**。

   随即将打开**联接配置**窗格。在联接界面上，指定联接类型以及用于联接表的字段。

1. 在屏幕的底部，您可以看到选项，用于将一个表中的字段设置为等于另一个表中的字段。

   1. 在 **Join clauses (联接子句)** 部分中，选择各个表的连接列。

     （可选）如果您选择的表在多个列上联接，请选择 **Add a new join clause (添加新的联接子句)**。执行此操作会将另一行添加到联接子句，这样您可以指定下一组要联接的列。重复该过程，直到您指定了两个数据对象的所有联接列。

1. 在**联接配置**窗格中，选择要应用的联接类型。如果联接字段是其中一个或两个表的唯一键，请启用唯一键设置。唯一键仅适用于直接查询，不适用于 SPICE 数据。

   有关联接的更多信息，请参阅 [联接类型](#join-types)。

1. 选择 **Apply (应用)** 以确认您的选择。

   要取消而不进行任何更改，请选择**取消**。

1. 工作区中的联接图标会发生变化以显示新的关系。

1. （可选）在**字段**部分中，您可以使用每个字段的菜单执行以下一项或多项操作：
   + 向地理空间字段**添加层次结构**。
   + **包含**或**排除**字段。
   + 针对字段**编辑名称和描述**。
   + **更改数据类型**。
   + **添加计算**（计算字段）。
   + **将访问权限限制为仅我可访问**，因此只有您能看见。将字段添加到已在使用的数据集时，这会非常有用。

1. （可选）在**筛选条件**部分中，您可以添加或编辑筛选条件。有关更多信息，请参阅 [使用 Amazon Quick Sight 筛选数据](adding-a-filter.md)。

## 联接类型
<a name="join-types"></a>

Amazon Quick Sight 支持以下联接类型：
+ 内部联接
+ 左外部联接和右外部联接
+ 完全外部联接

我们来深入了解一下这些联接类型对数据所执行的操作。对于示例数据，我们使用以下名为 `widget` 和 `safety rating` 表。

```
SELECT * FROM safety-rating

rating_id	safety_rating
1		    A+
2		    A
3		    A-
4		    B+
5		    B

SELECT * FROM WIDGET

widget_id	   widget	safety_rating_id
1		    WidgetA		3
2		    WidgetB		1
3		    WidgetC		1
4		    WidgetD		2
5		    WidgetE
6		    WidgetF		5
7		    WidgetG
```

### 内部联接
<a name="join-inner"></a>

如果您只想查看两个表之间存在匹配项的数据，请使用内部联接。例如，假设您对 **safety-rating** 和 **widget** 表执行内部联接。

在下面的结果集中，将删除没有安全评级的小部件，并删除没有关联小部件的安全评级。只包含完全匹配的行。

```
SELECT * FROM safety-rating
INNER JOIN widget
ON safety_rating.rating_id = widget.safety_rating_id

rating_id    safety_rating    widget_id    widget        safety_rating_id
3	        A-                1        WidgetA        3
1	        A+                2        WidgetB        1
1	        A+                3        WidgetC        1
2	        A                 4        WidgetD        2
5	        B                 6        WidgetF        5
```

### 左外部联接和右外部联接
<a name="join-left-or-right"></a>

这也称为左外部联接或右外部联接。如果要查看一个表中的所有数据，而只想查看另一个表中的匹配行，请使用向左或向右外连接。

在图形界面中，您可以查看哪个表位于左侧或右侧。在 SQL 语句中，第一个表被视为位于左侧。因此，选择左外部联接相对于右外部联接，仅取决于表在查询工具中的排列。

例如，假设您对（左表）和 `safety-rating``widgets`（右表）执行左外连接。在这种情况下，将返回所有 `safety-rating` 行并仅返回匹配的 `widget` 行。在结果集中，您可以看到没有匹配数据的空白。

```
SELECT * FROM safety-rating
LEFT OUTER JOIN widget
ON safety_rating.rating_id = widget.safety_rating_id

rating_id    safety_rating    widget_id   widget          safety_rating_id
1	        A+                2        WidgetB   	1
1	        A+                3        WidgetC   	1
2	        A                 4        WidgetD   	2
3	        A-                1        WidgetA   	3
4	        B+
5	        B                 6        WidgetF   	5
```

如果您改为使用右外连接，请按相同的顺序调用表，`safety-rating`因此在左边`widgets`，在右边。在这种情况下，只返回匹配的 `safety-rating` 行并返回所有 `widget` 行。在结果集中，您可以看到没有匹配数据的空白。

```
SELECT * FROM safety-rating
RIGHT OUTER JOIN widget
ON safety_rating.rating_id = widget.safety_rating_id

rating_id    safety_rating    widget_id   widget          safety_rating_id
3	        A-                1	WidgetA   	 3
1	        A+                2	WidgetB   	 1
1	        A+                3	WidgetC   	 1
2	        A                 4	WidgetD   	 2
                                  5       WidgetE
5	        B                 6	WidgetF   	 5
                                  7       WidgetG
```

### 完全外部联接
<a name="join-full-outer"></a>

有时候也仅称为外部联接，不过此术语可以指代左外部联接、右外部联接或完全外部联接。为了定义含义，我们使用完整名称：完全外部联接。

使用完全外联接查看匹配的数据，以及两个表中不匹配的数据。联接的类型包括来自两个表中的所有行。例如，如果您对 `safety-rating` 和 `widget` 表执行完全外部联接，则会返回所有行。行在匹配的位置对齐，所有额外的数据包含在单独的行中。在结果集中，您可以看到没有匹配数据的空白。

```
SELECT * FROM safety-rating
FULL OUTER JOIN widget
ON safety_rating.rating_id = widget.safety_rating_id

rating_id    safety_rating    widget_id   widget         safety_rating_id
1	        A+                2	WidgetB   	1
1	        A+                3	WidgetC   	1
2	        A                 4	WidgetD   	2
3	        A-                1	WidgetA   	3
4	        B+
5	        B                 6	WidgetF   	5
                                  5	WidgetE
                                  7	WidgetG
```

# 准备数据字段以便在 Amazon Quick Sight 中进行分析
<a name="preparing-data-fields"></a>

在开始分析和可视化数据之前，您可以准备数据集中的字段（列）以进行分析。您可以编辑字段名称和描述、更改字段的数据类型、为字段设置向下钻取层次结构等。

使用以下主题准备数据集中的字段。

**Topics**
+ [编辑字段名称和描述](changing-a-field-name.md)
+ [将字段设置为维度或度量](setting-dimension-or-measure.md)
+ [更改字段数据类型](changing-a-field-data-type.md)
+ [在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md)
+ [选择字段](selecting-fields.md)
+ [在 Amazon 中将字段整理到文件夹中 QuickSight](organizing-fields-folder.md)
+ [映射和联接字段](mapping-and-joining-fields.md)

# 编辑字段名称和描述
<a name="changing-a-field-name"></a>

您可以更改数据来源提供的任何字段名称和描述。如果您更改在计算字段中使用的字段的名称，请确保还要在计算字段函数中更改该名称。否则，该函数将会失败。

**更改字段名称或描述**

1. 在数据准备页面的**字段**窗格中，选择要更改的字段上的三点图标。然后选择**编辑名称和描述**。

1. 输入要更改的新名称或描述，然后选择**应用**。

您也可以在数据准备页面上更改字段的名称和描述。为此，请在该页面下半部分的**数据集**表中选择要更改的字段的列标题。然后在那里进行更改。

# 将字段设置为维度或度量
<a name="setting-dimension-or-measure"></a>

在 **Field list** 窗格中，维度字段具有蓝色图标，度量字段具有绿色图标。*维度*是文本或日期字段，可以是项目（如产品）或与度量相关的属性。您可以使用维度对这些项目或属性（如销售数据的销售日期）进行分区。*度量*是用于度量、比较和聚合的数值。

在某些情况下，Quick Sight 会将字段解释为要将其用作维度（或反之亦然）的度量。如果是这样的话，您可以更改该字段的设置。

如果更改字段的度量或维度设置，则使用该数据集的分析中所有视觉对象的度量或维度设置也会随之更改。但是，不会更改数据集中的度量或维度设置。

## 更改字段的度量或维度设置
<a name="change-dimension-or-measure"></a>

使用以下过程更改字段的维度或度量设置

**更改字段的维度或度量设置**

1. 在**字段列表**窗格中，将鼠标指针悬停在要更改的字段上。

1. 选择字段名称右侧的选择器图标，然后根据需要选择 **Convert to dimension** 或 **Convert to measure**。

# 更改字段数据类型
<a name="changing-a-field-data-type"></a>

当 Quick Sight 检索数据时，它会根据字段中的数据为每个字段分配一种数据类型。可能的数据类型有：
+ 日期 – 日期数据类型用于支持格式的日期数据。有关 Quick Sight 支持的日期格式的信息，请参阅[数据来源限额](data-source-limits.md)。
+ 小数 – 小数数据类型用于需要一个或多个小数位精度的数值数据，例如 18.23。Decimal 数据类型支持在小数点右侧最多包含四个小数位的值。在两种情况下，比此小数位数更大的值会截断至小数点后第四位。一种是在数据准备或分析中显示这些值时，一种是将这些值导入 Quick Sight 时。例如，13.00049 将被截断为 13.0004。
+ 地理空间 – 地理空间数据类型用于地理空间数据（例如经度和纬度）或城市和国家/地区。
+ 整数 – 整数数据类型用于仅包含整数的数值数据，例如 39。
+ 字符串 – 字符串数据类型用于非日期字母数字数据。

Quick Sight 读取列中一小部分行样本以确定数据类型。在小部分样本量中最常出现的数据类型是建议的数据类型。在某些情况下，主要包含数字的列中可能存在空值（被 Quick Sight 视为字符串）。在这些情况下，可能是字符串数据类型是样本行集中最常见的类型。您可以手动修改列的数据类型使其成为整数。使用以下过程了解操作方法。

## 在数据准备期间更改字段数据类型
<a name="changing-a-field-data-type-prep"></a>

在数据准备期间，您可以更改数据来源中任何字段的数据类型。在**更改数据类型**菜单上，您可以将不包含聚合的计算字段更改为地理空间类型。您可以通过直接修改计算字段的表达式对计算字段的数据类型进行其他更改。Quick Sight 会根据您选择的数据类型转换字段数据。将跳过包含与该数据类型不兼容的数据的行。例如，假设您将以下字段从字符串转换为整数。

```
10020
36803
14267a
98457
78216b
```

将跳过在该字段中包含字母数字字符的所有记录，如下所示。

```
10020
36803
98457
```

如果您的数据库数据集的字段不受 Quick Sight 支持，请在数据准备期间使用 SQL 查询。然后，使用 `CAST` 或 `CONVERT` 命令 (取决于源数据库支持的命令) 更改字段数据类型。有关在数据准备期间添加 SQL 查询的更多信息，请参阅[使用 SQL 自定义数据](adding-a-SQL-query.md)。有关 Quick Sight 如何解释不同源数据类型的更多信息，请参阅[外部数据来源支持的数据类型](supported-data-types-and-values.md#supported-data-types)。

您可能具有作为维度而非指标的数值字段，例如邮政编码和大多数 ID 号。在这些情况下，在数据准备期间为其指定字符串数据类型是非常有用的。这样做可以让 Quick Sight 明白，它们对执行数学计算没有用，只能与`Count`函数聚合。有关 Quick Sight 如何使用维度和度量的更多信息，请参阅[将字段设置为维度或度量](setting-dimension-or-measure.md)。

在 [SPICE](spice.md) 中，默认截断从数字转换为整数的数值。如果您要改为舍入数字，可以使用 [`round`](round-function.md) 函数创建一个计算字段。要查看数字在摄取到 SPICE 前是否已四舍五入或截断，请检查您的数据库引擎。

**在数据准备期间更改字段数据类型**

1. 从 Quick Sight 主页中，选择左侧**的数据**。在**数据**选项卡中，选择所需的数据集，然后选择**编辑数据集**。

1. 在数据预览窗格中，选择要更改的字段下方的数据类型图标。

1. 选择目标数据类型。系统会列出当前所用类型以外的数据类型。

## 在分析中更改字段数据类型
<a name="changing-an-analysis-field-data-type"></a>

您可以使用 **Field list** 窗格、视觉对象字段井或视觉对象编辑器更改分析上下文中数字字段的数据类型。数字字段默认显示为数字，但您可以选择将它们显示为货币或百分比。您不能更改字符串或日期字段的数据类型。

如果更改分析中字段的数据类型，则使用该数据集的分析中所有视觉对象的数据类型也会随之更改。但是，不会更改数据集中的度量或维度设置。

**注意**  
如果您在使用透视表视觉对象，在某些情况下，应用表计算会更改单元格值的数据类型。如果数据类型在应用的计算中没有意义，会发生这种类型的更改。  
例如，假设您向修改为使用货币数据类型的数值字段应用 `Rank` 函数。在这种情况下，单元格值将显示为数字，而不是货币。同样，如果应用 `Percent difference` 函数，单元格值将显示为百分比而不是货币。

**更改字段的数据类型**

1. 请选择以下选项之一：
   + 在**字段列表**窗格中，将鼠标指针悬停在要更改的数值字段上。然后选择字段名称右侧的选择器图标。
   + 在包含与要更改的数值字段关联的视觉对象编辑器的任何视觉对象上，选择该视觉对象编辑器。
   + 展开**字段井**窗格，然后选择与要更改的数值字段关联的字段井。

1. 选择 **Show as (显示为)**，然后选择 **Number (数字)**、**Currency (货币)** 或 **Percent (百分比)**。

# 在 Quick Sight 中向视觉数据添加向下钻取
<a name="adding-drill-downs"></a>

数据透视表之外的所有视觉对象类型，均能够创建视觉元素的字段层次结构。您可以深入该层次结构，查看不同级别的数据。例如，您可以在条形图上将“国家/地区”、“省/自治区/直辖市”以及“城市”字段与 X 轴关联。然后，您可以向下或向上钻取，查看每个等级的数据。在向下钻取每个级别时，显示的数据将根据您向下钻取到的字段中的值进行细化。例如，如果您向下钻取到加利福尼亚州，将会看到加利福尼亚州的所有城市的数据。

不同的视觉对象类型，用于创建向下钻取的字段井也不同。请参考每种视觉对象类型的相关主题，了解其向下钻取支持的更多信息。

当您将日期字段与视觉对象的向下钻取字段井关联时，将自动为日期添加向下钻取功能。在这种情况下，您可以随时向上和向下钻取各个日期粒度级别。如果在这些数据集中定义了地理空间分组，也会为这些分组自动添加向下钻取功能。

使用下表确定支持每种视觉对象类型的向下钻取的字段井/视觉对象编辑器。


****  

| 视觉对象类型 | 字段井或视觉对象编辑器 | 
| --- | --- | 
| 条形图（所有水平条形图） | Y axis (Y 轴) 和 Group/Color (组/颜色) | 
| 条形图（所有垂直条形图） | X axis (X 轴) 和 Group/Color (组/颜色) | 
| 组合图 (全部) | X axis (X 轴) 和 Group/Color (组/颜色) | 
| 地理空间图 | Geospatial (地理空间) 和 Color (颜色) | 
| 热图 | Rows (行) 和 Columns (列) | 
| KPIs | Trend Group (趋势组) | 
| 折线图 (全部) | X axis (X 轴) 和 Color (颜色) | 
| 饼图 | Group/Color (组/颜色) | 
| 散点图 | Group/Color (组/颜色) | 
| 树形图 | Group by (分组依据) | 

**重要**  
表或数据透视表不支持向下钻取。

## 添加向下钻取
<a name="add-drill-downs"></a>

要向视觉对象添加向下钻取级别，请按照以下过程操作。

**将向下钻取等级添加到视觉对象**

1. 在分析页面上，选择要添加向下钻取的视觉对象。

1. 将字段项拖到**字段井**中。

1. 如果数据集具有定义的层次结构，可以将整个层次结构作为一个整体拖动到字段井中。例如地理空间或坐标数据。在这种情况下，不需要按照剩余步骤操作。

   如果没有预定义的层次结构，可以按照剩余步骤所述在分析中创建一个。

1. 根据视觉对象类型，将要在向下钻取层次结构中使用的字段拖到适当的字段井上。确保拖动字段的标签显示 **Add drill-down layer**。根据您希望拖动的字段在所创建的层次结构中的位置，将其置于现有字段的上方或下方。

1. 继续操作，添加所需的各个层次结构级别。要从层次结构中删除一个字段，请选择该字段，然后选择 **Remove**。

1. 要向下或向上钻取以查看层次结构的不同级别的数据，请在视觉对象（如线或条）上选择一个元素，然后选择 **Drill down to <lower level> (向下钻取到 <较低级别>** 或 **Drill up to <higher level> (向上钻取到 <较高级别>**。在本示例中，可以从 `car-make` 级别向下钻取到 `car-model` 查看该级别的数据。如果从 `car-model`Ford** ** 向下钻取到 `car-make`，则只会看到该 car-make 中的 `car-model`。

   向下钻取到 `car-model` 级别后，可以进一步向下钻取以查看 `make-year` 数据，或向上返回 `car-make`。如果从表示 `make-year`Ranger** 的条向下钻取到 **，则只会看到相应车型的年份。

# 选择字段
<a name="selecting-fields"></a>

准备数据时，可以选择一个或多个字段以对其执行操作，例如将其排除或将其添加到文件夹。

要在“数据准备”窗格中选择一个或多个字段，请单击或点击左侧**字段**窗格中的一个或多个字段。然后，您可以选择字段名称右侧的字段菜单（三个点），然后选择要执行的操作。将对所有选定的字段上执行操作。

您可以在 **Fields** 窗格的顶部选择 **All** 或 **None**，同时选中或取消选中所有字段。

如果编辑一个数据集并排除在视觉对象中使用的字段，将会破坏该视觉对象。下次打开该分析时，您可以对视觉对象进行修复。

## 搜索字段
<a name="searching-for-a-field-data-prep"></a>

如果**字段**窗格中显示的字段过长，您可以通过在**搜索表**中输入搜索词来搜索并找到特定的字段。系统会显示名称中包含该搜索词的任何字段。

搜索不区分大小写，不支持通配符。选择搜索框右侧的取消图标 (**X**) 可返回并查看所有字段。

# 在 Amazon 中将字段整理到文件夹中 QuickSight
<a name="organizing-fields-folder"></a>

在 Quick Sight 中准备数据时，您可以使用文件夹为企业中的多位作者整理字段。将字段整理到文件夹和子文件夹中可以让作者更轻松地在数据集中查找和理解字段。

您可以在准备数据集或编辑数据集时创建文件夹。有关创建新数据集并进行准备的更多信息，请参阅[创建数据集](creating-data-sets.md)。有关打开现有数据集以准备数据的更多信息，请参阅[编辑数据集](edit-a-data-set.md)。

执行分析时，作者可以展开和折叠文件夹，在文件夹中搜索特定字段，并在文件夹菜单上查看您对文件夹的描述。文件夹按字母顺序在**字段**窗格的前面显示。

## 创建文件夹
<a name="organizing-fields-folder-create"></a>

使用以下过程在**字段**窗格中创建新文件夹。

**创建新文件夹**

1. 在数据准备页面的**字段**窗格中，选择三点图标，然后选择**添加到文件夹**。

   要一次选择多个字段，请在选择的同时按 Ctrl 键（Mac 上为 Command 键）。

1. 在出现的**添加到文件夹**页面上，选择**创建新文件夹**，然后输入新文件夹的名称。

1. 选择**应用**。

该文件夹显示在**字段**窗格的前面，包含您在其中选择的字段。文件夹中的字段按字母顺序显示。

## 创建子文件夹
<a name="organizing-fields-folder-subfolder"></a>

要在**字段**窗格中进一步整理数据字段，可以在父文件夹中创建子文件夹。

**创建子文件夹**

1. 在数据准备页面的**字段**窗格中，选择文件夹中已有字段的字段菜单，然后选择**移至文件夹**。

1. 在出现的**移至文件夹**页面上，选择**创建新文件夹**，然后输入新文件夹名称。

1. 选择**应用**。

子文件夹显示在字段列表前面的父文件夹内。子文件夹按字母顺序显示。

## 将字段添加到现有文件夹
<a name="organizing-fields-folder-add"></a>

使用以下过程在**字段**窗格中将字段添加到现有文件夹。

**将一个或多个字段添加到文件夹**

1. 在数据准备页面的**字段**窗格中，选择要添加到文件夹的字段。

   要一次选择多个字段，请在选择的同时按 Ctrl 键（Mac 上为 Command 键）。

1. 在字段菜单上，选择**添加到文件夹**。

1. 在出现的**添加到文件夹**页面上，为**现有文件夹**选择一个文件夹。

1. 选择**应用**。

一个或多个字段已添加到文件夹。

## 在文件夹之间移动字段
<a name="organizing-fields-folder-move"></a>

使用以下过程在**字段**窗格中的文件夹之间移动字段。

**在文件夹之间移动字段**

1. 在数据准备页面的**字段**窗格中，选择要移动到另一个文件夹的字段。

   要一次选择多个字段，请在选择的同时按 Ctrl 键（Mac 上为 Command 键）。

1. 在字段菜单上，选择**移至文件夹**。

1. 在出现的**移至文件夹**页面上，为**现有文件夹**选择一个文件夹。

1. 选择**应用**。

## 从文件夹中删除字段
<a name="organizing-fields-folder-remove"></a>

使用以下过程在**字段**窗格中的文件夹中删除字段。从文件夹中删除字段并不会删除该字段。

**从文件夹中删除字段**

1. 在数据准备页面的**字段**窗格中，选择要删除的字段。

1. 在字段菜单上，选择**从文件夹中删除**。

您选择的字段将从文件夹中删除，并按字母顺序放回字段列表中。

## 编辑文件夹名称并添加文件夹描述
<a name="organizing-fields-folder-edit"></a>

您可以编辑文件夹的名称或添加描述，以提供有关其中数据字段的上下文。文件夹名称显示在**字段**窗格中。执行分析时，作者在**字段**窗格中选择文件夹菜单时可以阅读文件夹的描述。

**编辑文件夹名称或编辑或添加文件夹描述**

1. 在数据准备页面的**字段**窗格中，选择要编辑的文件夹的文件夹菜单，然后选择**编辑名称和描述**。

1. 在显示的**编辑文件夹**页面上，执行以下操作：
   + 对于**名称**，输入文件夹的名称。
   + 对于**描述**，输入文件夹的描述。

1. 选择**应用**。

## 移动文件夹
<a name="organizing-fields-folder-move-folder"></a>

您可以在**字段**窗格中将文件夹和子文件夹移动到新文件夹或现有文件夹。

**移动文件夹**

1. 在数据准备页面的**字段**窗格中，在文件夹菜单上选择**移动文件夹**。

1. 在显示的**移动文件夹**页面上，执行以下操作：
   + 选择**创建新文件夹**，然后输入文件夹的名称。
   + 对于**现有文件夹**，选择一个文件夹。

1. 选择**应用**。

该文件夹出现在您在**字段**窗格中选择的文件夹中。

## 从字段窗格中删除文件夹
<a name="organizing-fields-folder-delete"></a>

使用以下过程从**字段**窗格删除文件夹。

**删除文件夹**

1. 在数据准备页面的**字段**窗格中，在文件夹菜单上选择**删除文件夹**。

1. 在显示的**是否删除文件夹？**页面中，选择**删除**。

该文件夹已从**字段**窗格中删除。文件夹中的任何字段都会按字母顺序放回字段列表中。删除文件夹不会将字段排除在视图之外，也不会从数据集中删除字段。

# 映射和联接字段
<a name="mapping-and-joining-fields"></a>

在 Quick Sight 中同时使用不同的数据集时，可以简化数据准备阶段映射字段或联接表格的过程。您应该已确认字段具有正确的数据类型和相应的字段名称。不过，如果您已知道将要一起使用的数据集，您可以执行一些额外的步骤以简化后面的工作。

## 映射字段
<a name="mapping-and-joining-fields-automatic"></a>

Quick Sight 可以在同一分析中的数据集之间自动映射字段。以下提示有助于让 Quick Sight 更轻松地在数据集之间自动映射字段，例如，如果您要跨数据集创建筛选操作：
+ 匹配的字段名称 – 字段名称必须完全匹配，大小写、空格或标点符号要完全相同。您可以重命名描述相同数据的字段，以便自动映射是准确的。
+ 匹配的数据类型 – 字段必须具有相同的数据类型才能自动进行映射。您可以在准备数据时更改数据类型。在该步骤中，您还可以确定是否需要筛选出任何具有不正确数据类型的数据。
+ 使用计算字段 – 您可以使用计算字段创建一个匹配字段，并为其指定正确的名称和数据类型以自动进行映射。

**注意**  
在具有自动映射后，您可以重命名字段而不会中断字段映射。不过，如果更改数据类型，则会中断映射。

有关跨数据集的筛选操作的字段映射的更多信息，请参阅[在 Amazon Quick Sight 中创建和编辑自定义操作](custom-actions.md)。

## 联接字段
<a name="mapping-and-joining-fields-manual"></a>

您可以在不同数据源（包括文件或数据库）中的数据之间创建联接。以下提示可以帮助您更轻松地联接不同文件或数据源中的数据：
+ 类似的字段名称 – 如果可以看到应匹配的内容，则可以轻松联接字段；例如，**Order ID** 和 **order-id** 似乎应该相同。不过，如果一个是工作订单，另一个是采购订单，则这些字段可能是不同的数据。如果可能，请确保要联接的文件和表具有字段名称，从而清楚地了解它们包含的数据。
+ 匹配的数据类型 – 字段必须具有相同的数据类型，然后才能联接。确保要联接的文件和表在联接字段中具有匹配的数据类型。您不能将计算字段用于联接。此外，您也不能联接两个现有的数据集。您可以直接访问源数据以创建联接的数据集。

有关跨数据源联接数据的更多信息，请参阅[联接数据](joining-data.md)。

# 使用 Amazon Quick Sight 筛选数据
<a name="adding-a-filter"></a>

您可以使用筛选条件优化数据集或分析中的数据。例如，您可以对区域字段创建筛选条件，以排除数据集中特定区域的数据。您也可以向分析添加筛选条件，例如对要包含在分析中任何视觉对象中的日期范围进行筛选。

在数据集中创建筛选条件时，该筛选条件将应用于整个数据集。根据该数据集创建的任何分析和后续控制面板都包含筛选条件。如果有人根据您的数据集创建了数据集，则筛选条件也位于新数据集中。

当您在分析中创建筛选条件时，该筛选条件仅适用于该分析以及您从中发布的任何控制面板。如果有人重复了您的分析，则筛选条件将保留在新分析中。在分析中，您可以将筛选范围限定为单个视觉对象、某些视觉对象、使用此数据集的所有视觉对象或所有适用的视觉对象。

此外，在分析中创建筛选条件时，可以向控制面板添加筛选条件控件。有关筛选条件控件的更多信息，请参阅 [向分析表添加筛选条件控件](filter-controls.md)。

您创建的每个筛选条件只应用到一个字段。您可以对常规和计算字段应用筛选条件。

可以将多种类型的筛选条件添加到数据集和分析中。有关您可以添加的筛选条件类型及其部分选项的更多信息，请参阅 [Amazon Quick 中的筛选器类型](filtering-types.md)。

如果创建多个筛选条件，可使用 AND 联合应用所有顶级筛选条件。如果通过将筛选条件添加到一个顶级筛选条件的方式来分组筛选条件，可使用 OR 来应用分组中的筛选条件。

Amazon Quick Sight 会将所有启用的筛选条件应用于该字段。例如，假设有一个 `state = WA` 的筛选器和一个 `sales >= 500` 的筛选器。然后，数据集或分析只包含满足这两个条件的记录。如果您禁用其中之一，则只应用一个筛选条件。

请注意，应用于相同字段的多个筛选条件不相互排斥。

使用以下部分来学习如何查看、添加、编辑和删除筛选条件。

**Topics**
+ [查看现有筛选条件](viewing-filters-data-prep.md)
+ [添加筛选器](add-a-filter-data-prep.md)
+ [跨工作表筛选条件和控件](cross-sheet-filters.md)
+ [Amazon Quick 中的筛选器类型](filtering-types.md)
+ [向分析表添加筛选条件控件](filter-controls.md)
+ [编辑筛选条件](edit-a-filter-data-prep.md)
+ [启用或禁用筛选条件](disable-a-filter-data-prep.md)
+ [删除筛选条件](delete-a-filter-data-prep.md)

# 查看现有筛选条件
<a name="viewing-filters-data-prep"></a>

编辑数据集或打开分析时，您可以查看已创建的任何现有筛选条件。使用以下过程了解操作方法。

## 查看数据集中的筛选条件
<a name="viewing-filters-data-prep-datasets"></a>

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

1. 从 Quick 主页中，选择左侧**的数据**。

1. 在**数据集**选项卡中，选择所需的数据集，然后选择**编辑数据集**。

1. 在打开的数据准备页面上，选择左下角的**筛选条件**以展开**筛选条件**部分。

   应用于数据集的所有筛选条件都将显示在此处。如果一个字段具有多个筛选条件，系统会将它们分组到一起。它们按照创建日期顺序显示，最早创建的筛选条件位于顶部。

## 查看分析中的筛选条件
<a name="viewing-filters-data-prep-analyses"></a>

使用以下过程查看分析中的筛选条件。

**查看分析中的筛选条件**

1. 从 “快速” 主页中，选择 “**分析**”。

1. 在**分析**页面上，选择要处理的分析。

1. 在分析中，选择 “**筛**选” 图标以打开 “**筛选器**” 窗格。

   此处将显示应用于分析的所有筛选条件。

   筛选条件的范围划分方式列在每个筛选条件的底部。有关确定筛选条件范围的更多信息，请参阅 [添加筛选器](add-a-filter-data-prep.md)。

# 添加筛选器
<a name="add-a-filter-data-prep"></a>

您可以向数据集或分析中添加筛选条件。使用以下过程了解操作方法。

## 将筛选条件添加到数据集
<a name="add-a-filter-data-prep-datasets"></a>

使用以下过程将筛选条件添加到数据集中。

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

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

1. 从 Quick 主页中，选择左侧**的数据**。

1. 在**数据集**选项卡中，选择所需的数据集，然后选择**编辑数据集**。

1. 在打开的数据准备页面上，选择左下角的**添加筛选条件**，然后选择要筛选的字段。

   该筛选条件已添加到**筛选条件**窗格。

1. 在窗格中选择新的筛选条件来配置筛选条件。或者，您可以选择新筛选条件右侧的三个点，然后选择**编辑**。

   根据字段的数据类型，配置筛选条件的选项会有所不同。有关您可以创建的筛选条件类型及其配置的更多信息，请参阅 [Amazon Quick 中的筛选器类型](filtering-types.md)。

1. 完成后，选择 **Apply**。
**注意**  
数据预览仅显示对前 1000 行应用组合筛选条件的结果。如果将前 1000 行全部筛选掉，则在预览中不显示任何行。即使前 1000 行之后的行未筛选掉，也会出现该结果。

## 将筛选条件添加到分析中
<a name="add-a-filter-data-prep-analyses"></a>

使用以下过程将筛选条件添加到分析中。

**将筛选条件添加到分析中**

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

1. 从 “快速” 主页中，选择 “**分析**”。

1. 在**分析**页面上，选择要处理的分析。

1. 在分析中，选择 “**筛**选” 图标以打开 “**筛选器**” 窗格，然后选择 “**添加**”。

1. 在窗格中选择新的筛选条件进行配置。或者，您可以选择新筛选条件右侧的三个点，然后选择**编辑**。

1. 在打开的**编辑筛选条件**窗格中，对于**应用于**，选择以下选项之一。
   + **单个视觉对象** – 筛选条件仅应用于所选项。
   + **单个工作表** - 筛选条件应用于单个工作表。
   + **跨工作表** - 筛选条件应用于数据集中的多个工作表。

   根据字段的数据类型，配置筛选条件的其余选项会有所不同。有关您可以创建的筛选条件类型及其配置的更多信息，请参阅 [Amazon Quick 中的筛选器类型](filtering-types.md)。

# 跨工作表筛选条件和控件
<a name="cross-sheet-filters"></a>

跨工作表筛选条件和控件是范围限于整个分析或控制面板或者分析和控制面板内的多个工作表的筛选条件。

## 筛选条件
<a name="filters"></a>

**创建跨工作表筛选条件**

1. [添加筛选条件](https://docs.aws.amazon.com/quicksight/latest/user/add-a-filter-data-prep.html#add-a-filter-data-prep-analyses)后，请将筛选条件的范围更新为跨工作表。默认情况下，这适用于分析中的所有工作表。

1. 如果选中“**跨多个数据集应用**”复选框，则筛选条件将应用于最多 100 个不同数据集中的所有视觉对象，这些数据集适用于筛选范围内的所有工作表。

1. 如果要自定义其应用到的工作表，请选择“跨工作表”图标。然后，您可以查看当前应用筛选条件的工作表或切换自定义选择的工作表。

1. 启用 **“自定义选择工作表”** 后，您可以选择要将筛选器应用于哪些工作表。

1. 按照[编辑分析中的筛选条件](https://docs.aws.amazon.com/quicksight/latest/user/edit-a-filter-data-prep.html#edit-a-filter-data-prep-analyses)中的步骤进行操作。更改将应用于所选所有工作表的所有筛选条件。如果筛选条件的范围限于整个分析，则这包括新添加的工作表。

**移除跨工作表筛选条件**

**Deleting**

如果没有通过这些筛选条件创建任何控件，请参阅 [Deleting filters in analyses](https://docs.aws.amazon.com/quicksight/latest/user/delete-a-filter-data-prep.html#delete-a-filter-data-prep-analyses)。

如果您创建了控件，请执行以下操作：

****

1. 按照 [Deleting filters in analyses](https://docs.aws.amazon.com/quicksight/latest/user/delete-a-filter-data-prep.html#delete-a-filter-data-prep-analyses) 中的说明进行操作。

1. 如果选择**删除筛选条件和控件**，则控件将从所有页面中删除。这可能会影响您的分析的布局。或者，您也可以单独移除这些控件。

**缩小范围**

如果要移除跨工作表筛选条件，则也可以通过更改筛选范围来执行此操作：

****

1. 按照在[分析中编辑过滤器中的](https://docs.aws.amazon.com/quicksight/latest/user/edit-a-filter-data-prep.html#edit-a-filter-data-prep-analyses)说明进入过滤器。

1. 您可以进行的编辑之一是更改范围。您可以切换到**单个工作表**或**单个视觉对象**。您也可以从跨页面选择中移除工作表。

   或者自定义工作表选择：  
![\[这是 Quick Sight 中删除滤镜的图片。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/cross-sheet-7.png)

1. 如果有控件，你会看到一个模式，警告你将从任何不再应用过滤器的表单中批量删除控件，这可能会影响你的布局。您也可以单独移除控件。有关更多信息，请参阅 [移除跨工作表控件](#cross-sheet-removing-control)。

1. 如果将控件添加到**筛选范围中所有工作表的顶部**，则当筛选范围限于整个分析时，新工作表将默认添加此新控件。

## 控件
<a name="cross-sheet-controls"></a>

### 创建跨工作表控件
<a name="cross-sheet-controls-creating-control"></a>

**新的筛选条件控件**

1. 创建跨工作表筛选条件。有关更多信息，请参阅 [筛选条件](#filters)。

1. 从三点菜单中，您可以看到一个显示**添加控件**的选项。将鼠标悬停在此处，您将看到三个选项：
   + **筛选范围中所有工作表的顶部**
   + **此工作表的顶部**
   + **此工作表内**

   如果你想在工作表本身中添加多个工作表，你可以这样做。 sheet-by-sheet或者，您可以添加到顶部，然后使用每个控件上的选项**移至工作表**。有关更多信息，请参阅 [编辑跨工作表控件](#cross-sheet-controls-editing-control)。

**增加现有控件的范围**

1. 导航到分析中的现有筛选条件

1. 将此筛选条件**应用于**哪些工作表的范围更改为**跨工作表**。

1. 如果已经从筛选器中创建了一个控件，你会看到一个模态，如果你选中该复选框，它会将控件批量添加到过滤器作用域中所有工作表的顶部。如果已创建的控件位于工作表上，则这不会影响该控件的位置。

### 编辑跨工作表控件
<a name="cross-sheet-controls-editing-control"></a>

1. 转到跨工作表控件，如果控件固定在顶部，请选择三点菜单；如果控件位于工作表上，请选择编辑铅笔图标。您将看到以下选项：
   + **转到筛选条件**（引导您进入跨工作表筛选条件供您编辑或查看）
   + **移至工作表**（将控件移至分析窗格）
   + **Reset** 
   + **刷新** 
   + **编辑** 
   + **删除** 

1. 选择**编辑**。这会在分析的右侧打开**格式控件**窗格。

1. 然后，您可以编辑您的控件。顶部标有**跨工作表设置**的部分将应用于所有控件，而此部分以外的任何设置并不适用于所有控件，仅适用于您正在编辑的特定控件。例如，**相关值**不是跨工作表控件设置。

1. 您还可以看到此控件所在的工作表以及每个工作表上控件所在的位置（顶部或工作表）。您可以通过选择 “**表格” (8)** 来执行此操作。

### 移除跨工作表控件
<a name="cross-sheet-removing-control"></a>

您可以在两个位置移除控件。首先，从控件中：

1. 转到跨工作表控件，如果控件固定在顶部，请选择三点菜单；如果控件位于工作表上，请选择编辑铅笔图标。您将看到以下选项：
   + **转到筛选条件**（引导您进入跨工作表筛选条件供您编辑或查看）
   + **移至工作表**（将控件移至分析窗格）
   + **Reset** 
   + **刷新** 
   + **编辑** 
   + **删除** 

1. 选择**移除**

其次，您可以从筛选条件中移除控件：

1. 在根据其创建跨工作表控件的跨工作表筛选条件上选择三点菜单。您将看到，现在不再存在**添加控件**选项，而是**管理控件**选项。

1. 将鼠标悬停在**管理控件**上。您将看到以下选项：
   + **移至此工作表内** 
   + **此工作表的顶部**

   这些选项仅适用于工作表上的控件，具体取决于当前控件的位置。如果您在筛选范围内的所有工作表上没有控件，则可以选择**添加到筛选范围内的所有工作表顶部**。如果您已在分析中将工作表控件添加到工作表，则此操作不会将其移动到工作表顶部。您还可以选择**从此工作表中移除**或**从所有工作表中移除**。

# Amazon Quick 中的筛选器类型
<a name="filtering-types"></a>

您可以在 Quick 中创建几种不同类型的过滤器。您创建的筛选条件类型主要取决于要筛选的字段的数据类型。

在数据集中，您可以创建以下类型的筛选条件：
+ 文本筛选条件
+ 数字筛选条件
+ 日期筛选条件

在分析中，您可以创建与在数据集中相同的筛选条件类型。还可以创建：
+ 使用 and/or 运算符将筛选器分组
+ 级联筛选条件
+ 嵌套筛选条件

关于您可以创建的每种类型的筛选条件及其部分选项，请参阅以下部分以了解更多信息。

**Topics**
+ [添加文本筛选条件](add-a-text-filter-data-prep.md)
+ [添加嵌套筛选条件](add-a-nested-filter-data-prep.md)
+ [添加数字筛选条件](add-a-numeric-filter-data-prep.md)
+ [添加日期筛选条件](add-a-date-filter2.md)
+ [使用 AND 和 OR 运算符添加筛选条件（组筛选条件）](add-a-compound-filter.md)
+ [创建级联筛选条件](use-a-cascading-filter.md)

# 添加文本筛选条件
<a name="add-a-text-filter-data-prep"></a>

使用文本字段添加筛选条件时，可以创建以下类型的文本筛选条件：
+ **筛选条件列表**（仅限分析）– 此选项创建了一个筛选条件，您可以使用该筛选条件选择一个或多个字段值，以便在字段中的所有可用值中包含或排除这些值。有关创建此类文本筛选条件的更多信息，请参阅 [按列表筛选文本字段值（仅限分析）](#text-filter-list)。
+ **自定义筛选条件列表** – 借助此选项，您可以输入要筛选的一个或多个字段值，以及是包含还是排除包含这些值的记录。输入的值必须和实际字段值完全匹配，才能将筛选条件应用于给定的记录。有关创建此类文本筛选条件的更多信息，请参阅 [按自定义列表筛选文本字段值](#add-text-custom-filter-list-data-prep)。
+ **自定义筛选条件** – 借助此选项，您可以输入字段值必须以某种方式匹配的单个值。您可以指定字段值必须等于、不等于、开头为、结尾为、包含或不包含您指定的值。如果选择等于比较规则，则指定值和实际字段值必须完全匹配，筛选条件才能应用于给定的记录。有关创建此类文本筛选条件的更多信息，请参阅 [筛选单个文本字段值](#add-text-filter-custom-list-data-prep)。
+ **前几项和后几项筛选条件**（仅限分析）– 可以通过此选项显示按另一字段中的值排名的某个字段的前 *n* 个或后 n 个值。例如，您可以根据收入显示排名前五的销售人员。您也可以使用参数来允许控制面板用户动态选择要显示顶部或底部的几个排名值。有关创建前几项和后几项筛选条件的更多信息，请参阅 [按前几项或后几项值筛选文本字段（仅限分析）](#add-text-filter-top-and-bottom)。

## 按列表筛选文本字段值（仅限分析）
<a name="text-filter-list"></a>

在分析中，您可以通过从字段中所有值的列表中选择要包含或排除的值来筛选文本字段。

**通过包含和排除值来筛选文本字段**

1. 使用文本字段创建新的筛选条件。有关创建筛选条件的更多信息，请参阅 [添加筛选器](add-a-filter-data-prep.md)。

1. 在**筛选条件**窗格中，选择新的筛选条件将其展开。

1. 对于**筛选条件类型**，选择**筛选条件列表**。

1. 对于**筛选条件**，选择**包含**或**排除**。

1. 选择要对其进行筛选的字段值。为此，请选择每个值前面的复选框。

   如果有太多值可供选择，请在核对清单上方的框中输入搜索词，然后选择**搜索**。搜索词不区分大小写，不支持通配符。系统将返回包含该搜索词的任意字段值。例如，搜索 L 将返回 al、AL、la 和 LA。

   值按字母顺序在控件中显示，除非有超过 1000 个不同的值。然后，控件改为显示搜索框。每次搜索要使用的值时，它都会启动一个新的查询。如果结果包含 1000 个以上值，则您可以使用分页滚动值。

1. 完成后，选择 **Apply**。

## 按自定义列表筛选文本字段值
<a name="add-text-custom-filter-list-data-prep"></a>

您可以指定要筛选的一个或多个字段值，以及是包含还是排除包含这些值的记录。指定的值和实际字段值必须完全匹配，才能将筛选条件应用于给定的记录。

**按自定义列表筛选文本字段值**

1. 使用文本字段创建新的筛选条件。有关创建筛选条件的更多信息，请参阅 [添加筛选器](add-a-filter-data-prep.md)。

1. 在**筛选条件**窗格中，选择新的筛选条件将其展开。

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

1. 对于**筛选条件**，选择**包含**或**排除**。

1. 对于**列表**，请在该文本框中输入一个值。该值必须与现有字段值完全匹配。

1. （可选）要添加其他值，请在文本框中输入这些值，每行输入一个。

1. 对于**空值选项**，选择**排除空值**、**包含空值**或**仅限空值**。

1. 完成后，选择 **Apply**。

## 筛选单个文本字段值
<a name="add-text-filter-custom-list-data-prep"></a>

借助**自定义筛选条件**筛选条件类型，您可以指定字段值必须等于或不等于的单个值，或者必须部分匹配。如果选择等于比较规则，则指定值和实际字段值必须完全匹配，才会对给定记录应用筛选条件。

**按单个值筛选文本字段**

1. 使用文本字段创建新的筛选条件。有关创建筛选条件的更多信息，请参阅 [添加筛选器](add-a-filter-data-prep.md)。

1. 在**筛选条件**窗格中，选择新的筛选条件将其展开。

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

1. 对于**筛选条件**，请选择下列选项之一：
   + **等于** – 选择此选项时，该字段中包含或排除的值必须与您输入的值完全匹配。
   + **不等于** – 选择此选项时，该字段中包含或排除的值必须与您输入的值完全匹配。
   + **开头为** – 选择此选项时，该字段中包含或排除的值必须以您输入的值开始。
   + **结尾为** – 选择此选项时，该字段中包含或排除的值必须以您输入的值结束。
   + **包含** – 选择此选项时，该字段中包含或排除的值必须包含您输入的整个值。
   + **不包含** – 选择此选项时，该字段中包含或排除的值必须不包含您输入的值的任何部分。
**注意**  
比较类型区分大小写。

1. 请执行以下操作之一：
   + 对于**值**，输入文本值。
   + 要使用现有参数，请选择**使用参数**，然后从列表中选择参数。

     您必须首先创建参数，然后参数才会出现在此列表中。通常，您将创建一个参数，为它添加一个控件，然后为它添加一个筛选条件。有关更多信息，请参阅 [Amazon Quick 中的参数](parameters-in-quicksight.md)。

     值按字母顺序在控件中显示，除非有超过 1000 个不同的值。然后，控件改为显示搜索框。每次搜索要使用的值时，它都会启动一个新的查询。如果结果包含 1000 个以上值，则您可以使用分页滚动值。

1. 对于**空值选项**，选择**排除空值**、**包含空值**或**仅限空值**。

1. 完成后，选择 **Apply**。

## 按前几项或后几项值筛选文本字段（仅限分析）
<a name="add-text-filter-top-and-bottom"></a>

您可以使用 **Top and bottom filter (顶部和底部筛选条件)** 显示某个字段按另一字段中的值排在顶部或底部的 *n* 个值。例如，您可以根据收入显示排名前五的销售人员。您也可以使用参数来允许控制面板用户动态选择要显示顶部或底部的几个排名值。

**创建前几项和后几项文本筛选条件**

1. 使用文本字段创建新的筛选条件。有关创建筛选条件的更多信息，请参阅 [添加筛选器](add-a-filter-data-prep.md)。

1. 在**筛选条件**窗格中，选择新的筛选条件将其展开。

1. 对于**筛选条件类型**，选择**前几项和后几项筛选条件**。

1. 选择 **Top (顶部)** 或 **Bottom (底部)**。

1. 对于**显示前几项**整数（或**显示后几项**整数），执行以下操作之一：
   + 输入要显示的顶部和底部项的个数。
   + 要使用参数作为要显示的前几项或后几项数字，请选择**使用参数**。然后，选择一个现有整数参数。

     例如，假设您希望默认显示前三位销售人员。但是，您希望控制面板查看器能够选择是否显示前 1 到 10 位的销售人员。在这种情况下，请执行以下操作：
     + 使用默认值创建一个整数参数。
     + 要将显示的项数与参数控件链接起来，请为整数参数创建一个控件。然后使该控件成为一个滑块，步长为 1，最小值为 1，最大值为 10。
     + 要使该控件工作，请对 `Salesperson` 创建一个依据 `Weighted Revenue` 的前几项和后几项筛选条件，从而将其链接到筛选条件，启用**使用参数**，并选择整数参数。

1. 对于 **By (依据)**，选择一个字段作为排名依据。如果要显示按收入排名前五的销售人员，请选择收入字段。您也可以设置需要对该字段执行的聚合。

1. （可选）选择**决定项**，然后选择另一个字段，将一个或多个聚合添加为决定项。在本示例中，当每笔收入排名前五的销售人员返回的结果超过五个时，该方法就非常有用。如果多个销售人员的收入金额相同，就可能发生这种情况。

   要删除决定项，请使用删除图标。

1. 完成后，选择 **Apply**。

# 添加嵌套筛选条件
<a name="add-a-nested-filter-data-prep"></a>

嵌套筛选器是高级筛选器，可以添加到快速分析中。嵌套筛选条件使用同一数据集中另一个字段定义的数据子集来筛选某个字段。这使得作者在数据点不满足初始条件时能够显示其他上下文数据，而无需筛选出数据。

嵌套筛选条件的功能类似于 SQL 中的相关子查询或购物篮分析。例如，假设您想对销售数据执行购物篮分析。您可以使用嵌套筛选条件来查找已购买或未购买特定产品的客户的各产品销售数量。您还可以使用嵌套筛选条件来识别未购买所选产品或仅购买一系列特定产品的客户群。

只能在分析级别添加嵌套筛选条件。您无法向数据集添加嵌套筛选条件。

使用以下步骤向快速分析添加嵌套筛选器。

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

1. 选择**分析**，然后选择要添加嵌套筛选条件的分析。

1. 在您想要筛选的文本字段上创建一个新的筛选条件。有关创建筛选条件的更多信息，请参阅 [将筛选条件添加到分析中](add-a-filter-data-prep.md#add-a-filter-data-prep-analyses)。

1. 创建新的筛选条件后，在**筛选条件**窗格中找到新的筛选条件。选择新筛选条件旁边的省略号（三个点），然后选择**编辑筛选条件**。或者，在**筛选条件**窗格中选择筛选条件实体以打开**编辑筛选条件**窗格。

1. **编辑筛选条件**窗格随即打开。打开**筛选条件类型**下拉菜单，导航至**高级筛选条件**部分，然后选择**嵌套筛选条件**。

1. 对于**资格条件**，选择**包含**或**排除**。*资格条件*允许您对分析中的数据运行不在设置中的查询。在我们上面的销售示例中，资格条件决定筛选条件是否返回购买了特定产品的客户列表或未购买该产品的客户列表。

1. 对于**嵌套字段**，选择要用来筛选数据的文本字段。嵌套字段不能与步骤 3 中选择的主字段相同。类别字段是内部筛选条件唯一支持的字段类型。

1. 对于**嵌套筛选条件类型**，选择所需的筛选条件类型。您选择的筛选条件类型决定了嵌套筛选条件的最终配置步骤。可在下面的列表中找到可用的筛选条件类型及其配置相关信息。
   + [筛选条件列表](https://docs.aws.amazon.com/quicksuite/latest/userguide/text-filter-list)
   + [自定义筛选条件列表](https://docs.aws.amazon.com/quicksuite/latest/userguide/add-text-custom-filter-list-data-prep)
   + [自定义筛选条件](https://docs.aws.amazon.com/quicksuite/latest/userguide/add-text-filter-custom-list-data-prep)

# 添加数字筛选条件
<a name="add-a-numeric-filter-data-prep"></a>

具有小数或 int 数据类型的字段被视为数字字段。您可以通过指定比较类型 (例如 **Greater than** 或 **Between**) 以及与比较类型对应的一个或多个比较值，针对数字字段创建筛选条件。比较值必须为正整数，不能包含逗号。

您可以在数字筛选条件中使用以下比较类型：
+ Equals
+ 不等于
+ Greater than
+ 大于或等于
+ Less than
+ 小于或等于
+ 介于

**注意**  
要对数值数据使用前几项和后几项筛选条件（仅限分析），请先将字段从度量改为维度。这样会将数据转换为文本。然后就可以使用文本筛选条件。有关更多信息，请参阅 [添加文本筛选条件](add-a-text-filter-data-prep.md)。

在分析中，对于基于数据库查询的数据集，您还可以选择针对一个或多个比较值应用聚合函数，例如，**总计**或**平均值**。

您可以在数字筛选条件中使用以下聚合函数：
+ 平均值
+ 计数
+ 去重计数
+ 最大值
+ 中位数
+ 最小值
+ 百分位数
+ 标准偏差
+ 标准偏差 – 总体
+ 总和
+ 方差
+ 方差 – 总体

## 创建数字筛选条件
<a name="create-a-numeric-filter-data-prep"></a>

要创建数字字段筛选条件，请按照以下过程操作。

**创建数字字段筛选条件**

1. 使用文本字段创建新的筛选条件。有关创建筛选条件的更多信息，请参阅 [添加筛选器](add-a-filter-data-prep.md)。

1. 在**筛选条件**窗格中，选择新的筛选条件将其展开。

1. （可选）对于**聚合**，选择一个聚合。默认不应用任何聚合。此选项仅在分析中创建数字筛选条件时可用。

1. 对于**筛选条件**，选择比较类型。

1. 请执行以下操作之一：
   + 如果选择**介于**以外的比较类型，请输入一个比较值。

     如果选择 **Between (介于)** 比较类型，请在 **Minimum value (最小值)** 中输入值范围的开始值，在 **Maximum value (最大值)** 中输入值范围的结束值。
   + （仅限分析）要使用现有参数，请启用**使用参数**，然后从列表中选择参数。

     您必须首先创建参数，然后参数才会出现在此列表中。通常，您将创建一个参数，为它添加一个控件，然后为它添加一个筛选条件。有关更多信息，请参阅 [Amazon Quick 中的参数](parameters-in-quicksight.md)。值按字母顺序在控件中显示，除非有超过 1000 个不同的值。然后，控件改为显示搜索框。每次搜索要使用的值时，它都会启动一个新的查询。如果结果包含 1000 个以上值，则您可以使用分页滚动值。

1. （仅限分析）对于**空值选项**，选择**排除空值**、**包含空值**或**仅限空值**。

1. 完成后，选择 **Apply**。

# 添加日期筛选条件
<a name="add-a-date-filter2"></a>

通过选择要使用的筛选条件和日期值创建日期字段的筛选条件。日期筛选条件类型有三种：
+ **范围** – 基于时间范围和比较类型的一系列日期。您可以根据日期字段值是在指定日期之前还是之后或是否在日期范围内来筛选记录。您可以按以下格式输入日期值MM/DD/YYYY。可以使用以下比较类型：
  + **介于** – 在开始日期和结束日期之间
  + **晚于** – 在指定日期之后
  + **早于** – 在指定日期之前
  + **等于** – 在指定日期

  对于每种比较类型，您也可以选择相对于周期或数据集值的滚动日期。
+ **相对**（仅限分析）– 基于当前日期的一系列日期和时间元素。可以基于当前日期和选定的度量单位 (UOM) 筛选记录。日期筛选条件单位包括年、季度、月、周、日、小时和分钟。您可以排除当前时段，并为 Next N (接下来的 N 个) 筛选条件添加支持，它与 Last N (最近 N 个) 类似并具有允许锚定日期的附加功能。可以使用以下比较类型：
  + **前一项** – 上一个 UOM，例如，前一年。
  + **此项** –“此 UOM”包括选定 UOM 中的全部日期和时间，即使是将来的日期和时间。
  + **最新*或*至今** – 到当前日期为止的 UOM 或到当前时间为止的 UOM。显示的短语会适应您选择的 UOM。但是，在所有情况下，此选项会滤掉不在当前 UOM 的开头与当前时刻之间的数据。
  + **最近 *n* 项** – 指定 UOM 的最近若干数量，包括此 UOM 的全部和最近 *n* −1 个 UOM 的全部。例如，我们假定今天是 2017 年 5 月 10 日。您选择使用 *years* 作为 UOM，并将“Last *n *years”设为 3。筛选出的数据包括 2017 年的全部数据加上 2016 年和 2015 年的全部数据。如果您有当前年份 (本例中为 2017 年) 未来日期的任何数据，这些记录将包含在您的数据集中。
+ **前几项和后几项**（仅限分析） – 按另一字段排名的日期条目数。您可以根据另一字段中的值显示所选日期类型或时间 UOM 的前 *n* 个或后 n 个值。例如，您可以选择根据收入显示排名前 5 的销售日。

应用比较规则时将包含指定的日期。例如，如果您应用了 `Before 1/1/16` 筛选条件，则返回的记录将包含日期值到 1/1/16 23:59:59 的所有行。如果您不希望包含指定的日期，则可清除该选项以 **Include this date (包括此日期)**。如果要忽略时间范围，可以使用 **Exclude the last N periods (排除最近 N 个期间)** 选项来指定要筛选出的期间的数量和类型（分钟、天等）。

您还可以选择包含或排除 null 值，或只显示此字段中包含 null 值的行。如果传入空日期参数（没有默认值的参数），则在您提供值之前，它不会筛选数据。

**注意**  
如果某个列或属性没有时区信息，则客户端查询引擎会设置该日期时间数据的默认解释方式。例如，假设某列包含一个 timestamp 而不是 timestamptz，并且您与数据源位于不同时区。在这种情况下，引擎呈现时间戳的方式可能不同于您的预期。Amazon Quick 和[SPICE](spice.md)两者都使用通用协调时间 (UTC) 时间。

关于如何在数据集和分析中创建日期筛选条件，请参阅以下部分了解相关信息。

## 在数据集中创建日期筛选条件
<a name="create-date-filter-dataset"></a>

要在数据集中创建日期字段的范围筛选条件，请按照以下过程操作。

**在数据集中创建日期字段的范围筛选条件**

1. 使用文本字段创建新的筛选条件。有关创建筛选条件的更多信息，请参阅 [添加筛选器](add-a-filter-data-prep.md)。

1. 在**筛选条件**窗格中，选择新的筛选条件将其展开。

1. 对于**条件**，选择一个比较类型：**介于**、**晚于**，或**早于**。

   要使用**介于**作为比较类型，请选择**开始日期**和**结束日期**，然后从显示的日期选择器控件中选择日期。

   您可以通过选择**包含开始日期**或**包含结束日期**，来选择是要在范围内包含开始日期和结束日期之一还是两者皆有。

   要使用**早于**或**晚于**比较规则，请输入日期，或选择日期字段以调出日期选取器控件并选择日期。您可以选择包含此日期（您选择的日期）以排除最近 N 个期间，并指定如何处理空值。

1. 对于**时间粒度**，选择**日**、**小时**、**分钟**或**秒**。

1. 完成后，选择 **Apply**。

## 在分析中创建日期筛选条件
<a name="create-date-filter-analyses"></a>

您可以按如下所述，在分析中创建日期筛选条件。

### 在分析中创建范围日期筛选条件
<a name="create-a-date-filter2"></a>

要在分析中创建日期字段的范围筛选条件，请按照以下过程操作。

**在分析中创建日期字段的范围筛选条件**

1. 使用文本字段创建新的筛选条件。有关创建筛选条件的更多信息，请参阅 [添加筛选器](add-a-filter-data-prep.md)。

1. 在**筛选条件**窗格中，选择新的筛选条件将其展开。

1. 对于**筛选条件类型**，选择**日期和时间范围**。

1. 对于**条件**，选择一个比较类型：**介于**、**晚于**、**早于**或**等于**。

   要使用**介于**作为比较类型，请选择**开始日期**和**结束日期**，然后从显示的日期选择器控件中选择日期。

   您可以通过选择**包含开始日期**或**包含结束日期**，来选择是要在范围内包含开始日期和结束日期之一还是两者皆有。

   要使用**早于**、**晚于**或**等于**比较规则，请输入日期，或选择日期字段以调出日期选取器控件并选择日期。您可以选择包含此日期（您选择的日期）以排除最近 N 个期间，并指定如何处理空值。

   要为比较**设置滚动日期**，请选择**设置滚动日期**。

   在打开的**设置滚动日期**窗格中，选择**相对日期**，然后选择是要将日期设置为**今天**或是**昨天**，或者指定**筛选条件**（开始或结束）、**范围**（此项、前一项或下一项）和**周期**（年、季度、月、周或日）。

1. 对于**时间粒度**，选择**日**、**小时**、**分钟**或**秒**。

1. （可选）如果要使用现有参数而不是具体日期进行筛选，请选择**使用参数**，然后从列表中选择参数。要使用 **Before (早于)**、**After (晚于)** 或 **Equals (等于)** 比较规则，请选择一个日期参数。您可以将此日期包含在范围内。

   要使用 **Between (介于)**，请单独输入开始日期和结束日期参数。您可以在此范围中包含开始日期和/或结束日期。

   要在筛选条件中使用参数，请先创建它们。通常，您将创建一个参数，为它添加一个控件，然后为它添加一个筛选条件。有关更多信息，请参阅 [Amazon Quick 中的参数](parameters-in-quicksight.md)。

1. 对于**空值选项**，选择**排除空值**、**包含空值**或**仅限空值**。

1. 完成后，选择 **Apply**。

### 在分析中创建相对日期筛选条件
<a name="create-a-date-filter-relative"></a>

要在分析中创建日期字段的相对筛选条件，请按照以下过程操作。

**在分析中创建日期字段的相对筛选条件**

1. 使用文本字段创建新的筛选条件。有关创建筛选条件的更多信息，请参阅 [添加筛选器](add-a-filter-data-prep.md)。

1. 在**筛选条件**窗格中，选择新的筛选条件将其展开。

1. 对于**筛选条件类型**，选择**相对日期**。

1. 对于**时间粒度**，选择要据以筛选的时间粒度（日、小时、分钟）。

1. 对于**周期**，选择时间单位（年、季度、月、周、日）。

1. 对于**范围**，选择您希望筛选条件如何与时间范围相对。例如，如果您选择按月份进行报告，则选项包括上个月、本月、当月至今、最近 N 个月和接下来的 N 个月。

   如果您选择过去 N 年或接下来 N 年、季度、月、周或日，请在**数量**中输入一个数字。例如，过去 3 年、接下来 5 个季度、过去 5 日。

1. 对于**空值选项**，选择**排除空值**、**包含空值**或**仅限空值**。

1. 对于**与设置的日期相对的时间**，请选择下列选项之一：
   + **当前日期时间** – 如果选择此选项，您可以将其设置为**排除最后一个**，然后指定时段的数量和类型。
   + **参数中的日期和时间** – 如果选择此选项，您可以选择现有的日期时间参数。

1. （可选）如果要使用现有参数而不是具体日期进行筛选，请启用 **Use parameters (使用参数)**，然后从列表中选择参数。

   要在筛选条件中使用参数，请先创建它们。通常，您将创建一个参数，为它添加一个控件，然后为它添加一个筛选条件。有关更多信息，请参阅 [Amazon Quick 中的参数](parameters-in-quicksight.md)。

1. 完成后，选择 **Apply**。

### 在分析中创建前几项和后几项日期筛选条件
<a name="create-a-date-filter-top-bottom"></a>

要在分析中创建日期字段的前几项和后几项筛选条件，请按照以下过程操作。

**在分析中创建日期字段的前几项和后几项筛选条件**

1. 使用文本字段创建新的筛选条件。有关创建筛选条件的更多信息，请参阅 [添加筛选器](add-a-filter-data-prep.md)。

1. 在**筛选条件**窗格中，选择新的筛选条件将其展开。

1. 对于**筛选条件类型**，选择**前几项和后几项**。

1. 选择**前几项**或**后几项**。

1. 对于**显示**，输入要显示的前几项或后几项项数，然后选择一个时间单位（年、季度、月、周、日、小时、分钟）。

1. 对于 **By (依据)**，选择一个字段作为排名依据。

1. （可选）如果**依据**字段有重复项，可以选择添加另一个字段作为决定项。选择**决定项**，然后选择另一个字段。要删除决定项，请使用删除图标。

1. （可选）如果要使用现有参数而不是具体日期进行筛选，请选择**使用参数**，然后从列表中选择参数。

   要对 **Top and bottom (顶部和底部)** 使用参数，请选择整数参数作为要显示的顶部和底部项数。

   要在筛选条件中使用参数，请先创建它们。通常，您将创建一个参数，为它添加一个控件，然后为它添加一个筛选条件。有关更多信息，请参阅 [Amazon Quick 中的参数](parameters-in-quicksight.md)。

1. 完成后，选择 **Apply**。

# 使用 AND 和 OR 运算符添加筛选条件（组筛选条件）
<a name="add-a-compound-filter"></a>

在分析中，当您在视觉对象中添加多个筛选器时，Quick 会使用 AND 运算符来组合它们。也可以使用 OR 运算符向单个筛选条件添加筛选条件。这称为复合筛选条件或筛选条件组。

要使用 OR 运算符添加多个筛选条件，请创建筛选条件组。筛选条件分组可用于分析中所有类型的筛选条件。

当您筛选多个度量时（标有 \$1 的绿色字段），可以将筛选条件应用于该字段的集合。分组中的筛选条件可以包含聚合字段或者非聚合字段，但两者不能同时存在。

**创建筛选条件组**

1. 在分析中创建新的筛选条件。有关创建筛选条件的更多信息，请参阅 [添加筛选器](add-a-filter-data-prep.md)。

1. 在**筛选条件**窗格中，选择新的筛选条件将其展开。

1. 在展开的筛选条件中，选择底部的**添加筛选条件**，然后选择要筛选的字段。

1.  选择要筛选的条件。

   您选择的字段的数据类型决定了此处可用的选项。例如，如果您选择了数值字段，则可以指定聚合、筛选条件和值。如果您选择了文本字段，则可以选择筛选条件类型、筛选条件和值。如果您选择了日期字段，则可以指定筛选条件类型、条件和时间粒度。有关这些选项的详细信息，请参阅[Amazon Quick 中的筛选器类型](filtering-types.md)。

1.  （可选）您可以通过在底部选择再次**添加筛选条件**来向筛选条件组添加其他筛选条件。

1.  （可选）要从筛选条件组中删除筛选条件，请选择字段名称旁的垃圾桶图标。

1. 完成后，选择 **Apply**。

   筛选条件以组的形式显示在**筛选条件**窗格中。

# 创建级联筛选条件
<a name="use-a-cascading-filter"></a>

级联任何操作（例如筛选条件）的背后思想是，层次结构较高级别中的选择会影响层次结构的较低级别。术语*级联*来源于级联瀑布从一个层流向下一层的方式。

要设置级联筛选条件，需要一个激活筛选条件的触发点和应用筛选条件的目标点。在 Quick 中，触发点和目标点包含在视觉效果中。

要创建级联筛选条件，您需要设置一个操作，而不是筛选条件。这种方法是因为您需要定义如何激活级联筛选条件、涉及哪些字段以及在某人激活筛选条件时要筛选哪些视觉对象。有关更多信息，包括 step-by-step说明，请参阅[使用自定义操作进行筛选和导航](quicksight-actions.md)。

还有两种其他方法可以跨多个视觉对象激活筛选条件：
+ **对于从控制面板上的小组件激活的筛选条件** – 该小组件称为*工作表控件*，它是一个自定义菜单项，您可以将该菜单项添加到分析或控制面板顶部。最常见的工作表控件是下拉列表，其中显示打开工作表时可供选择的选项列表。要将其中一个选项添加到分析，请创建一个参数，向该参数添加控件，然后添加一个使用该参数的筛选条件。有关更多信息，请参阅 [在 Amazon Quick 中设置参数](parameters-set-up.md)、[在 Amazon Quick 中使用带有参数的控件](parameters-controls.md) 和 [向分析表添加筛选条件控件](filter-controls.md)。
+ **对于始终应用于多个视觉对象的筛选条件** – 这是一个常规筛选条件，除了您将其作用域设置为应用于多个（或所有）视觉对象之外。这种类型的筛选条件并不真正级联，因为没有触发点。它始终筛选它被配置要筛选的所有视觉对象。要将此类筛选条件添加到分析，请创建或编辑筛选条件，然后选择其范围：**单个视觉对象**、**单个工作表**或**跨工作表**。注意**跨多个数据集应用**选项。如果选中此框，则筛选条件将应用于不同数据集中的所有视觉对象，这些数据集适用于筛选范围内的所有工作表。有关更多信息，请参阅 [筛选条件](cross-sheet-filters.md#filters)。

# 向分析表添加筛选条件控件
<a name="filter-controls"></a>

在设计分析时，可以在分析表中要筛选的视觉对象旁边添加筛选条件。当您将分析发布为控制面板时，它作为控件显示在工作表中，控制面板查看者可以使用该控件。该控件使用分析主题设置，因此看起来像是工作表的一部分。

筛选条件控件与其筛选条件共享一些设置。它们适用于同一个工作表中的一个、部分或全部对象。

通过以下部分向分析添加和自定义筛选条件控件。要了解如何添加跨工作表控件，请参阅 [控件](cross-sheet-filters.md#cross-sheet-controls)。

**Topics**
+ [添加筛选条件控件](#filter-controls-add)
+ [将筛选条件控件固定到工作表的顶部](#filter-controls-pin)
+ [自定义筛选条件控件](#filter-controls-customize)
+ [级联筛选条件控件](#cascading-controls)

## 添加筛选条件控件
<a name="filter-controls-add"></a>

要添加筛选条件控件，请按照以下过程操作。

**添加筛选条件控件**

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

1. 在 Q **u** ick 主页上，选择 “分析”，然后选择要使用的分析。

1. 在分析中，选择**过滤器**。

1. 如果您还没有可用的筛选条件，请创建一个。有关创建筛选条件的更多信息，请参阅 [添加筛选器](add-a-filter-data-prep.md)。

1. 在**筛选条件**窗格中，选择要为其添加控件的筛选条件右侧的三个点，然后选择**添加到工作表**。

   筛选条件控件被添加到工作表中，通常位于底部。您可以调整其大小或将其拖动到工作表上的不同位置。您还可以自定义其显示方式以及控制面板查看者与其互动的方式。有关自定义筛选条件控件的更多信息，请参阅以下部分。

## 将筛选条件控件固定到工作表的顶部
<a name="filter-controls-pin"></a>

使用以下步骤将筛选条件控件固定在工作表的顶部。

**将控件固定到工作表的顶部**

1. 在要移动的筛选条件控件上，选择铅笔图标旁的三个点，然后选择**固定到顶部**。

   筛选条件固定在工作表的顶部并处于折叠状态。您可以通过点击来展开它。

1. （可选）要取消固定控件，请将其展开并将光标悬停在工作表顶部的固定控件上方，直到出现三个点。选择三个点，然后选择**移至工作表**。

## 自定义筛选条件控件
<a name="filter-controls-customize"></a>

根据字段的数据类型和筛选条件的类型，筛选条件控件具有不同的可用设置。您可以自定义它们在工作表中的显示方式以及控制面板查看者与它们互动的方式。

**自定义筛选条件控件**

1. 在工作表中选择筛选条件控件。

1. 在筛选条件控件上，选择铅笔图标。

   如果筛选条件控件固定在工作表顶部，请将其展开并将光标悬停在其上方，直到出现三个点。选择三个点，然后选择**编辑**。

1. 在打开的**设置控件格式**窗格中，执行以下操作：

   1. 对于**显示名称**，输入筛选条件控件的名称。

   1. （可选）要在筛选条件控件中隐藏显示名称，请清除**显示标题**的复选框。

   1. 对于**标题字体大小**，选择要使用的标题字体大小。选项范围从超小到超大。默认设置为中号。

其余步骤取决于控件所引用的字段类型。有关按筛选条件类型划分的选项，请参阅以下部分。

### 日期筛选条件
<a name="filter-controls-customize-date"></a>

如果您的筛选条件控件来自日期筛选条件，请通过以下步骤自定义其余选项。

**为日期筛选条件自定义更多选项**

1. 在**格式控件**窗格中，对于**样式**，选择一下选项之一：
   + **日期选择器 – 范围** – 显示一组两个字段，用于定义时间范围。您可以输入日期或时间，也可以从日历控件中选择日期。您还可以通过在**日期格式**中输入日期令牌，来自定义日期在控件中的显示方式。有关更多信息，请参阅 [在 Quick 中自定义日期格式](format-visual-date-controls.md)。
   + **日期选择器 – 相对** – 显示诸如时间段、其与当前日期和时间的关系以及排除时间段的选项等的设置。您还可以通过在**日期格式**中输入日期令牌，来自定义日期在控件中的显示方式。有关更多信息，请参阅 [在 Quick 中自定义日期格式](format-visual-date-controls.md)。
   + **文本字段** – 显示一个框，您可以在其中输入前 *N* 个或后 N 个日期。

     默认情况下，帮助文本包含在文本字段控件中，但您可以通过清除**在控件中显示帮助文本**选项来选择将其移除。

   默认情况下，每当对控件进行更改时，都会重新加载快速视觉对象。对于日历和相对日期选择器控件，作者可以向控件添加一个**应用**按钮，该按钮会延迟视觉对象重新加载，直到用户选择**应用**。这使得用户可以一次进行多项更改，无需额外查询。可以使用**格式控制**窗格的**控制选项**部分中的**显示应用按钮**复选框来配置此设置。

1. 完成后，选择 **Apply**。

### 文本筛选条件
<a name="filter-controls-customize-text"></a>

如果您的筛选条件控件来自类别、维度或标签等文本筛选条件，请通过以下步骤自定义其余选项。

**为文本筛选条件自定义更多选项**

1. 在**格式控件**窗格中，对于**样式**，选择一下选项之一：
   + **下拉列表** – 显示一个下拉列表，其中包含可用于选择单个值的按钮。

     选择此选项后，您可以为**值**选择以下选项：
     + **筛选条件** – 显示筛选条件中所有可用的值。
     + **特定值** – 允许您输入要显示的值，每行一个条目。

     您也可以选择**隐藏控件值中的全选选项**。这将删除用于选择或清除对筛选条件控件中所有值全选的选项。
   + **下拉列表 – 多选** – 显示一个下拉列表，其中包含可用于选择多个值的框。

     选择此选项后，您可以为**值**选择以下选项：
     + **筛选条件** – 显示筛选条件中所有可用的值。
     + **特定值** – 允许您输入要显示的值，每行一个条目。

     默认情况下，每当对控件进行更改时，都会重新加载快速视觉对象。对于多选下拉控件，作者可以向控件添加一个**应用**按钮，该按钮会延迟视觉对象重新加载，直到用户选择**应用**。这使得用户可以一次进行多项更改，无需额外查询。可以使用**格式控制**窗格的**控制选项**部分中的**显示应用按钮**复选框来配置此设置。
   + **列表** – 显示一个列表，其中包含可用于选择单个值的按钮。

     选择此选项后，您可以为**值**选择以下选项：
     + **筛选条件** – 显示筛选条件中所有可用的值。
     + **特定值** – 允许您输入要显示的值，每行一个条目。

     您还可以选择以下选项：
     + **控件位于工作表上时隐藏搜索栏** –隐藏筛选条件控件中的搜索栏，使用户无法搜索特定值。
     + **隐藏控件值中的全选选项** – 删除用于选择或清除对筛选条件控件中所有值全选的选项。
   + **列表 – 多选** – 显示一个列表，其中包含可用于选择多个值的框。

     选择此选项后，您可以为**值**选择以下选项：
     + **筛选条件** – 显示筛选条件中所有可用的值。
     + **特定值** – 允许您输入要显示的值，每行一个条目。

     您还可以选择以下选项：
     + **控件位于工作表上时隐藏搜索栏** –隐藏筛选条件控件中的搜索栏，使用户无法搜索特定值。
     + **隐藏控件值中的全选选项** – 删除用于选择或清除对筛选条件控件中所有值全选的选项。
   + **文本字段** – 显示一个文本框，您可以在其中输入单个条目。文本字段最多支持 79950 个字符。

     如果您选择此选项，则可以选择以下选项：
     + **在控件中显示帮助文本** – 移除文本字段中的帮助文本。
   + **文本字段 – 多行** – 显示一个文本框，您可以在其中输入多个条目。多行文本字段的所有条目最多支持 79950 个字符。

     如果您选择此选项，则可以选择以下选项：
     + 在**分隔值依据**中，选择要如何分隔在筛选条件控件中输入的值。您可以选择用换行符、逗号、竖线 (\$1) 或分号来分隔值。
     + **在控件中显示帮助文本** – 移除文本字段中的帮助文本。

1. 完成后，选择 **Apply**。

### 数字筛选条件
<a name="filter-controls-customize-numeric"></a>

如果您的筛选条件控件来自数字筛选条件，请通过以下步骤自定义其余选项。

**为数字筛选条件自定义更多选项**

1. 在**格式控件**窗格中，对于**样式**，选择一下选项之一：
   + **下拉列表** – 显示一个可以在其中选择单个值的列表。

     选择此选项后，您可以为**值**选择以下选项：
     + **筛选条件** – 显示筛选条件中所有可用的值。
     + **特定值** – 允许您输入要显示的值，每行一个条目。

     您也可以选择**隐藏控件值中的全选选项**。这将删除用于选择或清除对筛选条件控件中所有值全选的选项。
     + **筛选条件** – 显示筛选条件中所有可用的值。
     + **特定值** – 允许您输入要显示的值，每行一个条目。
     + **隐藏控件值中的全选选项** – 删除用于选择或清除对筛选条件控件中所有值全选的选项。
   + **列表** – 显示一个列表，其中包含可用于选择单个值的按钮。

     选择此选项后，您可以为**值**选择以下选项：
     + **筛选条件** – 显示筛选条件中所有可用的值。
     + **特定值** – 允许您输入要显示的值，每行一个条目。

     您还可以选择以下选项：
     + **控件位于工作表上时隐藏搜索栏** –隐藏筛选条件控件中的搜索栏，使用户无法搜索特定值。
     + **隐藏控件值中的全选选项** – 删除用于选择或清除对筛选条件控件中所有值全选的选项。
   + **滑块** – 显示带有切换开关的水平条形图，您可以通过滑动该切换开关来更改值。如果您对介于最小值和最大值之间的值使用范围筛选条件，则滑块会为每个数字提供切换开关。对于滑块，您可以指定以下选项：
     + **最小值** – 在滑块左侧显示较小的值。
     + **最大值** – 在滑块右侧显示较大的值。
     + **步长大小** – 允许您设置条形图划分的增量数。
   + **文本框** – 显示一个可以在其中输入值的框。如果您选择此选项，则可以选择以下选项：
     + **在控件中显示帮助文本** – 移除文本字段中的帮助文本。

1. 完成后，选择 **Apply**。

## 级联筛选条件控件
<a name="cascading-controls"></a>

您可以限制控件中显示的值，使它们仅显示对其他控件中选择的值有效的值。这称为级联控件。

**创建级联控件时，以下限制适用：**

1. 级联控件必须与同一数据集中的数据集列相关联。

1. 子控件必须是下拉列表或列表控件。

1. 对于参数控件，子控件必须链接到数据集列。

1. 对于筛选条件控件，子控件必须链接到筛选条件（而不是仅显示特定值）。

1. 父控件必须是下列类型之一：

   1. 字符串、整数或数字参数控件。

   1. 字符串筛选条件控件（不包括“前几项/后几项”筛选条件）。

   1. 非聚合数字筛选条件控件。

   1. 日期筛选条件控件（不包括“前几项/后几项”筛选条件）。

**创建级联控件**

1. 要创建级联控件，请选择**仅显示相关值**。请注意，此选项可能不适用于所有筛选条件控件类型。

1. 在打开的**仅显示相关值**窗格中，从可用列表中选择一个或多个控件。

1. 选择要与值匹配的字段。

1. 选择**更新**。

# 编辑筛选条件
<a name="edit-a-filter-data-prep"></a>

您可以随时在数据集或分析中编辑筛选条件。

您不能更改筛选条件应用到的字段。要将筛选条件应用于其他字段，请创建新的筛选条件。

使用以下过程学习如何编辑筛选条件。

## 编辑数据集中的筛选条件
<a name="edit-a-filter-data-prep-datasets"></a>

使用以下过程编辑数据集中的筛选条件。

**编辑数据集中的筛选条件**

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

1. 从 Quick 主页中，选择左侧**的数据**。

1. 在**数据集**选项卡下，选择所需的数据集，然后选择**编辑数据集**。

1. 在打开的数据准备页面上，选择左下角的**筛选条件**。

1. 选择要编辑的筛选条件。

1. 编辑完成后，选择**应用**。

## 编辑分析中的筛选条件
<a name="edit-a-filter-data-prep-analyses"></a>

使用以下过程编辑分析中的筛选条件。

**编辑分析中的筛选条件**

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

1. 从 Quick 主页中，选择左侧的**分析**。

1. 在**分析**页面上，选择要处理的分析。

1. 在分析中，选择显示的 “**筛选器**” 图标以打开 “**筛选器**” 窗格。

1. 选择要编辑的筛选条件。

1. 编辑完成后，选择**应用**。

# 启用或禁用筛选条件
<a name="disable-a-filter-data-prep"></a>

您可以使用筛选条件菜单启用或禁用数据集或分析中的筛选条件。在创建筛选条件时，该筛选条件默认处于启用状态。禁用筛选条件会将筛选条件从字段中移除，但不会从数据集或分析中删除筛选条件。禁用的筛选条件在筛选条件窗格中显示为灰色。如果要将筛选条件重新应用于字段，只需将其启用即可。

使用以下过程了解如何启用或禁用筛选条件。

## 禁用数据集中的筛选条件
<a name="disable-a-filter-data-prep-datasets"></a>

使用以下过程禁用数据集中的筛选条件。

**禁用数据集中的筛选条件**

1. 从 Quick 主页中，选择左侧**的数据**。

1. 在**数据集**选项卡下，选择所需的数据集，然后选择**编辑数据集**。

1. 在打开的数据准备页面上，选择左下角的**筛选条件**。

1. 在左侧的**筛选条件**窗格中，选择要禁用的筛选条件右侧的三个点，然后选择**禁用**。要启用已禁用的筛选条件，请选择**启用**。

## 禁用分析中的筛选条件
<a name="disable-a-filter-data-prep-analyses"></a>

使用以下过程禁用分析中的筛选条件。

**禁用分析中的筛选条件**

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

1. 从 “快速” 主页中，选择 “**分析**”。

1. 在**分析**页面上，选择要处理的分析。

1. 在分析中，选择 “**筛**选” 图标以打开 “**筛选器**” 窗格。

1. 在打开的**筛选条件**窗格中，选择要禁用的筛选条件右侧的三个点，然后选择**禁用**。要启用已禁用的筛选条件，请选择**启用**。

# 删除筛选条件
<a name="delete-a-filter-data-prep"></a>

您可以随时删除数据集或分析中的筛选条件。使用以下过程了解操作方法。

## 删除数据集中的筛选条件
<a name="delete-a-filter-data-prep-datasets"></a>

使用以下过程删除数据集中的筛选条件。

**删除数据集中的筛选条件**

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

1. 从 Quick 主页中，选择**数据**。

1. 在**数据集**选项卡下，选择所需的数据集，然后选择**编辑数据集**。

1. 在打开的数据准备页面上，选择左下角的**筛选条件**。

1. 选择要删除的筛选条件，然后选择**删除筛选条件**。

## 删除分析中的筛选条件
<a name="delete-a-filter-data-prep-analyses"></a>

使用以下过程删除分析中的筛选条件。

**删除分析中的筛选条件**

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

1. 从 “快速” 主页中，选择 “**分析**”。

1. 在**分析**页面上，选择要处理的分析。

1. 在分析中，选择 “**筛**选” 图标以打开 “**筛选器**” 窗格。

1. 选择要删除的筛选条件，然后选择**删除筛选条件**。

# 预览数据集中的表
<a name="previewing-tables-in-a-dataset"></a>

您可以预览数据集中每个单独的数据表。选择要预览的数据表时，该表的只读预览会出现在数据预览部分的新选项卡中。您可以一次打开多个表格预览选项卡。

您只能在数据集中预览您有权访问的表。如果表格未出现在数据准备空间的上半部分，则无法预览该表。

**数据集**选项卡包含所有转换，例如新列或筛选条件。表格预览选项卡不会显示任何转换。

**预览数据表**

1. 在 Quick 主页上，选择左侧**的数据**。

1. 在**数据**选项卡中，选择所需的数据集，然后选择**编辑数据集**。

1. 选择要预览的数据表，选择向下箭头打开菜单，然后选择**显示表预览**。

# 使用 SQL 自定义数据
<a name="adding-a-SQL-query"></a>

当您创建数据集或准备数据用于分析时，可以在查询编辑器中自定义数据。

查询编辑器由多个组件构成，如下所示：
+ ****查询模式**** – 在左上角，您可以选择直接查询或 SPICE 查询模式：
  + **直接查询** – 直接对数据库运行 SELECT 语句
  + **SPICE** – 对以前存储在内存中的数据运行 SELECT 语句
+ ****字段**** – 使用此部分可禁用希望从最终数据集中删除的字段。您可以在此部分中添加计算字段，并使用 SageMaker AI 增强数据
+ ****查询归档**** – 使用此部分查找先前版本的 SQL 查询。
+ ****筛选条件**** – 使用此部分可添加、编辑或删除筛选条件。
+ ****Schema Explorer**** – 此部分仅在您编辑 SQL 时显示。可以使用它来浏览架构、表、字段和数据类型。
+ ****SQL 编辑器**** – 使用此工具可以编辑 SQL。SQL 编辑器，提供语法突出显示、基本语法自动完成、自动缩进和行号等功能。只能为与 SQL 兼容的数据来源中的数据集指定一个 SQL 查询。SQL 必须符合有关语法、大写、命令终止等的目标数据库要求。如果您愿意，可以改为从另一个编辑器粘贴 SQL。
+ ****数据工作区**** – 关闭 SQL 编辑器时，将在右上角显示带有网格背景的数据工作区。您可以在此处看到数据对象的图形表示形式，包括在联接编辑器中创建的查询、表、文件和联接。

  要查看每个表的详细信息，请使用数据来源选项菜单并选择**表详细信息**或**编辑 SQL 查询**。显示表名和别名、架构、数据来源名称和数据来源类型的详细信息。对于文件的上传设置，请从数据来源选项菜单中选择**配置上传设置**，以查看或更改以下设置：
  + 格式 – 文件格式、CSV、CUSTOM、CLF 等
  + 开始行 – 作为开头的行
  + 文本限定符 – 双引号或单引号
  + 标题 – 指示文件是否包含标题行
+ ****预览行**** – 未使用联接配置编辑器时，将在右下角显示采样行预览。
+ ****联接配置**编辑器** – 数据工作区中有多个数据对象时，会打开联接编辑器。要编辑联接，请选择两个表（或文件）之间的联接图标。通过使用屏幕底部的联接配置面板，选择联接类型以及要联接的字段。然后，选择**应用**以创建联接。必须先完成所有联接，然后才能保存您的工作。

要添加更多查询、表或文件，请使用工作区上方的**添加数据**选项。

## 创建基本 SQL 查询
<a name="add-a-SQL-query"></a>

使用以下过程，通过自定义 SQL 查询连接到数据来源。

**创建基本 SQL 查询**

1. 创建新的数据来源，并验证连接。

1. 填写连接所必需的选项，但不需要选择架构或表。

1. 选择**使用自定义 SQL**。

1. （可选）可以在 SQL 编辑器中输入查询，或者继续执行下一步以使用全屏版本。要立即输入查询，请为该查询创建一个名称。然后，键入 SQL 查询或粘贴到编辑器中。SQL 编辑器提供语法突出显示、基本语法自动完成、自动缩进和行号等功能。

   （可选）选择**确认查询**以对其进行验证，并查看直接查询、SPICE内存和 SageMaker AI 设置的设置。

1. 选择**编辑/预览数据**。此时将显示完整的查询编辑器，并且会显示 SQL 编辑器。系统将处理查询并在数据预览窗格中显示查询结果的示例。可以对 SQL 进行更改，并通过选择**应用**进行确认。完成 SQL 后，选择**关闭**以继续。

1.  在顶部区域输入数据集的名称。然后选择**保存并可视化**。

### 修改现有查询
<a name="modifying-existing-queries"></a>

**更新 SQL 查询**

1. 打开您希望使用的数据集。

1. 在带网格的工作区中，找到表示现有查询的方形对象。

1. 打开查询对象上的选项菜单，然后选择**编辑 SQL 查询**。如果此选项未显示在列表中，则查询对象不基于 SQL。

   要查看以前版本的查询，请打开左侧的**查询存档**。

# 添加地理空间数据
<a name="geospatial-data-prep"></a>

您可以在数据中标记地理字段，这样 Amazon Quick Sight 就可以将其显示在地图上。Amazon Quick Sight 可以绘制纬度和经度坐标图。它还会识别地理组件，例如，国家/地区、州或区域、县或地区、城市和邮政编码。您还可以创建可区分类似实体的地理层次结构，例如，两个州/省中的相同城市名称。

**注意**  
目前，某些 AWS 区域国家（包括中国）不支持 Amazon Quick Sight 中的地理空间图表。我们正在努力增加对更多区域的支持。

可以使用以下过程将地理空间数据类型和层次结构添加到数据集中。

**将地理空间数据类型和层次结构添加到数据集中**

1. 在数据准备页上，使用正确的数据类型标记地理组件。

   我们可以通过多种方式来实现这一目的。一种方式是，选择 **Fields** 下面的字段，然后使用省略号图标 (**...**) 打开上下文菜单。

   接下来，选择正确的地理空间数据类型。

   也可以在包含数据示例的工作区中更改数据类型。为此，请选择在字段名称下面列出的数据类型。然后，选择要分配的数据类型。

1. 确认映射所需的所有地理空间字段标记为地理空间数据类型。您可以查找位置标记图标以检查这种情况。该图标显示在页面顶部的字段名称下面以及左侧的 **Fields** 窗格中。

   还要检查数据类型名称，例如，纬度或国家/地区。

1. (可选) 您可以为地理组件 (省/市/自治区、城市) 或纬度和经度坐标设置层次结构或分组。对于坐标，您必须向地理空间字段井添加纬度和经度。

   要创建层次结构或分组，请先选择 **Fields** 窗格中的某个字段。每个字段只能属于一个层次结构。先选择哪个字段或按什么顺序添加字段无关紧要。

   选择字段名称旁边的省略号图标 (**...**)。然后选择 **Add to a hierarchy**。

1. 在 **Add field to hierarchy** 屏幕上，选择下列选项之一：
   + 选择 **Create a new geospatial hierarchy** 以创建新的分组。
   + 选择 **Add to existing geospatial hierarchy** 以将字段添加到已存在的分组中。显示的现有层次结构仅包含具有匹配地理空间类型的层次结构。

   选择 **Add** 以确认您的选择。

1. 在 **Create hierarchy** 屏幕上，为您的层次结构命名。

   如果要创建经纬度分组，则会出现 “**创建等级**” 屏幕。根据在前面的步骤中选择了经度还是纬度，将在该屏幕上显示经度或纬度。确保在**用于纬度的字段**下方显示您的纬度字段。还要确保在**用于经度的字段**下方显示您的经度。

   对于地理组件，**Create hierarchy** 屏幕包含两个选项：
   + 如果您的数据仅包含一个国家/地区，请选择 **This hierarchy is for a single country**。从列表中选择该特定国家/地区。您的数据不需要包含层次结构的每个级别。您可以按任意顺序将字段添加到层次结构中。
   + 如果您的数据包含多个国家/地区，请选择 **This hierarchy is for multiple countries**。选择包含国家/地区名称的字段。

   对于任一层次结构类型，请选择 **Update** 以继续。

1. 继续在层次结构中添加所需数量的字段。

   您的地理空间分组将显示在 **Fields** 窗格中。

# 更改地理空间分组
<a name="geospatial-change-hierarchy"></a>

您可以更改在数据集中存在的地理空间层次结构或分组。

可以使用以下过程编辑或删除地理空间层次结构。

**编辑或删除地理空间层次结构**

1. 打开数据集。在 **Fields** 窗格中，选择层次结构名称。

1. 选择省略号图标 (**...**)，然后选择以下选项之一。

   选择**删除层次结构**以从数据集中删除该层次结构。您无法撤销此操作。但是，您可以通过重新从步骤 1 开始操作来重新创建层次结构或分组。删除层次结构并不会从数据集中删除任何字段。

   选择 **Edit hierarchy** 以对该层次结构进行更改。这样做会重新打开创建屏幕，因此，您可以进行不同的选择以重新构建层次结构。

# 地理空间故障排除
<a name="geospatial-troubleshooting"></a>

使用本节了解正确处理地理空间数据的 Amazon Quick Sight 要求。如果 Amazon Quick Sight 无法将您的地理空间数据识别为地理空间，请使用此部分来帮助解决问题。确保您的数据遵循列出的准则，以便在地理空间视觉对象中使用该数据。

**注意**  
目前，某些 AWS 区域国家（包括中国）不支持 Amazon Quick Sight 中的地理空间图表。我们正在努力增加对更多区域的支持。  
如果您所在的地理位置符合此处列出的所有指南，但仍会出现错误，请通过 Amazon Quick Sight 控制台与 Amazon Quick Sight 团队联系。

**Topics**
+ [地理编码问题](#geocoding)
+ [纬度和经度的相关问题](#latitude-and-longitude)
+ [支持的行政区域和邮政编码（按国家/地区列出）](#supported-admin-areas-postal-codes)

## 地理编码问题
<a name="geocoding"></a>

Amazon Quick Sight 将地名地理编码为纬度和经度坐标。它使用这些坐标在地图上显示位置名称。Amazon Quick Sight 会跳过任何它无法进行地理编码的地方。

要使此过程正常运行，您的数据必须至少包含国家/地区。此外，父位置名称内不能有重复的位置名称。

一些问题将阻止位置名称显示在地图上。这些问题包括不支持的、模糊的或无效的位置，如下所述。

**Topics**
+ [不支持的区域的相关问题](#geospatial-unsupported-areas)
+ [模糊位置的相关问题](#geospatial-ambiguous-locations)
+ [无效的地理空间数据的相关问题](#geospatial-invalid-data)
+ [地理编码中的默认国家/地区的相关问题](#geospatial-default-country)

### 不支持的区域的相关问题
<a name="geospatial-unsupported-areas"></a>

要绘制不支持的位置的地图，请在数据中包含纬度和经度坐标。在地理空间字段井中使用这些坐标可使位置显示在地图上。

### 模糊位置的相关问题
<a name="geospatial-ambiguous-locations"></a>

地理空间数据不能包含模糊位置。例如，假设数据包含一个名为 **Springfield** 的城市，而层次结构中的下一个级别为国家/地区。由于多个州/省具有名为 **Springfield** 的城市，因此，无法将该位置地理编码为地图上的特定数据点。

为避免此问题，您可以添加足够的地理数据来指示哪个位置应显示在地图上。例如，您可以在数据及其层次结构内添加一个省/市/自治区级别。您也可以添加纬度和经度。

### 无效的地理空间数据的相关问题
<a name="geospatial-invalid-data"></a>

当位置名称 (如城市) 在不正确的父位置名称 (如省/市/自治区) 下列出时，将出现无效的地理空间数据。此问题可能是简单的拼写错误或数据输入错误。

**注意**  
Amazon Quick Sight 不支持区域（例如西海岸或南海岸）作为地理空间数据。但是，您可以使用区域作为视觉对象中的筛选条件。

### 地理编码中的默认国家/地区的相关问题
<a name="geospatial-default-country"></a>

确保您使用的是正确的默认国家/地区。

每个层次结构的默认值都基于您在创建层次结构时选择的国家/地区或国家/地区字段。

要更改此默认值，您可以返回 **Create hierarchy** 屏幕。然后，编辑或创建一个层次结构，再选择不同的国家/地区。

如果您未创建层次结构，您的默认国家/地区将基于您的 AWS 区域。有关详细信息，请参见下表。


| Region | 默认国家/地区 | 
| --- | --- | 
| 美国西部（俄勒冈州）区域 美国东部（俄亥俄州）区域 美国东部（弗吉尼亚州北部）区域 | 美国 | 
| 亚太地区（新加坡） | 新加坡 | 
| 亚太地区（悉尼） | 澳大利亚 | 
| 欧洲地区（爱尔兰）区域 | 爱尔兰 | 

## 纬度和经度的相关问题
<a name="latitude-and-longitude"></a>

Amazon Quick Sight 使用背景中的纬度和经度坐标在地图上查找地名。但您也可以使用坐标创建地图，而不使用位置名称。此方法还适用于不支持的位置名称。

经度和纬度值必须为数字。例如，所指示的地图点与 Amazon Q **28.5383355 -81.3792365** uick Sight 兼容。但是，**28° 32' 18.0096'' N 81° 22' 45.2424'' W** 不兼容。

**Topics**
+ [纬度和经度坐标的有效范围](#valid-ranges-for-coordinates)
+ [使用采用度、分、秒（DMS）格式表示的坐标](#using-coordinates-in-dms-format)

### 纬度和经度坐标的有效范围
<a name="valid-ranges-for-coordinates"></a>

Amazon Quick Sight 支持特定范围内的纬度和经度坐标。




| 坐标 | 有效范围 | 
| --- | --- | 
| 纬度 | 介于 -90 和 90 之间 | 
| 经度 | 介于 -180 和 180 之间 | 

Amazon Quick Sight 会跳过这些范围之外的所有数据。 Out-of-range无法在地图图表上映射点。

### 使用采用度、分、秒（DMS）格式表示的坐标
<a name="using-coordinates-in-dms-format"></a>

您可以在公式中使用计算字段以通过字符串创建数字经度和纬度。使用本节查找在 Amazon Quick Sight 中创建计算字段的不同方法，将 GPS 纬度和经度解析为数字纬度和经度。

以下示例将经度和纬度从单独的字符转换为数字格式。例如，假设您将空格作为分隔符以分析 **51° 30' 26.4636'' N 0° 7' 39.9288'' W**。在这种情况下，您可以使用类似于以下示例的内容将生成的字段转换为数字纬度和经度。

在该示例中，秒后跟两个单引号。如果您的数据有一个双引号，则可使用 `strlen(LatSec)-1)` 而非 `strlen(LatSec)-2)`。

```
/*Latitude*/
        ifelse(
        LatDir = "N",
        parseInt(split(LatDeg, "°", 1)) +
            (parseDecimal(split(LatMin, "'", 1) ) /60) +
            (parseDecimal((substring(LatSec, 1, strlen(LatSec)-2) ) ) /3600),
        (parseInt(split(LatDeg, "°", 1)) +
            (parseDecimal(split(LatMin, "'", 1) ) /60) +
            (parseDecimal((substring(LatSec, 1, strlen(LatSec)-2) ) ) /3600)) * -1
        )

/*Longitude*/
        ifelse(
        LongDir = "E",
        parseInt(split(LongDeg, "°", 1)) +
            (parseDecimal(split(LongMin, "'", 1) ) /60) +
            (parseDecimal((substring(LongSec, 1, strlen(LongSec)-2) ) ) /3600),
        (parseInt(split(LongDeg, "°", 1)) +
            (parseDecimal(split(LongMin, "'", 1) ) /60) +
            (parseDecimal((substring(LongSec, 1, strlen(LongSec)-2) ) ) /3600)) * -1
        )
```



如果您的数据不包含度、分钟和秒符号，则公式如下所示。

```
/*Latitude*/
    ifelse(
        LatDir = "N",
        (LatDeg + (LatMin / 60) + (LatSec / 3600)),
        (LatDeg + (LatMin / 60) + (LatSec / 3600)) * -1
    )

/*Longitude*/
    ifelse(
        LongDir = "E",
        (LongDeg + (LongMin / 60) + (LongSec / 3600)),
        (LongDeg + (LongMin / 60) + (LongSec / 3600)) * -1
    )
```



以下示例将 **53°21'N 06°15'W** 转换为数字格式。不过，如果不使用秒，则无法准确映射此位置。

```
/*Latitude*/
ifelse(
    right(Latitude, 1) = "N",
    (parseInt(split(Latitude, '°', 1)) +
        parseDecimal(substring(Latitude, (locate(Latitude, '°',3)+1),  2) ) / 60) ,
    (parseInt(split(Latitude, '°', 1)) +
        parseDecimal(substring(Latitude, (locate(Latitude, '°',3)+1),  2) ) / 60) * -1
)

/*Longitude*/
ifelse(
    right(Longitude, 1) = "E",
    (parseInt(split(Longitude, '°', 1)) +
        parseDecimal(substring(Longitude, (locate(Longitude, '°',3)+1),  2) ) / 60) ,
    (parseInt(split(Longitude, '°', 1)) +
        parseDecimal(substring(Longitude, (locate(Longitude, '°',3)+1),  2) ) / 60) * -1
)
```



GPS 经度和纬度的格式可能会有所不同，因此，请自定义公式以便与您的数据相匹配。有关更多信息，请参阅下列内容：
+ LatLong.net 上的@@ [度分秒到十进制度](https://www.latlong.net/degrees-minutes-seconds-to-decimal-degrees)
+ 在堆栈@@ [Degrees/Minutes/Seconds溢出时使用 SQL 转换为小数](https://stackoverflow.com/questions/12186110/converts-degrees-minutes-seconds-to-decimals-using-sql)
+ Wikipedia 上的[地理坐标转换](https://en.wikipedia.org/wiki/Geographic_coordinate_conversion)

## 支持的行政区域和邮政编码（按国家/地区列出）
<a name="supported-admin-areas-postal-codes"></a>

下面是按国家/地区列出的支持的行政区域列表。


**支持的行政区域**  

| 国家/地区名称 | 国家/地区代码 | Country（国家/地区） | 州 | County | 城市 | 
| --- | --- | --- | --- | --- | --- | 
|  阿鲁巴岛  |  ABW  |  国家/地区  |  Regions  |  Zones  |    | 
|  阿富汗  |  AFG  |  国家/地区  |  Wilayat  |  Wuleswali  |  Localities/Urban Areas  | 
|  安哥拉  |  AGO  |  国家/地区  |  Provinces/Províncias  |  Municipios  |  Localities/Urban Areas  | 
|  安圭拉岛  |  AIA  |  国家/地区  |  Parishes  |    |    | 
|  阿尔巴尼亚  |  ALB  |  国家/地区  |  Qarqe/Qark  |  Communes/Bashki  |  新区域 si/Localities/Urban  | 
|  安道尔  |  AND  |  国家/地区  |  Parishes/Parròquies  |  Localities/Urban Areas  |    | 
|  阿拉伯联合酋长国  |  ARE  |  国家/地区  |  Emirates  |  Municipalities  |  Cities/Localities/Urban区域  | 
|  阿根廷  |  ARG  |  国家/地区  |  Provinces/Provincias  |  Departamentos/Departments  |  Comunas/Barrios  | 
|  亚美尼亚  |  ARM  |  国家/地区  |  Provinces/Marzpet  |    |  Localities/Urban Areas  | 
|  美属萨摩亚  |  ASM  |  国家/地区  |  Districts  |  Counties  |  Villages  | 
|  南极洲  |  ATA  |  国家/地区  |    |    |    | 
|  法属南部领地  |  ATF  |  国家/地区  |  Districts  |    |    | 
|  安提瓜和巴布达  |  ATG  |  国家/地区  |  Parishes  |    |  Localities/Urban Areas  | 
|  澳大利亚  |  AUS  |  国家/地区  |  状态  |  Local Government Areas  |  Suburbs/Urban Centers  | 
|  奥地利  |  AUT  |  国家/地区  |  States/Bundesländer  |  Districts/Bezirke  |  Municipalities/Gemeinden/Urban Areas/Stadtteil  | 
|  阿塞拜疆  |  AZE  |  国家/地区  |  Regions/Iqtisadi Rayonlar  |  Districts/Rayonlar  |  Localities/Urban Areas  | 
|  布隆迪  |  BDI  |  国家/地区  |  Provinces  |  Communes  |  Localities/Urban Areas  | 
|  比利时  |  BEL  |  国家/地区  |  Regions/Gewest  |  Provinces/Provincie  |  Districts/Arrondissements/Municipalities/Communes  | 
|  贝宁  |  BEN  |  国家/地区  |  Departments  |  Communes  |  Localities/Urban Areas  | 
|  博内尔岛、圣尤斯塔修斯和萨巴岛  |  BES  |  国家/地区  |  Municipalities  |    |  Localities/Urban Areas  | 
|  布基纳法索  |  BFA  |  国家/地区  |  Regions  |  Provinces  |  Communes/Localities/Urban区域  | 
|  孟加拉国  |  BGD  |  国家/地区  |  Divisions/Bibhag  |  Districts/Zila  |  Subdistricts/Upzila/Localities/Urban区域  | 
|  保加利亚  |  BGR  |  国家/地区  |  Oblasts  |  Obshtina  |  Localities/Urban Areas  | 
|  巴林  |  BHR  |  国家/地区  |  Governorates  |  Constituencies  |  Localities  | 
|  巴哈马  |  BHS  |  国家/地区  |  Island Groups  |  Districts  |  Towns  | 
|  波斯尼亚和黑塞哥维那  |  BIH  |  国家/地区  |  Federation/Republika  |  Kanton  |  Ops Areas tina/Localities/Urban  | 
|  圣巴泰勒米  |  BLM  |  国家/地区  |    |    |  Localities/Urban Areas  | 
|  白俄罗斯  |  BLR  |  国家/地区  |  Voblast  |  Rayon  |  Selsoviet/Localities/Urban区域  | 
|  伯利兹  |  BLZ  |  国家/地区  |  Districts  |  Constituencies  |  Localities/Urban Areas  | 
|  百慕大  |  BMU  |  国家/地区  |  Parishes  |    |  Localities/Urban Areas  | 
|  玻利维亚  |  BOL  |  国家/地区  |  Provinces/Provincias  |  Departamentos/Departments  |  Municipalities/Municipios/Localities/Urban区域  | 
|  巴西  |  BRA  |  国家/地区  |  Provinces/States/Unidades  |  Municipalities/Municipios  |  Localities/Urban Areas  | 
|  巴巴多斯  |  BRB  |  国家/地区  |  Parishes  |    |  Localities/Urban Areas  | 
|  文莱  |  BRN  |  国家/地区  |  Districts/Dawaïr  |  Subdistricts/Mukim  |  Villages/Kampung/Localities/Urban区域  | 
|  不丹  |  BTN  |  国家/地区  |  Districts/Dzongkhag  |    |  Localities/Urban Areas  | 
|  布韦岛  |  BVT  |  国家/地区  |    |    |    | 
|  博茨瓦纳  |  BWA  |  国家/地区  |  Districts  |  Subdistricts  |  Localities/Urban Areas  | 
|  中非共和国  |  CAF  |  国家/地区  |  Regions  |  Prefectures  |  Sub Prefectures/Communes  | 
|  加拿大  |  CAN  |  国家/地区  |  Provinces/Territories  |  Census Divisions  |  人口普查Subdivisions/Localities/Urban区域  | 
|  瑞士  |  CHE  |  国家/地区  |  Cantons/Kanton/Cantone/Chantun  |  District/Bezirk/Distretto/Circul  |  “Commune/Gemeinde/Comune/Cumün/Localities/Urban区域”  | 
|  智利  |  CHL  |  国家/地区  |  Regions/Regiones  |  Province/Provincias  |  Communes/Comunas/Localities/Urban区域  | 
|  中国人民共和国  |  CHN  |  国家/地区  |  Provinces  |  Prefectures  |  Cities/Counties  | 
|  科特迪瓦  |  CIV  |  国家/地区  |  Districts  |  Regions  |  Departments/Sub Prefectures  | 
|  喀麦隆  |  CMR  |  国家/地区  |  Provinces/Regions  |  Departments  |  Arrondissements/Cities  | 
|  刚果民主共和国  |  COD  |  国家/地区  |  Provinces  |  Districts  |  Localities/Urban Areas  | 
|  刚果共和国  |  COG  |  国家/地区  |  Departments  |    |  Communes/Arrondissements  | 
|  库克群岛  |  COK  |  国家/地区  |  Island Councils  |    |    | 
|  哥伦比亚  |  COL  |  国家/地区  |  Departmentos  |  Municipios  |  Localities/Urban Areas  | 
|  科摩罗  |  COM  |  国家/地区  |  Autonomous Islands/îles Autonomes  |    |  Villes/Villages  | 
|  克利珀顿岛  |  CPT  |  国家/地区  |    |    |    | 
|  佛得角  |  CPV  |  国家/地区  |  Ilhas  |  Concelhos  |  Localities/Urban Areas  | 
|  哥斯达黎加  |  CRI  |  国家/地区  |  Provincias  |  Cantons  |  Distritos/Localities/Urban区域  | 
|  古巴  |  CUB  |  国家/地区  |  Provincias  |  Municipios  |  Localities/Urban Areas  | 
|  库拉索岛  |  CUW  |  国家/地区  |    |    |  Localities/Urban Areas  | 
|  开曼群岛  |  CYM  |  国家/地区  |  Districts  |    |    | 
|  塞浦路斯  |  CYP  |  国家/地区  |  Districts/Eparchies  |  Municipalities/Dimos  |  Localities/Urban Areas/Sinikia  | 
|  捷克共和国  |  CZE  |  国家/地区  |  Regions/Kraj  |  Municipalities/Orp  |  Obec/Mesto  | 
|  德国  |  DEU  |  国家/地区  |  Bundesland/States  |  Kreis/Districts  |  Gemeinde/Municipalities/Stadtteil/Localities/Urban区域  | 
|  吉布提  |  DJI  |  国家/地区  |  Regions  |    |  Localities/Urban Areas  | 
|  多米尼加  |  DMA  |  国家/地区  |  Parishes  |    |  Localities/Urban Areas  | 
|  丹麦  |  DNK  |  国家/地区  |  Regions  |  Provinces  |  Municipalities/Localities/Urban区域  | 
|  多米尼加共和国  |  DOM  |  国家/地区  |  Regions/Regiones  |  Provinces/Provincias  |  Municipalities/Municipios/Localities/Urban区域  | 
|  阿尔及利亚  |  DZA  |  国家/地区  |  Provinces/Wilayas  |  Districts  |  Municipalities/Baladiyas/Localities/Urban区域  | 
|  厄瓜多尔  |  ECU  |  国家/地区  |  Provinces  |  Cantons  |  Parishes/Localities/Urban区域  | 
|  埃及  |  EGY  |  国家/地区  |  Governorates/Muhafazat  |  Municipal Divisions/Markaz  |  Towns/Cities/Sub市政部门  | 
|  厄立特里亚  |  ERI  |  国家/地区  |  Regions/Zoba  |  Districts/Subzobas  |  Localities/Urban Areas  | 
|  西班牙  |  ESP  |  国家/地区  |  自主自动 Communities/Comunidados 驾驶  |  Provincias  |  Municipios/Localities/Urban区域  | 
|  爱沙尼亚  |  EST  |  国家/地区  |  Maakond  |  Omavalitsus/Linn/Vald  |  Ku 区域 la/Localities/Urban  | 
|  埃塞俄比亚  |  ETH  |  国家/地区  |  Regions/Kililoch  |  Zones/Zonouch  |  Localities/Urban Areas  | 
|  芬兰  |  FIN  |  国家/地区  |  Regions/Maakunta  |  Sub-Regions/Seutukunta  |  Municipalities/Kunta/Localities/Urban区域  | 
|  斐济  |  FJI  |  国家/地区  |  Divisions  |  Provinces  |  Districts/Villages  | 
|  福克兰群岛  |  FLK  |  国家/地区  |    |    |    | 
|  法国  |  FRA  |  国家/地区  |  Regions  |  Départements  |  Arrondissements/Cantons  | 
|  法罗群岛  |  FRO  |  国家/地区  |  Regions/Syslur  |  Municipalities/Kommunur  |  Localities/Urban Areas  | 
|  Federated States of Micronesia  |  FSM  |  国家/地区  |  状态  |    |    | 
|  加蓬  |  GAB  |  国家/地区  |  Provinces  |  Departments  |  Localities/Urban Areas  | 
|  英国  |  GBR  |  国家/地区  |  Nations  |  Counties  |  Districts/Localities/Urban区域  | 
|  格鲁吉亚  |  GEO  |  国家/地区  |  Regions/Mkhare  |  Municipalities/Munitsipaliteti  |  Localities/Urban Areas  | 
|  加纳  |  GHA  |  国家/地区  |  Regions  |  Districts  |  Localities/Urban Areas  | 
|  直布罗陀  |  GIB  |  国家/地区  |    |    |  Localities/Urban Areas  | 
|  几内亚  |  GIN  |  国家/地区  |  Regions  |  Prefectures  |  子Prefectures/Localities/Urban区域  | 
|  瓜德罗普  |  GLP  |  国家/地区  |  Arrondissements  |  Communes  |  Localities/Urban Areas  | 
|  冈比亚  |  GMB  |  国家/地区  |  Regions  |  Districts  |  Localities/Urban Areas  | 
|  Guinea Bissau  |  GNB  |  国家/地区  |  Regions  |  Sectors  |  Localities/Urban Areas  | 
|  赤道几内亚  |  GNQ  |  国家/地区  |  Regions  |  Provincias  |  Distritos/Localities/Urban区域  | 
|  希腊  |  GRC  |  国家/地区  |  Regions/Periphenies  |  Regional Units Peri Enotities  |  Municipalities/Domoi/Localities/Urban区域  | 
|  格林纳达  |  GRD  |  国家/地区  |  状态  |  Parishes/Dependencies  |  Localities/Urban Areas  | 
|  格陵兰  |  GRL  |  国家/地区  |  Municipalities/Kommunia  |    |    | 
|  危地马拉  |  GTM  |  国家/地区  |  Departments/Departamentos  |  Municipalities/Municipios  |  Localities/Urban Areas  | 
|  法属圭亚那  |  GUF  |  国家/地区  |  Arrondissements  |  Communes  |  Localities/Urban Areas  | 
|  关岛  |    |  Country = USA  |  状态  |  Districts  |    | 
|  圭亚那  |  GUY  |  国家/地区  |  Regions  |  Neighborhood Councils  |  Localities/Urban Areas  | 
|  Hong Kong  |  HKG  |  国家/地区  |  Districts  |  Subdistricts  |  Localities/Urban Areas  | 
|  赫德和 McDonald 岛屿  |  HMD  |  国家/地区  |    |    |    | 
|  洪都拉斯  |  HND  |  国家/地区  |  Departments/Departamentos  |  Municipalities/Municipios  |  Localities/Urban Areas  | 
|  克罗地亚  |  HRV  |  国家/地区  |  Counties  |  Municipalities  |  Localities/Urban Areas  | 
|  海地  |  HTI  |  国家/地区  |  Departments/Départements  |  Districts/Arrondissements  |  Communes/Localities/Urban区域  | 
|  匈牙利  |  HUN  |  国家/地区  |  Regiok  |  Megyék  |  Járások/Városok  | 
|  印度尼西亚  |  IDN  |  国家/地区  |  Provinces/Provinsi  |  Regency/Kabupaten  |  Districts/Kecamatan/Localities/Urban区域  | 
|  印度  |  IND  |  国家/地区  |  States/Territories  |  Districts  |  Subdistricts/Towns/Localities/Urban区域  | 
|  英属印度洋领地  |  IOT  |  国家/地区  |    |    |    | 
|  爱尔兰  |  IRL  |  国家/地区  |  Regions  |  Counties  |  选举Divisions/Localities/Urban区  | 
|  伊朗  |  IRN  |  国家/地区  |  Provinces/Ostanha  |  Counties/Shahrestan  |  Localities/Dehestân  | 
|  伊拉克  |  IRQ  |  国家/地区  |  Governorates/Muhafazat  |  Districts/Qadaa/Kaza  |  Urban Areas/Localities  | 
|  Iceland  |  ISL  |  国家/地区  |  Regions/Landsvaedi  |  Municipalities/Sveitarfelog  |  Localities/Urban Areas  | 
|  以色列  |  ISR  |  国家/地区  |  Districts  |  Cities/Local Councils  |  Localities/Urban Areas  | 
|  意大利  |  ITA  |  国家/地区  |  Regiones  |  Provincias  |  Communes/Localities/Urban区域  | 
|  牙买加  |  JAM  |  国家/地区  |  Counties  |  Parishes  |  Constituencies/Localities/Urban区域  | 
|  约旦  |  JOR  |  国家/地区  |  Governorates  |  Districts  |  Subdistricts/Cities  | 
|  日本  |  JPN  |  国家/地区  |  Prefectures  |    |  Cities/Districts/Municipalities  | 
|  哈萨克  |  KAZ  |  国家/地区  |  Regions/Oblystar  |  Districts/Audandar  |  Towns/Kent/Localities/Urban区域  | 
|  肯尼亚  |  KEN  |  国家/地区  |  Counties  |  Constituencies  |  Localities/Urban Areas/Suburbs  | 
|  吉尔吉斯斯坦  |  KGZ  |  国家/地区  |  Regions/Oblasttar  |  Districts/Raions  |  Localities/Urban Areas  | 
|  柬埔寨  |  KHM  |  国家/地区  |  Provinces/Khaet  |  Districts/Srŏk  |  Communes/Khum/Localities/Urban区域  | 
|  基里巴斯  |  KIR  |  国家/地区  |  Districts  |  Island Councils  |    | 
|  圣基茨和尼维斯  |  KNA  |  国家/地区  |  Parishes  |  状态  |  Localities/Urban Areas  | 
|  韩国  |  KOR  |  国家/地区  |  Provinces/Do  |  Districts/Si/Gun  |  Localities/Urban Areas  | 
|  科威特  |  KWT  |  国家/地区  |  Governorates/Muhafazah  |  Areas/Mintaqah  |  Cities/Communities  | 
|  老挝  |  LAO  |  国家/地区  |  Provinces/Khoueng  |  Districts/Muang  |  Localities/Urban Areas  | 
|  黎巴嫩  |  LBN  |  国家/地区  |  Governorates/Muhafazat  |  Districts/Qadaa  |  Municipalities/Localities/Urban区域  | 
|  利比里亚  |  LBR  |  国家/地区  |  Counties  |  Districts  |  Clans/Localities/Urban区域  | 
|  利比亚  |  LBY  |  国家/地区  |  Districts/Shabiya  |    |  Cities/Localities/Urban区域  | 
|  圣卢西亚岛  |  LCA  |  国家/地区  |  Districts/Quarters  |    |  Localities/Urban Areas  | 
|  列支敦士登  |  LIE  |  国家/地区  |  Districts/Bezirk  |  Municipalities/Gemeinden  |  Localities/Urban Areas  | 
|  斯里兰卡  |  LKA  |  国家/地区  |  Provinces  |  Districts  |  分区区域 Secretariats/Localities/Urban  | 
|  莱索托  |  LSO  |  国家/地区  |  Districts  |  Constituencies  |  Community Councils/Localities  | 
|  立陶宛  |  LTU  |  国家/地区  |  Apskritis  |  Savivaldybé  |  Seniunija  | 
|  卢森堡  |  LUX  |  国家/地区  |  Cantons/Kantounen/Kantone  |  Communes/Gemengen/Gemeinden  |  Localities/Ortschaft/Uertschaft/Cities  | 
|  拉脱维亚  |  LVA  |  国家/地区  |  Regions  |  Municipalities/Novadi  |  Pilsé Areas tas/Pagasti/Localities/Urban  | 
|  澳门  |  MAC  |  国家/地区  |  Parishes  |  Districts  |    | 
|  圣马丁  |  MAF  |  国家/地区  |    |    |  Localities/Urban Areas  | 
|  摩洛哥  |  MAR  |  国家/地区  |  Regions  |  Provinces/Prefectures  |  Communes/Localities/Urban区域  | 
|  摩纳哥  |  MCO  |  国家/地区  |  Communes  |  Wards/Quartiers  |    | 
|  摩尔多瓦  |  MDA  |  国家/地区  |  Raion  |  Comuna  |  Localities/Urban Areas  | 
|  马达加斯加  |  MDG  |  国家/地区  |  Regions/Faritra  |  Districts  |  Communes/Localities/Urban区域  | 
|  马尔代夫  |  MDV  |  国家/地区  |  Atolls/Cities  |  Islands  |    | 
|  墨西哥  |  MEX  |  国家/地区  |  Estados  |  Municipios/Delegaciones  |  Colonias/Localities/Urban区域  | 
|  马绍尔群岛  |  MHL  |  国家/地区  |  Municipalities  |    |    | 
|  马其顿  |  MKD  |  国家/地区  |  Statistical Regions  |  Opstina  |  Localities/Urban Areas  | 
|  Mali  |  MLI  |  国家/地区  |  Regions  |  Communes  |  Localities/Urban Areas  | 
|  马耳他  |  MLT  |  国家/地区  |  Districts  |   Councils/Kunsilli Local Lokali  |  Localities/Urban Areas  | 
|  缅甸  |  MMR  |  国家/地区  |  States/Regions/Union领土  |  Districts  |  Townships/Localities/Urban区域  | 
|  黑山共和国  |  MNE  |  国家/地区  |  Opštine/Municipalities  |    |  Localities/Urban Areas  | 
|  蒙古  |  MNG  |  国家/地区  |  Regions  |  Provinces/Aimags  |  Districts/Sums/Localities/Urban区域  | 
|  北马里亚纳群岛  |  MNP  |  国家/地区  |  Municipalities  |    |    | 
|  莫桑比克  |  MOZ  |  国家/地区  |  Provinces  |  Districts/Distritos  |  Localities/Urban Areas  | 
|  毛里塔尼亚  |  MRT  |  国家/地区  |  Regions  |  Départements  |  Localities/Urban Areas  | 
|  Montserrat  |  MSR  |  国家/地区  |  Parishes  |  Regions  |  Localities/Urban Areas  | 
|  马提尼克  |  MTQ  |  国家/地区  |  Arrondissements  |  Communes  |  Localities/Urban Areas  | 
|  毛里求斯  |  MUS  |  国家/地区  |  Islands  |  Districts  |  Wards/Localities/Urban区域  | 
|  马拉维  |  MWI  |  国家/地区  |  Regions  |  Districts  |  Localities/Urban Areas  | 
|  马来西亚  |  MYS  |  国家/地区  |  States/Negeri  |  Districts/Daïra/Daerah  |  Subdistricts/Mukim/Localities/Urban Area/BahagianKecil  | 
|  马约特岛  |  MYT  |  国家/地区  |  Communes  |    |  Villages  | 
|  纳米比亚  |  NAM  |  国家/地区  |  Provinces  |  Constituencies  |  Suburbs/Localities  | 
|  新喀里多尼亚  |  NCL  |  国家/地区  |  Provinces  |  Communes  |    | 
|  尼日尔  |  NER  |  国家/地区  |  Regions  |  Departments  |  Localities/Urban Areas  | 
|  尼日利亚  |  NGA  |  国家/地区  |  状态  |  Local Government Areas  |  Towns/Cities  | 
|  尼加拉瓜  |  NIC  |  国家/地区  |  Departments/Departamentos  |  Municipalities/Municipios  |  Localities/Urban Areas  | 
|  纽埃岛  |  NIU  |  国家/地区  |  Villages  |    |  Towns  | 
|  荷兰  |  NLD  |  国家/地区  |  Counties/Fylker  |  Districts/Okonomisk  |  Municipalities, Kommuner, Localities, or Urban Areas  | 
|  挪威  |  NOR  |  国家/地区  |  Counties/Fylker  |  Districts/Okonomisk  |  Municipalities, Kommuner, Localities, or Urban Areas  | 
|  尼泊尔  |  NPL  |  国家/地区  |  Provinces/Pradeshaharu  |  Districts/Jilla  |  Municipalities/Localities/Urban区域  | 
|  瑙鲁  |  NRU  |  国家/地区  |  Districts  |    |    | 
|  新西兰  |  NZL  |  国家/地区  |  Regions  |  Territorial Authorities  |  统计Areas/Localities/Urban区域  | 
|  阿曼  |  OMN  |  国家/地区  |  Governorates/Muhafazah  |  Provinces/Wilayat  |  Cities/Urban Areas/Communities  | 
|  巴基斯坦  |  PAK  |  国家/地区  |  Provinces  |  Districts  |  Localities/Tehsils  | 
|  巴拿马  |  PAN  |  国家/地区  |  Provinces/Provincias  |  Districts/Distrito  |  Corregimientos/Localities/Urban区域  | 
|  皮特凯恩群岛  |  PCN  |  国家/地区  |  Islands  |    |    | 
|  秘鲁  |  PER  |  国家/地区  |  Regions  |  Districts  |  Distritos/Localities/Urban区域  | 
|  菲律宾  |  PHL  |  国家/地区  |  Regions/Rehiyon  |  Provinces/Lalawigan  |  Municipalities/Munisipiyos/Cities/Lungsod  | 
|  帕劳群岛  |  PLW  |  国家/地区  |  状态  |    |    | 
|  巴布亚新几内亚  |  PNG  |  国家/地区  |  Regions  |  Provinces  |  Districts/Localities/Urban区域  | 
|  波兰  |  POL  |  国家/地区  |  Provinces/Voivodeships  |  Counties/Powiats  |  Communes/Gminas/Towns/Dzielnicas  | 
|  朝鲜  |  PRK  |  国家/地区  |  Provinces  |    |  Localities/Urban Areas  | 
|  葡萄牙  |  PRT  |  国家/地区  |  Districts/Distritos  |  Municipalities/Concelhos  |  民用Parish/Freguesias/Localities/Urban区域  | 
|  巴拉圭  |  PRY  |  国家/地区  |  Departments  |  Distritos  |  Localities/Urban Areas  | 
|  巴勒斯坦  |  PSE  |  国家/地区  |  Territories  |  Governorates/Muhafazat  |  Localities/Urban Areas  | 
|  法属玻里尼西亚  |  PYF  |  国家/地区  |  Subdivisions/Iles  |  Communes  |    | 
|  卡塔尔  |  QAT  |  国家/地区  |  Municipalities/Baladiyat  |  Zones  |  Localities/Urban Areas  | 
|  留尼汪岛  |  REU  |  国家/地区  |  Arrondissements  |  Communes  |  Localities/Urban Areas  | 
|  罗马尼亚  |  ROU  |  国家/地区  |  Regions/Judete  |  Communes  |  Towns/Oraș  | 
|  俄罗斯  |  RUS  |  国家/地区  |  Federal District/Federal'nyy Okrug  |  Oblast'  |  Rayon/Raion/Urban Area/Gorod  | 
|  卢旺达  |  RWA  |  国家/地区  |  Provinces  |  Districts  |  Sectors/Secteurs/Localities/Urban区域  | 
|  沙特阿拉伯  |  SAU  |  国家/地区  |  Regions/Manatiq  |  Governorates/Muhafazat  |  Municipalities/Amanah  | 
|  苏丹  |  SDN  |  国家/地区  |  States/Wilaya'at  |    |  Localities/Urban Areas  | 
|  塞内加尔  |  SEN  |  国家/地区  |  Regions  |  Departments  |  Arrondissements/Localities/Urban区域  | 
|  新加坡  |  SGP  |  国家/地区  |  Districts  |  Constituencies  |  Wards  | 
|  圣赫勒拿岛  |  SHN  |  国家/地区  |  Islands  |  Districts  |  Localities/Urban Areas  | 
|  所罗门群岛  |  SLB  |  国家/地区  |  Provinces  |  Constituencies  |  Wards  | 
|  塞拉利昂  |  SLE  |  国家/地区  |  Provinces  |  Districts  |  Chiefdoms/Localities/Urban区域  | 
|  萨尔瓦多  |  SLV  |  国家/地区  |  Departments/Departamentos  |  Municipalities/Municipios  |  Localities/Urban Areas  | 
|  圣马力诺  |  SMR  |  国家/地区  |  Municipalities/Castelli  |  Localities/Urban Areas  |    | 
|  索马里  |  SOM  |  国家/地区  |  Regions/Gobolada  |    |  Localities/Urban Areas  | 
|  圣皮埃尔和密克隆群岛  |  SPM  |  国家/地区  |  Communes  |    |    | 
|  塞尔维亚  |  SRB  |  国家/地区  |  Autonomna Pokrajina/Regions  |  Okrug/Districts  |  Opstina/Municipalities/Localities/Urban区域  | 
|  南苏丹  |  SSD  |  国家/地区  |  States/Wilayat  |  Counties  |  Localities/Urban Areas  | 
|  圣多美和普林西比  |  STP  |  国家/地区  |  Provinces  |  Districts  |  Localities/Urban Areas  | 
|  苏里南  |  SUR  |  国家/地区  |  Districts/Distrikt  |  Resorts  |  Localities/Urban Areas  | 
|  斯洛伐克  |  SVK  |  国家/地区  |  Regions/Kraje  |  Districts/Okresy  |  Municipalities/Obec/Mestska cast  | 
|  斯洛文尼亚  |  SVN  |  国家/地区  |  Regions/Regi  |  Upravne Enote  |  Municipalities/Obcine/Localities/Urban区域  | 
|  瑞典  |  SWE  |  国家/地区  |  Counties  |  Municipalities  |  Localities/Urban Areas  | 
|  史瓦帝尼  |  SWZ  |  国家/地区  |  Regions  |  Tinkhundla  |  Towns/Suburbs/Localities  | 
|  荷属圣马丁  |  SXM  |  国家/地区  |  Settlements  |    |    | 
|  塞舌尔  |  SYC  |  国家/地区  |  Districts  |    |  Localities/Urban Areas  | 
|  Syria  |  SYR  |  国家/地区  |  Governorates  |  Districts/Muhafazah  |  Cities/Localities/Urban区域  | 
|  特克斯和凯科斯群岛  |  TCA  |  国家/地区  |  Districts  |  Localities  |    | 
|  乍得  |  TCD  |  国家/地区  |  Regions  |  Départements  |  Arrondissements/Localities/Urban区域  | 
|  多哥  |  TGO  |  国家/地区  |  Regions/Provinces  |  Prefectures  |  Localities/Urban Areas  | 
|  泰国  |  THA  |  国家/地区  |  Provinces/Changwat  |  Districts/Amphoe  |  Subdistricts/Tambon/Localities/Urban区域  | 
|  塔吉克斯坦  |  TJK  |  国家/地区  |  Provinces/Regions  |  Districts/Raion/Rayon  |  Localities/Urban Areas  | 
|  托克劳  |  TKL  |  国家/地区  |  Atolls  |    |    | 
|  土库曼斯坦  |  TKM  |  国家/地区  |  Provinces/Welayat  |  Districts/Etraplar  |  Towns  | 
|  东帝汶  |  TLS  |  国家/地区  |  Municipalities  |  Administrative Post  |  Localities/Urban Areas  | 
|  汤加  |  TON  |  国家/地区  |  Subdivisions  |    |    | 
|  特立尼达和多巴哥  |  TTO  |  国家/地区  |  Municipalities  |    |  Localities/Urban Areas  | 
|  突尼斯  |  TUN  |  国家/地区  |  Governates/Wilayahs  |  Delegations/Mutamadiyats  |  Municipalities/Shaykhats/Localities/Urban区域  | 
|  土耳其  |  TUR  |  国家/地区  |  Provinces/Il  |  Districts/Ilce  |  都市 Areas/Belde/Subdistricts/Bucak/Neighborhoods/Mahalle  | 
|  图瓦卢  |  TUV  |  国家/地区  |  Islands  |    |    | 
|  中国台湾  |  TWN  |  国家/地区  |  Provinces  |  Counties  |  Townships/Local Neighborhoods  | 
|  坦桑尼亚  |  TZA  |  国家/地区  |  Provinces/Mkoa  |  Districts/Wilaya  |  Localities/Urban Areas  | 
|  乌干达  |  UGA  |  国家/地区  |  Regions  |  Districts  |  Counties/Localities/Urban区域  | 
|  乌克兰  |  UKR  |  国家/地区  |  Oblast/Mista/AvtonomnaRespublika  |  Raions  |  定居 Councils/Rural Councils/Localities/Urban区  | 
|  美国本土外小岛屿  |  UMI  |  国家/地区  |  Islands/Atolls  |    |    | 
|  乌拉圭  |  URY  |  国家/地区  |  Departments/Departamentos  |  Municipios/Municipalities/Secciones  |  Segmentos/Localities/Urban区域  | 
|  United States of America  |  USA  |  国家/地区  |  States/Territories  |  Counties  |  MCD/CCD/Post Localities/Municipalities  | 
|  乌兹别克斯坦  |  UZB  |  国家/地区  |  Regions/Viloyatlar  |  Districts/Tumanlar  |  Localities/Urban Areas  | 
|  梵蒂冈城  |  VAT  |  国家/地区  |    |    |  Localities/Urban Areas  | 
|  圣文森特和格林纳丁斯  |  VCT  |  国家/地区  |  Parishes  |  Divisions  |  Localities/Urban Areas  | 
|  委内瑞拉  |  VEN  |  国家/地区  |  States/Estados  |  Municipalities/Municipios  |  Localities/Urban Areas/Parish/Parroquias  | 
|  英属维尔京群岛  |  VGB  |  国家/地区  |  Districts  |    |    | 
|  越南  |  VNM  |  国家/地区  |  Provinces/Cities  |  Districts  |  Wards/Localities/Urban区域  | 
|  瓦努阿图  |  VUT  |  国家/地区  |  Provinces  |    |    | 
|  瓦利斯和富图纳群岛  |  WLF  |  国家/地区  |  Districts/Rayaumes  |    |    | 
|  萨摩亚群岛  |  WSM  |  国家/地区  |  Districts/Itūmālō  |  Towns  |  Localities/Urban Areas  | 
|  科索沃  |  XKS  |  国家/地区  |  Districts  |  Municipalities  |  Localities/Urban Areas  | 
|  也门  |  YEM  |  国家/地区  |  Governorates/Muhafazat  |  Districts/Muderiah  |  Localities/Urban Areas  | 
|  南非  |  ZAF  |  国家/地区  |  Provinces  |  Districts  |  Municipalities/Wards  | 
|  赞比亚  |  ZMB  |  国家/地区  |  Provinces  |  Districts  |  Suburbs/Localities  | 
|  津巴布韦  |  ZWE  |  国家/地区  |  Provinces  |  Districts/Muderiah  |  Localities/Urban Areas  | 

以下是各国家/地区支持的邮政编码格式列表，包括位数和示例邮政编码。

**注意**  
邮政编码格式不支持 PO BOX 邮政编码。印度使用的联邦属地邮政编码也不受支持。


**支持的邮政编码**  

| 国家/地区 | 邮政格式 | 示例 | 
| --- | --- | --- | 
|  阿富汗  |  4 位数  |  1001  | 
|  阿尔巴尼亚  |  4 位数  |  1001  | 
|  阿尔及利亚  |  5 位数  |  01000  | 
|  美属萨摩亚  |  5 位数  |  96799  | 
|  安道尔  |  5 位数  |  AD100  | 
|  安圭拉岛  |  6 位数  |  AI-2640  | 
|  阿根廷  |  5 位数  |  A4126  | 
|  亚美尼亚  |  2 位数  |  00  | 
|  澳大利亚  |  4 位数  |  0800  | 
|  奥地利  |  4 位数  |  1010  | 
|  阿塞拜疆  |  2 位数  |  01  | 
|  文莱达鲁萨兰国  |  6 位数  |  BA1111  | 
|  巴林  |  4 位数  |  0101  | 
|  孟加拉国  |  2 位数  |  10  | 
|  白俄罗斯  |  6 位数  |  202115  | 
|  比利时  |  4 位数  |  1000  | 
|  百慕大  |  4 位数  |  CR 01  | 
|  不丹  |  2 位数  |  11  | 
|  波斯尼亚和黑塞哥维那  |  5 位数  |  70101  | 
|  巴西  |  5 位数  |  01001  | 
|  英属印度洋领地  |  字母数字 - 5 位数  |  BBND 1  | 
|  英属维尔京群岛  |  4 位数  |  1110  | 
|  保加利亚  |  4 位数  |  1000  | 
|  佛得角  |  4 位数  |  1101  | 
|  柬埔寨  |  2 位数  |  01  | 
|  加拿大  |  3 位数  |  A0A  | 
|  开曼群岛  |  字母数字 - 7 位数  |  KY1-1000  | 
|  智利  |  3 位数  |  100  | 
|  中国  |  4 位数  |  0100  | 
|  哥伦比亚  |  4 位数  |  0500  | 
|  哥斯达黎加  |  5 位数  |  10101  | 
|  克罗地亚  |  5 位数  |  10000  | 
|  古巴  |  1 位数  |  1  | 
|  塞浦路斯  |  4 位数  |  1010  | 
|  捷克  |  5 位数  |  100 00  | 
|  刚果民主共和国  |  4 位数  |  1001  | 
|  丹麦  |  4 位数  |  1050  | 
|  多米尼加共和国  |  5 位数  |  10101  | 
|  厄瓜多尔  |  6 位数  |  010101  | 
|  埃及  |  2 位数  |  11  | 
|  萨尔瓦多  |  4 位数  |  1101  | 
|  爱沙尼亚  |  5 位数  |  10001  | 
|  福克兰群岛  |  字母数字 - 5 位数  |  FIQQ 1  | 
|  法罗群岛  |  3 位数  |  100  | 
|  芬兰  |  5 位数  |  00100  | 
|  法国  |  5 位数  |  01000  | 
|  法属圭亚那  |  5 位数  |  97300  | 
|  法属玻里尼西亚  |  5 位数  |  98701  | 
|  格鲁吉亚  |  2 位数  |  01  | 
|  德国  |  5 位数  |  01067  | 
|  加纳  |  2 位数  |  A2  | 
|  直布罗陀  |  字母数字 - 5 位数  |  GX11 1  | 
|  希腊  |  5 位数  |  104 31  | 
|  格陵兰  |  4 位数  |  3900  | 
|  瓜德罗普  |  5 位数  |  97100  | 
|  关岛  |  5 位数  |  96910  | 
|  危地马拉  |  5 位数  |  01001  | 
|  根西岛  |  字母数字 - 4 位数，5 位数  |  GY1 1、 GY10 1  | 
|  几内亚比绍  |  4 位数  |  1000  | 
|  海地  |  4 位数  |  1110  | 
|  梵蒂冈教廷  |  5 位数  |  00120  | 
|  洪都拉斯  |  2 位数  |  11  | 
|  匈牙利  |  4 位数  |  1007  | 
|  Iceland  |  3 位数  |  101  | 
|  印度  |  6 位数  |  110001  | 
|  印度尼西亚  |  5 位数  |  10110  | 
|  伊朗  |  2 位数  |  11  | 
|  伊拉克  |  2 位数  |  10  | 
|  爱尔兰  |  3 位数  |  A41  | 
|  马恩岛  |  字母数字 - 4 位数  |  IM1 1  | 
|  以色列  |  5 位数  |  10292  | 
|  意大利  |  5 位数  |  00010  | 
|  日本  |  7 位数  |  001-0010  | 
|  Jersey  |  字母数字 - 4 位数  |  JE2 3  | 
|  约旦  |  5 位数  |  11100  | 
|  哈萨克  |  4 位数  |  0100  | 
|  肯尼亚  |  1 位数  |  0  | 
|  基里巴斯  |  6 位数  |  KI0101  | 
|  科索沃  |  5 位数  |  10000  | 
|  科威特  |  2 位数  |  00  | 
|  吉尔吉斯斯坦  |  4 位数  |  7200  | 
|  老挝  |  2 位数  |  01  | 
|  拉脱维亚  |  4 位数  |  1001  | 
|  莱索托  |  1 位数  |  1  | 
|  利比里亚  |  2 位数  |  10  | 
|  列支敦士登  |  4 位数  |  9485  | 
|  立陶宛  |  5 位数  |  00100  | 
|  卢森堡  |  4 位数  |  1110  | 
|  马其顿  |  4 位数  |  1000  | 
|  马达加斯加  |  3 位数  |  101  | 
|  马拉维  |  3 位数  |  101  | 
|  马来西亚  |  5 位数  |  01000  | 
|  马尔代夫  |  2 位数  |  00  | 
|  马耳他  |  3 位数  |  ATD  | 
|  马绍尔群岛  |  3 位数  |  969  | 
|  马提尼克  |  5 位数  |  97200  | 
|  毛里求斯  |  3 位数  |  111  | 
|  马约特岛  |  5 位数  |  97600  | 
|  墨西哥  |  5 位数  |  01000  | 
|  密克罗尼西亚  |  5 位数  |  96941  | 
|  摩尔多瓦  |  4 位数  |  2001  | 
|  摩纳哥  |  5 位数  |  98000  | 
|  蒙古  |  4 位数  |  1200  | 
|  黑山共和国  |  5 位数  |  81000  | 
|  Montserrat  |  4 位数  |  1120  | 
|  摩洛哥  |  5 位数  |  10000  | 
|  莫桑比克  |  4 位数  |  1100  | 
|  缅甸  |  2 位数  |  01  | 
|  纳米比亚  |  3 位数  |  100  | 
|  尼泊尔  |  3 位数  |  101  | 
|  荷兰  |  4 位数  |  1011  | 
|  新喀里多尼亚  |  5 位数  |  98800  | 
|  新西兰  |  4 位数  |  0110  | 
|  尼加拉瓜  |  3 位数  |  110  | 
|  尼日尔  |  4 位数  |  1000  | 
|  尼日利亚  |  4 位数  |  1002  | 
|  纽埃岛  |  4 位数  |  9974  | 
|  诺福克岛  |  4 位数  |  2899  | 
|  北马里亚纳群岛  |  5 位数  |  96950  | 
|  挪威  |  4 位数  |  0010  | 
|  阿曼  |  1 位数  |  1  | 
|  巴基斯坦  |  2 位数  |  10  | 
|  帕劳群岛  |  5 位数  |  96939  | 
|  巴勒斯坦  |  4 位数  |  P104  | 
|  巴布亚新几内亚  |  3 位数  |  111  | 
|  巴拉圭  |  6 位数  |  001001  | 
|  秘鲁  |  5 位数  |  01000  | 
|  菲律宾  |  4 位数  |  1000  | 
|  皮特凯恩  |  字母数字 - 5 位数  |  PCRN 1  | 
|  波兰  |  5 位数  |  00-002  | 
|  葡萄牙  |  4 位数  |  1000  | 
|  波多黎各  |  5 位数  |  00601  | 
|  罗马尼亚  |  6 位数  |  010011  | 
|  俄罗斯  |  6 位数  |  101000  | 
|  留尼汪岛  |  5 位数  |  97400  | 
|  圣巴泰勒米  |  5 位数  |  97133  | 
|  圣赫勒拿岛、阿森松岛和特里斯坦-达库尼亚岛  |  字母数字 - 5 位数  |  ASCN 1  | 
|  圣卢西亚岛  |  7 位数  |  LC01 101  | 
|  圣马丁  |  5 位数  |  97150  | 
|  圣皮埃尔和密克隆群岛  |  5 位数  |  97500  | 
|  圣文森特和格林纳丁斯  |  4 位数  |  VC01  | 
|  萨摩亚群岛  |  2 位数  |  11  | 
|  圣马力诺  |  5 位数  |  47890  | 
|  沙特阿拉伯  |  2 位数  |  12  | 
|  塞内加尔  |  5 位数  |  10000  | 
|  塞尔维亚  |  5 位数  |  11000  | 
|  新加坡  |  6 位数  |  018906  | 
|  斯洛伐克  |  5 位数  |  010 01  | 
|  斯洛文尼亚  |  4 位数  |  1000  | 
|  南非  |  4 位数  |  0001  | 
|  南乔治亚岛和南桑威奇群岛  |  字母数字 - 5 位数  |  SIQQ 1  | 
|  韩国  |  5 位数  |  01000  | 
|  西班牙  |  5 位数  |  01001  | 
|  斯里兰卡  |  2 位数  |  00  | 
|  苏丹  |  2 位数  |  11  | 
|  斯瓦尔巴群岛和扬马延岛  |  4 位数  |  8099  | 
|  斯威士兰  |  1 位数  |  H  | 
|  瑞典  |  5 位数  |  111 15  | 
|  瑞士  |  4 位数  |  1000  | 
|  中国台湾  |  3 位数  |  100  | 
|  塔吉克斯坦  |  4 位数  |  7340  | 
|  坦桑尼亚联合共和国  |  3 位数  |  111  | 
|  泰国  |  5 位数  |  10100  | 
|  东帝汶  |  4 位数  |  TL10  | 
|  特立尼达和多巴哥  |  2 位数  |  10  | 
|  突尼斯  |  4 位数  |  1000  | 
|  土耳其  |  5 位数  |  01010  | 
|  土库曼斯坦  |  3 位数  |  744  | 
|  特克斯和凯科斯群岛  |  字母数字 - 5 位数  |  TKCA 1  | 
|  美属维尔京群岛  |  5 位数  |  00802  | 
|  乌克兰  |  3 位数、5 位数  |  070、01001  | 
|  英国  |  字母数字 - 2 到 5 位数  |  B1,, AL1 AB10, AB10 1  | 
|  美国  |  5 位数  |  00001  | 
|  乌拉圭  |  5 位数  |  11000  | 
|  乌兹别克斯坦  |  4 位数  |  1000  | 
|  委内瑞拉  |  4 位数  |  0000  | 
|  越南  |  5 位数  |  01106  | 
|  瓦利斯和富图纳群岛  |  5 位数  |  98600  | 
|  赞比亚  |  5 位数  |  10100  | 

# 使用不支持的日期或自定义日期
<a name="using-unsupported-dates"></a>

Amazon Quick Sight 原生支持有限数量的日期格式。但是，您无法始终控制提供给您的数据格式。当您的数据包含不支持的格式的日期时，您可以告诉 Amazon Quick Sight 如何解释该日期。

为此，您可以编辑数据集，并将列格式从文本或数字改为日期。在进行该更改后，将显示一个屏幕，以使您可以在其中输入格式。例如，如果您使用的是关系数据源，则可以MM-dd-yyyy 为包含 “09-19-2017” 的文本字段指定，因此将其解释为 2017-09-19T00:00:00.000 Z。如果使用非关系数据来源，您可以执行相同的操作，从数字字段或文本字段开始。

Amazon Quick Sight 仅支持关系型 (SQL) 源的最新文本。

有关支持的日期格式的更多信息，请参阅[支持的日期格式](supported-data-types-and-values.md#supported-date-formats)。

使用此程序帮助 Amazon Quick Sight 了解不同格式的日期。

1. 对于包含不支持日期格式的数据集，如下所示编辑数据。对于包含日期时间数据的列，将数据类型从文本改为日期。为此，请在数据预览中选择列名称下方的彩色数据类型图标。
**注意**  
非 Unix 纪元日期时间的整数日期无法正常工作。例如，不支持以下格式的整数：`MMddyy`、`MMddyyyy`、`ddMMyy`、`ddMMyyyy` 和 `yyMMdd`。解决方法是先将它们更改为文本格式。请确保您的所有行均包含六位数 (五位数不可以)。然后再将文本数据类型更改为日期时间。  
有关 Unix 纪元日期时间的更多信息，请参阅[epochDate](epochDate-function.md)。

   在将数据类型更改为日期时，会显示 **Edit date format** 屏幕。

1. 输入日期格式，以指示哪些部分是月份、日期、年份或时间。格式区分大小写。

1. 选择 “**验证**”，确保 Amazon Quick Sight 现在可以使用您指定的格式解释您的日期时间数据。将跳过未通过验证的行，并从数据集中忽略。

1. 若您满意所创建的结果，请选择 **Update**。否则，请选择**关闭**。

# 向 Amazon Quick Sight 数据集添加唯一密钥
<a name="set-unique-key"></a>

Quick 作者可以在数据准备期间为 Quick Sight 数据集配置唯一的键列。此唯一键充当数据集的全局排序键，并优化表格视觉对象的查询生成。当用户在 Quick Sight 中创建表格视觉对象并将唯一键列很好地添加到值字段时，数据将从左到右排序到唯一键列。在排序顺序中，唯一键列右侧的所有列都将被忽略。不包含唯一键的表将根据列在数据集中显示的顺序进行排序。

以下限制适用于唯一键：
+ 仅非聚合表支持唯一键。
+ 如果数据集列用于列级安全性 (CLS)，则该列也不能用作唯一键。

使用以下步骤为 Amazon Quick Sight 中的数据集指定唯一密钥。

**设置唯一键**

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

1. 选择**数据**。

1. 执行以下操作之一：

   1. 导航到要添加唯一键的数据集，选择数据集旁边的省略号（三个点），然后选择**编辑**。

   1. 选择**新建**，然后选择**数据集**。选择要添加的数据集，然后选择**编辑数据源**。有关在 Amazon Quick Sight 中创建新数据集的更多信息，请参阅[创建数据集](creating-data-sets.md)。

1. 数据集的数据准备页面打开。导航到**字段**窗格，并找到要设置为唯一键的字段。

1. 选择字段名称旁边的省略号（三个点），然后选择**设置为唯一键**。

创建唯一键后，字段旁边会出现一个钥匙图标，表明该字段现在是数据集的唯一键。当您保存并发布数据集时，唯一键配置将应用于数据集以及使用该数据集创建的所有控制面板和分析。要从数据集中移除唯一键，请导航到数据集的数据准备页面，选择唯一键字段旁边的省略号，然后选择**移除为唯一键**。从数据集中移除唯一键后，您可以指定不同的字段作为唯一键。

# 将亚马逊 A SageMaker I 模型与 Amazon Quick Sight 集成
<a name="sagemaker-integration"></a>

**注意**  
您无需任何机器学习 (ML) 方面的技术经验即可使用 Amazon Quick Sight 中基于机器学习的功能编写分析和仪表板。

您可以使用亚马逊 A SageMaker I 机器学习模型扩充您的 Amazon Quick Enterprise 版数据。您可以对存储在从 Quick 支持的任何数据源SPICE导入的数据进行推断。有关支持的数据来源的完整列表，请参阅[支持的数据来源](supported-data-sources.md)。

将 Quick 与 SageMaker AI 模型配合使用可以节省在管理数据移动和编写代码上的时间。这些结果可用于评估模型，也可在您对结果感到满意时共享给决策者。您可以在构建模型后立即开始使用。这样做会显示数据科学家的预构建模型，并使您能够将数据科学应用于数据集。然后，您可以在预测控制面板中共享这些见解。使用 Quick 无服务器方法，流程可以无缝扩展，因此您无需担心推理或查询容量。

Amazon Quick 支持使用回归和分类算法 SageMaker 的人工智能模型。可以应用此功能来获取几乎任何业务用例的预测结果。一些示例包括预测客户流失的可能性、员工流失、对销售线索进行评分，以及评估信用风险。要使用 Quick 提供预测，输入和输出的 SageMaker AI 模型数据都必须采用表格格式。在多类别或多标签分类用例中，每个输出列必须包含单个值。Quick 不支持在一列中包含多个值。

**Topics**
+ [SageMaker AI 集成的工作原理](#sagemaker-how-it-works)
+ [产生的费用（集成本身无额外费用）](#sagemaker-cost-of-use)
+ [使用指南](#sagemaker-usage-guidelines)
+ [定义架构文件](#sagemaker-schema-file)
+ [向 Quick Sight 数据集添加 SageMaker AI 模型](#sagemaker-using)
+ [使用 SageMaker AI Canvas 构建预测模型](sagemaker-canvas-integration.md)

## SageMaker AI 集成的工作原理
<a name="sagemaker-how-it-works"></a>

 一般来说，该过程的工作方式如下所示：

1. Amazon Quick 管理员添加了 Quick 访问 SageMaker 人工智能的权限。为此，请从 “**管理快速**” 页面中打开 “**安全与权限**” 设置。转到**快速访问 AWS 服务**，然后添加 SageMaker AI。

   当您添加这些权限时，Quick 会被添加到 AWS Identity and Access Management (IAM) 角色中，该角色提供列出您 AWS 账户中所有 SageMaker AI 模型的访问权限。它还提供运行名称前缀为的 SageMaker AI 作业的`quicksight-auto-generated-`权限。

1. 我们建议您连接到具有推理管道的 SageMaker AI 模型，因为它会自动执行数据预处理。有关更多信息，请参阅 *SageMaker AI 开发人员指南*中的[部署推理管道](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipelines.html)。

1. 确定要结合使用的数据和预训练模型后，模型的拥有者将创建并提供一个架构文件。这个 JSON 文件是与 SageMaker AI 签订的合同。提供了有关模型所需的字段、数据类型、列顺序、输出和设置的元数据。可选设置组件提供了要用于该作业的计算实例的实例大小和数量。

   如果您是构建该模型的数据科学家，请使用以下所述格式创建此架构文件。如果您是该模型的使用者，请从模型拥有者处获取此架构文件。

1. 在 Quick 中，首先要创建一个包含要进行预测的数据的新数据集。如果您要上传文件，则可以在上传设置屏幕上添加 SageMaker AI 模型。否则，在数据准备页面上添加该模型。

   继续操作之前，请验证数据集与模型之间的映射。

1. 将数据导入数据集后，输出字段包含从 SageMaker AI 返回的数据。您可以按照您使用其他字段的方式使用这些字段（[使用指南](#sagemaker-usage-guidelines)中所述的准则）。

   运行 SageMaker AI 集成时，Quick 会向 A SageMaker I 传递请求，要求其使用推理管道运行批量转换作业。快速入门：在您的 AWS 账户中配置和部署所需的实例。处理完成后，将关闭并终止这些实例。计算容量仅在处理模型时产生费用。

   为了便于您识别它们，Quick 用前缀命名其所有 SageMaker AI 作业`quicksight-auto-generated-`。

1. 推理的输出存储在 SPICE 中并附加到数据集。推理完成后，您可以使用该数据集创建使用预测数据的可视化效果和控制面板。

1. 每次保存数据集时都会启动数据刷新。您可以通过刷新 SPICE 数据集手动启动数据刷新过程，也可以将其安排为定期运行。在每次数据刷新期间，系统都会自动调用 SageMaker AI 批量转换，以使用新数据更新输出字段。

   您可以使用 Amazon Quick Sight SPICE 摄取 API 操作来控制数据刷新过程。有关使用这些 API 操作的更多信息，请参阅 [Amazon Quick Sight API 参考](https://docs.aws.amazon.com/quicksight/latest/APIReference/qs-api-overview.html)。

## 产生的费用（集成本身无额外费用）
<a name="sagemaker-cost-of-use"></a>

使用此功能本身不需要额外费用。您的费用包括以下内容：
+ 通过 SageMaker AI 部署模型的成本，只有在模型运行时才会产生。在创建或编辑数据集之后，保存数据集或刷新其数据将启动数据摄取过程。如果数据集包含推断字段，则此过程包括调用 SageMaker AI。费用是在您的 Quick 订阅所在的同一个 AWS 账户中产生的。
+ 您的快速订阅费用如下：
  + 在 Quick (SPICE) 中将数据存储在内存计算引擎中的成本。如果要将新数据添加到 SPICE，则可能需要购买足够的 SPICE 容量来容纳数据。
  + 为构建数据集的作者或管理员提供快速订阅。
  + Pay-per-session 查看者（读者）访问交互式仪表板的费用。

## 使用指南
<a name="sagemaker-usage-guidelines"></a>

在 Amazon Quick 中，以下使用指南适用于此企业版功能：
+ 模型的处理在 SPICE 中进行。因此，它只能应用于存储在 SPICE 中的数据集。该过程目前支持每个数据集最多 5 亿行。
+ 只有 Quick 管理员或作者才能使用机器学习模型扩充数据集。只有当结果在控制面板中显示时，读者才能查看。
+ 每个数据集能且只能与一个 ML 模型结合使用。
+ 输出字段不能用于计算新字段。
+ 无法按与该模型集成的字段筛选数据集。换句话说，如果您的数据集字段当前已映射到 ML 模型，则无法对该字段进行筛选。

在 SageMaker AI 中，以下使用指南适用于您在 Amazon Quick Sight 中使用的预训练模型：
+ 创建模型时，请将其与适当 IAM 角色的 Amazon 资源名称 (ARN) 关联。 SageMaker 人工智能模型的 IAM 角色需要有权访问 Amazon Quick Sight 使用的 Amazon S3 存储桶。
+ 确保您的模型同时对输入和输出支持 .csv 文件。确保您的数据采用表格格式。
+ 提供包含该模型元数据的架构文件，包括输入和输出字段的列表。目前，您必须手动创建此架构文件。
+ 考虑完成推理所需的时间，具体取决于许多因素。其中包括模型的复杂性、数据量和定义的计算容量。完成推理可能需要几分钟到几个小时的时间。Amazon Quick Sight 将所有数据摄取和推理任务的上限限制为 10 小时。要减少执行推断所需的时间，请考虑增加实例大小或实例数。
+ 目前，您只能使用批量转换与 SageMaker AI 集成，而不能使用实时数据。您不能使用 SageMaker AI 终端节点。

## 定义架构文件
<a name="sagemaker-schema-file"></a>

在使用带有 Quick Sight 数据的 SageMaker AI 模型之前，请创建 JSON 架构文件，其中包含 Amazon Quick Sight 处理模型所需的元数据。Amazon Quick 作者或管理员在配置数据集时上传架构文件。

架构字段定义如下。除非以下描述中特别说明，否则所有字段均为必填字段。属性区分大小写。

 *inputContentType*   
此 SageMaker AI 模型期望输入数据的内容类型。对此唯一支持的值是 `"text/csv"`。Quick Sight 不包含您添加到输入文件中的任何标题名称。

 *outputContentType*   
您要使用的 SageMaker AI 模型生成的输出的内容类型。对此唯一支持的值是 `"text/csv"`。

 *input*   
模型所需的输入数据功能列表。Quick Sight 以完全相同的顺序生成输入数据。此列表包含以下属性：  
+  *name* – 列的名称。如果可能，请将其与 QuickSight 数据集中相应列的名称相同。此属性不得超过 100 个字符。
+  *type* – 此列的数据类型。此属性采用 `"INTEGER"`、`"STRING"` 和 `"DECIMAL"` 值。
+  *nullable* –（可选）字段是否可为 null 值。默认值为 `true`。如果设置`nullable`为`false`，Quick Sight 将在调用 SageMaker AI 之前删除不包含此值的行。这样做有助于避免导致 SageMaker AI 因缺少所需数据而失败。

 *output*   
 SageMaker AI 模型生成的输出列列表。Quick Sight 期望这些字段的顺序完全相同。此列表包含以下属性：  
+  *名称* — 此名称将成为在 Quick Sight 中创建的相应新列的默认名称。您可以在 Quick Sight 中覆盖此处指定的名称。此属性不得超过 100 个字符。
+  *type* – 此列的数据类型。此属性采用 `"INTEGER"`、`"STRING"` 和 `"DECIMAL"` 值。

 *instanceTypes*   
 SageMaker AI 可以预置以运行转换作业的 ML 实例类型列表。该列表提供给 Amazon Quick 用户供其选择。此列表仅限于 SageMaker AI 支持的类型。有关支持的类型的更多信息，请参阅 *SageMaker AI 开发者指南[TransformResources](https://docs.aws.amazon.com/sagemaker/latest/dg/API_TransformResources.html)中的。*

 *defaultInstanceType*   
（可选）在 Quick Sight 的 SageMaker AI 向导中作为默认选项显示的实例类型。请将此实例类型包含在 `instanceTypes` 中。

 *instanceCount*   
（可选）实例计数定义了要让 SageMaker AI 配置多少选定实例来运行转换作业。此值必须为正整数。

 *描述*   
该字段为拥有 SageMaker AI 模型的人提供了一个与在 Quick Sight 中使用该模型的人进行通信的地方。使用此字段可提供有关成功使用此模型的提示。例如，此字段可以包含有关根据数据集的大小，从 `instanceTypes` 的列表选择有效实例类型的信息。此字段不得超过 1,000 个字符。

 *版本*   
架构的版本，例如“`1.0"`”。

以下示例显示了架构文件中 JSON 的结构。

```
{
        "inputContentType": "CSV",
        "outputContentType": "CSV",
        "input": [
            {
                "name": "buying",
                "type": "STRING"
            },
            {
                "name": "maint",
                "type": "STRING"
            },
            {
                "name": "doors",
                "type": "INTEGER"
            },
            {
                "name": "persons",
                "type": "INTEGER"
            },
            {
                "name": "lug_boot",
                "type": "STRING"
            },
            {
                "name": "safety",
                "type": "STRING"
            }
        ],
        "output": [
            {
                "name": "Acceptability",
                "type": "STRING"
            }
        ],
        "description": "Use ml.m4.xlarge instance for small datasets, and ml.m4.4xlarge for datasets over 10 GB",
        "version": "1.0",
        "instanceCount": 1,
        "instanceTypes": [
            "ml.m4.xlarge",
            "ml.m4.4xlarge"
        ],
        "defaultInstanceType": "ml.m4.xlarge"
    }
```

架构文件的结构与 SageMaker AI 提供的示例中使用的模型类型有关。

## 向 Quick Sight 数据集添加 SageMaker AI 模型
<a name="sagemaker-using"></a>

使用以下步骤，您可以向数据集添加预训练的 SageMaker AI 模型，以便可以在分析和仪表板中使用预测数据。

在开始之前，请准备以下项目：
+ 要用于构建数据集的数据。
+ 要用于扩充数据集的 SageMaker AI 模型的名称。
+ 模型的架构。此架构包括字段名称映射和数据类型。最好还能包含有关实例类型和要使用的实例数量的建议设置。

**使用 AI 扩充你的 Amazon Quick Sight SageMaker 数据集**

1. 通过选择**数据集**，然后选择**新建数据集**，从起始页创建新数据集。

   您也可以编辑现有的数据集。

1. 在数据准备屏幕 SageMaker上选择 **Augment** with。

1. 对于 **Select your model (选择您的模型)**，选择以下设置：
   + **模型**-选择用于推断字段的 SageMaker AI 模型。
   + **名称** – 为模型提供描述性名称。
   + **架构** – 上传为模型提供的 JSON 架构文件。
   + **高级设置**-根据您的数据集 QuickSight 推荐所选的默认设置。您可以使用特定的运行时设置来平衡作业的速度和成本。为此，请在 “实例类型” 中输入 SageMaker AI ML **实例类型**，在 “**计**数” 中输入 “实例数量”。

   选择**下一步**以继续。

1. 对于 **Review inputs (查看输入)**，请查看映射到数据集的字段。Quick Sight 会尝试自动将架构中的字段映射到数据集中的字段。如果映射需要调整，您可以在此处进行更改。

   选择**下一步**以继续。

1. 对于**查看输出**，请查看已添加到数据集的字段。

   选择 **Save and prepare data (保存并准备数据)** 以确认您的选择。

1. 要刷新数据，请选择数据集以查看详细信息。然后选择 **Refresh Now (立即刷新)** 手动刷新数据，或者选择 **Schedule refresh (计划刷新)** 以设置常规刷新间隔。在每次数据刷新期间，系统都会自动运行 SageMaker AI 批量转换作业，以使用新数据更新输出字段。

# 使用 SageMaker AI Canvas 构建预测模型
<a name="sagemaker-canvas-integration"></a>

Amazon Quick 作者可以将数据导出到 SageMaker AI Canvas 中，以构建可以发送回 Quick 的机器学习模型。作者可以通过预测分析使用这些 ML 模型来扩充其数据集，这些模型可用于构建分析和控制面板。

**先决条件**
+ 与 IAM 身份中心集成的快速账户。如果您的 Quick 账户未与 IAM Identity Center 集成，请创建一个新的 Quick 账户，然后选择**使用支持 IAM 身份中心的应用程序**作为身份提供商。
  + 有关 IAM Identity Center 的更多信息，请参阅 [Getting started](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)。
  + 要详细了解如何将 Quick 与 IAM 身份中心集成，请参阅[使用 IAM 身份中心配置您的 Amazon Quick 账户](setting-up-sso.md#sec-identity-management-identity-center)。
  + 要将资产从现有 Quick 账户导入到 IAM Identity Center 集成的新 Quick 账户，请参阅[资产捆绑包操作](https://docs.aws.amazon.com/quicksight/latest/developerguide/asset-bundle-ops.html)。
+ 与 I SageMaker AM 身份中心集成的新 AI 域。有关使用 IAM 身份中心登录 A SageMaker I 域的更多信息，请参阅[使用 IAM 身份中心登录 A SageMaker I 域](https://docs.aws.amazon.com/sagemaker/latest/dg/onboard-sso-users.html)。

**Topics**
+ [在 Amazon Quick Sight 的 SageMaker AI Canvas 中构建预测模型](#sagemaker-canvas-integration-create-model)
+ [使用 SageMaker AI 画布模型创建数据集](#sagemaker-canvas-integration-create-dataset)
+ [注意事项](#sagemaker-canvas-integration-considerations)

## 在 Amazon Quick Sight 的 SageMaker AI Canvas 中构建预测模型
<a name="sagemaker-canvas-integration-create-model"></a>

**在 SageMaker AI Canvas 中构建预测模型**

1. 登录 Amazon Quick 并导航到要为其创建预测模型的表格表或数据透视表。

1. 打开视觉对象菜单，然后选择**构建预测模型**。

1. 在出现的 “在 ** SageMaker AI Canvas 中构建预测模型**” 弹出窗口中，查看显示的信息，然后选择将**数据导出到 SAGEMAKER CANVAS**。

1. 在出现的 “导出” 窗格中，在导**出**完成**后选择 “前往 SAGEMAKER CAN** VAS”，进入 SageMaker AI Canvas 控制台。

1. 在 SageMaker AI Canvas 中，使用你从 Quick Sight 导出的数据创建预测模型。您可以参照指导教程来创建预测模型，也可以跳过教程，按照自己的节奏工作。有关在 SageMaker AI Canvas 中创建预测模型的更多信息，请参阅[构建模型](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-build-model-how-to.html#canvas-build-model-numeric-categorical)。

1. 将预测模型发送回 Quick Sight。有关将模型从 SageMaker AI Canvas 发送到 Amazon Quick Sight 的更多信息，请参阅[将您的模型发送到 Amazon Quick Sight](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-send-model-to-quicksight.html)。

## 使用 SageMaker AI 画布模型创建数据集
<a name="sagemaker-canvas-integration-create-dataset"></a>

在 SageMaker AI Canvas 中创建预测模型并将其发送回 Quick Sight 后，使用新模型创建新数据集或将其应用于现有数据集。

**向数据集添加预测字段**

1. 打开 Quick 控制台，选择左侧**的数据**，然后选择**数据集**选项卡。

1. 上传一个新数据集或选择一个现有数据集。

1. 选择**编辑**。

1. 在数据集的数据准备页面上，选择 “添加”，然后选择 “**添加****预测字段**” 以打开 “**使用 SageMaker AI 增强**” 模式。

1. 对于**模型**，选择你从 SageMaker AI Canvas 发送到 Quick Sight 的模型。架构文件会**高级设置**窗格中自动填充。查看输入，然后选择**下一步**。

1. 在**查看输出**窗格上，输入您在 SageMaker AI Canvas 中创建的模型要定位的列的字段名称和描述。

1. 完成后，选择**准备数据**。

1. 选择**准备数据**后，系统会将您重定向到数据集页面。要发布新数据集，请选择**发布和可视化**。

当您发布使用 SageMaker AI Canvas 模型的新数据集时，数据将导入 SPICE，并在 SageMaker AI 中开始批量推理作业。完成该作业最长可能需要 10 分钟。

## 注意事项
<a name="sagemaker-canvas-integration-considerations"></a>

以下限制适用于使用 Quick Sight 数据创建 SageMaker AI Canvas 模型。
+ 用于向 SageMaker AI Canvas 发送数据的 “**构建预测模型**” 选项仅适用于表格和表格数据透视表视觉对象。表格或数据透视表视觉对象必须包含 2 到 1,000 个字段且至少有 500 行。
+ 当您向数据集添加预测字段时，包含整数或地理数据类型的数据集将遇到架构映射错误。要解决此问题，请从数据集中移除整数或地理数据类型，或者将其转换为新的数据类型。

# 准备数据集示例
<a name="preparing-data-sets"></a>

您可以在任何数据集中准备数据以使其更适合分析，例如，更改字段名称或添加计算字段。对于数据库数据集，您还可以通过指定 SQL 查询或联接两个或多个表来确定使用的数据。

可以使用以下主题了解如何准备数据集。

**Topics**
+ [准备基于文件数据的数据集](prepare-file-data.md)
+ [准备基于 Salesforce 数据的数据集](prepare-salesforce-data.md)
+ [准备基于数据库数据的数据集](prepare-database-data.md)

# 准备基于文件数据的数据集
<a name="prepare-file-data"></a>

使用以下过程准备基于本地网络或 Amazon S3 上的文本或 Microsoft Excel 文件的数据集。

**准备基于本地网络或 S3 上的文本或 Microsoft Excel 文件的数据集**

1. 通过选择以下选项之一打开用于数据准备的文件数据集：
   + 创建一个新的本地文件数据集，然后选择**编辑/预览数据**。有关从本地文本文件创建新数据集的更多信息，请参阅[使用本地文本文件创建数据集](https://docs.aws.amazon.com/quicksight/latest/user/create-a-data-set-file.html)。有关使用微软 Excel 文件创建新数据集的更多信息，请参阅[使用微软 Excel 文件创建数据集](https://docs.aws.amazon.com/quicksight/latest/user/create-a-data-set-excel.html)。
   + 创建新的 Amazon S3 数据集，然后选择**编辑/预览数据**。有关使用新的 Amazon S3 数据源创建新的 Amazon S3 数据集的更多信息，请参阅[使用 Amazon S3 文件创建数据集](https://docs.aws.amazon.com/quicksight/latest/user/create-a-data-set-s3.html)。有关使用现有 Amazon S3 数据源创建新 Amazon S3 数据集的更多信息，请参阅[使用现有 Amazon S3 数据源创建数据集](https://docs.aws.amazon.com/quicksight/latest/user/create-a-data-set-existing-s3.html)。
   + 从分析页面或**您的数据集**页面中，打开一个现有的 Amazon S3、文本文件或 Microsoft Excel 数据集以进行编辑。有关打开现有数据集进行数据准备的更多信息，请参阅[编辑数据集](https://docs.aws.amazon.com/quicksight/latest/user/edit-a-data-set.html)。

1. （可选）在数据准备页面上，在应用程序栏上的数据集名称框中输入新名称。

   该名称默认为本地文件的文件名。例如，对于 Amazon S3 文件，该名称默认为 **Group 1**。

1. 检查文件上传设置，必要时进行更正。有关文件上传设置的更多信息，请参阅[选择文件上传设置](https://docs.aws.amazon.com/quicksight/latest/user/choosing-file-upload-settings.html)。
**重要**  
如果要更改上传设置，请在对数据集进行任何其他更改之前进行该更改。新的上传设置会导致 Amazon Quick Sight 重新导入文件。该过程会覆盖您的所有其他更改。

1. 通过执行以下一个或多个操作来准备数据：
   + [选择字段](https://docs.aws.amazon.com/quicksight/latest/user/selecting-fields.html)
   + [编辑字段名称和描述](https://docs.aws.amazon.com/quicksight/latest/user/changing-a-field-name.html)
   + [更改字段数据类型](https://docs.aws.amazon.com/quicksight/latest/user/changing-a-field-data-type.html)
   + [添加计算字段](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-calculated-field-analysis.html)
   + [筛选亚马逊 Quick Sight 中的数据](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html)

1. 检查 [SPICE](spice.md) 指示器，以查看您是否有足够的容量来导入数据集。文件数据集自动加载到 SPICE 中。当您选择 **Save & visualize** 或 **Save** 时，系统开始导入操作。

   如果您无权访问足够的 SPICE 容量，可以使用以下选项之一减小数据集大小：
   + 应用筛选条件来限制行数。
   + 选择字段以从数据集中删除。
**注意**  
在删除字段或筛选数据时，SPICE 指示器不会更新以指示节约了多少空间。它继续反映自上次导入以来 SPICE 的使用情况。

1. 选择 **Save** 保存工作，或选择 **Cancel** 取消工作。

   您可能还会看到 **Save & visualize**。根据从中开始的屏幕，可能会显示该选项。如果系统未显示该选项，您可以通过从数据集屏幕启动来创建新的可视化。

## 准备基于 Microsoft Excel 文件的数据集
<a name="prepare-excel-file-data"></a>

要准备 Microsoft Excel 数据集，请按照以下过程操作。

**准备 Microsoft Excel 数据集**

1. 通过选择以下选项之一打开用于数据准备的文本文件数据集：
   + 新建一个 Microsoft Excel 数据集，然后选择**编辑/预览数据**。有关创建新 Excel 数据集的更多信息，请参阅[使用 Microsoft Excel 文件创建数据集](https://docs.aws.amazon.com/quicksight/latest/user/create-a-data-set-excel.html)。
   + 打开现有的 Excel 数据集进行编辑。您可以从分析页面或**您的数据集**页面执行该操作。有关打开现有数据集进行数据准备的更多信息，请参阅[编辑数据集](https://docs.aws.amazon.com/quicksight/latest/user/edit-a-data-set.html)。

1. （可选）在数据准备页面上，在应用程序栏上的数据集名称框中输入名称。如果不重命名数据集，其名称默认为 Excel 文件的名称。

1. 检查文件上传设置，必要时进行更正。有关文件上传设置的更多信息，请参阅[选择文件上传设置](https://docs.aws.amazon.com/quicksight/latest/user/choosing-file-upload-settings.html)。
**重要**  
如果需要更改上传设置，请在对数据集进行任何其他更改之前进行该更改。更改上传设置会导致 Amazon Quick Sight 重新导入文件。该过程会覆盖您到目前为止所做的任何更改。

1. （可选）更改选择的工作表。

1. （可选）更改选择的范围。为此，请从右上角的登录名下方的数据集菜单中打开**上传设置**。

1. 通过执行以下一个或多个操作来准备数据：
   + [选择字段](https://docs.aws.amazon.com/quicksight/latest/user/selecting-fields.html)
   + [编辑字段名称和描述](https://docs.aws.amazon.com/quicksight/latest/user/changing-a-field-name.html)
   + [更改字段数据类型](https://docs.aws.amazon.com/quicksight/latest/user/changing-a-field-data-type.html)
   + [添加计算字段](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-calculated-field-analysis.html)
   + [使用 Quick Sight 筛选数据](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html)

1. 检查 [SPICE](spice.md) 指示器，查看您是否有足够的空间来导入数据集。亚马逊 Quick Sight 必须将 Excel 数据集导入SPICE。当您选择 **Save & visualize** 或 **Save** 时，系统将开始此导入操作。

   如果您没有足够的 SPICE 容量，可以使用以下方法之一减小数据集大小：
   + 应用筛选条件来限制行数。
   + 选择字段以从数据集中删除。
   + 缩小要导入的数据范围。
**注意**  
在您加载它们之前，SPICE 指示器不会更新以反映您的更改。其显示自上次导入以来 SPICE 的使用情况。

1. 选择 **Save** 保存工作，或选择 **Cancel** 取消工作。

   您可能还会看到 **Save & visualize**。根据从中开始的屏幕，可能会显示该选项。如果系统未显示该选项，您可以通过从数据集屏幕启动来创建新的可视化。

# 准备基于 Salesforce 数据的数据集
<a name="prepare-salesforce-data"></a>

要准备 Salesforce 数据集，请按照以下过程操作。

**准备 Salesforce 数据集**

1. 通过选择以下选项之一打开用于数据准备的 Salesforce 数据集：
   + 新建一个 Salesforce 数据集，然后选择**编辑/预览数据**。有关使用新的 Salesforce 数据源创建新 Salesforce 数据集的更多信息，请参阅[从 Salesforce 创建数据集](https://docs.aws.amazon.com/quicksight/latest/user/create-a-data-set-salesforce.html)。有关使用现有 Salesforce 数据源创建新 Salesforce 数据集的更多信息，请参阅[使用现有 Salesforce 数据源创建数据集](https://docs.aws.amazon.com/quicksight/latest/user/create-a-data-set-existing-salesforce.html)。
   + 从分析页面或**您的数据集**页面打开现有的 Salesforce 数据集进行编辑。有关打开现有数据集进行数据准备的更多信息，请参阅[编辑数据集](https://docs.aws.amazon.com/quicksight/latest/user/edit-a-data-set.html)。

1. （可选）如果要更改数据集名称，请在数据准备页面的应用程序栏上的数据集名称框中输入名称。该名称默认为报告或对象名称。

1. (可选) 更改数据元素选择以查看报表或对象。

1. (可选) 更改数据选择以选择不同的报表或对象。

   如果**数据**窗格中显示的列表过长，您可以通过在**搜索表**框中输入搜索词来搜索并找到特定的项目。系统会显示名称中包含该搜索词的任何项目。搜索不区分大小写，不支持通配符。要查看所有项目，请选择搜索框右侧的取消图标 (**X**) 返回。

1. 通过执行以下一个或多个操作来准备数据：
   + [选择字段](https://docs.aws.amazon.com/quicksight/latest/user/selecting-fields.html)
   + [编辑字段名称和描述](https://docs.aws.amazon.com/quicksight/latest/user/changing-a-field-name.html)
   + [更改字段数据类型](https://docs.aws.amazon.com/quicksight/latest/user/changing-a-field-data-type.html)
   + [添加计算字段](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-calculated-field-analysis.html)
   + [使用 Quick Sight 筛选数据](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html)

1. 检查 [SPICE](spice.md) 指示器，查看您是否有足够的空间来导入数据集。对于 Salesforce 数据集，需要将数据导入到 SPICE 中。当您选择 **Save & visualize** 或 **Save** 时，导入操作开始。

   如果您没有足够的 SPICE 容量，您可以从数据集中删除字段或应用筛选条件来减小其大小。有关在数据集中添加和移除字段的更多信息，请参阅[选择字段](https://docs.aws.amazon.com/quicksight/latest/user/selecting-fields.html)。
**注意**  
SPICE 指示器不会更新以反映删除字段或筛选数据可节约的空间。它继续反映从数据源检索的数据集的大小。

1. 选择 **Save** 保存工作，或选择 **Cancel** 取消工作。

   您可能还会看到 **Save & visualize**。根据从中开始的屏幕，可能会显示该选项。如果系统未显示该选项，您可以通过从数据集屏幕启动来创建新的可视化。

# 准备基于数据库数据的数据集
<a name="prepare-database-data"></a>

可以使用以下过程基于对数据库的查询准备数据集。该数据集的数据可以来自诸如 Amazon Athena、Amazon RDS 或 Amazon Redshift 之类的 AWS 数据库数据源，也可以来自外部数据库实例。您可以选择将数据的副本导入 [SPICE](spice.md) 还是直接查询数据。

**准备基于对数据库的查询的数据集**

1. 通过选择以下选项之一打开用于数据准备的数据库数据集：
   + 新建一个数据库数据集，然后选择**编辑/预览数据**。有关使用新数据库数据源创建新数据集的更多信息，请参阅[从数据库创建数据集](https://docs.aws.amazon.com/quicksight/latest/user/create-a-database-data-set.html)。有关使用现有数据库数据源创建新数据集的更多信息，请参阅[使用现有数据库数据源创建数据集](https://docs.aws.amazon.com/quicksight/latest/user/create-a-data-set-existing-database.html)。
   + 从分析页面或**您的数据集**页面打开现有数据库的数据集进行编辑。有关打开现有数据集进行数据准备的更多信息，请参阅[编辑数据集](https://docs.aws.amazon.com/quicksight/latest/user/edit-a-data-set.html)。

1. （可选）在数据准备页面上，在应用程序栏上的数据集名称框中输入名称。

   如果在数据准备之前选择一个表，此名称默认为该表名称。否则为 **Untitled data source**。

1. 通过选择以下选项之一来确定您的数据的选择方式：
   + 要使用单个表提供数据，请选择一个表或更改表选择。

     如果在 **Tables** 窗格中显示的表列表很长，您可以在 **Search tables** 中键入搜索词以搜索特定的表。

     系统会显示名称中包含该搜索词的任何表。搜索不区分大小写，不支持通配符。要查看所有表，请选择搜索框右侧的取消图标 (**X**) 返回。
   + 要使用两个或多个联接表提供数据，请选择两个表并使用联接窗格联接它们。如果您选择使用联接表，则必须将数据导入 Quick Sight。有关使用 Amazon Quick Sight 界面连接数据的更多信息，请参阅[联接数据](https://docs.aws.amazon.com/quicksight/latest/user/joining-data.html)。
   + 要使用自定义 SQL 查询在新数据集中提供数据，请在**表**窗格中选择**切换到自定义 SQL** 工具。有关更多信息，请参阅[使用 SQL 自定义数据](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-SQL-query.html)。

     要更改现有数据集中的 SQL 查询，请在**字段**窗格中选择**编辑 SQL** 打开 SQL 窗格并编辑查询。

1. 通过执行以下一个或多个操作来准备数据：
   + [选择字段](https://docs.aws.amazon.com/quicksight/latest/user/selecting-fields.html)
   + [编辑字段名称和描述](https://docs.aws.amazon.com/quicksight/latest/user/changing-a-field-name.html)
   + [更改字段数据类型](https://docs.aws.amazon.com/quicksight/latest/user/changing-a-field-data-type.html)
   + [添加计算字段](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-calculated-field-analysis.html)
   + [使用 Quick Sight 筛选数据](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html)

1. 如果不联接表，请通过选择**查询**或 **SPICE** 单选按钮来选择是直接查询数据库还是将数据导入到 SPICE 中。我们建议使用 SPICE 来提高性能。

   如果要使用 SPICE，请检查 SPICE 指示器，查看您是否有足够的空间导入数据集。当您选择 **Save & visualize** 或 **Save** 时，导入操作开始。

   如果您没有足够的空间，您可以从数据集中删除字段或应用筛选条件来减小其大小。
**注意**  
SPICE 指示器不会更新以反映删除字段或筛选数据可节约的空间。它继续反映从数据源检索的数据集的大小。

1. 选择 **Save** 保存工作，或选择 **Cancel** 取消工作。

   您可能还会看到 **Save & visualize** 选项。根据从中开始的屏幕，可能会显示该选项。如果系统未显示该选项，您可以通过从数据集屏幕启动来创建新的可视化。

# 分析和报告：在 Amazon Quick Sight 中可视化数据
<a name="working-with-visuals"></a>

接下来，您可以找到有关如何创建和自定义 Amazon Quick Sight 图表、在控制面板中排列图表等的说明。

**Topics**
+ [在 Amazon Quick Sight 中进行分析](working-with-an-analysis.md)
+ [添加和管理工作表](working-with-multiple-sheets.md)
+ [使用 Amazon Quick Sight 中的交互式表格](working-with-interactive-sheets.md)
+ [在 Amazon Quick Sight 中处理像素完美报告](working-with-reports.md)
+ [在 Amazon Quick Sight 分析中处理工作表上的项目](authoring-sheets.md)
+ [使用 Amazon Quick Sight 中的主题](themes-in-quicksight.md)
+ [使用键盘快捷键访问亚马逊 Quick Sight](quicksight-accessibility.md)

# 在 Amazon Quick Sight 中进行分析
<a name="working-with-an-analysis"></a>

在 Quick Sight 中，分析与仪表板相同，不同之处在于只有你选择的作者才能访问它。您可以将分析私有化，并可以根据需要增强其功能，令其更加完善。如果您决定发布分析，其共享版本就称为控制面板。

使用以下部分学习如何与 Quick Sight 分析进行交互。

**Topics**
+ [在 Quick Sight 中开始分析](creating-an-analysis.md)
+ [向分析添加标题和描述](adding-a-title-and-description.md)
+ [分享快速观察分析](sharing-analyses.md)
+ [重命名分析](renaming-an-analysis.md)
+ [复制分析](duplicating-an-analysis.md)
+ [自定义分析的日期和时间值](analysis-date-time.md)
+ [分析菜单](analysis-menu.md)
+ [配置分析设置](analysis-settings.md)
+ [在 Quick Sight 中对 Amazon Quick Sight 进行分析 APIs](analysis-item-limits.md)
+ [保存对分析所作的更改](saving-changes-to-an-analysis.md)
+ [从 Quick Sight 分析导出数据](exporting-data-analysis.md)
+ [删除分析](deleting-an-analysis.md)

# 在 Quick Sight 中开始分析
<a name="creating-an-analysis"></a>

在 Quick Sight 中，您可以在分析中分析和可视化您的数据。完成后，您可以将自己的分析发布为控制面板，以便与组织中的其他人共享。

可以使用以下过程创建新的分析。

**创建新分析**

1. 在 Amazon 快速入门页面上，选择 “**分析**”，然后选择 “**新建分析**”。

1. 选择要包含在新分析中的数据集，然后选择右上角的**在分析中使用**。

1. 在出现的**新建工作表**弹出窗口中，选择所需的工作表类型。您可以在**交互式表格**和 **Pixel 完美报告**之间进行选择。要创建像素完美报告，您需要为您的帐户安装像素完美报告插件。有关像素完美报告的更多信息，请参阅[在 Amazon Quick Sight 中处理像素完美报告](working-with-reports.md)。有关工作表的更多信息，请参阅 [添加和管理工作表](working-with-multiple-sheets.md)。

1. （可选）如果选择**交互式工作表**，请按照以下步骤操作：
   + （可选）为交互式工作表选择所需的布局类型。您可以选择以下选项之一：
     + 自由形式
     + 平铺

     默认选项是**自由形式**。

     有关交互式工作表布局的更多信息，请参阅 [布局类型](types-of-layout.md)。
   + 选择您希望对工作表进行优化的画布大小。您可以选择以下选项之一：
     + 1024px
     + 1280px
     + 1366px
     + 1600px
     + 1920px

     有关设置交互式工作表格式的更多信息，请参阅[使用 Amazon Quick Sight 中的交互式表格](working-with-interactive-sheets.md)。

1. （可选）如果您选择 **Pixel 完美报告**，请按照以下步骤操作：
   + （可选）为分页报告选择所需的纸张尺寸。可从以下选项中进行选择：
     + 美国信纸（8.5 x 11 英寸）
     + 美国法律用纸（8.5 x 14 英寸）
     + A0（841 x 1189 毫米）
     + A1（594 x 841 毫米）
     + A2（420 x 594 毫米）
     + A3（297 x 420 毫米）
     + A4（210 x 297 毫米）
     + A5（148 x 210 毫米）
     + 日本 B4（257 x 364 毫米）
     + 日本 B5（182 x 257 毫米）

     默认纸张尺寸为美国信纸（8.5 x 11 英寸）
   + （可选）选择工作表的方向。您可以在**纵向**或**横向**之间进行选择。默认选项为纵向排列。

     在创建 Amazon Quick Sight 像素完美报告之前，请先为你的 Quick 账户获取像素完美报告插件。有关获取像素完美报告插件的更多信息，请参阅[获取快速像素完美报告插件](qs-reports-getting-started.md#qs-reports-getting-started-subscribe)。

     有关格式化像素完美报告的更多信息，请参阅[在 Amazon Quick Sight 中处理像素完美报告](working-with-reports.md)。

1. 选择**添加**。

1. 创建视觉对象。有关创建视觉对象的更多信息，请参阅[在 Quick Sight 分析中添加视觉效果](creating-a-visual.md)。

创建好分析后，您可以通过修改视觉对象、添加更多视觉对象、向默认情节中添加场景或添加更多情节，对分析进行迭代。

# 向分析添加标题和描述
<a name="adding-a-title-and-description"></a>

除了分析名称以外，您还可以给分析添加标题和描述。有用的标题和描述可在分析中提供有关上下文的信息。

## 添加标题和描述
<a name="add-a-title-and-description"></a>

可以使用以下过程向分析添加标题和描述。标题和描述最多可包含 1024 个字符。像素完美报告不支持标题和描述。

**向分析添加标题和描述**

1. 在分析页面上，选择应用程序栏中的**工作表**，然后选择**添加标题**。

1. 对于 **Sheet title (工作表标题)**，输入标题，然后按 **Enter**。要删除标题，请选择应用程序栏中的**工作表**，然后选择**删除标题**。或者，要删除标题，您可以选择标题，然后选择 **x** 形删除图标。

   要创建动态工作表标题，您可以将现有参数添加到工作表标题中。有关更多信息，请参阅 [在 Amazon Quick 中使用标题和描述中的参数](parameters-in-titles.md)。

1. 在应用程序栏上选择**工作表**，然后选择**添加描述**。

1. 在工作表上出现的描述空间中，输入所需的描述，然后按 **Enter**。要删除描述，请选择应用程序栏中的**工作表**，然后选择**删除描述**。或者，要删除描述，您可以选中描述并选择 **x** 状删除图标。

# 分享快速观察分析
<a name="sharing-analyses"></a>

您可以通过向一个或多个其他用户发送链接与他们分享分析，从而轻松协作和传播结果。您只能与 Quick 账户中的其他用户共享分析。

共享分析后，您可以查看有权访问该分析的其他用户，也可以撤消任何用户的访问权限。

**Topics**
+ [共享分析](#share-an-analysis)
+ [查看要与之共享分析的用户](view-users-analysis.md)
+ [撤销对分析的访问权限](revoke-access-to-an-analysis.md)

## 共享分析
<a name="share-an-analysis"></a>

可以使用以下过程共享分析。

**共享分析**

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

1. 打开要更改的分析。

1. 在分析页面上，选择应用程序栏上的**文件**，然后选择**共享**。

   您只能与您的 Quick 账户中的用户或群组共享分析。

1. 添加要与之共享的用户或组。要执行此操作，对于**键入用户名或电子邮件**，请输入要与之共享此分析的第一个用户或组。然后选择 **Share** (共享)。重复该步骤，为要与其共享该分析的所有用户输入信息。

   要编辑此分析的共享权限，请选择**管理分析权限**。

   将出现**管理分析权限**屏幕。在此屏幕上，选择**邀请用户**以编辑权限并添加更多用户或组。

1.  对于 **Permission** (权限)，选择要分配给每个用户或组的角色。此角色决定授予该用户或组的权限级别。

1. 选择**共享**。

   您已与之共享该分析的用户会收到电子邮件，其中包含指向分析的链接。组不会收到邀请电子邮件。

# 查看要与之共享分析的用户
<a name="view-users-analysis"></a>

如果您共享了某个分析，则可以使用以下过程来查看哪些用户或组有权访问它。

**查看有权访问分析的用户或组**

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

1. 打开要更改的分析。

1. 在分析页面上，选择应用程序栏上的**文件**，然后选择**共享**。

1. 选择**管理分析权限**。

1. 查看已与之共享此分析的用户。您可以键入一个搜索词，通过搜索方式查找特定账户。搜索返回任何包含该搜索词的用户、组或电子邮件地址。搜索区分大小写，并且不支持通配符。删除搜索词可查看所有用户和组。

# 撤销对分析的访问权限
<a name="revoke-access-to-an-analysis"></a>

可以使用以下过程撤销对分析的访问权限。

**撤销对分析的访问权限**

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

1. 打开要更改的分析。

1. 在分析页面上，选择应用程序栏上的**文件**，然后选择**共享**。

1. 选择**管理分析权限**。

1. 找到您想要撤消其访问权限的用户或组，然后选择用户或组旁边的垃圾桶图标。

1. 选择**确认**。

# 重命名分析
<a name="renaming-an-analysis"></a>

可以使用以下过程重命名分析。

**重命名分析**

1. 打开要重命名的分析。

1. 在应用程序栏上的**分析名称**方框中，选中当前名称，然后输入新名称。

# 复制分析
<a name="duplicating-an-analysis"></a>

您可以在 Quick Sight 中复制分析。要了解操作方法，请按照以下过程操作。

**复制分析**

1. 从 Quick 主页上选择 “**分析**”，然后打开要复制的分析。

1. 在分析中，选择右上角应用程序栏上的**另存为**。

1. 在打开的**保存副本**页面中输入分析的名称，然后选择**保存**。

   新分析随即打开。返回快速入门页面并选择 “分析”，即可找到原始**分析**。

# 自定义分析的日期和时间值
<a name="analysis-date-time"></a>

在 Amazon Quick 中，作者可以设置分析的自定义时区和周起始日期。当您设置自定义周开始时间或时区时，分析中所有使用日期时间数据的视觉对象的格式都将反映分析使用的时区或周开始时间。

## 设置分析中的自定义时区
<a name="analysis-timezone"></a>

Quick 作者可以使用*自定义时区*来帮助管理多个地理区域的数据。当您设置自定义时区时，所有可见维度、度量、计算字段和筛选条件都会在查询运行时转换为所选时区。夏令时（DST）调整会自动应用，因此无需无法准确处理历史日期的耗时解决方法。

*自定义时区*是指使用代表世界各地特定地理区域的 IANA 时区缩写。每个时区都定义为与协调世界时（UTC）的偏移量。时区与简单偏移量不同，因为它们包含 DST。

所有分析的默认时区为 `UTC`。

以下规则适用于时区。
+ **粒度小于 `hour` 的日期时间显示将转换为所选时区。**例如，如果您将分析的时区设置为 `America/New_York (UTC-04:00)`，则 `UTC+00:00` 的日期时间值 `Dec.1, 2020 12:00am` 将转换并显示为 `Nov.30, 2020 7:00pm`。夏令时（DST）已纳入日期时间转换中。
+ **添加到计算或在筛选条件中选择的日期时间文本遵循分析的选定时区。**例如，如果您在计算字段（例如）中手动输入文字`01-01-2022 7:00pm`，或者选择固定的筛选时间，Quick Sight 会将选定的时区应用于文字值。
+ **以 `hour/minute` 粒度以上聚合的度量将根据分析所设置的时区进行聚合。**Quick Sight 处理数据集时，所有时间戳最初都以最低粒度级别进行转换。然后，根据所选时区的边界对值进行聚合以便分析。例如，`UTC+00:00` 时区按天计算的每小时收入总和聚合 `UTC` 时区 `12am-11pm` 的所有每小时收入。当您将 `UTC+00:00` 转换为 `New_York (UTC-04:00)` 时，将聚合 `UTC` `8:00pm-7:00pm(+1day)` 的所有收入数据点，以与 `New_York (UTC-04:00)` 一天的开始和结束时间相对应。
+ **`now()` 函数、滚动日期筛选条件和参数将转换为所选时区。**在应用于视觉对象时，使用 `now()` 函数的相对日期筛选条件、滚动日期筛选条件和相对日期参数也会遵循所选时区。例如，当您选择相对筛选条件（例如 `last week`）或滚动日期筛选条件（例如 `start of the month`）时，所选时区将自动应用于筛选条件，以分别显示值 `last week of New_York time zone` 和 `start of the month of New_York time zone`。

**设置分析的自定义时区**

1. 从您想要更改的分析中，导航到顶部菜单并选择**编辑**。

1. 选择**分析设置**，然后选择**日期和时间**。

1. 将**转换时区**切换为开启状态，然后选择所需的**时区**。

1. 选择**应用**。

当为分析分配了时区时，分析顶部会出现一个图标，指示分析使用的时区。此图标也会出现在从分析发布的任何控制面板上。

**注意事项**

以下注意事项适用于自定义时区。
+ 要使用自定义时区，数据集中的所有日期时间列都必须标准化为 UTC。如果您的日期时间列未在数据来源中标准化，则需要先转换数据来源中的列，然后才能使用此功能。
+ 对于未分配自定义时区的分析，作者和读者的体验不受影响。
+ 将时区添加到分析后，时区将应用于分析中的所有视觉对象和工作表。
+ 快速作者只能选择一个时区进行分析。从分析发布的所有控制面板都使用该分析使用的时区。要创建其所使用的时区与分析所使用的时区不同的控制面板，请更改分析的时区并重新发布控制面板。
+ 快速阅读器无法更改仪表板的时区。
+ 如果您设置了使用存储在 Direct Query 中的数据集的分析的时区，并且加载时间较长，请考虑将数据集存储在 SPICE 中。SPICE 旨在以高效的方式处理时区转换。
+ 自定义时区不支持以下数据库引擎：
  + Timestream
  + OpenSearch 服务
  + Teradata
  + SqlServer

## 设置分析的自定义周起始日
<a name="analysis-week-start"></a>

快速作者可以定义分析的周开始日，以使他们的数据与其公司或行业遵循的时间表保持一致。当您设置自定义周起始日时，所有按周级别聚合的维度、计算字段和筛选条件都会进行计算，以与新周起始日保持一致。默认周起始日是 `Sunday`。

**设置分析的自定义周起始日**

1. 从您想要更改的分析中，导航到顶部菜单并选择**编辑**。

1. 选择**分析设置**，然后选择**日期和时间**。

1. 对于**自定义起始日**，选择所需的起始日。

1. 选择**应用**。

**注意事项**

以下注意事项适用于自定义周起始日。
+ 日期时间字段在运行时转换。当您使用采用日期时间值的计算字段时，请在分析级别而不是数据集级别定义字段。
+ 在您选择新的周起始日后，更改将应用于分析中的所有视觉对象和工作表。
+ 快速作者只能选择一周的开始日进行分析。从分析发布的所有控制面板都使用该分析使用的周起始日。要创建其所使用的周起始日与分析所使用的周起始日不同的控制面板，请更改分析的周起始日并重新发布控制面板。
+ 快速阅读器无法更改仪表板的周开始日期。

# 分析菜单
<a name="analysis-menu"></a>

在进行分析时，Amazon Quick 提供了多个菜单选项。使用这些菜单选项可以高效地执行任务，无需手动浏览分析，就能查找要更改的资产。

您可以使用这些选项来执行以下任务。
+ *文件* – 执行分析管理任务，包括创建、共享和发布。作者可以使用此选项对分析中的所有工作表或视觉对象进行更改。
+ *编辑* – 在对分析所作的更改之间导航。您可以撤销或恢复所作的更改。
+ *数据* – 管理数据集、数据字段和参数。使用此选项所作的更改将应用于分析中的所有工作表。
+ *插入* – 使用入口点，可以在其中向分析添加视觉对象、文本框、见解、报告对象、筛选条件和参数。插入的内容可以是数据，也可以是对象。
+ *工作表* – 管理分析的工作表设置，包括布局设置、在工作表中添加或删除资产的操作以及工作表属性。
+ *对象* – 管理对象及其功能，包括样式、画布位置、大小、卡片背景和边框。在处理视觉对象时，也可以使用**属性**窗格来管理这些对象。
+ *搜索* - 访问*快速搜索*栏。“快速搜索”是一个搜索栏，会随着键入内容开始显示您正在搜索的资产的结果。建议的结果会随着您的键入继续修改，直到您看到要查找的结果为止。

  要使用快速搜索，请打开**搜索**菜单，然后在**搜索分析操作**框中，开始键入与您要查找的资产关联的名称或短语。

# 配置分析设置
<a name="analysis-settings"></a>

Amazon Quick 作者可以使用分析设置菜单来配置分析的刷新和日期时间设置。要访问“分析设置”菜单，请选择**编辑**，然后选择**分析设置**。可以在“分析设置”菜单中配置以下设置：

**刷新设置**
+ **每次切换工作表时都要重新加载视觉对象** — 使用此设置可在用户在分析中切换到其他工作表时重新加载 Quick Sight 分析中的所有视觉对象。
+ **手动更新视觉对象** - 使用此设置可仅在用户应用更改时更新分析中适用的视觉对象。开启此设置后，分析会默认加载空白的视觉对象，因为直到用户选择工具栏中或受影响视觉对象上的**更新视觉对象**按钮时才会触发查询。**更新视觉对象**按钮确认用户已完成想要应用于受影响视觉对象的筛选条件和控件选择。下图显示了**更新视觉对象**按钮。

  开启**手动更新视觉对象**后，作者仍然可以添加视觉对象、编辑视觉对象和编辑控件选择，但是在作者应用新更改之前，受影响视觉对象不会更新。这使得作者能够在不增加数据库负载的情况下构建分析，并更好地控制在分析中加​​载哪些值。

**日期和时间设置**
+ **转换时区** – 使用此设置可转换所有与日期字段相关的可视化效果、筛选条件和参数，以反映所选时区。所有夏令时调整都是自动进行的。有关时区配置的更多信息，请参阅 [自定义分析的日期和时间值](analysis-date-time.md)。
+ **一周开始** - 使用此设置来选择周起始日进行分析。

**交互性**
+ 使用此设置可突出显示工作表中视觉对象中的特定数据点。当您选择或将鼠标悬停在视觉对象上的数据点上时，其他视觉对象中的相关数据将突出显示，而不相关的数据则会变暗。通过突出显示，您可以了解相关性、发现模式、趋势和异常值，并促进更强大、更明智的分析。选择**选择时**或**悬停时**以开启突出显示，或选择**无突出显示**以将其关闭。
+ 要自定义每个工作表级别的突出显示，请参阅[添加和管理工作表](working-with-multiple-sheets.md)。

# 在 Quick Sight 中对 Amazon Quick Sight 进行分析 APIs
<a name="analysis-item-limits"></a>

使用下表查看使用 Amazon Quick Sight 创建和管理的 Amazon Quick Sight 中不同分析项目的当前限制或配额 APIs。如果您的分析包含的分析项数量超过所支持的数目，请移除一些项以优化分析性能。如果分析项数量超过支持的数量，则无法向分析添加新的分析项。


| 分析项 | 限制 | 
| --- | --- | 
|  [工作表](https://docs.aws.amazon.com/quicksuite/latest/userguide/working-with-multiple-sheets)  |  每个分析 20 个工作表  | 
|  [视觉对象](https://docs.aws.amazon.com/quicksuite/latest/userguide/creating-a-visual)  |  每个工作表 50 个视觉对象  | 
|  [计算字段](https://docs.aws.amazon.com/quicksuite/latest/userguide/working-with-calculated-fields)  |  每个分析 500 个，每个数据集 200 个\$1  | 
|  [书签](https://docs.aws.amazon.com/quicksuite/latest/userguide/dashboard-bookmarks-create)  |  每个控制面板 200 个  | 
|  [自定义操作](https://docs.aws.amazon.com/quicksuite/latest/userguide/custom-actions)  |  每个视觉对象 10 个  | 
|  [筛选条件组](https://docs.aws.amazon.com/quicksuite/latest/userguide/add-a-compound-filter)  |  每个分析 2000 个  | 
|  [筛选条件](https://docs.aws.amazon.com/quicksuite/latest/userguide/adding-a-filter)  |  每个筛选条件组 20 个筛选条件  | 
|  [参数](https://docs.aws.amazon.com/quicksuite/latest/userguide/parameters-in-quicksight)  |  每次分析 400  | 
|  [控件](https://docs.aws.amazon.com/quicksuite/latest/userguide/filter-controls)  |  每个工作表 200 个  | 
|  [文本框](https://docs.aws.amazon.com/quicksuite/latest/userguide/textbox)  |  每个工作表 100 个  | 
|  [图像组件](https://docs.aws.amazon.com/quicksuite/latest/userguide/image-component)  |  每个工作表 10 个  | 
|  [图层地图视觉对象](https://docs.aws.amazon.com/quicksuite/latest/userguide/layered-maps)  |  每个工作表 5 个  | 

\$1 每个数据集限制适用于在分析中创建的计算。数据集级别的计算不包括在此限制内。有关数据集级别计算的更多信息，请参阅[添加计算字段](adding-a-calculated-field-analysis.md)。

# 保存对分析所作的更改
<a name="saving-changes-to-an-analysis"></a>

在处理分析时，您可以将自动保存设置为开启 (默认值) 或关闭。当自动保存开启时，您所做的更改会一分钟左右自动保存一次。当“自动保存”关闭时，您所作的更改不会自动保存，这意味着您可以进行更改并追踪不同的查询行，而不会永久更改分析。如果您决定仍然要保存结果，请重新启用自动保存。将会保存到此刻为止所做的更改。

在任一“自动保存”模式下，您都可以通过选择应用程序栏上的**撤销**或**恢复**来撤销或恢复最多 200 项所作的更改。

## 更改“自动保存”模式
<a name="changing-autosave"></a>

要更改分析的自动保存模式，请选择**文件**，然后选择**自动保存已打开**或**自动保存已关闭**。

## 当“自动保存”无法保存更改时
<a name="conflicting-changes"></a>

假定出现以下任一情况：
+ 自动保存已开启，另一个用户对分析进行了有冲突的更改。
+ 自动保存已开启，并出现服务故障，导致无法保存您最近的更改。
+ 自动保存关闭，您将其打开，并且正保存到服务器的一个积压更改与另一个用户的更改冲突。

在这种情况下，Amazon Quick Sight 允许你选择做两件事之一。您可以让 Amazon Quick Sight 关闭自动保存功能并继续在未保存模式下工作，也可以从服务器重新加载分析，然后重做最近的更改。

如果在编辑分析时客户端身份验证过期，系统会指示您再次登录。成功登录后，将重定向回分析，在这里可以继续正常工作。

如果您在编辑分析时对该分析的权限被撤销，则无法进行任何进一步更改。

# 从 Quick Sight 分析导出数据
<a name="exporting-data-analysis"></a>

**注意**  
导出文件可以直接通过数据集导入返回信息。如果导入的数据包含公式或命令，则文件易受 CSV 注入影响。因此，导出文件可能会提示安全警告。为避免恶意活动，请在读取导出的文件时关闭链接和宏。

您可以将数据从分析导出到 CSV 或 PDF 文件。要将数据从分析或控制面板导出到 CSV 文件，请按照 [从视觉对象中导出数据](exporting-data.md) 中的过程进行操作。

使用以下过程将分析导出为 PDF。

1. 从要导出的分析中，选择**文件 > 导出为 PDF**。Quick Sight 开始准备分析以供下载。

1. 在蓝色弹出窗口中选择**查看导出**，以便打开右侧的**导出**窗格。

1. 在绿色弹出窗口中选择**下载**。

1. 要查看所有可供下载的分析或报告，请选择**文件**，然后选择**导出**。“导出”面板将在屏幕右侧打开。选择要保存到首选位置的文件旁边的**单击以下载**。

导出为 PDF 的过程在控制面板和分析中的工作方式相同。

您也可以将 PDF 附加到控制面板电子邮件报告。有关更多信息，请参阅 [通过电子邮件安排和发送 Quick Sight 报告](sending-reports.md)。

# 删除分析
<a name="deleting-an-analysis"></a>

如果您有权执行此操作，则可以从**分析**页面中删除分析。当您删除分析时，它不会影响基于该分析的任何控制面板。它们会继续显示已删除的分析，但是在删除分析后，您就无法对其进行更改。导航到“分析”页面，然后找到要删除的分析。选择分析上的详细信息图标（⋮），然后选择**删除**。再次选择 **Delete (删除)** 确认您的选择。您不能撤消此操作。

# 添加和管理工作表
<a name="working-with-multiple-sheets"></a>

*工作表*是一组放在单个页面中一起查看的视觉对象。在创建分析时，您将视觉对象放在工作表上的工作区中。您可以将这想象成报纸上的工作表，不过其中填充的是数据可视化内容。您可以添加更多工作表，并在分析中将其单独或一起使用。

顶部工作表（也称为默认工作表）是最左侧的工作表。此工作表显示在分析或控制面板的顶部。每个分析最多可以包含 20 工作表。

您可以共享包含多个工作表的分析，以及发布包含多个工作表的控制面板。您还可以计划为分析中的任意工作表组合发送电子邮件报告。

在现有分析中创建新分析或新工作表时，您可以选择将新工作表设置为交**互式**工作表还是 **Pixel 完美报告**。这样，您可以仅对交互式表格进行分析，仅对像素完美报告进行分析，也可以进行包括交互式表格和像素完美报告的分析。

*交互式工作表*是以视觉对象表示的数据集合，当工作表发布到控制面板时，用户可以与之交互。Amazon Quick 作者可以在他们的交互式工作表中添加不同的控件和筛选器。控制面板查看者可使用这些控件和筛选条件从已发布的数据中获取详细信息。有关交互式表格的更多信息，请参阅在 [Amazon Quick Sight 中使用交互式表格](https://docs.aws.amazon.com/quicksight/latest/user/working-with-interactive-sheets.html)。

*分页报告*是表格、图表和视觉对象的集合，用于传达关键业务信息，例如每日交易摘要或业务周报。要在 Quick Sight 中创建像素完美报告，请将 **Pixel 完美报告插件**添加到你的 Quick 账户中。要获取 **Pixel 完美报告插件**并开始处理像素完美报告，请参阅[在 Amazon Quick Sight 中处理像素完美报告](https://docs.aws.amazon.com/quicksight/latest/user/working-with-reports.html)。

 可以使用以下操作列表处理工作表：
+ 要添加新工作表，请选择工作表选项卡右侧的加号（\$1），再选择所需工作表类型，然后选择**添加**。
+ 要重命名工作表，请选中工作表名称并开始键入新名称。也可以从工作表菜单中进行@@ **重命名**。
+ 要复制工作表，请选择工作表的名称，然后从工作表菜单中选择 “**复制**”。只有打开了**自动保存**才能复制工作表。
+ 要复制交互式工作表并将其转换为像素完美报告，请选择工作表的名称，然后从工作表菜单中选择 “**复制” 以报告**。您无法将像素完美报告转换为交互式表格。
+ 要删除工作表，请选择工作表的名称，然后从工作表菜单中选择 “**删除**”。如果分析中只有一个工作表，则无法删除工作表。
+ 要更改工作表的顺序，请选中工作表名称并将其拖到新位置。
+ 要将视觉对象复制到新的工作表，请从视觉对象菜单中选择 **Duplicate visual to (将视觉对象复制到)**。然后，选择目标工作表。筛选器仅在创建它们的工作表上存在。要复制筛选器，请在目标工作表上重新创建筛选器。
+ 要突出显示工作表中视觉对象的特定数据点，请转到**工作表**选项卡，然后选择**布局设置**。在**交互性**部分下，选择**选择时**或**悬停时**以开启突出显示，或者选择**无突出显示**将其关闭。默认情况下，工作表突出显示遵循与分析突出显示相同的设置。

  当您选择或将鼠标悬停在视觉对象上的数据点上时，其他视觉对象中的相关数据将突出显示，而不相关的数据则会变暗。通过突出显示，您可以了解相关性、发现模式、趋势和异常值，并促进更强大、更明智的分析。

您可以使用顶部工作表上的参数控件控制多个工作表。要执行此操作，请打开要使用此参数的每个工作表。然后，添加筛选器，该筛选器使用的参数与顶部工作表中控件所用的参数相同。或者，如果希望新工作表单独运行，您可以在其中添加与顶部工作表不同的参数和参数控件。

# 使用 Amazon Quick Sight 中的交互式表格
<a name="working-with-interactive-sheets"></a>

*交互式工作表*是以视觉对象表示的数据集合，当工作表发布到控制面板时，用户可以与之交互。Amazon Quick 作者可以在其交互式工作表中添加不同的布局、控件和筛选器，控制面板查看者可以使用这些表单从已发布的数据中获取详细信息。默认情况下，分析中的每个工作表均为交互式工作表。如果您的账户没有 **Pixel perfect 报告插件**，则只能创建和发布交互式表格。

有关创建交互式工作表的更多信息，请参阅[在 Quick Sight 中开始分析](creating-an-analysis.md)。

有关设置交互式工作表格式的更多信息，请参阅以下主题。

**Topics**
+ [在 Amazon Quick Sight 中自定义控制面板布局](customizing-dashboards-and-visuals.md)
+ [Amazon Quick 中的参数](parameters-in-quicksight.md)
+ [使用自定义操作进行筛选和导航](quicksight-actions.md)

# 在 Amazon Quick Sight 中自定义控制面板布局
<a name="customizing-dashboards-and-visuals"></a>

您可以自定义控制面板的布局来整理数据，从而满足自己的业务需求。有三种控制面板布局可供选择。您还可以更改视觉对象的大小、背景颜色、边框颜色和交互，从而创建完全自定义的控制面板。

参阅以下主题，了解有关自定义控制面板和视觉对象的更多信息。

**Topics**
+ [布局类型](types-of-layout.md)
+ [选择布局](choosing-a-layout.md)
+ [在自由形式布局中自定义视觉对象](customizing-visuals-in-free-form.md)
+ [条件规则](conditional-rules.md)

# 布局类型
<a name="types-of-layout"></a>

有三种控制面板布局设计可供选择：**平铺**、**自由形式**和**经典**。

## 平铺布局
<a name="tiled-layout"></a>

**平铺**布局中的视觉对象与具有标准间距和对齐方式的网格对齐。您可以将视觉对象设置为任意大小，并将其放置在控制面板中的任何位置，只要视觉对象不重叠就行。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/fixed-layouts-tiled-demo.gif)


控制面板按设计显示，并提供选项按实际大小适应屏幕或视图。您还可以通过在右上角为**查看**选择**适应窗口**，让整个控制面板适应自己的窗口。此选项以前称为**优化**。

**注意**  
在移动设备上，平铺布局控制面板在纵向模式下显示为单列，或者与横向模式下的设计完全相同。

## 自由形式布局
<a name="free-form-layout.title"></a>

使用精确的坐标可以将**自由形式**布局中的视觉对象放置在控制面板的任何位置。您可以将视觉对象拖到所需的确切位置，也可以输入视觉对象位置的坐标。要输入视觉对象位置的确切坐标，请按照以下过程操作。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/fixed-layouts-freeform-placement1.gif)


控制面板按照您选择的设计方式显示，并提供选项按实际大小适应屏幕或视图。您可以优化自由形式布局，以便在特定分辨率下进行查看，其中默认分辨率为 1600 像素。您还可以通过在右上角为**查看**选择**适应窗口**，让整个控制面板适应浏览器的窗口。

**注意**  
如果查看者的计算机分辨率与控制面板的设定分辨率不一致，具有优化分辨率的控制面板在查看者的计算机上可能会显得更大或更小。  
从**自由形式**切换到另一种布局可能会让某些视觉对象元素发生移位。  
在移动设备上，**自由形式**控制面板显示为已发布，且布局无变化。

## 经典布局
<a name="classic-layout.title"></a>

**经典**布局中的视觉对象与具有标准间距和对齐方式的网格对齐。控制面板会隐藏数据或更改格式设置来适应较小的屏幕尺寸。例如，如果您将视觉对象的大小改得相当小，系统会隐藏视觉对象菜单和编辑器，以增大图表元素的显示空间。条形图视觉对象也可能会显示较少的数据点。

如果您缩小浏览器窗口的大小，Amazon Quick Sight 会调整大小，并在必要时重新排序视觉效果以获得最佳显示效果。例如，并排显示的较小视觉对象可能会变成顺序显示。当浏览器窗口的大小再次增加时，其会恢复原始布局。

**注意**  
在移动设备上，经典布局控制面板以单列形式显示，或者与横向模式下的设计完全相同。

# 选择布局
<a name="choosing-a-layout"></a>

**更改控制面板的布局**

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

1. 在 Q **u** ick 主页上，选择 “分析”，然后选择要更改的分析。

1. 在分析页面上，选择**编辑**，然后选择**分析设置**。

1. 展开**工作表布局**，选择要使用的布局。

1. 完成后，选择 **Apply**。

# 在自由形式布局中自定义视觉对象
<a name="customizing-visuals-in-free-form"></a>

您可以使用自由形式布局来完全自定义控制面板中每个视觉对象的颜色、大小、位置和视觉效果。

## 组织视觉对象
<a name="organizing-visuals.title"></a>

除了将视觉对象拖动到控制面板中的首选位置外，还有许多不同方法可以将视觉对象移动到所需的确切位置。

**输入视觉对象位置的坐标**

1. 选择想要的视觉对象。

1. 从视觉对象右上角的菜单中选择**设置视觉对象格式**图标。

1. 在打开的**属性**窗格中，选择**放置**。

1. 输入要放置视觉对象的位置的 **X** 和 **Y** 坐标。您可以通过输入**宽度**和**高度**值来调整视觉对象的大小，

也可以 pixel-by-pixel使用键盘的箭头键移动选定的视觉效果。

您可以将视觉对象叠加在一起，创建显示数据的多层视觉对象。

视觉对象可以组织成多个层，这些层可以手动向前和向后移动。

**将叠加的视觉对象向前和向后移动**

1. 选择想要的视觉对象。

1. **在视觉效果右上角的三点菜单上，选择 “菜单选项”。**

1. 对于**菜单选项**，请从以下选项中选择：
   + **置为底层**将视觉对象移动到底层。
   + **后移一层**将视觉对象向后移动一层。
   + **前移一层**将视觉对象向前移动一层。
   + **置为顶层**将视觉对象移动到顶层。

## 更改视觉对象的背景颜色
<a name="changing-a-visuals-background-color.title"></a>

在**属性**窗格的**显示设置**窗格中，可以自定义视觉对象的背景、边框和选择框颜色。

**更改视觉对象的背景、边框或选择框的颜色**

1. 选择要更改的视觉对象。

1. 从视觉对象右上角的菜单上，选择**菜单**图标。

1. 在左侧出现的**属性**窗格中，选择**显示设置**。

1. 导航到**卡样式**部分，然后执行一项或多项可用操作：
   + 要更改视觉对象的背景颜色，请选择**背景**颜色框，然后选择所需的颜色。
   + 要更改视觉对象的边框颜色，请选择**边框**颜色框，然后选择所需的颜色。
   + 要更改视觉对象选择框的颜色，请选择**选择**颜色框，然后选择所需的颜色。

   如果要为视觉对象的背景、边框或选择框使用自定义颜色，请选择要更改的属性的颜色框，然后选择**自定义颜色**。在出现的**自定义颜色**窗口中，选择自定义颜色或输入颜色的十六进制代码。完成后，请选择 **Apply**。

您也可以将视觉对象的自定义背景重置回其默认外观。

**重置视觉对象的外观**

1. 选择要更改的视觉对象。

1. 从视觉对象右上角的菜单上，选择**菜单**图标。

1. 在左侧出现的**属性**窗格中，选择**显示设置**。

1. 选择要重置的颜色，然后选择**重置为默认值**。

## 隐藏视觉对象背景、边框和选区颜色
<a name="hiding-visual-backgrounds-and-borders.title"></a>

您也可以选择不显示视觉对象的背景边框或选区颜色。这在重叠多个视觉对象时很有用。通过选择**边框**、**背景**或**选择**颜色框旁的眼睛图标，可以隐藏视觉对象的背景、边框和选择颜色。您也可以通过清除**显示加载动画**框来移除视觉对象的加载动画。

## 禁用视觉对象菜单
<a name="disabling-visual-menus.title"></a>

使用**属性**窗格的**交互**面板来隐藏所选视觉对象中的**上下文**菜单和**视觉效果**菜单。您可以隐藏辅助视觉对象菜单，从而减少视觉对象的拥挤程度，或让视觉对象呈现叠加效果。

点击数据点时会打开**上下文**菜单。**上下文菜单**中的常见操作包括**聚焦**、**排除**和**向下钻取**。

**视觉对象**菜单显示在视觉对象的右上角。**视觉对象**菜单用于访问**属性**窗格、**最大化**视觉对象、访问**菜单选项**面板以及查看**异常见解**。

您可以通过清除**上下文菜单**和**视觉对象菜单**选项来关闭二级视觉对象菜单。

**注意**  
您无法在**分析**中预览对**交互**面板所作的更改。发布控制面板可查看更改。

# 条件规则
<a name="conditional-rules"></a>

此功能目前适用于**自由形式**布局。条件规则用于在满足特定条件时隐藏或显示视觉对象。当同一视觉对象的多个版本相互重叠并且希望控制面板查看者看到最能代表他们选择的参数值的版本时，这会很有用。

条件规则使用参数和参数控件来隐藏和显示视觉对象。参数 是一种命名变量，可以传输值供操作或对象使用。此功能支持字符串和数字参数。要使参数可供控制面板查看者访问，您需要添加参数控制。参数控件允许用户选择要在预定义的筛选条件或 URL 操作中使用的值。有关参数和参数控件的更多信息，请参阅 [Amazon Quick 中的参数](parameters-in-quicksight.md)。

使用以下部分来设置和使用条件规则。

**Topics**
+ [默认隐藏视觉对象](hiding-a-visual-by-default.title.md)
+ [设置条件规则](setting-a-conditional-rule.title.md)
+ [使用条件规则](using-conditional-rules.md)

# 默认隐藏视觉对象
<a name="hiding-a-visual-by-default.title"></a>

在**属性**窗格的**交互**窗格中，您可以选择默认隐藏视觉对象。如果您希望查看者只看到基于特定条件的视觉对象，这样做会很有用。

**默认隐藏视觉对象**

1. 在 Q **u** ick 主页上，选择 “分析”，然后选择要自定义的分析。

1. 选择要添加规则的视觉对象。

1. 在视觉对象右上角的菜单上，选择**属性**。

1. 在打开的**属性**窗格中，选择**交互**，然后打开**规则**下拉列表。

1. 在**规则**菜单中，选择**原定设置为隐藏此视觉对象**。

隐藏的视觉对象在查看控制面板中呈现完全隐藏效果。在**分析**窗格中，隐藏的视觉对象变得可见，并显示消息“根据规则隐藏”。通过此显示，您可以看到控制面板的所有视觉对象的位置。

**注意**  
您不能创建条件规则来隐藏已默认隐藏的视觉对象或显示已默认显示的视觉对象。如果更改视觉对象的默认外观，与新的默认外观相矛盾的现有规则将被禁用。

# 设置条件规则
<a name="setting-a-conditional-rule.title"></a>

在您设置条件规则时创建的条件语句，会在满足特定条件时隐藏或显示视觉对象。您当前可以创建隐藏或显示视觉对象的条件规则。如果要创建一个条件规则来显示已隐藏的视觉对象，请在**属性**窗格的**规则**菜单中选择**原定设置为隐藏此视觉对象**。

**注意**  
在开始之前，请创建参数和相应的参数控件，作为新条件规则的基础。支持的参数是字符串参数和数字参数。有关参数和参数控件的更多信息，请参阅 [Amazon Quick 中的参数](parameters-in-quicksight.md)。

**设置条件规则**

1. 在 Q **u** ick 主页上，选择 “分析”，然后选择要自定义的分析。

1. 选择要添加规则的视觉对象。

1. 在视觉对象右上角的菜单上，选择**属性**。

1. 在左侧显示的**属性**窗格中，选择**交互**，然后选择**规则**。

1. 选择**添加规则**。

1. 在**添加规则**窗格的第一个菜单中选择所需参数。

1. 在**添加规则**窗格的第二个菜单中选择所需条件。对于字符串参数，支持的条件为**等于**、**开头为**、**包含**和**不等于**。对于数字参数，支持的条件为**等于**、**开头为**、**包含**和**不等于**。

1. 输入条件规则要满足的值。
**注意**  
值区分大小写。

1. 选择**添加规则**，将新的条件规则应用于视觉对象。要取消规则，请选择**取消**。

您也可以编辑和删除条件规则。

**编辑条件规则**

1. 在视觉对象右上角的菜单上，选择**属性**。

1. 在左侧显示的**属性**窗格中，选择**交互**，然后选择**规则**。

1. 选择要编辑的规则右侧的菜单图标，然后选择**编辑**。

1. 执行所需的更改，然后选择**保存**。

**删除条件规则**

1. 在视觉对象右上角的菜单上，选择**属性**。

1. 在左侧显示的**属性**窗格中，选择**交互**，然后选择**规则**。

1. 选择要编辑的规则右侧的菜单图标，然后选择**删除**。

# 使用条件规则
<a name="using-conditional-rules"></a>

只要设置了与参数和参数控件相关的条件规则，您就可以使用参数控件来启用或禁用已设置的条件规则。

**启用条件规则**

1. 在 Q **u** ick 主页上，选择 “分析”，然后选择要自定义的分析。

1. 从工作区顶部的**控件**栏中选择下拉图标。

1. 选择与您创建的条件规则关联的参数控件。

1. 选择与您通过参数菜单创建的条件规则关联的值。您还可以在**搜索值**方框中输入所需的值。
**注意**  
值区分大小写。

   选择正确的值会让视觉对象根据您设置的规则显示或消失。

您也可以将参数控件引入视觉对象所在的工作表。如果希望参数控件位于与其关联的视觉对象旁边，或者想向控件添加条件规则以使其仅在满足特定条件时才显示，这会非常有用。

**将参数控件引入工作表**

1. 在 Q **u** ick 主页上，选择 “分析”，然后选择要自定义的分析。

1. 从工作区顶部的**控件**栏中选择要移动的控件。

1. 从控件的右上角打开**菜单选项**菜单。

1. 选择**移至工作表**。

**将参数控件移回控件栏**

1. 在控制面板上选择要移动的参数控件。

1. 从控件的右上角打开**菜单选项**菜单。

1. 选择**移至工作表顶部**。

# Amazon Quick 中的参数
<a name="parameters-in-quicksight"></a>

*参数* 是一种命名变量，可以传输值供操作或对象使用。通过使用参数，您可以为控制面板用户创建更简单的方式，让他们以技术性较低的方式与控制面板功能进行交互。此外，参数还可将控制面板连接起来，让控制面板用户能够深入了解不同分析中的数据。

例如，控制面板用户可以使用列表选择一个值。该值设置一个参数，而参数将某个筛选条件、计算或 URL 操作设置为选定的值。然后，控制面板中的视觉对象对用户的选择做出响应。

要使参数可供控制面板查看者访问，您需要添加参数控制。您可以设置级联控件，使在某个控件中的选择对显示在另一个控件中的选项进行筛选。控件可以显示为选项列表、滑块或文本输入区域。如果不创建控制，您仍可将值传递到控制面板 URL 中的参数。

为了让参数起作用，无论是否有相关控件，都需要将其连接到分析中的某些内容。您可以在以下内容中引用参数：
+ 计算字段（多值参数除外）
+ 筛选条件
+ 仪表板和分析 URLs
+ 操作
+ 整个分析中的标题和描述

使用参数的一些方法如下所示：
+ 利用计算，您可以转换在分析中显示的数据。
+ 如果您向要发布的分析添加了一个包含筛选条件的控件，控制面板用户就可以筛选数据而不创建自己的筛选条件。
+ 通过使用控件和自定义操作，您可以让控制面板用户设置 URL 操作的值。

**Topics**
+ [在 Amazon Quick 中设置参数](parameters-set-up.md)
+ [在 Amazon Quick 中使用带有参数的控件](parameters-controls.md)
+ [在 Amazon Quick 中创建参数默认值](parameters-default-values.md)
+ [连接到 Amazon Quick 中的参数](parameters-connections.md)

# 在 Amazon Quick 中设置参数
<a name="parameters-set-up"></a>

使用以下过程创建或编辑基本参数。

**创建或编辑基本参数**

1. 选择要使用的分析，然后确定要参数化的字段。

1. 从页面顶部的图标列表中选择**参数**图标。

1. 选择窗格顶部附近的加号（**\$1 添加**）以添加新参数。

   通过先选择参数名称旁边的 `v` 形图标，然后选择 **Edit parameter (编辑参数)** 来编辑现有参数。

1. 对于**名称**，请输入参数的字母数字值。

1. 对于**数据类型**，选择**字符串**、**数字**、**整数**或**日期时间**，然后完成以下步骤。
   + 如果您选择**字符串**、**数字**或**整数**，请执行以下操作：

     1. 对于**值**，请选择**单值**或**多值**。

        对于只能包含一个值的参数，请选择“单值”选项。对于可以包含一个或多个值的参数，请选择“多值”。多值参数不能是 `datetime` 数据类型。它们也不支持动态默认值。

        要将某个现有参数在单值和多值之间切换，请删除并重新创建该参数。

     1. （可选）对于**静态默认值**或**静态多个默认值**，请输入一个或多个值。

        如果未提供动态默认值或 URL 参数，将在第一个页面加载期间使用此类型的静态值。

     1. （可选）选择**默认显示为空白**。

        选择此选项，将多值列表的默认值显示为空白。此选项仅适用于多值参数。
   + 如果选择**日期时间**，则执行以下操作：

     1. 对于**时间粒度**，选择**日**、**小时**、**分钟**或**秒**。

     1. 对于**默认日期**，请选择**固定日期**或**相对日期**，然后执行以下操作：
        + 如果选择的是**固定日期**，请使用日期和时间选择器输入日期和时间。
        + 如果选择的是**相对日期**，请选择一个滚动日期。您可以选择**今天**、**昨天**，也可以指定**筛选条件**（开始时间或结束时间）、**范围**（当前日期、前一天或后一天）和**期限**（年、季度、月、周或天）。

1. （可选）选择**设置动态默认值**，针对用户创建默认值。

   *动态默认值* 是针对控制面板的第一个页面加载的每用户默认值。使用动态默认值为每个用户创建个性化视图。

   计算字段不能用作动态默认值。

   动态默认值不会阻止用户选择其他值。如果您想保护数据，则可以添加行级别锁定。有关更多信息，请参阅 [使用采用基于用户的规则的行级别安全性限制对数据集的访问使用基于用户的规则](restrict-access-to-a-data-set-using-row-level-security.md)。

   仅当选择单值参数时，才会显示此选项。多值参数不能具有动态默认值。
**注意**  
如果选择多值参数，屏幕将更改以删除默认选项。相反，您会看到一个包含文本 **Enter values you want to use for this control (输入要用于此控件的值)** 的框。您可以在该框中输入多个值（一行一个）。这些值用作参数控件中的默认选定值。此处的值与您选择为该参数控件输入的值联合起来使用。有关参数控制的更多信息，请参阅[参数控制](parameters-controls.md)。

1. （可选）设置保留值以确定**全选**值的值。参数的*保留值*是您选择**全选**作为参数值时分配给参数的值。当您设置参数的特定保留值时，该值不再被视为数据集中的有效参数值。保留值不能用于任何*参数使用者*，例如筛选条件、控件和计算字段以及自定义操作。此外，该值不会显示在参数控件列表中。您可以从**推荐值**、**Null** 和**自定义值**中进行选择。**推荐值**是默认值。如果您选择**推荐值**，则会根据值类型将保留值设置为以下值：
   + 字符串：`"ALL_VALUES"`
   + 数字：`"Long.MIN_VALUE"-9,223,372,036,854,775,808`
   + 整数：`Int.MIN_VALUE"-2147483648`

   要在新参数中设置保留值，请在**创建新参数**页面或**编辑参数**页面中选择**高级设置**下拉列表，然后选择所需的值。

1. 选择 **Create（创建）**或 **Update（更新）**以完成创建或更新参数。

创建参数后，您可以用各种方式使用它。您可以创建一个控件（如按钮），以便能为您的参数选择一个值。有关更多信息，请参阅以下部分。

# 在 Amazon Quick 中使用带有参数的控件
<a name="parameters-controls"></a>

在控制面板中，参数控件显示在数据表顶部，该表包含一组视觉对象。通过提供一个控件，可以允许用户选择要在预定义的筛选条件或 URL 操作中使用的值。控制面板用户可以使用控件在控制面板上的所有视觉对象数据集中应用筛选，不必自行创建筛选条件。

以下规则适用：
+ 要创建或编辑参数的控件，请确保该参数存在。
+ 多选列表控件与分析 URLs、仪表板 URLs、自定义操作和自定义筛选器兼容。筛选条件必须等于或不等于提供的值。不支持其他比较。
+ 列表最多显示 1,000 个值。如果不同的值超过 1,000 个，则会出现一个搜索框，供您筛选列表。当筛选后的列表包含的值少于 1,001 个时，列表的内容将显示为行项目。
+ **Style (样式)** 选项仅显示适用于参数的数据类型和单值或多值设置的样式类型。如果要使用的样式不在列表中，请使用适当的设置重新创建参数，然后重试。
+ 如果参数链接到数据集字段，则该字段必须是实际字段。不支持计算字段。
+ 值按字母顺序在控件中显示，除非有超过 1,000 个不同的值。然后，控件改为显示搜索框。每次搜索要使用的值时，它都会启动一个新的查询。如果结果包含 1,000 个以上值，则您可以使用分页滚动值。支持通配符搜索。要了解有关通配符搜索的更多信息，请参阅 [使用通配符搜索](search-filter.md#search-filter-wildcard)。

使用以下过程为现有参数创建或编辑控件。

**创建或编辑现有参数的控件**

1. 选择一个现有参数的上下文菜单（参数名称旁边的 `v` 图标），然后选择 **Add control（添加控件）**。

1. 输入一个名称为新控件提供标签。此标签显示在工作区顶部，随后显示在显示控制面板的工作表顶部。

1. 从以下选项中选择一个控件样式：
   + **文本字段**

     文本字段允许您键入字段自身的值。数字和文本（字符串）都适用于文本字段。
   + **文本字段 – 多行**

     多行文本字段允许您键入字段自身的值。使用此选项，您可以选择用换行符、逗号、竖线（\$1）或分号来分隔在参数控件中输入的值。数字和文本（字符串）都适用于文本字段。
   + **下拉菜单**

     下拉列表控件可用于选择单值。数字和文本（字符串）适用于列表控件。
   + **下拉菜单 – 多选**

     列表控件可用于选择多个值。数字和文本（字符串）适用于列表控件。
   + **列表**

     列表控件可用于选择单值。数字和文本（字符串）适用于列表控件。
   + **列表 – 多选**

     列表控件可用于选择多个值。数字和文本（字符串）适用于列表控件。
   + **Slider**

     滑块可让用户通过将控件从滚动条的一端滑动到另一端来选择数字值。滑块与数字结合使用。
   + **Date-picker（日期选取器）**

     您可以使用日期选择器从日历控件中选择日期。选择添加日期选择器控件时，可以自定义如何设置控件中的日期格式。为此，对于**日期格式**，请使用 [在 Quick 中自定义日期格式](format-visual-date-controls.md) 中所述的标记输入所需的日期格式。

1. （可选）如果选择下拉控件，屏幕将展开，以便您可以选择要显示的值。您可以指定一系列值，或使用数据集中的字段。选择以下任一选项：
   + **Specific values（特定值）**

     要创建特定值的列表，请在每行键入一个值（没有用于分隔的空格或逗号），如以下屏幕截图所示。

     这些值在控件中按字母顺序显示，而不是按输入顺序显式。
   + **链接到数据集字段（Link to a data set field）**

     要链接到某个字段，请选择包含您字段的数据集，然后从列表中选择该字段。

     如果您更改了参数中的默认值，请选择控件上的 **Reset（重置）**以显示新值。

   在此处选择的值将与参数设置中的静态默认值联合起来使用。

1. （可选）启用选项**如果参数配置了默认值，则从控件中隐藏 [全部] 选项**。此操作只会显示数据值，并删除在控件中选择所有项目的选项。如果未对参数配置静态默认值，则此选项将不起作用。通过选择参数并选择 **Edit parameter (编辑参数)**，可在添加控件后添加默认值。

1. （可选）您可以限制控件中显示的值，使它们仅显示对其他控件中选择的值有效的值。这称为级联控件。

   要创建级联控件，请选择 **Show relevant values only (仅显示相关值)**。选择一个或多个能够更改此控件显示内容的控件。

   创建级联控件时，以下限制适用：
   + 级联控件必须与同一数据集中的数据集列相关联。
   + 子控件必须是下拉列表或列表控件。
   + 对于参数控件，子控件必须链接到数据集列。
   + 对于筛选条件控件，子控件必须链接到筛选条件（而不是仅显示特定值）。
   + 父控件必须是以下任一类型：
     + 字符串、整数或数字参数控件。
     + 字符串筛选条件控件（不包括“前几项/后几项”筛选条件）。
     + 非聚合数字筛选条件控件。
     + 日期筛选条件控件（不包括“前几项/后几项”筛选条件）。

1. 为控件选择完选项后，选择 **Add（添加）**。

已完成的控件将显示在工作区顶部。上下文菜单（形状像 `v`）提供了四个选项：
+ **Reset（重置）**，用于将用户的选择还原为默认状态。
+ **刷新列表**仅适用于链接到数据集中字段的下拉菜单。选择 **Refresh list（刷新列表）**将查询数据以检查更改。控件中使用的数据将被缓存。
+ **Edit（编辑）**，用于重新打开控件创建屏幕，使您可以更改设置。

  打开**编辑控件**窗格后，单击不同的视觉对象和控件即可查看特定视觉对象或控件的格式设置数据。有关设置视觉对象格式的更多信息，请参阅[在 Amazon 中快速格式化](formatting-a-visual.md)。
+ **Delete（删除）**，用于删除控件。您可以通过选择参数上下文菜单来重新创建它。

在工作区中，您还可以调整控件的大小和重新整理控件。控制面板用户在您执行这些操作时可以看到控件，只不过不能编辑或删除控件。

# 在 Amazon Quick 中创建参数默认值
<a name="parameters-default-values"></a>

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

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

最简单的默认值是静态（不变）默认值，会向所有人显示相同的值。作为控制面板的设计者，您可以选择默认值。使用控制面板的人无法对其进行更改。不过，此人可以从控件中选择任何值。设置默认值并不能改变这一点。要限制人员可以选择的值，请考虑使用行级别安全性。有关更多信息，请参阅 [使用采用基于用户的规则的行级别安全性限制对数据集的访问使用基于用户的规则](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 为字段选择的数据类型。

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

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

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

    要获取用户列表，请使用 [ListUsers](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ListUsers.html)Quick API 操作或 AWS CLI 命令。CLI 命令如下例所示。为您的身份提供者指定 AWS 区域 ，例如 `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.aws.amazon.com/quicksight/latest/APIReference/API_ListGroups.html)— 按 AWS 账户 ID 和命名空间列出包含您的身份提供商 AWS 区域 的 Quick 群组。
    + [ListGroupMemberships](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ListGroupMemberships.html)— 列出指定的 Quick 组中的用户。
    + [ListUserGroups](https://docs.aws.amazon.com/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.aws.amazon.com/zh_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.aws.amazon.com/zh_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 对任何用户名不存在于数据集中、未分配默认值或没有唯一默认值的人使用静态默认值。每个人只能有一组默认值。如果不想使用动态默认值，可以设置静态默认值。

# 连接到 Amazon Quick 中的参数
<a name="parameters-connections"></a>

请在设置参数后使用本节内容，以连接参数并使参数正常工作。

创建参数后，您可以创建参数的使用者。*参数使用者* 是使用参数值的组件，例如筛选条件、控件、计算字段或自定义操作。

您可以通过其他方式导航到每个选项，如下所示：
+ 要创建过滤器，请选择页面顶部的**筛选器**图标。简言之，是创建一个 **Custom Filter (自定义筛选条件)** 并启用 **Use parameters (使用参数)**。列表仅显示符合条件的参数。
+ 要为参数添加新控件，请选择页面顶部的**参数**图标。简言之，是选择参数，然后 **Add control (添加控件)**。
+ 要在计算字段中使用参数，请编辑现有的计算字段，或通过选择左上角的 **Add (添加)** 添加新字段。参数列表显示在字段列表下方。
**注意**  
不能为计算字段使用多值参数。
+ 要创建 URL 操作，请选择视觉对象上的 **v** 形菜单，然后选择 **URL Actions (URL 操作)**。

有关每个主题的更多信息，请参阅下面几节。

**Topics**
+ [将筛选条件与参数结合使用](parameters-filtering-by.md)
+ [将计算字段与参数结合使用](parameters-calculated-fields.md)
+ [将自定义操作与参数结合使用](parameters-custom-actions.md)
+ [中的参数 URLs](parameters-in-a-url.md)
+ [标题和描述中的参数](parameters-in-titles.md)

# 在 Amazon Quick 中使用带参数的筛选条件
<a name="parameters-filtering-by"></a>

使用本节内容可以按单值参数值筛选分析或控制面板中的数据。要使用多值参数（带有多选下拉控件的多值参数），请创建一个等于（或不等于）这些值的自定义筛选条件。

在将筛选条件与参数结合使用之前，您应该已经了解如何使用筛选条件。

1. 验证您的分析是否已创建一个参数。从参数或控件菜单中选择**编辑**，了解正在使用的设置。

1. 从屏幕左侧选择 **Filter (筛选条件)** 窗格。如果您要使用的字段已经有一个筛选条件，请选择它以打开其设置。否则，请为要按参数筛选的字段创建筛选条件。

1. 选择 **Use Parameters (使用参数)**。

1. 从 **Use parameters（使用参数）**下方的列表中选择您的参数。对于文本（字符串）字段，请选择 **Custom Filter（自定义筛选条件）**，然后启用 **Use Parameters（使用参数）**。

   对于日期字段，选择 **Start date（开始日期）**和 **End date（结束日期）**参数，如以下屏幕截图所示。

   对于具有其他数据类型的字段，请选择 **Select a parameter（选择一个参数）**，然后从列表中选择您的参数。
**注意**  
可以包含多个值的参数必须使用等于或不等于作为比较类型。

1. 选择 **Apply (应用)** 以保存更改。

通过选择位于分析顶部附近的控件来测试新筛选条件。在本例中，我们使用了没有默认值的基本参数，以及链接到示例数据集（名为 **销售管道**）中**区域**字段的动态控件。该控件将查询数据并返回所有值。

如果您删除或重新创建了要在筛选条件中使用的参数，则可以使用新参数更新筛选条件。为此，请打开筛选条件，选择要使用的新参数，然后选择 **Apply（应用）**。

如果您重命名了某个参数，则不需要更新筛选条件或任何其他使用者。

# 在 Amazon Quick 中使用带有参数的计算字段
<a name="parameters-calculated-fields"></a>

您可以将参数的值传递到分析中的计算字段。在创建计算时，您可以从 **Parameter list (参数列表)** 下面的参数列表中选择现有参数。。您无法创建包含多值参数（即具有多选下拉控件的参数）的计算字段。

对于公式，您可以使用任何可用的函数。您可以将查看者的选择从参数控件传递给 `ifElse` 函数。随后您会得到一个指标。下面是一个示例。

```
ifelse(

${KPIMetric} = 'Sales',sum({Weighted Revenue}),

${KPIMetric} = 'Forecast',sum({Forecasted Monthly Revenue}),

${KPIMetric} = '# Active', distinct_count(ActiveItem),

NULL

)
```

上面的示例创建了一个指标（小数），您也可在字段中使用。然后，在用户从参数控制中选择值时，视觉对象会更新以体现其选择。

# 在 Amazon Quick 中使用带有参数的自定义操作
<a name="parameters-custom-actions"></a>

*自定义操作*允许您通过在视觉对象中选择数据点 URLs 或从上下文菜单中选择操作名称来启动或筛选视觉对象。在将 URL 操作与参数一起使用时，您可以动态地将参数传递或发送到 URL。要使其正常工作，您可以设置一个参数，然后在使用 **URL action (URL 操作)** 操作类型创建自定义操作时在 URL 中使用该参数。发送端和接收端的参数必须具有匹配的名称和数据类型。所有参数都与 URL 操作兼容。

有关创建 URL 操作的详细信息，请参阅[在 Amazon Quick Sight 中创建和编辑自定义操作](custom-actions.md)。如果您只希望在链接中使用参数而不创建 URL 操作，请参阅[在 URL 中使用参数](parameters-in-a-url.md)。

# 在 URL 中使用参数
<a name="parameters-in-a-url"></a>

您可以在 Amazon Quick 的 URL 中使用参数名称和值，在控制面板或分析中为该参数设置默认值。

以下示例介绍为另一个控制面板设置参数的控制面板 URL。

```
https://us-east-2.quicksight.aws.amazon.com/sn/dashboards/abc123-abc1-abc2-abc3-abcdefef1234#p.myParameter=12345
```

在上面的示例中，第一部分是指向目标控制面板的链接：`https://us-east-2.quicksight.aws.amazon.com/sn/dashboards/abc123-abc1-abc2-abc3-abcdefef1234`。第一部分后的井号 (`#)`) 用于引入*片段*，其中包含您要设置的值。

 AWS 服务器不会接收或记录片段中的值。此功能确保您的数据值更安全。

`#` 后的片段遵循这些规则：
+ 参数的前缀为 `p.`。名称是参数名称，而不是控件名称。您可以打开分析，在左侧边栏上选择 **Parameter (参数)** 以查看参数名称。
+ 使用等号 (`=`) 设置值。以下规则适用：
  + 文本值不使用引号。
  + 浏览器自动对值中的空格进行编码，因此在手动创建 URL 时无需使用转义字符。
  + 要返回所有值，将参数设置为等于 `"[ALL]"`。
  + 要将参数的值赋给 `null`，请将其设置为 `%00`。例如 `p.population=%00`。
  + 在自定义操作中，目标参数名称以 `$` 开头，例如：`<<$passThroughParameter>>`
  + 在自定义操作中，参数值显示在尖括号 (`<< >>`) 内，例如 `<<dashboardParameter1>>`。控制面板用户看到的是查找值，而不是变量。
+ 对于自定义 URL 操作，多值参数在片段中只需要同一参数的一个实例，例如：`p.city=<<$city>>`
+ 对于直接 URL，单个参数的多个值在片段中有同一参数的两个实例。有关示例，请参阅以下内容。
+ 使用 `&` 分隔多个参数。有关示例，请参阅以下内容。

服务器将日期转换为 UTC，并将其以无时区字符串的形式发送到后端。要使用通用协调时间 (UTC) 日期，请不要包括时区。以下是一些有效的日期格式示例：
+ `2017-05-29T00%3A00%3A00` 
+ `2018-04-04 14:51 -08:00`
+ `Wed Apr 04 2018 22:51 GMT+0000`

```
https://us-east-2.quicksight.aws.amazon.com/sn/dashboards/abc123-abc1-abc2-abc3-abcdefef1234#p.shipdate=2018-09-30 08:01&p.city=New York&p.city=Seattle&p.teamMember=12&p.percentageRank=2.3
```

在浏览器中，此代码将变为以下内容。

```
https://us-east-2.quicksight.aws.amazon.com/sn/dashboards/abc123-abc1-abc2-abc3-abcdefef1234#p.shipdate=2018-09-30%2008:01&p.city=New%20York&p.city=Seattle&p.teamMember=12&p.percentageRank=2.3
```

前面的示例设置四个参数：
+ `shipDate` 是一个日期参数：`Sept 30, 2018`。
+ `city` 是一个多值字符串参数：`New York` 和 `Seattle`
+ `teamMember` 是一个整数参数：`12`。
+ `percentageRank` 是一个小数参数：`2.3`。

以下示例介绍如何为接受多个值的参数设置值。

```
https://us-east-2.quicksight.aws.amazon.com/sn/dashboards/abc123-abc1-abc2-abc3-abcdefef1234#p.MultiParam=WA&p.MultiParam=OR&p.MultiParam=CA
```

要根据用户选择的数据点将值从一个控制面板（或分析）传递到另一个控制面板，请使用自定义 URL 操作。如果您愿意，也可以 URLs 手动生成这些数据，并使用它们来共享数据的特定视图。

有关创建自定义操作的信息，请参阅[使用自定义操作进行筛选和导航](quicksight-actions.md)。

# 在 Amazon Quick 中使用标题和描述中的参数
<a name="parameters-in-titles"></a>

在 Amazon Quick 中创建参数时，可以在图表和分析的标题和描述中使用这些参数，以动态显示参数值。

您可以在分析的以下区域中使用参数：
+ 图表标题和副标题
+ 轴标题
+ 图例标题
+ 参数控件标题
+ 工作表标题和描述

下图展示了使用参数的图表标题。

![\[在“设置视觉对象格式”窗格的图像中，有包含一个参数的图表标题，以及标题中的参数值用红框标出的图表。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/parameters-in-titles-labels2.png)


参照以下过程来了解如何在整个分析中向区域添加参数。有关参数和如何创建参数的更多信息，请参阅 [参数](parameters-in-quicksight.md)。

## 向图表标题和副标题添加参数
<a name="parameters-in-titles-chart-titles"></a>

要了解如何向图表标题和副标题添加参数，请按照以下过程操作。

**向图表标题或副标题添加参数**

1. 打开要设置格式的视觉对象的**属性**窗格。

1. 在**属性**窗格中，选择**标题**选项卡。

1. 选择**显示标题**或**显示副标题**。这些选项可能已被选中。

1. 选择**编辑标题**或**编辑副标题**右侧的三个点，然后从列表中选择一个参数。

   该参数将添加到**属性**窗格中的标题中。在图表中，参数值会显示在标题中。

   有关编辑视觉对象中的标题和副标题的更多信息，请参阅 [Quick 中视觉类型上的标题和字幕](customizing-a-visual-title.md)。

## 向轴标题添加参数
<a name="parameters-in-titles-axis-titles"></a>

要了解如何向轴标题添加参数，请按照以下过程操作。

**向轴标题添加参数**

1. 打开要设置格式的视觉对象的**属性**窗格。

1. 在**属性**窗格中，选择要设置格式的轴。

1. 选择**显示标题**。

1. 选择默认轴标题右侧的三个点，然后从列表中选择一个参数。

   该参数将添加到**属性**窗格中的轴标题中。在图表中，参数值会显示在轴标题中。

   有关编辑轴标题的更多信息，请参阅 [轴线和网格线](showing-hiding-axis-grid-tick.md)。

## 向图例标题添加参数
<a name="parameters-in-titles-legend-titles"></a>

要了解如何向图例标题添加参数，请按照以下过程操作。

**向图例标题添加参数**

1. 打开要设置格式的视觉对象的**属性**窗格。

1. 在**窗格**窗格中，选择**图例**。

1. 选择**显示图例标题**。

1. 选择**图例标题**右侧的三个点，然后从列表中选择一个参数。

   该参数将添加到**属性**窗格中的图例标题中。在图表中，参数值会显示在图例标题中。

   有关设置图例格式的更多信息，请参阅 [Quick 中关于视觉类型的图例](customizing-visual-legend.md)。

## 向控件标题添加参数
<a name="parameters-in-titles-control-titles"></a>

要了解如何向参数控件标题添加参数，请按照以下过程操作。

**向参数控件标题添加参数**

1. 选择要编辑的参数控件，选择参数控件标题右侧的三个点，然后选择**编辑**。

1. 在打开的**编辑控件**页面中选择**显示标题**。

1. 选择**显示名称**右侧的三个点，然后从列表中选择一个参数。

   该参数将添加到参数控件标题中。

   有关使用参数控件的更多信息，请参阅 [参数控件](parameters-controls.md)。

## 向工作表标题和描述添加参数
<a name="parameters-in-titles-sheet-titles"></a>

要了解如何在分析中向工作表标题和描述添加参数，请按照以下过程操作。

**向工作表标题或描述添加参数**

1. 在分析页面上，选择应用程序栏中的**工作表**，然后选择**添加标题**或**添加描述**。

   工作表标题或描述会显示在工作表上。

1. 对于**工作表标题**或**描述**，请选择右边的三个点，然后从列表中选择一个参数。

   该参数将添加到工作表标题或描述中；当您关闭文本框时，参数值会显示在文本中。

   有关添加工作表标题和描述的更多信息，请参阅 [向分析添加标题和描述](adding-a-title-and-description.md)。

# 使用自定义操作进行筛选和导航
<a name="quicksight-actions"></a>

要为仪表板订阅者（快速阅读器）添加交互式选项，您可以对分析中的一个或多个视觉对象创建自定义操作。使用自定义操作增强控制面板，有助于通过在数据集中添加更多上下文来探索数据。这可以让您更轻松地深入了解详细信息，并在同一控制面板、不同的控制面板或不同的应用程序中找到新的见解。您可以向控制面板中的每个视觉对象添加最多 10 个自定义操作。

在开始之前，建议先做一些规划工作。例如，确定适合进行筛选、打开其他工作表、打开 URL 或发送电子邮件的拟用字段。确定每张工作表中会显示这些字段的小部件。然后决定哪些小部件将包含操作。创建命名方案也是一个好主意，这样操作的名称会在整个分析中保持一致。一致的名称可让使用您分析的人员更轻松地弄清楚该操作将做什么，也能让您更轻松地维护整个分析中可能重复的操作。

操作仅存在于您创建操作的控制面板小部件上，并且在该小部件的父工作表及其显示的子字段的上下文中起作用。您只能在特定类型的小部件上创建操作：视觉对象和见解。您无法将其添加到其他小部件中，例如筛选条件或列表控件。只能从创建自定义操作的小部件中激活自定义操作。

要激活某项操作，使用分析的人员可以在数据点上左键单击（选择）或右键单击（使用上下文菜单）。*数据点*是数据集中的一个项目，例如折线图上的一个点、数据透视表中的一个单元格、饼图上的一个切片等。如果此人单击视觉对象元素，则会激活*选择*操作。该操作目前属于分析中**操作**的**选择时**类别。如果此人改为右键单击视觉对象元素，则可以从*菜单*操作列表中进行选择。列出的任何操作目前都属于分析中**操作**的**菜单选项**类别。**选择时**类别可以包含一个且只能包含一个成员操作。

默认情况下，您创建的第一个操作会变成选择操作，即通过左键单击激活的操作。要从**选择时**类别中删除操作，请将该操作的**激活**设置更改为**菜单选项**。保存该更改后，您可以将其他操作的**激活**设置设为**选择**。

配置操作时，您可以从三种**操作类型**中进行选择：
+ **筛选条件操作** – 筛选视觉对象或整个工作表中包含的数据。筛选条件默认可用于父视觉对象中的所有字段。默认启用级联筛选条件。筛选操作使用自动生成的字段映射以跨多个数据集工作。

  如果分析使用多个数据集，则可以查看为存在于多个数据集中的字段自动生成的字段映射。为此，如果您正在编辑某个操作，则可以在操作设置的末尾选择****查看字段映射****。如果您正在查看操作列表，请从每个操作的菜单中选择****查看字段映射****。字段映射显示在一个新屏幕中，其中显示视觉对象中的初始数据集和所有其他数据集之间的映射。如果没有自动映射任何字段，则会显示一条消息，其中包含指向[映射和联接字段](mapping-and-joining-fields.md)的链接。

  
+ **导航操作** – 启用同一分析中不同工作表之间的导航。
+ **URL 操作** – 打开指向其他网页的链接。如果要打开其他控制面板，请使用 URL 操作。您可以使用 URL 操作将数据点和参数发送给其他人 URLs。您可以包含任何可用的字段或参数。

  如果 URL 使用 `mailto` 方案，则运行该操作会打开您的默认电子邮件编辑器。

**Topics**
+ [添加一键式交互式筛选条件](quick-actions.md)
+ [在 Amazon Quick Sight 中创建和编辑自定义操作](custom-actions.md)
+ [修复自定义操作](repairing-custom-actions.md)
+ [了解 Amazon Quick Sight 中自定义操作的字段映射](quicksight-actions-field-mapping.md)

# 添加一键式交互式筛选条件
<a name="quick-actions"></a>

*一键式交互式 point-and-click筛选*提供了从可点击的视觉对象级联到工作表上的所有其他视觉效果和见解的过滤功能。将其添加到分析中，让您从摘要入手，然后深入研究指标，全都可以在同一个控制面板工作表中实现。

设置完成后，在单击数据点（例如折线图中的点）时，您可以立即使用该工作表中其余视觉对象上的所有映射字段进行筛选。如果具有多个数据集，则必须映射所有目标字段，该功能才能正常工作。此外，您只能单击数据点以激活一个操作；所有其他操作是从上下文菜单中激活的。

可以使用以下过程在分析中创建一键式筛选条件。

**在视觉对象或见解上创建一键式筛选条件**

1. 在分析中，选择要添加交互式筛选的视觉对象或见解。

1. 从右上角的菜单选项下拉菜单中选择**操作**。

1. 选择**筛选同一工作表的视觉对象**。此操作会立即添加一键式筛选。

1. 要让每个视觉对象具有交互性，请重复此过程。

# 在 Amazon Quick Sight 中创建和编辑自定义操作
<a name="custom-actions"></a>

您可以为希望能添加到视觉对象的每项任务创建一个操作。您创建的操作将成为每个视觉对象或见解功能的一部分。

下表定义了何时使用每种类型的操作。


|  要执行的操作  |  操作的类型  | 
| --- | --- | 
|  添加或自定义交互式筛选条件操作，包括一键式筛选条件  |  筛选条件操作  | 
|  在同一个控制面板中打开另一张工作表  |  导航操作  | 
|  在同一个 AWS 账户的不同控制面板中打开工作表  |  URL 操作  | 
|  打开 URL（`https`、`http`）  |  URL 操作  | 
|  发送电子邮件 (`mailto`)  |  URL 操作  | 

您可以为自定义操作设置以下属性和选项：
+ ****操作名称**** – 这是您为操作选择的描述性名称。默认情况下，操作命名为 **Action 1**、**Action 2** 等。如果自定义操作是从上下文菜单中激活的，在右键单击数据点时，该名称将显示在菜单中。

  要让操作名称动态化，可对其进行参数化。使用操作名称标题附近的加号图标显示可用变量的列表。变量括在尖括号 (`<< >>`) 中。参数以 `$` 为前缀，例如 `<<$parameterName>>`。字段名称没有前缀，例如 `<<fieldName>>`。
+ ****激活**** – 可用的选项有**选择**或**菜单选项**。要使用操作，您可以*选择*数据点（左键单击），或者导航到上下文菜单（右键单击）中的*菜单选项*。导航操作和 URL 操作列于上下文菜单中间，即**颜色**选项上方。通过菜单激活的操作也可从视觉对象上的图例中获得。
+ ****操作类型**** – 所需的操作类型。某个操作类型特有的设置仅在您选择操作类型后才会显示。
  + **筛选条件操作**设置包括：
    + ****筛选条件范围**** – 要筛选的字段。要筛选所有字段，请选择 **All fields (所有字段)**。否则，请选取**选择字段**，然后关闭不想作为目标的项目。

      默认值为**所有字段**。
    + ****目标视觉对象**** – 要作为目标的控制面板小部件。要将筛选条件应用于所有视觉对象，请选择**所有视觉对象**。否则，请选取**选择视觉对象**，然后关闭不想作为目标的项目。将筛选条件操作应用于其他视觉对象时，该效果称为*级联筛选条件*。

      默认值为**所有视觉对象**。

      级联筛选条件应用在特定筛选条件操作的 **Target visuals (目标视觉对象)** 部分中设置的所有视觉对象。Amazon Quick Sight 最初会评估您的视觉效果并为您预先配置设置。不过，如果需要，您可以更改默认值。您可以在同一工作表或分析中的多个视觉对象上设置多个级联筛选条件。当您使用分析或控制面板时，您可以同时使用多个级联筛选条件，尽管您一次会激活这些筛选条件中的每一个。

      筛选条件操作至少需要一个目标视觉对象，因为筛选条件操作需要一个源和一个目标。要仅筛选当前视觉对象，请通过选择左侧的 **Filter (筛选条件)** 来改为创建常规筛选条件。
  + **导航操作**设置包括以下内容：
    + ****目标工作表**** –作为目标的工作表。
    + ****参数**** – 发送到目标工作表的参数。选择加号图标以添加现有参数。
  + **URL 操作**设置包括以下内容：
    + ****URL**** – 要打开的 URL。URL 操作可以是指向其他应用程序的深度链接。有效的 URL 方案包括 `https`、`http` 和 `mailto`。
    + ****\$1**（值）**-（可选）要发送到目标 URL 的参数。参数名称以 `$` 开头。发送端和接收端的参数必须具有匹配的名称和数据类型。
    + ****打开方式**** – 要打开 URL 的位置。您可以选择 **New browser tab (新的浏览器选项卡)**、**Same browser tab (相同的浏览器选项卡)** 或 **New browser window (新的浏览器窗口)**。

某些类型的操作允许您包含视觉对象或见解内可用的参数或字段中的值。您可以手动键入这些内容，也可以选择 **\$1** 从列表中选择。要让自定义操作起作用，引用的每个字段和参数都必须在父小部件中处于积极使用状态。

可以使用以下过程在分析中创建、查看或编辑自定义操作。

**创建、查看或编辑自定义操作**

1. 打开分析后，从右上角的**菜单选项**下拉列表中选择**操作**。

   现有操作（如果有）会按激活类型显示。要打开或关闭现有操作，请使用操作名称右侧的方框。

1. （可选）要编辑或查看现有动作，请选择动作名称旁边的菜单图标。

   要编辑操作，请选择 **(Edit 编辑)**。

   要将其删除，请选择 **(Delete 删除)**。

1. 要创建新操作，请选择下列选项之一：
   + “**操作**” 标题旁边的 “添加” 图标
   + **定义自定义操作**按钮

1. 对于**操作名称**，请定义一个操作名称。要使操作名称动态化，请使用加号图标添加参数或字段值。

1. 对于**激活**，请选择操作的运行方式。

1. 对于**操作类型**，请选择要使用的操作类型。

1. 对于**筛选条件操作**，请执行以下操作：

   1. 对于**筛选条件范围**，请选择筛选的范围。

   1. 对于**目标视觉对象**，请选择筛选条件的级联程度

1. 对于**导航操作**，请执行以下操作：

   1. 对于**目标工作表**，请选择目标工作表。

   1. 对于 “**参数**”，选择 “**参数**” 标题旁边的加号图标，选择一个参数，然后选择一个参数值。您可以选择所有值、输入自定义值或选择特定字段。

1. 对于 **URL 操作**，请执行以下操作：

   1. 对于 **URL**，请输入超链接。

   1. 选择 **URL** 标题附近的加号图标。然后，从列表中添加变量。

   1. 对于**打开方式**，请选择如何打开 URL。

1. 完成操作后，在**操作**面板的底部选择以下任一选项（可能需要向下滚动）：
   + **保存** – 保存所选内容并创建自定义操作。
   + **关闭** – 关闭该自定义操作并放弃所作的更改。
   + **删除** – 删除该操作。

# 修复自定义操作
<a name="repairing-custom-actions"></a>

要让自定义操作起作用，引用的每个字段和参数都必须在父小部件中处于活动状态。如果源小部件中缺少某个字段，或者分析中缺少某个参数，则该字段或参数的操作将不可用。菜单操作不再包含在上下文菜单中。选择不再响应交互尝试的操作。不过，该小部件在其余方面仍能继续发挥作用，不会向用户显示任何错误。将缺失的字段添加回损坏的视觉对象或见解中，可以修复受损的筛选条件操作和 URL 操作。

以下过程说明了如何修复因某人在未更新操作的情况下删除字段或参数而受损的操作。这些步骤提供了如何修复此问题的基本指导。不过，请根据自己的判断来决定如何或是否应该对分析进行更改。如果您不确定，最好在更改任何内容之前向 Amazon Quick 管理员寻求帮助。例如，可能有一种方法可以还原分析的先前版本，这在您不确定分析发生了什么的时候会更安全。

**从受损的操作中移除字段**

1. 在起始页中选择**分析**。然后选择要修复的分析。

1. 选择操作不再起作用的视觉对象或见解。确保其在工作表上得到突出显示。

1. 从右上角的菜单选项下拉菜单中选择**操作**。

1. 找到要修复的操作，然后选择 “**编辑”**。

1. 如果操作类型为**筛选条件操作**，并且您看到一条错误提示*此操作使用的字段已删除*，请检查**筛选条件范围**的设置。**选定字段**只能显示视觉对象中的字段。要禁用已删除的选定字段，选择以下任一选项：
   + 将**筛选条件范围**设置更改为**所有字段**。此操作可以让小部件对每个字段进行筛选。
   + 如果要使用**选定字段**列表，请验证字段列表。如果需要包含另一个字段，则需要先将其添加到视觉对象中。

1. 如果操作类型为**导航操作**，请按照错误消息中的指示进行操作，该消息会指明导致错误的更改类型。

1. 如果操作类型为 **URL 操作**，请检查标有双尖括号 (`<<FIELD-OR-$PARAMETER>`) 变量的 **URL** 设置。通过选择加号图标打开可用变量列表。删除不在列表中的任何字段或参数。请确保还移除了匹配的 *URL 参数*及其分隔符（`?` 用于第一个 URL 参数，`&` 用于后续参数）。以下示例以**粗体**展示了如果要从视觉对象中移除名为 `Product` 的字段，会移除哪一部分。

   ```
   https://www.example.com/examplefunction?q=<<Product>
   ```

   ```
   https://www.example.com/examplefunction?q=<<Product>&uact=<<$CSN>
   ```

   ```
   https://www.example.com/examplefunction?pass=yes&q=<<Product>+<<City>&oq=<<Product>+<<City>&uact=<<$CSN>
   ```

   务必测试新 URL。

1. （可选）要删除操作，请滚动到末尾并选择**删除**。

1. 完成后，确认对操作所作的更改。滚动到**操作**窗格底部并选择**保存**。

   如果关联的控制面板中也存在错误，请再次共享并发布该控制面板来传播所作的修复。

# 了解 Amazon Quick Sight 中自定义操作的字段映射
<a name="quicksight-actions-field-mapping"></a>

自动的字段映射基于完全相同的字段。具有相同名称和数据类型的字段自动跨数据集进行映射。它们的字段名称和数据类型必须完全匹配。它的工作方式类似于联接，但它是根据每个匹配字段的名称和数据类型自动生成的。如果缺少字段，您可以使用缺少字段的数据集中的计算字段创建这些字段。如果不希望某些字段互相映射，您可以重命名这些字段或将其从数据集中删除。

如果允许将所有目标字段用于筛选操作（在 **Filter scope (筛选范围)** 中），请务必确保映射了这些字段。这样做可以自动应用筛选。如果未映射某些目标字段，则自动筛选无法正常工作。

只有在创建或保存自定义操作时，才会生成映射。因此，在每次作出影响映射的更改后，请确保返回并再次保存该映射。在创建操作时，映射基于当时存在的字段。在保存操作时，在创建自定义操作后重命名的任何映射字段将保持映射状态。不过，如果更改映射字段的数据类型，则会删除映射。

如果映射缺少某些字段，您可以执行以下操作之一以修复该映射：
+ 从 **Filter scope (筛选范围)** 中删除未映射的字段，以仅将映射的字段作为目标。
+ 从目标视觉对象中删除相关的视觉对象。
+ 创建计算字段来提供映射缺少的字段，然后保存自定义操作。
+ 编辑数据集并重命名字段或更改数据类型，然后保存自定义操作。
+ 编辑数据集并重命名字段或更改其数据类型，然后重新保存自定义操作。

**注意**  
映射屏幕上显示的信息显示了您最近一次保存映射时的配置。要刷新或更新视图，请再次保存该操作。

如果您添加或编辑数据集，则不会自动映射或重新映射数据集。这会导致筛选无法正常工作。例如，假设您添加新的数据集，然后为其创建视觉对象。新的视觉对象不会响应筛选操作，因为没有连接它们的字段映射。在进行更改时，请记住再次保存自定义操作以重新进行字段映射。

如果从源视觉对象中删除参数化字段或任何其他目标字段，使用该字段的操作将会中断。在选择数据点时不会激活缺少的字段的操作，或者从上下文菜单中隐藏该操作。

有关为自动字段映射准备数据集的信息，请参阅[映射字段](mapping-and-joining-fields.md#mapping-and-joining-fields-automatic)。

# 在 Amazon Quick Sight 中处理像素完美报告
<a name="working-with-reports"></a>

借助 Amazon Quick Sight Pixel Perfect Reports，您可以创建、安排和共享高度格式化的多页 PDF 报告。您还可以使用 Quick Sight 的现有网络界面计划将数据导出为 CSV 文件。过去相互独立的控制面板和报告系统因此实现统一。

报告创建者可以使用 Quick Sight 基于浏览器的创作体验来连接到各种支持的数据源并创建高度格式化的报告。报告创建者同时能够以像素级精度指定图像、图表和表格的精确页面大小、长度及排列方式。然后，作者可以使用 Quick Sight 的日程安排机制来设置和安排向最终用户交付高度个性化的报告，或者将报告存档以备将来使用。

Pixel perfect 报告专为打印或分发而设计。Pixel perfect 报告内容的格式适合纸张大小，即使数据跨越多页，它也会显示表格和数据透视表中的所有数据。它们的格式符合精确的纸张尺寸，您可以精确控制页面布局。每个像素完美报告可以生成多达 1,000 页的 PDF。

Pixel perfect 报告提供以 PDF 或 CSV 格式发布报告时存在的所有可用数据。例如，假设您的表有 1 万行。像素完美报告将整份报告分为多个页面，供读者完整查看。如果您在交互式控制面板报告中纳入上表，则生成的 PDF 包含该表的快照，该快照会填充可滚动浏览的单个页面。这些自定义报告可以通过电子邮件群发形式发送，为个人用户和用户群生成多达数千份个性化 PDF 或 CSV 报告。

**注意**  
像素完美报告不在`eu-central-2`欧洲（苏黎世）区域提供。

**Topics**
+ [开始使用](qs-reports-getting-started.md)
+ [在 Amazon Quick Sight 中根据分析创建报告](qs-reports-create-reports.md)
+ [在 Amazon 快速浏览中格式化报告](qs-reports-format-reports.md)
+ [在 Amazon Quick Sight 中使用像素完美报告](qs-reports-consume-reports.md)
+ [在 Quick Sight 中取消订阅分页报告](qs-reports-getting-started-unsubscribe.md)

# 开始使用
<a name="qs-reports-getting-started"></a>

要开始使用 Amazon Quick Sight 像素完美报告，请先为你的 Amazon Quick 账户获取像素完美报告插件。附加组件的定价适用于您的整个 Quick 账户，并非特定于某个地区。订阅 Quick Reporting 后，作者可以开始创建、安排和发送像素完美报告。

## 获取快速像素完美报告插件
<a name="qs-reports-getting-started-subscribe"></a>

在 Amazon Quick Sight 中处理像素完美报告之前，必须将 **Pixel-Perfect Reports 插件**添加到 Quick 订阅中。

**要在 Amazon Quick Sight 中获得像素完美报告插件**

1. 在快速入门页面上，在右上角选择您的用户名，然后选择**快速管理**。

1. 选择 “**管理订阅**”，然后选择 “**像素完美报告**”。

1. 选择所需订阅计划。您可以选择月度计划或年度计划。

1. 查看 Pixel-Perfect Reports 插件定价信息，然后选择**确认**订阅。

在你获得 pixel perfect Reports 插件后，你的订阅可能需要几分钟才能生效。当您的订阅生效后，您将能够开始在 Amazon Quick Sight 中创建像素完美报告。

# 在 Amazon Quick Sight 中根据分析创建报告
<a name="qs-reports-create-reports"></a>

Pixel 完美报告是在 Amazon Quick Sight 中的分析表级别创建的。在现有分析中创建新分析或新工作表时，您可以选择将新工作表设置为交**互式仪表板**还是 **Pixel 完美报告**。这样，您可以仅对交互式仪表板进行分析，仅对像素完美报告进行分析，也可以进行包括交互式仪表板和像素完美报告的分析。

有三种方法可以创建像素完美报告。您可以在分析中根据新工作表创建新报告，可以在仪表板中复制交互式工作表，也可以复制已经存在的像素完美报告。使用以下步骤创建像素完美报告。

## 在 Amazon Quick Sight 中根据分析创建报告
<a name="qs-reports-create-reports-from-analysis"></a>

**根据新分析创建像素完美报告**

1. 在快速主页上，选择**分析**，然后选择**新建分析**。

1. 选择要包含在新分析中的数据集，然后选择右上角的**在分析中使用**。

1. 在出现的 “**新建工作表**” 弹出窗口中，选择 “**像素完美报告**”。

1. （可选）为像素完美报告选择所需的纸张尺寸。可从以下选项中进行选择：
   + 美国信纸（8.5 x 11 英寸）
   + 美国法律用纸（8.5 x 14 英寸）
   + A0（841 x 1189 毫米）
   + A1（594 x 841 毫米）
   + A2（420 x 594 毫米）
   + A3（297 x 420 毫米）
   + A4（210 x 297 毫米）
   + A5（148 x 210 毫米）
   + 日本 B4（257 x 364 毫米）
   + 日本 B5（182 x 257 毫米）

   默认纸张尺寸为美国信纸（8.5 x 11 英寸）

1. （可选）为工作表选择纵向或横向排列方式。默认选项为纵向排列。

1. 选择 “**添加**”。

如果要在现有分析中创建新的像素完美报告，请在分析中选择工作表选项卡右侧的加号 (\$1) 图标，然后按照上述步骤中的步骤 3-6 进行操作。

## 使用 Amazon Quick Sight 中的现有控制面板创建报告
<a name="qs-reports-create-report-from-dashboard"></a>

您还可以通过复制交互式工作表并将重复的工作表转换为像素完美报告来创建像素完美报告。

**使用交互式工作表创建像素完美报告**

1. 从要在分析中复制的工作表中，选择您想要转换的工作表名称旁边的下拉菜单。

1. 选择**复制到报告**。

您可以将交互式工作表转换为像素完美报告，但不能将像素完美报告转换为交互式工作表。

## 在 Amazon Quick Sight 中复制现有报告
<a name="qs-reports-create-report-from-report"></a>

本节旨在介绍如何复制报告。

**复制像素完美报告**

1. 从要在分析中复制的工作表中，选择您想要转换的工作表名称旁边的下拉菜单。

1. 选择**复制**。

# 在 Amazon 快速浏览中格式化报告
<a name="qs-reports-format-reports"></a>

使用本节学习如何在 Amazon Quick Sight 中设置像素完美报告的格式。

**Topics**
+ [使用分区](qs-reports-working-with-sections.md)
+ [更改纸张大小、边距和方向](qs-reports-paper-size.md)
+ [在报告中添加和移除分页符](qs-reports-page-breaks.md)
+ [在报告中添加或删除视觉对象](qs-reports-add-visuals.md)
+ [向报告添加文本框](qs-reports-add-text-box.md)
+ [设置分页报告的提示](paginated-reports-prompts.md)

# 使用分区
<a name="qs-reports-working-with-sections"></a>

*分区*是用于存放不同视觉对象的容器，这些视觉对象通过纵向扩展纳入内容。分区一个接一个地呈现直至末尾，以适应配置的分页符和分区设置。页眉和页脚是特殊类型的分区，在报告的每一页均有预定义的大小、位置和重复次数。

像素完美报告中的每个部分都可以独立于报告中的其他部分进行格式化。您可以将视觉对象拖放到任意位置，类似于交互式工作表中的自由型布局。视觉对象也支持重叠、调整大小或者移动到分区前后等操作。此外，您可以更改分区中的边距，从而突出显示视觉对象分组。

Quick Sight 中的每份报告都需要至少一个部分。您可以通过添加多个分区将不同的视觉对象组合在一起，或者控制不同视觉对象分组的呈现顺序。

每个像素完美报告表最多支持 30 个部分，包括页眉和页脚。

使用下面列出的主题来了解有关部分的更多信息。

**Topics**
+ [添加、移动和删除分区](qs-reports-add-delete-section.md)
+ [页眉和页脚](qs-reports-add-delete-headers-footers.md)
+ [分区内边距](qs-reports-section-padding.md)
+ [创建重复部分](qs-reports-repeat-sections.md)

# 添加、移动和删除分区
<a name="qs-reports-add-delete-section"></a>

## 添加新部分
<a name="paginated-reports-add-section"></a>

要向像素完美报表添加新部分，请按以下步骤操作。

**向像素完美报告添加新分区**

1. 在 Q **u** ick 主页上，选择 “分析”，然后选择包含要向其添加章节的报告的分析。

1. 选择包含要添加章节的像素完美报告的工作表。

1. 选择左上角的**添加**（\$1）图标，然后选择**添加分区**。

要添加分区，您也可以选择现有分区底部的加号（\$1）图标并选择**添加分区**。

如果选择**添加分区**，新分区会添加到报告底部。

您无法在另一分区中创建分区。如果选择现有分区，然后选择**添加分区**，则会在报告底部出现新分区。

当像素完美报告中有多个部分时，可以按所需的任何顺序排列它们。

## 移动部分
<a name="paginated-reports-move-section"></a>

**移动报告中的分区**

1. 选择要移动的分区，然后选择右上角的三点图标打开分区菜单。

1. 选择分区要移往的位置。可从以下选项中进行选择：
   + **将分区移到顶部**
   + **向上移动分区**
   + **向下移动分区**
   + **将分区移到底部**

在某些情况下，您无法选择上述某些选项。例如，分区已经位于报告底部，则无法选择**向下移动**或**将分区移到底部**。

报告中的各分区按升序命名。当您在报告中向上或向下移动某个分区时，受此移动影响的每个分区均会根据新的升序重命名。

当您从像素完美报告中删除一个分区时，其余部分的名称可能会根据已删除分区所在的位置而发生变化。例如，假设您决定删除 `Section 1`。在删除该分区时，原本的 `Section 2` 会在报告中上移变为新的 `Section 1`。

## 删除部分
<a name="paginated-reports-delete-section"></a>

**从报告中删除分区**

1. 导航到要删除的分区，然后选择右上角的三点图标打开分区菜单。

1. 选择**删除**。

# 页眉和页脚
<a name="qs-reports-add-delete-headers-footers"></a>

页@@ *眉*和*页脚*是可选的特殊部分，位于像素完美报告的顶部和底部。页眉和页脚通常用于显示基本信息，例如报告的创建日期或页码。您可以按照与报告中常规分区的交互方式与页眉和页脚进行交互。

默认情况下，Amazon Quick Sight 中的每份报告都有一个页眉和一个页脚。要从报告中移除页眉或页脚，请按照下列过程操作。

**从像素完美报表中移除页眉或页脚**

1. 在像素完美报告中，导航到要删除的页眉或页脚，然后打开 On **部分**。

1. 选择**删除**。

从报告中删除页眉或页脚，即会从报告的每一页删除页眉或页脚。某些页面不能有页眉或页脚，但其他页面可以有。

如果已从报告中移除页眉或页脚，但希望再次显示页眉或页脚，请按以下过程操作。

**向像素完美报表添加页眉或页脚**

1. 导航到要添加页眉或页脚的像素完美报告，然后从顶部菜单中选择 “**插入**”。

1. 选择**添加页眉**或**添加页脚**。

# 分区内边距
<a name="qs-reports-section-padding"></a>

您可以使用分区填充来更改像素完美报表中单个分区的边距。默认情况下，报告中的所有分区均使用已配置且应用于整个报告的页边距。您也可以在页眉或页脚中添加分区内边距。您可以使用分区内边距通过创建另一组边距突出显示某分区。在报告中其余分区使用的页边距基础上应用一组新的分区边距。

**更改分区的分区内边距**

1. 导航到要添加分区内边距的分区，然后打开**编辑分区**。

1. 在**编辑分区**的**内边距**部分，以英寸为单位输入所需内边距。您可以自定义分区每侧（顶部、底部、左侧和右侧）的内边距。

您无法使用分区内边距减少分区边距。例如，如果整个像素完美报告的边距为 1 英寸，则只能使用分区填充来增加该值。

# 创建重复部分
<a name="qs-reports-repeat-sections"></a>

使用重复部分创建报告特定部分的副本，以显示一个或多个维度值。对重复部分中的数据进行切片，以匹配部分的维度。可以大规模复制重复部分，以减少生成报告所需的时间。

按照以下过程在报告中创建和配置重复部分。

**定义重复部分**

1. 导航到要添加重复行为的部分，然后选择**编辑重复部分**（三重面板）。

1. 在打开的**编辑部分**窗格中，选择**添加维度**，然后选择要添加的维度。

1. 要添加其他维度，请重复步骤 2。在每个重复截面配置中，您最多可以添加 3 个维度。

**重复部分的注意事项**

以下限制适用于重复部分。
+ 重复部分不支持见解视觉对象。
+ 重复部分维度仅来自选择用于分析的最后一个数据集。

创建重复部分后，您可以定义重复部分配置的排序和限制。您也可以使用文本框向重复部分添加系统参数。

# 定义重复部分中的排序
<a name="qs-reports-repeat-sections-sort"></a>

**定义重复部分中的排序**

1. 导航到要添加重复行为的部分，然后选择**编辑重复部分**（三重面板）。

1. 在打开的**编辑部分**中，选择要更改的维度旁边的省略号（三个点）。

1. 导航到**重复**选项卡，选择要排序的维度旁边的省略号（三个点），然后选择**编辑**。

1. 对于**排序依据**，使用下拉列表选择要作为排序依据的维度。

1. 对于**聚合**下拉菜单，选择要指定的聚合。

1. 对于**排序顺序**，选择**升序**或**降序**。

# 定义重复部分中的限制
<a name="qs-reports-repeat-sections-limits"></a>

您可以设置限制，以仅显示重复部分每个维度的一定数量的不同维度值。您可以选择显示 1 到 1000 个不同的值。默认限制为 50。

**定义重复部分中的限制**

1. 导航到要添加重复行为的部分，然后选择**编辑重复部分**（三重面板）。

1. 在打开的**编辑部分**中，选择要更改的维度旁边的省略号（三个点）。

1. 对于**限制为**，输入要将排序限制为的值数量。您可以输入 1 到 1000 之间的数字。

**限制的注意事项**

以下限制适用于重复部分中的限制。
+ *实例*被定义为一个维度的不同值或多个维度的值的唯一组合。
+ 如果重复部分中维度的唯一实例数超过 1000，则不会生成 PDF 报告。如果发生这种情况，请尝试以下选项之一。
  + 为您的维度定义限制。
  + 创建工作表级别筛选条件以限制维度值。
  + 使用行级别安全性（RLS）来限制维度值。
  + 应用数据集筛选条件。

# 向重复部分添加系统参数
<a name="qs-reports-repeat-sections-text-box"></a>

您可以使用文本框来向分页报告的重复部分添加系统参数。这使得能够访问用于配置重复部分的维度。需要先配置重复的截面和尺寸，然后才能访问文本框中的尺寸。系统参数只能在重复部分内使用。

**从文本框向重复部分添加系统参数**

1. 选择所需的文本框视觉对象，然后选择文本框工具栏最右侧的**系统参数**图标。

1. 从出现的下拉菜单中，选择所需的参数。

# 向重复部分添加分页符
<a name="qs-reports-repeat-sections-page-break"></a>

与部分分页符类似，您可以向重复部分添加分页符。

**向重复部分添加分页符**

1. 导航到包含要更改的重复行为的部分，然后选择**编辑重复部分**（三重面板）图标。

1. 在出现的**编辑部分**窗格的**重复**选项卡中，选中标题为**每个实例后的分页符**的复选框。

实例被定义为一个维度的不同值或多个维度值的唯一组合。如果清除**每个实例后的分页符**复选框，则会移除分页符。

# 更改纸张大小、边距和方向
<a name="qs-reports-paper-size"></a>

在 Amazon Quick Sight 中创建像素完美报告后，您可以随时从 “**分析设置**” 菜单中更改报告格式、方向和边距。

## 更改像素完美报告的纸张大小
<a name="paginated-reports-paper-size"></a>

1. 在 Q **u** ick 主页上，选择 “分析”，然后选择包含要更改的像素完美报告的分析。

1. 在文件菜单中选择**工作表**，然后选择**布局设置**。

1. 打开**纸张大小**下拉菜单并选择所需纸张尺寸。从以下选项中进行选择：
   + 美国信纸（8.5 x 11 英寸）
   + 美国法律用纸（8.5 x 14 英寸）
   + A0（841 x 1189 毫米）
   + A1（594 x 841 毫米）
   + A2（420 x 594 毫米）
   + A3（297 x 420 毫米）
   + A4（210 x 297 毫米）
   + A5（148 x 210 毫米）
   + 日本 B4（257 x 364 毫米）
   + 日本 B5（182 x 257 毫米）

1. 选择**应用**。

## 更改报告方向
<a name="paginated-reports-orientation"></a>

1. 在 Q **u** ick 主页上，选择 “分析”，然后选择包含要更改的像素完美报告的分析。

1. 在左侧选择**设置**图标。

1. 选择报告的方向，然后选择**应用**。

## 更改报告的边距
<a name="paginated-reprots-margins"></a>

1. 在快速入门页面中，选择**分析**，然后选择包含要更改的像素完美报告的分析。

1. 选择**编辑 < 分析设置**。

1. 输入您希望报告采用的边距值，然后选择**应用**。

边距值应用于像素完美报告的每一页。您无法为报告中的特定页面设置自定义设置，但可以使用分区内边距为相应分区设置自定义边距。有关分区内边距的更多信息，请参阅[分区内边距](qs-reports-section-padding.md)。边距值以英寸表示。所有报告的默认边距均为 0.5 英寸。

# 在报告中添加和移除分页符
<a name="qs-reports-page-breaks"></a>

您可以在像素完美报表的各个部分之间添加分页符，以组织按页面发布报表时数据的呈现方式。例如，假设报告包含两个分区，每个分区长 2.5 页。默认情况下，`Section 2` 紧随 `Section 1` 从报告的第三页开始。如果在 `Section 1` 末尾添加分页符，即使 `Section 1` 最后一页仅使用半页，`Section 2` 仍从新页面开始。如果不希望不同分区共享页面，但又不知道每个分区所需的页数，此功能会有所帮助。

**添加或删除分页符**

1. 选中您的部分，然后选择左上角的**编辑部分**图标。

1. 在左侧打开的**编辑分区**窗格中，选中**之后添加分页符**复选框。

1. 选择**应用**。

如果选中**之后添加分页符**复选框，分页符会出现在该分区末尾处。如果取消勾选**之后添加分页符**复选框，分页符会从该分区末尾处移除。此外，原本的分区会直接呈现在该分区最后一页的下方，导致这两个分区共享一个页面。

选择现有分区底部的加号（\$1）图标，然后选择**添加分页符**或**移除分页符**，即可在报告中添加或移除分页符。

# 在报告中添加或删除视觉对象
<a name="qs-reports-add-visuals"></a>

**为像素完美报表中的章节添加视觉效果**

1. 在像素完美报告中，选择要向其添加视觉效果的部分。

1. 在**视觉对象**窗格中选择**添加**（\$1）图标。

1. 选择要在报告中使用的视觉对象。

向报告添加视觉对象后，您可以将该视觉对象当作交互式控制面板的一部分与其交互。您可以将视觉效果拖放到任意位置，类似于 Quick Sight 交互式仪表板表单中的自由形式布局。视觉对象也支持重叠、调整大小或者移动到分区前后等操作。有关在 Amazon Quick Sight 中格式化视觉效果的更多信息，请参阅[在 Amazon 中快速格式化](formatting-a-visual.md)。

**删除视觉对象**

1. 在要删除视觉对象的分区中选择要删除的视觉对象。

1. 选择视觉对象右上角的三点图标打开视觉对象菜单。

1. 选择**删除**。

当您从像素完美报告的某一部分中删除视觉效果时，您只会从报告中删除该特定视觉对象。位于报告不同分区的任何重复视觉对象都会保留在报告中。

# 向报告添加文本框
<a name="qs-reports-add-text-box"></a>

您可以在 pixel perfect 报告中添加文本框，为报告添加上下文。文本框视觉对象也可用于添加指向外部网站的超链接。要自定义字体、字体样式、文本颜色、文本间距、文本对齐方式和文本大小，请使用选择视觉对象时出现的文本框工具栏。

**向报告添加文本框**

1. 在像素完美报告中，选择要向其添加文本框的部分。

1. 在任务栏中选择**文本框**图标。

1. 新文本框将出现在所选报告的部分中。

要编辑文本框，请选择该文本框并开始键入所需内容。您可以使用出现的工具栏来更改文本格式和样式。

**删除文本框**

1. 在要删除文本框的分区中选择要删除的文本框。

1. 选择视觉对象右上角的三点图标打开文本框菜单。

1. 选择**删除**。

# 文本框系统参数
<a name="text-box-parameters"></a>

使用文本框将系统参数添加到 pixel perfect 报告的页眉和页脚。文本框系统参数显示在文本框工具栏的最右侧。您可以向报告的页眉或页脚添加以下参数：
+ 页码：报告的当前页码。
+ 报告打印日期：生成报告的日期。

要向文本框添加页码参数，请选择文本框工具栏最右侧的数字（\$1）图标。要向文本框添加 `PrintDate` 参数，请选择文本框工具栏最右侧的日历图标。

如需更多高级参数选项，请向分页报告添加见解。

# 设置分页报告的提示
<a name="paginated-reports-prompts"></a>

Amazon Quick 作者可以在像素完美的报告上创建提示，以允许控制面板用户筛选按需报告和计划报告中的数据。*提示*的行为与交互式工作表中的筛选条件或控件的行为相同。

**在像素完美报告中定义提示**

1. 在像素完美表单上，定义滤镜控件或参数控件。有关工作表筛选条件控件的更多信息，请参阅[向分析表添加筛选条件控件](filter-controls.md)。有关参数控件的更多信息，请参阅[在 Amazon Quick 中使用带有参数的控件](parameters-controls.md)。

1. 在新的筛选条件或参数中，选择所需的提示值。新提示会立即反映在工作表上。

1. 要导出含新提示的报告，请选择**文件**，然后选择**导出为 PDF**。

提示不能移动到工作表本身。相反，它们显示在顶部面板上。

为像素完美的报表创建提示并作为仪表板发布后，Quick 作者可以使用新的提示来配置和安排发送给 Quick 仪表板查看者的报告。控制面板查看者还可以使用这些提示来创建自己的计划报告。有关读者生成的报告的更多信息，请参阅[在 Amazon Quick Sight 中创建读者生成的报告](reader-scheduling.md)。

# 在 Amazon Quick Sight 中使用像素完美报告
<a name="qs-reports-consume-reports"></a>

当 Amazon Quick 作者发布并发送预定的像素完美报告时，Quick 将生成并保存已发送报告的快照。每当你去查看 pixel perfect 报告的仪表板时，你都会看到最近发送的报告生成的快照。如果尝试查看报告的控制面板，但尚未发送电子邮件报告，则系统会提示您计划首份报告来查看控制面板快照。有关计划电子邮件报告的更多信息，请参阅[通过电子邮件安排和发送 Quick Sight 报告](sending-reports.md)。

如果 Quick 作者为 Quick Sight 像素完美报告设置了提示报告，Quick 读者可以使用该提示为自己安排按需报告。有关读者生成的报告的更多信息，请参阅[在 Amazon Quick Sight 中创建读者生成的报告](reader-scheduling.md)。有关像素完美报告提示的更多信息，请参阅[设置分页报告的提示](paginated-reports-prompts.md)。

用户无法像与已发布的交互式表格那样与已发布的像素完美报告进行交互。与交互式表格不同，像素完美报告会生成以视觉对象组或文本框形式呈现的数据的静态快照。这些静态快照在发送报告时生成，因此受众可以在报告中看到最新版数据。Pixel perfect 报告对于生成发票或每周业务评论特别有用。然后，用户可以将当前的像素完美报告与过去生成的报告进行比较，以更好地跟踪其业务数据。

## 查看报告的快照历史记录
<a name="qs-reports-snapshot-history"></a>

每次您发送预定的像素完美报告时，Amazon Quick 都会保存生成的快照的副本，以供您参考。您可以随时在 Quick 控制台中查看这些快照。

**查看报告的快照历史记录**

1. **从 Quick 主页中，选择 Dashboards，然后选择要查看其快照历史记录的仪表板。**

1. 选择右上角工具栏中的**计划**图标，然后选择**近期快照**。

1. 在右侧显示的**近期快照**窗格中选择要查看的快照，然后选择要下载的文件旁的下载按钮。

# 在 Quick Sight 中取消订阅分页报告
<a name="qs-reports-getting-started-unsubscribe"></a>

您可以随时取消订阅 Quick Sight 像素完美报告。取消订阅像素完美报告后，您将无法在 Quick Sight 中创建和安排像素完美报告。您仍然可以访问现有分页报告，但无法进行更改或计划新报告。

**取消订阅 Amazon Quick Sight 中的像素完美报告**

1. 从 Quick 的任意页面中，在右上角选择您的用户名，然后选择**快速管理**。

1. 选择左侧的 “**管理订阅**”。

1. **在**管理订阅**页面上，找到 **Pixel-Perfect 报告**部分，然后选择管理。**

1. 向下滚动到所选订阅计划，然后选择**取消订阅**。

# 在 Amazon Quick Sight 分析中处理工作表上的项目
<a name="authoring-sheets"></a>

使用本节学习如何在 Quick Sight 中创作工作表时使用视觉效果和其他项目

**Topics**
+ [在 Quick Sight 分析中添加视觉效果](creating-a-visual.md)
+ [在 Amazon Quick Sight 中使用表格上的主题](using-q-topics-on-sheets.md)
+ [Amazon Quick Sight 中的视觉类型](working-with-visual-types.md)
+ [在 Amazon 中快速格式化](formatting-a-visual.md)
+ [自定义数据表示方式](analyzing-data-analyses.md)

# 在 Quick Sight 分析中添加视觉效果
<a name="creating-a-visual"></a>

*视觉对象*是您的数据的图形化表示。您可以使用不同的数据集和视觉对象类型在分析中创建各种视觉对象。

在创建视觉对象后，您可以通过一系列方式修改该对象，以根据您的需求进行自定义。可能的自定义包括更改映射到视觉对象元素的字段，更改视觉对象类型，对视觉对象数据进行排序或应用筛选条件。

Quick Sight 在一次分析中支持多达 50 个数据集，在单个工作表中支持多达 50 个视觉对象，每次分析最多支持 20 页。

您可以通过多种方式创建视觉对象。您可以选择所需的字段，并使用 AutoGraph 这些字段让 Amazon Quick Sight 确定最合适的视觉类型。或者，也可以选择特定视觉对象类型，然后选择字段对其进行填充。如果您不确定自己的数据可以为您回答哪些问题，可以在工具栏上选择 “**建议**”，然后选择 Amazon Quick Sight 建议的视觉效果。我们通过对您的数据进行初步检查来推荐可能适合您的视觉对象。有关的更多信息 AutoGraph，请参阅[使用 AutoGraph](autograph.md)。

通过依次选择 **Add (添加)** 和 **Add visual (添加视觉对象)**，您可以将更多视觉对象添加到工作区。2018 年 6 月 21 日之后创建的视觉对象大小较小，每一行可以放置两个。您可以调整视觉对象的大小并拖放以重新排列它们。

要创建有用的视觉对象，您需要尽可能具体地了解您想要尝试回答哪个问题。它还有助于使用可以回答该问题的最小数据集。这可以帮助您创建更容易分析也更简单的视觉对象。

## 维度和度量字段
<a name="dimensions-and-measures"></a>

在**视觉对象**窗格中，维度字段的图标是蓝色的，度量值字段的图标是橙色的。*维度*是文本或日期字段，它可以是诸如产品等项目。也可以是与度量相关并可用于对它们进行分区的属性，如销售数据的销售日期。*度量*是用于度量、比较和聚合的数值。您通常通过组合使用维度与度量字段来生成视觉对象，例如，按销售日期 (维度) 排序的销售总额 (度量)。有关不同视觉对象类型需要使用的各种字段类型的更多信息，请参阅[Amazon Quick Sight 中的视觉类型](working-with-visual-types.md)部分中的各种视觉对象类型主题。有关更改字段的度量或维度设置的更多信息，请参阅[将字段设置为维度或度量](setting-dimension-or-measure.md)。

## 字段限制
<a name="visual-field-limitations"></a>

每个视觉对象只能使用一个日期字段。该限制适用于所有视觉对象类型。

您不能对一个视觉对象上的多个维度字段井或拖放目标使用相同的字段。有关字段井和拖放目标需要使用何种字段类型的更多信息，请参阅[使用视觉对象字段控件](using-visual-field-controls.md)。

## 搜索字段
<a name="searching-for-a-field"></a>

如果 **Fields list (字段列表)** 窗格中有很长的字段列表，可以通过搜索查找特定字段。为此，请选择**数据**窗格顶部的搜索图标，然后在搜索框中输入搜索词。系统会显示名称中包含该搜索词的任何字段。搜索不区分大小写，不支持通配符。选择搜索框右侧的取消图标 (**X**) 可返回并查看所有字段。

## 添加视觉对象
<a name="create-a-visual"></a>

要创建新的视觉对象，请按照以下过程操作。

**创建新视觉对象**

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

1. 在 Quick 主页上，选择要向其添加视觉效果的分析。

1. 在分析页面上，从**数据**窗格顶部的数据集列表中选择要使用的数据集。有关更多信息，请参阅 [向分析中添加数据集](adding-a-data-set-to-an-analysis.md)。

1. 打开**可视化**窗格，选择**添加**，然后选择**添加视觉对象**。

   系统会新建一个空白视觉对象并将焦点设置在它身上。

1. 使用以下选项之一：
   + 从左侧的**数据**窗格中选择要使用的字段。如果字段不可见，选择**可视化**即可显示。Amazon Quick Sight 使用它认为与您选择的数据最兼容的视觉类型来创建视觉对象。
   + 选择**添加**按钮旁边的下拉箭头以选择视觉对象类型。创建视觉对象后，选择要填充的字段。

     1. 在 **Visual types (视觉对象类型)** 窗格中，选择视觉对象类型的图标。  
![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/visual-types.png)

        字段井显示已可视化的字段。  
![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/field-wells.png)

     1. 从**数据**窗格中，将要使用的字段拖到相应的字段井中。通常，您需要使用以目标字段井的颜色指示的维度或度量字段。如果您选择使用维度字段来填充 **Value** 字段井，则系统会对其自动应用 **Count** 聚合函数来创建数值。

        Amazon Quick Sight 使用您选择的视觉类型创建视觉效果。
   + 使用建议选项创建视觉对象。

     在工具栏上，选择 **Suggested**，然后选择建议的视觉对象。

# 将 Amazon Quick Sight 视觉效果导入分析
<a name="import-visuals"></a>

Quick Sight 作者可以将 Quick Sight 视觉效果从一个分析或仪表板导入到具有访问权限的新分析中。将视觉对象从 Quick Sight 分析或仪表板导入到另一个 Quick Sight 分析时，会将以下依赖项与视觉对象一起导入。
+ 与视觉对象关联的数据集
+ 为视觉对象配置的所有参数
+ 为视觉对象配置的计算字段
+ 筛选条件定义
+ 视觉对象属性
+ 条件格式设置规则

使用以下章节了解有关导入 Quick Sight 视觉效果的更多信息。

**Topics**
+ [注意事项](#import-visuals-considerations)
+ [导入视觉对象](#import-visual-procedure)

## 注意事项
<a name="import-visuals-considerations"></a>

在导入视觉对象之前，请查看下面的限制。
+ 想要导入视觉对象的 Quick Sight 作者必须对要导入视觉对象的分析拥有所有权
+ 无法导入筛选条件控件
+ 不支持一次从多个工作表导入视觉对象
+ 不支持某些用户配置，包括根据书签和警报维护的筛选条件配置

## 导入视觉对象
<a name="import-visual-procedure"></a>

使用以下过程将视觉对象从源控制面板或分析导入到其他分析。

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

1. 打开要导入视觉对象的分析。

1. 选择**文件**，然后选择**导入**。或者，您可以在**添加**工具栏中选择**导入**图标。

1. **资产浏览器**模式将打开。将显示您可以访问的所有合格源分析和控制面板的列表。选择要从中导入视觉对象的构件，然后选择**加载**。或者，在**查找要插入的源**搜索栏中输入包含要导入的视觉对象的源构件的名称。选择所需的构件，然后选择**加载**。

1. 在打开的**选择要导入的视觉对象**页面中，选择包含要导入的视觉对象的工作表，然后选择要导入的视觉对象。一次只能从一个工作表导入视觉对象。选择了要导入的所有视觉对象后，请选择**导入**。

导入作业成功完成后，导入的视觉对象将添加到目标分析。导入的视觉对象会保留在源控制面板或分析中配置的原始属性。导入的视觉对象从应用于目标分析的主题继承主题级属性。

# 复制 Quick Sight 视觉效果
<a name="duplicating-a-visual"></a>

您可以复制视觉对象，以便在相同工作表或不同工作表上制作视觉对象的新副本。

要复制视觉对象，请在 **v** 形视觉对象菜单上，选择 **Duplicate visual to (将视觉对象复制到)**，然后选择要显示视觉对象的工作表。显示区域自动显示复制的视觉对象。

复制的视觉对象将保留源视觉对象的所有相同筛选器和设置。但是，如果您将视觉对象复制到另一个工作表上，则其所有复制的筛选器将仅应用于副本。所有复制的筛选器都将缩小应用范围，仅应用于该视觉对象。如果要将筛选器应用于新工作表上的多个视觉对象，请编辑筛选器并更改设置。

参数和控件适用于所有工作表。要使参数控件与您复制到不同工作表的视觉对象一起使用，请在目标工作表上添加筛选器并将其连接到参数。为此，请选择 **Custom filter (自定义筛选器)** 以作为筛选器类型。

# 重命名 Amazon Quick Sight 视觉效果
<a name="renaming-a-visual"></a>

要重命名视觉对象，请按照以下过程操作。

**重命名视觉对象**

1. 在分析页面上，选择要重命名的视觉对象。

1. 选择视觉对象左上角的视觉对象名称，然后输入一个新名称。

1. 按 **Enter** 或在视觉对象名称字段以外的位置单击以保存新名称。

# 在 Amazon Quick Sight 中查看视觉数据
<a name="viewing-visual-data"></a>

Amazon Quick Sight 提供了多种查看视觉效果中显示的数据细节的方法。视觉对象的轴或行和列带有标签（具体取决于视觉对象类型）。将鼠标悬停在视觉对象的任一图形元素上即可显示与该元素关联的数据。某些视觉对象类型使用视觉提示来强调鼠标悬停所在的元素，以便于区分。例如，视觉对象类型可能会更改元素的颜色或突出显示元素。

有关查看视觉对象中的数据的更多信息，请参阅以下部分。

**Topics**
+ [查看视觉对象的详细信息](viewing-visual-details.md)
+ [滚动浏览视觉对象数据](scrolling-through-visual-data.md)
+ [聚焦视觉对象元素](focusing-on-visual-elements.md)
+ [排除视觉对象元素](excluding-visual-elements.md)
+ [在 Quick Sight 中搜索数据中的特定值](search-filter.md)

# 查看视觉对象的详细信息
<a name="viewing-visual-details"></a>

在查看视觉对象时，您可以将光标悬停在任意图形元素上来获取该元素的详细信息。例如，将光标悬停在条形图的单个条形上时，工具提示中会显示该特定条形的相关信息。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/bar-detail.png)


将光标悬停在散点图的单个数据点上时，工具提示中也会显示该特定数据点的相关信息。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/scatter-plot-detail.png)


您可以自定义将光标悬停在图表中的数据上方时会显示的信息。有关更多信息，请参阅 [工具提示](customizing-visual-tooltips.md)。

# 滚动浏览视觉对象数据
<a name="scrolling-through-visual-data"></a>

对于条形图、折线图和数据透视表，视觉对象的内容可能大于您想要的视觉对象大小。

在这些情况下，会显示清理条，以便您可以减少显示的数据或通过它们进行清理。此过程与您可以通过视频进行清理的方式类似。

要减少清理条的长度，请将鼠标悬停在其一端，直到光标改变形状。然后拖动小部件以使清理条变大或变小。要滚动浏览数据，请单击并按住清理条并将其滑向要查看的一端。

# 聚焦视觉对象元素
<a name="focusing-on-visual-elements"></a>

查看视觉对象时，您可以选择要聚焦或排除的数据。要执行此选择，请选择一个元素，例如条形或气泡，或行或列标题。

聚焦或排除数据会导致 Quick Sight 创建筛选器并仅显示您选择的数据。

要删除筛选条件，请选择左侧的 **Filters (筛选条件)**，然后禁用或删除筛选条件。您还可以使用 **Undo (撤消)** 以删除筛选条件。

如果视觉对象具有显示类别（维度）的图例，您可以单击图例中的值以查看可用操作的菜单。例如，假设条形图在 **Color (颜色)** 或 **Group/Color (组/颜色)** 字段井中有一个字段。条形图菜单显示您可以通过单击或右键单击条形来选择的操作，如下所示：
+ 聚焦或排除视觉对象元素
+ 更改视觉对象元素的颜色
+ 向下钻取层次结构
+ 从菜单激活的自定义操作，包括筛选或 URL 操作

# 排除视觉对象元素
<a name="excluding-visual-elements"></a>

在查看视觉对象时，可以选择视觉对象的某个元素，然后选择聚焦于该元素。例如，可聚焦的元素包括条、气泡或数据透视表中的行或列标题。但有一个例外：您不能排除映射到日期字段的元素。您可以排除一个图表上的多个元素。

排除元素时创建的筛选条件只会从视觉对象中移除该元素。

要再次查看被排除的元素，您可以在应用程序栏上选择 **Undo (撤消)**；或者，您可以禁用或删除筛选条件。

有关筛选条件的更多信息，请参阅[使用 Amazon Quick Sight 筛选数据](adding-a-filter.md)。

# 在 Quick Sight 中搜索数据中的特定值
<a name="search-filter"></a>

在筛选视觉对象数据、预览异常或使用控制面板中的列表或下拉控件时，您可以快速搜索感兴趣的值。

您可以搜索特定值，也可以搜索包含特定搜索查询的所有值。例如，在美国各州列表中搜索 *al* 会返回 **Al**abama、**Al**aska 和 C**al**ifornia。

您也可以使用通配符搜索来搜索匹配特定字符模式的所有值。例如，您可以搜索美国以字母 *ia* 结尾的所有州，并将结果范围缩小到 California、Georgia、Pennsylvania、Virginia 和 West Virginia。

**要在筛选条件或控件中搜索值**，请在搜索栏中输入搜索查询。

## 使用通配符搜索
<a name="search-filter-wildcard"></a>

以下通配符可用于在 Quick Sight 筛选器、列表和下拉列表控件以及异常预览中查找值。
+ **\$1** – 使用星号搜索与特定位置零到多个字符匹配的值。
+ **?** – 使用问号匹配特定位置的单个字符。
+ **\$1** – 使用反斜杠转义 **\$1**、**?** 或 **\$1** 通配符并在查询中搜索。例如，您可以搜索以问号结尾的短语。

以下是如何在 Quick Sight 搜索查询中使用支持的通配符的示例。
+ **al** – 此查询会搜索含 **al** 的所有值并返回 Alabama、Alaska 和 California。
+ **al\$1** – 此查询会搜索以 **al** 开头且以零到多个字符结尾的所有值。结果会返回美国各州列表中的 Alabama 和 Alaska。
+ **\$1ia** – 此查询会搜索以零到多个字符开头且以字母 **ia** 结尾的所有值。结果会返回 California、Georgia、Pennsylvania、Virginia 和 West Virginia。
+ **\$1al\$1** – 此查询会搜索字母 **al** 前后有零到多个字符的所有值。结果会返回 Alabama、Alaska 和 California。
+ **a?a?a?a** – 此查询会搜索字母 **a** 之间的精确位置为单个字符的所有值。结果会返回 Alabama。
+ **a?a\$1a** – 此查询会搜索前两个字母 **a** 之间只有一个字符、后两个字母 **a** 之间有多个字符的所有值。结果会返回 Alabama 和 Alaska。
+ **How\$1\$1?** – 此查询会搜索以 **How** 开头、后接零到多个字符且以问号结尾的所有值。此查询中的反斜杠 (\$1) 通知 Quick Sight 在每个值中搜索问号，而不是使用问号符号作为通配符。此查询会返回“How are you?”和“How is this possible?”这样的问句。
+ **\$1\$1\$1** – 此查询会搜索以星号开头、后接零到多个字符的值。此查询中的反斜杠 (\$1) 通知 Quick Sight 在值中搜索实际的星号，而不是使用星号作为通配符。此查询会返回“\$1all”“\$1above”和“\$1below”这样的值。
+ **\$1\$1\$1** – 此查询会搜索以反斜杠开头、后接零到多个字符的值。此查询中的第一个反斜杠 (\$1) 通知 Quick Sight 在每个值中搜索第二个反斜杠 (\$1)，而不是使用反斜杠符号作为通配符。此查询会返回 \$1Home 这样的结果。
+ **???** – 此查询会搜索包含三个字符的值。结果会返回 ant、bug 和 car 等值。

# 从视觉对象中导出数据
<a name="exporting-data"></a>

**注意**  
导出文件可以直接通过数据集导入返回信息。如果导入的数据包含公式或命令，则文件易受 CSV 注入影响。因此，导出文件可能会提示安全警告。为避免恶意活动，请在读取导出的文件时关闭链接和宏。

使用 Amazon Quick 控制台，您可以从任何类型的图表或图表中导出数据。导出仅包含所选可视化对象中当前可见的字段中的数据。导出文件中会排除任何被筛选掉的数据。您可以按如下格式导出数据：
+ 包含逗号分隔值（CSV）的文本文件，适用于所有视觉对象类型。
+ Microsoft Excel 工作簿文件 (.xslx)，仅适用于数据透视表和表格图。

以下规则适用：
+ 导出的文件会下载到您当前使用的浏览器中配置的默认下载目录。
+ 下载的文件以您从中导出文件的可视化对象命名。为确保唯一性，文件名具有顺序时间戳（Unix epoch 数据类型）。
+ 导出为 CSV 格式的默认限制：500 MB 或 100 万行（以先到者为准）
+ 导出为 Excel 格式的默认限制：
  + 从数据透视表视觉对象 40 万个单元格或 5 万行 
  + 从表视觉对象 80 万个单元格或 10 万行 
**注意**  
通过订阅分页报告，您可以[安排以 CSV 和 Excel 格式导出视觉对象](https://docs.aws.amazon.com/quicksight/latest/user/sending-reports.html)，并导出最多 300 万行（CSV）和 1600 万个单元格（Excel）。
+ 您无法从见解中导出数据，因为见解会消耗数据却不会包含数据。
+ Quick Sight 不支持一次从多个可视化中导出数据。要从同一个分析或控制面板中的其他视觉对象中导出数据，请对每个视觉对象重复该过程。要从控制面板或分析中导出所有数据，您需要使用有效凭证和可用于提取数据的工具连接到原始数据来源。

使用以下步骤从 Amazon Quick Sight 中的可视化中导出数据。在开始之前，请打开包含了待导出数据的分析或控制面板。

**导出可视化对象中的数据**

1. 选择要导出的可视化对象。确保选中并突出显示可视化内容。

1. 在视觉对象的右上角打开菜单并选择以下任一选项：
   + 要导出为 CSV，请选择**导出为 CSV**。
   + 要导出为 XSLX，请选择**导出为 Excel**。此选项仅适用于数据透视表和表格图。

1.  根据您的浏览器设置，会发生以下情况之一：
   + 文件自动进入您的默认**下载**位置。
   + 出现一个对话框，以便您选择文件名和位置。
   + 出现一个对话框，以便您选择是使用默认软件打开文件还是保存文件。

# Quick Sight 中清爽的视觉
<a name="refreshing-visuals"></a>

当你在 Quick Sight 分析或仪表板中工作时，当你更改影响视觉对象的内容（例如更新参数或筛选控件）时，视觉对象会刷新并重新加载。如果在更改参数或筛选条件后切换到新工作表，则只有受更改影响的视觉对象才会在新工作表上刷新。否则，视觉对象会在切换工作表后每 30 分钟更新一次。这是所有分析和控制面板的默认行为。

如果您想在切换工作表后刷新所有视觉对象，而不管有何更改，则可以对创建的每个分析进行此操作。

**每次在分析中切换工作表后刷新所有视觉对象**

1. 在 Amazon Quick 中，打开分析。

1. 在分析中，选择**编辑 > 分析设置**。

1. 在打开的**分析设置**窗格中，对于**刷新选项**，开启**每次切换工作表时重新加载视觉对象**。

1. 选择**应用**。

# 删除 Amazon Quick Sight 视觉效果
<a name="deleting-a-visual"></a>

要删除视觉对象，请按照以下过程操作。

**删除视觉对象**

1. 在分析页面上，选择要删除的视觉对象。

1. 在视觉对象的右上角处选择视觉对象菜单，然后选择 **Delete**。

# 在 Amazon Quick Sight 中使用表格上的主题
<a name="using-q-topics-on-sheets"></a>

Amazon Quick Sight 提供了创建主题的指导性工作流程。您可以退出引导式工作流程并稍后再回来，这不会中断您的工作。

通过在分析工作区中启用一个或多个 Quick Sight 主题，即可激活 ML 支持的自动数据准备功能，从而加快自然语言 (NL) 主题的创建速度。自动数据准备会根据高值字段的使用方式和常见的问答需求自动选择这些字段。它会根据现有分析中的术语和常用字典自动选择用户友好的字段名称和同义词。它还会自动格式化数据，因此在显示时会立即工作。

自动数据准备功能可将主题与您的分析绑定，并准备索引以便使用自然语言进行搜索。蓝点表示绑定。控制面板用户发现新的 Amazon Quick Sight 主题是自动选择的，这样他们就可以更轻松地查询数据集。

以下规则适用于处理主题：
+ 您必须是底层数据集的所有者，然后才能使用该数据集创建主题或使用该数据集的分析。
+ 在将现有主题链接到分析之前，您必须是该主题的所有者。

**启用主题**

1. 打开要用于自动数据准备的分析。

1. 在顶部导航栏上，选择主题图标。

1. 选择下列选项之一：
   + 要激活新主题，请选择**创建新主题**并输入主题标题和可选描述。
   + 要激活现有主题，请选择**更新现有主题**，然后从列表中选择主题。

1. 选择**启用主题**以确认选择。

1. 主题处理完毕后，您可以利用它从分析中学习到的知识用自然语言提问。

   现在，当用户导航到仪表板时，将在搜索栏中自动选择链接的主题。

将主题链接到分析后，分析的进一步更新不会自动同步到该主题。作者需要从**主题**页面手动管理更新主题。

当你为分析或仪表板启用主题时，你就开始了一个过程，在这个过程中，自动数据准备会从你分析数据的方式中学习。按照屏幕提示向其提问，并提供反馈和更多信息。你与主题互动的次数越多，它就越能为回答你的问题做好充分的准备。

要了解更多信息，请参阅[https://docs.aws.amazon.com/quicksight/latest/user/quicksight-q-starting-from-sheets.html](https://docs.aws.amazon.com/quicksight/latest/user/quicksight-q-starting-from-sheets.html)。

# Amazon Quick Sight 中的视觉类型
<a name="working-with-visual-types"></a>

Amazon Quick Sight 提供了一系列视觉类型，您可以使用这些类型来显示数据。有关每种视觉对象类型的功能的更多信息，请参阅本部分中的主题。

**Topics**
+ [度量和维度](#measures-and-dimensions)
+ [显示限制](#display-limits)
+ [隐藏或显示“其他”类别](#other-category)
+ [自定义要显示的数据点的数量](#customizing-number-of-data-points)
+ [使用 AutoGraph](autograph.md)
+ [使用条形图](bar-charts.md)
+ [使用箱形图](box-plots.md)
+ [使用组合图](combo-charts.md)
+ [使用自定义视觉内容](custom-visual-content.md)
+ [使用圆环图](donut-chart.md)
+ [使用漏斗图](funnel-charts.md)
+ [使用仪表盘图](gauge-chart.md)
+ [使用热图](heat-map.md)
+ [使用 Highcharts](highchart.md)
+ [使用直方图](histogram-charts.md)
+ [使用图像组件](image-component.md)
+ [使用 KPIs](kpi.md)
+ [使用图层地图](layered-maps.md)
+ [使用折线图](line-charts.md)
+ [创建地图和地理空间图](geospatial-charts.md)
+ [使用小倍数](small-multiples.md)
+ [使用饼图](pie-chart.md)
+ [使用数据透视表](pivot-table.md)
+ [使用雷达图](radar-chart.md)
+ [使用桑基图](sankey-diagram.md)
+ [使用散点图](scatter-plot.md)
+ [使用表作为视觉对象](tabular.md)
+ [使用文本框](textbox.md)
+ [使用树形图](tree-map.md)
+ [使用瀑布图](waterfall-chart.md)
+ [使用文字云](word-cloud.md)

## 度量和维度
<a name="measures-and-dimensions"></a>

我们使用术语*度量*指代用于在视觉对象中进行度量、比较和聚合的数值。度量可以是数值字段（如产品成本），也可以是任何数据类型（如交易计数）字段的数值聚合 IDs。

我们使用术语*维度*或*类别*指代文本或日期字段，它们可以是项目（如产品），也可以是与度量相关并可用于划分它们的属性。示例包括用于销售数据的销售日期，或用于客户满意度数字的产品制造商。Amazon Quick Sight 会根据字段的数据类型自动将字段识别为度量或维度。

数字字段可以用作维度，例如，邮政编码和大多数 ID 号。在数据准备期间，将此类字段指定为字符串数据类型是非常有用的。这样，Amazon Quick Sight 就会明白它们将被视为尺寸，对执行数学计算没有用处。

您可以改为更改字段显示为维度还是度analysis-by-analysis 量。有关更多信息，请参阅 [维度和度量字段](creating-a-visual.md#dimensions-and-measures)。

## 显示限制
<a name="display-limits"></a>

所有视觉对象类型都对其显示的数据点数量进行了限制，以便查看和分析视觉对象 (如线、条或气泡)。视觉对象选择并显示前 *n* 行 (不超过该视觉对象类型的限制)。这是根据排序顺序 (如果应用了排序顺序) 或默认顺序选择的。

支持的数据点数因视觉对象类型而异。要了解特定视觉对象类型的显示限制的更多信息，请参阅该类型的主题。

达到视觉对象类型的显示限制时，视觉对象的标题会指示显示的数据点数量。如果数据集很大并希望避免达到视觉对象显示限制，请使用一个或多个筛选条件减少显示的数据量。有关向视觉对象应用筛选条件的更多信息，请参阅[使用 Amazon Quick Sight 筛选数据](adding-a-filter.md)。

对于控制面板和分析，Amazon Quick Sight 支持以下功能：
+ 每个控制面板 50 个数据集
+ 每个控制面板 20 个工作表
+ 每个工作表 30 个可视化对象 

**注意**  
Amazon Quick Sight 支持 30 多种不同的*视觉类型*（图表和可视化类别，例如条形图、饼图和折线图）。每个分析表最多可以包含 30 个任意类型组合*的可视实例*（单个图表对象）。

您还可以选择在将视觉对象添加到**其他**类别之前限制要在视觉对象中显示的数据点数量。此类别包含超出您所使用的视觉对象类型的截止限制的所有数据的聚合数据：您所施加的视觉对象类型或基于显示限制的视觉对象类型。您可以使用视觉对象菜单选择是否显示**其他**类别。**其他**类别不显示在散点图、热图、地图、表格（表格报告）或关键绩效指标（KPIs）上。它也不会在 X 轴为日期的折线图上显示该类别。不支持向下钻取到 **other** 类别。

## 隐藏或显示“其他”类别
<a name="other-category"></a>

要隐藏或显示“其他”类别，请按照以下过程操作。

**隐藏或显示“其他”类别**

1. 在分析页面上，选择要修改的视觉对象。

1. 选择视觉对象右上角的视觉对象菜单，然后根据需要选择 **Hide "other" category (隐藏“其他”类别)** 或 **Show "other" category (显示“其他”类别)**。

## 自定义要显示的数据点的数量
<a name="customizing-number-of-data-points"></a>

您可以选择要在某些视觉对象的主轴上显示的数据点数。在图表中显示此数字后，“其他”类别中将包含任何其他数据点。例如，如果您选择在 200 中包含 10 个数据点，则在图表中显示 10 个数据点，并且 190 个数据点变成“其他”类别的一部分。

要查找此设置，请选择 **v** 形状的视觉对象菜单，然后选择 **Format visual (设置视觉对象格式)**。您可以使用下表来确定哪个字段包含数据点设置以及默认情况下视觉对象类型显示的数据点数。


| 视觉对象类型 | 在哪里查找数据点设置 | 数据点的默认数量 | 
| --- | --- | --- | 
|  条形图、水平  |  **Y 轴** – **显示的数据点数**  | 10000 | 
|  条形图、垂直  |  **X 轴** – **显示的数据点数**  | 10000 | 
|  组合图  |  **X 轴** – **显示的数据点数**  | 2,500 | 
|  热图  |  **行** – **显示的行数** **列** – **显示的列数**  | 100 | 
|  折线图  |  **X 轴** – **显示的数据点数**  | 10000 | 
|  饼图  |  **组/颜色** – **显示的切片数**  | 20 | 
|  树形图  |  **分组依据** – **显示的正方形数**  | 100 | 

# 使用 AutoGraph
<a name="autograph"></a>

AutoGraph 本身不是视觉类型，而是让你让 Amazon Quick 为你选择视觉类型。当您通过选择 AutoGraph 然后选择字段来创建视觉对象时，Amazon Quick 会根据所选字段的数量和数据类型使用最合适的视觉类型。

## 使用创建视觉效果 AutoGraph
<a name="create-autograph"></a>

使用以下步骤使用创建视觉对象 AutoGraph。

**要创建视觉效果，请使用 AutoGraph**

1. 在分析页面上，选择工具栏上的**可视化**。

1. 在应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在 “**视觉类型**” 窗格上，选择 AutoGraph图标。

1. 在 **Fields list (字段列表)** 窗格中，选择要使用的字段。

# 使用条形图
<a name="bar-charts"></a>

Amazon Quick 支持以下类型的条形图，无论是水平还是垂直方向：
+ **单度量** – 使用*单度量条形图*显示维度的单个度量的值。
+ **多度量** – 使用*多度量条形图*显示维度的多个度量的值。
+ **簇状** – 使用*簇状条形图*显示维度的单个度量的值，按另一个维度分组。
+ **堆叠** – *堆叠条形图*与簇状条形图类似，都会显示两个维度的度量。不过，它不是按父维度显示每个子维度的簇状条，而是为每个父维度显示一个条。它在条中使用着色块以显示子维度中的每个项目的相对值。色块反映子维度中每个项目相对于度量总数的值。堆积条形图使用基于选定度量的最大值的比例。
+ **100% 堆叠** – *100% 堆叠条形图*与堆叠条形图类似。不过，在 100% 堆叠条形图中，色块反映了子维度中每个项目所占的百分比（总计：100%）。

对于不使用组或颜色的视觉对象，条形图在轴上最多显示 1 万个数据点。对于使用组或颜色的视觉对象，它们在轴上最多显示 50 个数据点，并为组或颜色最多显示 50 个数据点。有关 Amazon Quick 如何处理超出显示限制的数据的更多信息，请参阅[显示限制](working-with-visual-types.md#display-limits)。

## 创建单度量条形图
<a name="create-bar-chart"></a>

要创建单度量条形图，请按照以下过程操作。

**创建单度量条形图**

1. 在分析页面上，选择左侧工具栏上的**可视化**。

1. 在左上角的应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在**视觉类型**窗格上，选择**水平条形图**或**垂直条形图图**标。

1. 从**字段列表**窗格中，将一个维度拖到 **X 轴**或 **Y 轴**字段井上。

1. 从**字段列表**窗格中，将一个度量拖到**值**字段井上。

## 创建多度量条形图
<a name="create-bar-chart-multi"></a>

要创建多度量条形图，请按照以下过程操作。

**创建多度量条形图**

1. 在分析页面上，选择左侧工具栏上的**可视化**。

1. 在左上角的应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在**视觉类型**窗格上，选择**水平条形图**或**垂直条形图图**标。

1. 从**字段列表**窗格中，将一个维度拖到 **X 轴**或 **Y 轴**字段井上。

1. 从**字段列表**窗格中，将两个或多个度量拖到**值**字段井上。

## 创建簇状条形图
<a name="create-bar-chart-clustered"></a>

要创建簇状条形图，请按照以下过程操作。

**创建簇状条形图**

1. 在分析页面上，选择左侧工具栏上的**可视化**。

1. 在左上角的应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在**视觉类型**窗格上，选择**水平条形图**或**垂直条形图图**标。

1. 从**字段列表**窗格中，将一个维度拖到 **X 轴**或 **Y 轴**字段井上。

1. 从**字段列表**窗格中，将一个度量拖到**值**字段井上。

1. 从**字段列表**窗格中，将一个维度拖到**组/颜色**字段井上。

## 创建堆叠条形图
<a name="create-bar-chart-stacked"></a>

要创建堆叠条形图，请按照以下过程操作。

**创建堆叠条形图**

1. 在分析页面上，选择左侧工具栏上的**可视化**。

1. 在左上角的应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在**视觉类型**窗格上，选择**水平堆叠条形图**或**垂直堆叠条形图图标**。

1. 从**字段列表**窗格中，将一个维度拖到 **X 轴**或 **Y 轴**字段井上。

1. 从**字段列表**窗格中，将一个维度拖到**组/颜色**字段井上。

1. 从**字段列表**窗格中，将一个度量拖到**值**字段井上。

1. （可选）添加数据标签并显示总计：

   1. 从视觉对象右上角的菜单中选择**设置视觉对象格式**图标。

   1. 在**视觉对象**窗格中，选择**数据标签**。

   1. 切换开关以显示数据标签。

      每个度量值的标签显示在图表中，显示总计的选项出现在窗格中。

   1. 选中**显示总计**。

      图表中会显示每个条形的总计。

## 创建 100% 堆叠条形图
<a name="create-bar-chart-stacked-100"></a>

要创建 100% 堆叠条形图，请按照以下过程操作。

**创建 100% 堆叠条形图**

1. 在分析页面上，选择左侧工具栏上的**可视化**。

1. 在左上角的应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在**视觉类型**窗格上，选择**水平堆叠 100% 条形图或垂直堆****叠 100% 条形图图标**。

1. 从**字段列表**窗格中，将一个维度拖到 **X 轴**或 **Y 轴**字段井上。

1. 从**字段列表**窗格中，将两个或多个度量拖到**值**字段井上。

## 条形图的功能
<a name="bar-chart-features"></a>

可以使用下表了解条形图支持的功能。


****  

| 功能 | 支持？ | 评论 | 有关更多信息 | 
| --- | --- | --- | --- | 
| 更改图例显示 | 是，但有例外 | 多度量和簇状条形图显示图例，单度量水平条形图不显示图例。 | [Quick 中关于视觉类型的图例](customizing-visual-legend.md) | 
| 更改标题显示 | 是 |  | [Quick 中视觉类型上的标题和字幕](customizing-a-visual-title.md) | 
| 更改轴范围 | 是 |  | [在 Quick 中对视觉类型进行范围和缩放](changing-visual-scale-axis-range.md) | 
| 显示或隐藏轴线、网格线、轴标签和轴排序图标 | 是 |  | [Quick 中视觉类型上的轴和网格线](showing-hiding-axis-grid-tick.md) | 
| 改变视觉对象颜色 | 是 |  | [Quick 中视觉类型中的颜色](changing-visual-colors.md) | 
| 聚焦或排除元素 | 是，但有例外 | 您可以聚焦或排除图表上的任何条，但将日期字段用作轴维度的情况除外。在这种情况下，您只能聚焦条，但不能排除它。 |  [聚焦视觉对象元素](focusing-on-visual-elements.md) [排除视觉对象元素](excluding-visual-elements.md)  | 
| 排序 | 是 | 您可以对您为轴和值选择的字段进行排序。 | [在 Amazon Quick 中对视觉数据进行分类](sorting-visual-data.md) | 
| 执行字段聚合 | 是 | 您必须将聚合应用于您为值选择的一个或多个字段，而不能将聚合应用于您为轴或组/颜色选择的字段。 | [更改字段聚合](changing-field-aggregation.md) | 
| 添加向下钻取 | 是 | 您可以在轴和 Group/Color (组/颜色) 字段井中添加向下钻取级别。 | [在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md) | 
| 显示数据标签 | 是 |  | [Quick 中视觉类型上的数据标签](customizing-visual-data-labels.md) | 
| 显示堆叠条形图总计 | 是 | 只有当您选择显示数据标签时，才可以在堆叠条形图中显示总计。 | [堆叠条形图](#create-bar-chart-stacked) | 

# 使用箱形图
<a name="box-plots"></a>

*箱形图*又称箱须图，可将多个来源的数据汇集到一个视觉对象中，从而帮助您作出以数据为导向的决策。使用箱形图能够可视化数据在轴上或随时间的分布情况，例如航班在 7 天时段内的延误情况。箱形图通常按四分位数详细说明信息：
+ **最小值** – 不包括异常值的最低数据点。
+ **最大值** – 不包括异常值的最高数据点。
+ **中位数** – 数据集的中间值。
+ **第一四分位数** – 数据集最小数和中位数之间的中间值。第一四分位数不包括最小值或中位数。
+ **第三四分位数** – 数据集最大数和中位数之间的中间值。第三四分位数不包括最大值或中位数。

*异常值*是计算箱形图关键值时不包含的极端数据点。异常值会受到单独计算，因此其数据点不会在创建箱形图后立即出现。箱形图最多显示 1 万个数据点。如果数据集包含的数据点超过 1 万个，则视觉对象右上角会显示一条警告。

箱形图最多支持五个指标和一个分组依据，但不会呈现提供的重复指标。

箱形图支持部分而非所有计算字段。使用 `avgOver` 等窗口函数的任何计算字段都会引发 SQL 错误。

箱形图视觉对象与 MySQL 5.3 及更早版本不兼容。

**创建基本箱形图视觉对象**

1. 登录 Amazon Quick，网址为[https://quicksight.aws.amazon.com/](https://quicksight.aws.amazon.com/)。

1. 打开 “快速”，然后在左侧的导航窗格中选择 “**分析**”。

1. 选择下列选项之一：
   + 要创建新分析，请选择右上角的**新建分析**。有关更多信息，请参阅 [在 Quick Sight 中开始分析](creating-an-analysis.md)。
   + 要使用现有分析，请选择要编辑的分析。

1. 选择**添加**、**添加视觉对象**。

1. 在左下角，从**视觉对象类型**中选择箱形图的图标。

1. 从**字段列表**窗格中选择要用于相应字段井的字段。箱形图至少需要一个唯一度量字段。

1. (可选) 通过将一个或多个其他字段拖到 **Group/Color** 字段井上来添加向下钻取层。有关添加向下钻取的更多信息，请参阅[在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md)。

   要了解箱形图支持的功能，请参阅 [Quick 中按类型排列分析格式](analytics-format-options.md)。有关自定义选项，请参阅[在 Amazon 中快速格式化](formatting-a-visual.md)。

# 使用组合图
<a name="combo-charts"></a>

使用组合图，您可以创建一个可视化效果，以显示两种不同类型的数据，例如趋势和类别。组合图也称为折线图和柱（条）形图，因为它们将折线图与条形图组合在一起。条形图对于比较类别非常有用。条形图和折线图对于显示一段时间内的变化都很有用，尽管条形图应显示变化之间的更大差异。

Amazon Quick 支持以下类型的组合图表：
+ **簇状条形组合图** – 显示单色条形集，其中每个条形集表示一个父维度，每个条形表示一个子维度。使用此图表可以轻松确定每个条形的值。
+ **堆叠条形组合图** – 显示多色条形，其中每个条形表示一个父维度，每种颜色表示一个子维度。使用此图表可以轻松查看父维度中的子维度之间的关系。此图表显示父维度的总值以及每个子项如何加到总值中。要确定每个子维度的值，图表读者必须将颜色部分的大小与该轴的数据标签进行比较。

两种类型的组合图只需要在 **X axis** 上具有一个维度，但在 **Lines** 下面还显示至少一个度量时通常更有效。

只有在您要显示条形和线条之间的关系时，才使用组合图。一个很好的经验法则是，如果您需要解释两种图表类型的关系，则可能应该使用两个单独的图表。

由于每个图表的工作方式不同，因此在开始之前了解以下几点可能会有所帮助：
+ 每个系列中的数据点以不同的比例进行渲染。组合图使用基于选定度量的最大值的刻度。
+ 即使您为每个图表类型选择了相同的刻度，轴上数字之间的距离也不匹配线条和条形之间的距离。
+ 为了清楚起见，请尝试在每个数据系列中使用不同的度量单位。

该组合图类似于同时使用两种不同类型的可视化。确保条形（或柱形）中的数据与一条或多条线中的数据直接相关。这种关系从技术上并不是该工具实施的，因此，您必须自行确定这种关系。如果线和条之间没有某些关系，视觉对象将失去意义。

您可以使用组合图视觉对象类型创建单度量或单线图。单度量组合图为一个维度显示一个度量。

要创建多度量图，您可以选择添加多条线或多个条。多度量条形图为一个维度显示两个或更多度量。您可以将条划分为簇状，或堆积这些条。

对于条形图，请将维度作为轴，并将度量作为值。维度通常是以某种方式与度量相关的文本字段，可用于划分度量以查看更详细的信息。图表中的每个条表示您选择的维度中项目的度量值。

对于不使用组或颜色的视觉对象，条形图和折线图在轴上最多显示 2,500 个数据点。对于使用组或颜色的视觉对象，条形图在轴上最多显示 50 个数据点，最多为组或颜色显示 50 个数据点；而折线图最多在轴上显示 200 个数据点，最多为组或颜色显示 25 个数据点。有关 Amazon Quick 如何处理超出显示限制的数据的更多信息，请参阅[显示限制](working-with-visual-types.md#display-limits)。

## 组合图的功能
<a name="combo-chart-features"></a>

可以使用下表了解组合图支持的功能。


****  

| 功能 | 支持？ | 评论 | 有关更多信息 | 
| --- | --- | --- | --- | 
| 更改图例显示 | 是，但有例外 | 多度量组合图显示图例，而单度量组合图不显示图例。 | [Quick 中关于视觉类型的图例](customizing-visual-legend.md) | 
| 更改标题显示 | 是 |  | [Quick 中视觉类型上的标题和字幕](customizing-a-visual-title.md) | 
| 更改轴范围 | 是 | 您可以设置轴的范围。 | [在 Quick 中对视觉类型进行范围和缩放](changing-visual-scale-axis-range.md) | 
| 显示或隐藏轴线、网格线、轴标签和轴排序图标 | 是 |  | [Quick 中视觉类型上的轴和网格线](showing-hiding-axis-grid-tick.md) | 
| 改变视觉对象颜色 | 是 |  | [Quick 中视觉类型中的颜色](changing-visual-colors.md) | 
| 聚焦或排除元素 | 是，但有例外 | 您可以聚焦或排除图表上的任何条，但将日期字段用作轴维度的情况除外。在这种情况下，您只能聚焦条，但不能排除它。 |  [聚焦视觉对象元素](focusing-on-visual-elements.md) [排除视觉对象元素](excluding-visual-elements.md) | 
| 排序 | 是 | 您可以对您为轴和值选择的字段进行排序。 | [在 Amazon Quick 中对视觉数据进行分类](sorting-visual-data.md) | 
| 执行字段聚合 | 是 | 您必须将聚合应用于为值选择的一个或多个字段。您无法将聚合应用于为轴或组/颜色选择的字段。 | [更改字段聚合](changing-field-aggregation.md) | 
| 添加向下钻取 | 是 | 您可以在轴和 Group/Color (组/颜色) 字段井中添加向下钻取级别。 | [在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md) | 
| 同步 y 轴 | 是 |  将条形图和线形图的 y 轴同步到一个轴中。  | [在 Quick 中对视觉类型进行范围和缩放](changing-visual-scale-axis-range.md) | 

## 创建组合图
<a name="create-combo-chart"></a>

要创建组合图，请按照以下过程操作。

**创建组合图**

1. 在分析页面上，选择工具栏上的**可视化**。

1. 在应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在 **Visual types (视觉对象类型)** 窗格中，选择某个组合图图标。

1. 从 **Fields list (字段列表)** 窗格中，将要使用的字段拖到相应的字段井中。通常，您需要使用以目标字段井指示的维度或度量字段。如果您选择使用维度字段作为度量，则系统会对其自动应用 **Count** 聚合函数来创建数值。您可以以如下方式创建这些组合图：
   + 为 **X axis (X 轴)** 选择一个维度。
   + 要创建单度量组合图，请为 **Bars (条)** 或 **Lines (线)** 选择一个度量。
   + 要创建多度量组合图，请为 **Bars (条)** 或 **Lines (线)** 字段井选择两个或更多度量。
   + (可选) 将一个维度添加到 **Group/Color** 字段井中。如果在 **Group/Color** 中具有一个字段，则在 **Bars** 下面不能具有多个字段。  
![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/combo-chart-example2-clustered.png)

1. (可选) 通过将一个或多个其他字段拖到 **X axis** 或 **Group/Color** 字段井上来添加向下钻取层。有关添加向下钻取的更多信息，请参阅[在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md)。

# 使用自定义视觉内容
<a name="custom-visual-content"></a>

您可以使用自定义视觉内容图表类型在 Quick 仪表板中嵌入网页和在线视频、表单和图像。

例如，您可以将公司徽标的图像嵌入控制面板。您还可以嵌入组织最新会议的在线视频，或者嵌入询问控制面板读者该控制面板是否有用的在线表单。

创建自定义视觉内容后，您可以使用导航操作在其中进行导航。您还可以使用参数来控制要在其中显示的内容。

以下限制适用于自定义视觉内容：
+ 仅支持 `https` URL 架构。
+ 电子邮件报告中不支持自定义视觉内容。
+ 采用防盗链的图像和网站不会加载到自定义视觉对象中。

要在仪表板中嵌入网页、视频、在线表单或图像，请在 “视觉**类型” 窗格中选择自定义视觉**内容图标。

有关向控制面板添加视觉对象的更多信息，请参阅[添加视觉对象](creating-a-visual.md#create-a-visual)。

要了解如何在控制面板中嵌入自定义视觉对象，请按照以下过程操作。

## 自定义视觉内容的最佳使用实践
<a name="custom-visual-content-best-practices"></a>

使用自定义视觉内容图表类型嵌入网页内容时，建议执行以下操作：
+ 从支持在中查看或打开内容的来源中选择网页内容 IFrame。如果网页内容的来源不支持在中查看或打开 IFrame，则即使网址准确无误，内容也不会显示在 Quick 中。
+ 如果可能，请使用可嵌入式 URLs，特别是对于视频、在线表单、电子表格和文档。可嵌入式可 URLs 为仪表板的读者提供更好的体验，并使与内容的交互变得更加容易。在选择共享来自源网站的内容时，通常可以找到内容的可嵌入 URL。
+ 要嵌入内部 URLs 或您拥有 URLs 的内容，您可能需要将其设置为在中打开 IFrame。
+ 在分析或控制面板中查看自定义视觉内容时，务必启用所有 Cookie。如果您的浏览器屏蔽了第三方 Cookie，则嵌入在自定义内容视觉对象中的网站图像将不会呈现。
**注意**  
Chrome 已宣布计划在 2024 年底前弃用所有第三方 Cookie。这意味着嵌入在 Quick 自定义内容视觉效果中的网站将不再在 Chrome 中显示任何依赖第三方 Cookie 的内容。有关 Chrome 计划弃用第三方 Cookie 的更多信息，请参阅 [Chrome 即将弃用第三方 Cookie](https://cloud.google.com/looker/docs/best-practices/chrome-third-party-cookie-deprecation)。

## 在控制面板中嵌入图像
<a name="custom-visual-content-image"></a>

您可以使用图像 URL 将在线图像嵌入控制面板。要使用自定义视觉内容图表类型嵌入图像，请按照以下过程操作。

嵌入的图像不会出现在阻止第三方 Cookie 的浏览器中。要在控制面板中查看嵌入的图像，请在浏览器设置中启用第三方 Cookie。

**在控制面板中嵌入图像**

1. 在**视觉对象类型**窗格中选择自定义视觉内容图标。

1. 在视觉对象中选择**自定义视觉对象**。

1. 在打开的**属性**窗格中，在**自定义内容**下输入要嵌入的图像的图像 URL。

1. 选择**应用**。

   图像以网页的形式显示在视觉对象中。

1. 选择**显示为图像**。

   如果 URL 为图像，则图像会出现在视觉对象中。

   如果 URL 并非图像，例如幻灯片、图库或网页的 URL，则会出现以下消息：`This URL doesn't appear to be an image. Update the URL to an image`。为此，请在单独的浏览器选项卡中打开要嵌入的图像，或者为图像选择一个可嵌入 URL（通常可在选择共享图像时找到）。

1. （可选）在**图像大小选项**中选择以下任一选项：
   + **适应宽度** – 此选项根据视觉对象的宽度调整图像。
   + **适应高度** – 此选项根据视觉对象的高度调整图像。
   + **缩放到视觉对象** – 此选项将图像缩放到视觉对象的宽度和高度。此选项可能会扭曲图像。
   + **不缩放** – 此选项保持图像的原始比例，不根据视觉对象的尺寸调整图像。若使用此选项，则图像位于视觉对象的中心位置，并会显示视觉对象宽度和高度内的图像部分。如果视觉对象比图像小，则图像的某些部分可能不会显示。不过，如果视觉对象比图像大，则图像位于视觉对象的中心位置，周围留白。

## 在控制面板中嵌入在线表单
<a name="custom-visual-content-form"></a>

您可以使用可嵌入 URL 将在线表单嵌入控制面板。要使用自定义视觉内容图表类型嵌入在线表单，请按照以下过程操作。

**在控制面板中嵌入在线表单**

1. 在**视觉对象类型**窗格中选择自定义视觉内容图标。

1. 在视觉对象中选择**自定义视觉对象**。

1. 在打开的**属性**窗格中，在**自定义内容**下输入要嵌入的在线表单的表单 URL。

   如果可行，请为表单使用可嵌入 URL。使用可嵌入 URL 可以为可能想要与表单交互的控制面板读者提供更好的体验。选择在创建表单的网站上共享表单时，通常可以找到可嵌入 URL。

1. 选择**应用**。

   表单出现在视觉对象中。

## 在控制面板中嵌入网页
<a name="custom-visual-content-webpage"></a>

您可以使用 URL 将网页嵌入控制面板。要使用自定义视觉内容图表类型嵌入网页，请按照以下过程操作。

**在控制面板中嵌入网页**

1. 在**视觉对象类型**窗格中选择自定义视觉内容图标。

1. 在视觉对象中选择**自定义视觉对象**。

1. 在打开的**属性**窗格中，在**自定义内容**下输入要嵌入的网页的 URL。

1. 选择**应用**。

   网页显示在视觉对象中。

## 在控制面板中嵌入在线视频
<a name="custom-visual-content-video"></a>

您可以使用可嵌入视频 URL 将在线视频嵌入控制面板。要使用自定义视觉内容图表类型嵌入在线视频，请按照以下过程操作。

**在控制面板中嵌入在线视频**

1. 在**视觉对象类型**窗格中选择自定义视觉内容图标。

1. 在视觉对象中选择**自定义视觉对象**。

1. 在打开的**属性**窗格中，在**自定义内容**下输入要嵌入的视频的可嵌入 URL。

   要查找视频的可嵌入网址，请共享视频并从 IFrame 代码中复制嵌入网址。以下是YouTube 视频嵌入网址的示例:`https://www.youtube.com/embed/uniqueid`. Vimeo 视频嵌入 URL 的示例如下：`https://player.vimeo.com/video/uniqueid`。

1. 选择**应用**。

   视频出现在视觉对象中。

# 使用圆环图
<a name="donut-chart"></a>

使用圆环图可以比较维度中项目的值。此类图的最佳用途是显示总金额的百分比。

圆环图中的每个楔形表示一个维度中的一个值。楔形大小表示该项目表示的选定度量在整个维度中所占的比例。当精度不重要并且维度中的项目很少时，最好使用圆环图。

要了解如何在 Amazon Quick 中使用甜甜圈图，你可以观看以下视频：

[![AWS Videos](http://img.youtube.com/vi/vR6H4bXaRBY/0.jpg)](http://www.youtube.com/watch?v=vR6H4bXaRBY)


要创建圆环图，请在 **Group/Color (组/颜色)** 字段井中使用一个维度。如果只有一个字段，该图会按行数显示值的划分。要按指标值显示维度值的划分，您可以将指标字段添加到 **Value (值)** 字段井。

圆环图最多可为组或颜色显示 20 个数据点。有关 Amazon Quick 如何处理超出显示限制的数据的更多信息，请参阅[显示限制](working-with-visual-types.md#display-limits)。

## 圆环图的功能
<a name="donut-chart-features"></a>

可以使用下表了解圆环图支持的功能。


****  

| 功能 | 支持？ | 评论 | 有关更多信息 | 
| --- | --- | --- | --- | 
| 更改图例显示 | 是 |  | [Quick 中关于视觉类型的图例](customizing-visual-legend.md) | 
| 更改标题显示 | 是 |  | [Quick 中视觉类型上的标题和字幕](customizing-a-visual-title.md) | 
| 更改轴范围 | 不适用 |  | [在 Quick 中对视觉类型进行范围和缩放](changing-visual-scale-axis-range.md) | 
| 改变视觉对象颜色 | 是 |  | [Quick 中视觉类型中的颜色](changing-visual-colors.md) | 
| 聚焦或排除元素 | 是，但有例外 | 您可以聚焦或排除圆环图中的楔形，但将日期字段用作维度的情况除外。在这种情况下，您只能聚焦楔形，但不能排除它。 |  [聚焦视觉对象元素](focusing-on-visual-elements.md) [排除视觉对象元素](excluding-visual-elements.md) | 
| 排序 | 是 | 您可以在为值、组或颜色选择的字段上排序。 | [在 Amazon Quick 中对视觉数据进行分类](sorting-visual-data.md) | 
| 执行字段聚合 | 是 | 您必须将聚合应用于为值选择的字段，不能将聚合应用于为组或颜色选择的字段。 | [更改字段聚合](changing-field-aggregation.md) | 
| 添加向下钻取 | 是 | 您可以向 Group/Color 字段井添加向下钻取级别。 | [在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md) | 
| 选择大小 | 是 | 您可以选择圆环图的厚度：小、中和大。 | [在 Amazon 中快速格式化](formatting-a-visual.md) | 
| 显示总计 | 是 | 您可以选择显示或隐藏 Value (值) 字段的聚合。默认情况下，这将显示 Group/Color (组/颜色) 字段的总计数或 Value (值) 字段的总和。 | [在 Amazon 中快速格式化](formatting-a-visual.md) | 

## 创建圆环图
<a name="create-donut-chart"></a>

要创建圆环图，请按照以下过程操作。

**创建圆环图**

1. 在分析页面上，选择工具栏上的**可视化**。

1. 在应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在 **Visual types (视觉对象类型)** 窗格上，选择圆环图图标。

1. 从 **Fields list (字段列表)** 窗格中，将要使用的字段拖到相应的字段井中。通常，您需要使用以目标字段井指示的维度或度量字段。如果您选择使用维度字段作为度量，则系统会对其自动应用 **Count** 聚合函数来创建数值。

   要创建圆环图，请将一个维度拖到 **Group/Color (组/颜色)** 字段井上。（可选）将一个度量拖到 **Value (值)** 字段井上。

1. (可选) 通过将一个或多个其他字段拖到 **Group/Color** 字段井上来添加向下钻取层。有关添加向下钻取的更多信息，请参阅[在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md)。

# 使用漏斗图
<a name="funnel-charts"></a>

使用漏斗图可视化线性过程中跨越多个阶段的数据。在漏斗图中，过程的每个阶段均以不同形状和颜色的方块表示。第一阶段称为*头部*，是最大的方块；其次是较小的阶段，称为*颈部*，呈漏斗状。漏斗图中表示每个阶段的方块大小占总数的百分比，与其值成正比。方块越大，表示值越大。

漏斗图通常在业务环境中很有用，因为您可以查看每个阶段的趋势或潜在问题区域，例如瓶颈。例如，漏斗图可以帮助您可视化销售的每个阶段（从首次联系到最终销售，再到维护）的潜在收入金额。

**创建基本漏斗图视觉对象**

1. 打开 Amazon Quick，然后在左侧的导航窗格中选择 “**分析**”。

1. 选择下列选项之一：
   + 要创建新分析，请选择右上角的**新建分析**。有关更多信息，请参阅 [在 Quick Sight 中开始分析](creating-an-analysis.md)。
   + 要使用现有分析，请选择要编辑的分析。

1. 选择**添加（\$1）、添加视觉对象**。

1. 在左下角，从**视觉对象类型**中选择漏斗图的图标。

1. 从**字段列表**窗格中选择要用于相应字段井的字段。漏斗图要求**分组**中设置有一个维度。

1. (可选) 通过将一个或多个其他字段拖到 **Group/Color** 字段井上来添加向下钻取层。有关添加向下钻取的更多信息，请参阅[在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md)。

   要了解漏斗图支持的功能，请参阅 [Quick 中按类型排列分析格式](analytics-format-options.md)。有关自定义选项，请参阅[在 Amazon 中快速格式化](formatting-a-visual.md)。

# 使用仪表盘图
<a name="gauge-chart"></a>

使用量规图可以比较度量中项目的值。可以将它们与其他度量或自定义数量进行比较。

仪表盘图类似于非数字仪表，例如汽车上的油量表。它显示您正在测量的事物的数量。在量规图中，该度量可以单独存在或与另一个度量相关。量规图中的每个颜色部分均代表一个值。在下面的示例中，我们将实际销售额与销售目标进行比较，量规图指明我们必须再实现 33.27% 的销量才能达到目标。

要了解如何在 Amazon Quick 中使用仪表图，您可以观看以下视频：

[![AWS Videos](http://img.youtube.com/vi/03gYx4-iGak/0.jpg)](http://www.youtube.com/watch?v=03gYx4-iGak)


要创建量规图，您需要使用至少一个度量。将度量放入 **Value (值)** 字段井中。如果要比较两个度量，请将额外度量放入 **Target value (目标值)** 字段井中。如果要将单个度量与未在数据集中的目标值进行比较，您可以使用包含固定值的计算字段。

您可以选择量规图的多种格式选项，包括 **Format visual (设置视觉对象格式)** 中的以下设置。
+ ****显示的值**** – 隐藏值、显示实际值或显示两个值的比较
+ ****比较方法**** – 比较值（百分比形式）、值之间的实际差值或差值（百分比形式）
+ ****轴样式****：
  + **显示轴标签** – 显示或隐藏轴标签
  + **范围** – 要在仪表盘图中显示的最小和最大数字范围
  + **预留填充（%）**– 添加到范围顶部（目标、实际值或最大值）
+ ****弧线样式**** – 弧线显示的度数（180°到 360°）
+ ****粗细**** – 弧线的粗细度（细、中或粗）

## 仪表盘图的功能
<a name="gauge-chart-features"></a>

可以使用下表了解量规图支持的功能。


****  

| 功能 | 支持？ | 评论 | 有关更多信息 | 
| --- | --- | --- | --- | 
| 更改图例显示 | 是 |  | [Quick 中关于视觉类型的图例](customizing-visual-legend.md) | 
| 更改标题显示 | 是 |  | [Quick 中视觉类型上的标题和字幕](customizing-a-visual-title.md) | 
| 设置量规格式 | 是 | 您可以自定义显示的值、比较方法、轴样式、弧线样式和量规厚度。 |  | 
| 更改轴范围 | 否 |  |  | 
| 改变视觉对象颜色 | 是 | 填充区域的前景色；它表示 Value (值)。未填充区域的背景色；它表示 Target value (目标值)（如果已选定一个目标值。） | [Quick 中视觉类型中的颜色](changing-visual-colors.md) | 
| 聚焦或排除元素 | 否 |  |  | 
| 排序 | 否 |  | [在 Amazon Quick 中对视觉数据进行分类](sorting-visual-data.md) | 
| 执行字段聚合 | 是 |  | [更改字段聚合](changing-field-aggregation.md) | 
| 添加向下钻取 | 否 |  |  | 

## 创建仪表盘图
<a name="create-gauge-chart"></a>

可以使用以下过程创建量规图。

**创建仪表盘图**

1. 在分析页面上，选择工具栏上的**可视化**。

1. 在应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在 **Visual types (视觉对象类型)** 窗格中，选择量规图图标。

1. 从 **Fields list (字段列表)** 窗格中，将要使用的字段拖到相应的字段井中。要创建量规图，请将一个度量拖到 **Value (值)** 字段井上。要添加比较值，请将其他度量拖到 **Target value (目标值)** 字段井上。

# 使用热图
<a name="heat-map"></a>

使用热图可以显示两个维度交集的度量，它带有颜色编码，可让您快速了解值在范围内所处的位置。热图也可用于显示两个维度交集的值数量。

热图上的每个矩形表示所选维度的交集的指定度量。矩形颜色表示值在度量范围内所处的位置，深色表示该值较高，浅色表示该值较低。

热图和数据透视表以类似表格的形式显示数据。如果需要识别趋势和离群值，请使用热图，因为它使用了颜色，能够帮您迅速找到目标。如果要进一步分析视觉对象上的数据，请使用数据透视表，例如，通过更改列排序顺序，或沿行或列应用聚合函数。

要创建热图，请选择任意数据类型的至少两个字段。Amazon Quick 使用相交 y 轴值的 x 轴值计数填充矩形值。通常，您可以选择一个度量值和两个维度。

热图最多可为行显示 50 个数据点，最多可为列显示 50 个数据点。有关 Amazon Quick 如何处理超出显示限制的数据的更多信息，请参阅[显示限制](working-with-visual-types.md#display-limits)。

## 热图的功能
<a name="heat-map-features"></a>

可以使用下表了解热图支持的功能。


| 功能 | 支持？ | 评论 | 有关更多信息 | 
| --- | --- | --- | --- | 
| 更改图例显示 | 是 |  | [Quick 中关于视觉类型的图例](customizing-visual-legend.md) | 
| 更改标题显示 | 是 |  | [Quick 中视觉类型上的标题和字幕](customizing-a-visual-title.md) | 
| 更改轴范围 | 不适用 |  | [在 Quick 中对视觉类型进行范围和缩放](changing-visual-scale-axis-range.md) | 
| 改变视觉对象颜色 | 否 |  | [Quick 中视觉类型中的颜色](changing-visual-colors.md) | 
| 聚焦或排除元素 | 是，但有例外 | 您可以聚焦或排除热图中的矩形，但将日期字段用作行维度的情况除外。在这种情况下，您只能聚焦矩形，但不能排除它。 |  [聚焦视觉对象元素](focusing-on-visual-elements.md) [排除视觉对象元素](excluding-visual-elements.md) | 
| 排序 | 是 | 您可以按您为列和值选择的字段进行排序。 | [在 Amazon Quick 中对视觉数据进行分类](sorting-visual-data.md) | 
| 执行字段聚合 | 是 | 您必须将聚合应用于您为值选择的字段，不能将聚合应用于您为行或列选择的字段。 | [更改字段聚合](changing-field-aggregation.md) | 
| 添加向下钻取 | 是 | 您可以向 Rows 和 Columns 字段井添加向下钻取级别。 | [在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md) | 
| 条件格式设置 | 否 |  | [在 Quick 中对视觉类型进行条件格式化](conditional-formatting-for-visuals.md) | 

## 创建热图
<a name="create-heat-map"></a>

要创建热图，请按照以下过程操作。

**创建热图**

1. 在分析页面上，选择工具栏上的**可视化**。

1. 在应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在 **Visual types** 窗格中，选择热图图标。

1. 从 **Fields list (字段列表)** 窗格中，将要使用的字段拖到相应的字段井中。通常，您需要使用以目标字段井指示的维度或度量字段。如果您选择使用维度字段作为度量，则系统会对其自动应用 **Count** 聚合函数来创建数值。

   要创建热图，请将一个维度拖到 **Rows** 字段井上，将另一个维度拖到 **Columns** 字段井上，并将一个度量拖到 **Values** 字段井上。

1. (可选) 通过将一个或多个其他字段拖到 **Rows** 或 **Columns** 字段井上来添加向下钻取层。有关添加向下钻取的更多信息，请参阅[在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md)。

# 使用 Highcharts
<a name="highchart"></a>

使用 Highcharts 视觉对象来创建使用 [Highcharts Core 库](https://www.highcharts.com/blog/products/highcharts/)的自定义图表类型和视觉对象。Highcharts 视觉效果让 Quick 作者可以直接访问 [High](https://api.highcharts.com/highcharts/) charts API。

要配置 Highcharts 视觉对象，Quick 作者需要在 Quick 中向视觉对象添加 Highcharts JSON 架构。作者可以使用快速表达式来引用快速字段，以及用于生成 Highcharts 视觉效果的 JSON 架构中的格式选项。JSON **图表代码**编辑器为自动完成和实时验证提供上下文帮助，以确保输入 JSON 架构配置正确。为了维护安全性，Highcharts 可视化编辑器不接受 CSS 或 HTML 代码输入。 JavaScript

有关 Amazon Quick 中 Highcharts 视觉效果的更多信息，请参阅中的 [Highcharts 视觉 QuickStart 指南](https://democentral.learnquicksight.online/#Dashboard-FeatureDemo-Highcharts-Visual)。[DemoCentral](https://democentral.learnquicksight.online/#)

下图显示了在 Quick 中 Highcharts 视觉对象的**图表代码** JSON 编辑器中配置的口红图表。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/highcharts-example1.png)


[有关可以在 Quick 中使用 Highcharts 视觉效果创建的视觉效果的更多示例，请参阅 Highcharts 演示。](https://www.highcharts.com/demo)

## 注意事项
<a name="highchart-considerations"></a>

在开始在 Amazon Quick 中创建 Highcharts 视觉效果之前，请查看适用于 Highcharts 视觉效果的以下限制。
+ Highcharts **图表代码** JSON 编辑器不支持以下 JSON 值：
  + 函数
  + 日期
  + 未定义的值
+ Highcharts 视觉对象不支持指向 GeoJSON 文件或其他图像的链接。
+ 字段颜色不适用于 Highcharts 视觉对象。默认主题颜色适用于所有 Highcharts 视觉对象。

## 创建 Highcharts 视觉对象
<a name="highchart-create"></a>

使用以下步骤在 Amazon Quick 中创建 Highcharts 视觉效果。

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

1. 打开要为其添加 Highcharts 视觉效果的快速分析。

1. 在应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在**视觉对象类型**窗格中，选择 Highcharts 视觉对象图标。分析工作表上会出现一个空视觉对象，并且左侧打开**属性**窗格。

1. 在**属性**窗格中，展开**显示设置**部分并执行以下操作：

   1. 对于**编辑标题**，选择画笔图标，输入希望视觉对象具有的标题，然后选择**保存**。或者，选择眼球图标以隐藏标题。

   1. （可选）对于**编辑副标题**，选择画笔图标，输入希望视觉对象具有的副标题，然后选择**保存**。或者，选择眼球图标来隐藏副标题。

   1. （可选）对于**替代文本**，添加希望视觉对象具有的替代文本。

1. 展开**数据点限制**部分。对于**要显示的数据点数量**，输入希望视觉对象显示的数据点数。Highcharts 视觉对象最多可显示 1 万个数据点。

1. 展开**图表代码**部分。

1. 在**图表代码** JSON 编辑器中输入 JSON 架构。该编辑器会提供上下文帮助和实时验证，以确保输入 JSON 配置正确。Quick 发现的任何错误都可以在**错误**下拉列表中查看。下面的示例展示了一个 JSON 架构，它创建了一个口红图表，显示了各行业当年的销售额。

   ```
   {
     "xAxis": {
       "categories": ["getColumn", 0]
     },
     "yAxis": {
       "min": 0,
       "title": {
         "text": "Amount ($)"
       }
     },
     "tooltip": {
       "headerFormat": "<span style='font-size:10px'>{point.key}</span><table>",
       "pointFormat": "<tr><td style='color:{series.color};padding:0'>{series.name}: </td><td style='padding:0'><b>${point.y:,.0f}</b></td></tr>",
       "footerFormat": "</table>",
       "shared": true,
       "useHTML": true
     },
     "plotOptions": {
       "column": {
         "borderWidth": 0,
         "grouping": false,
         "shadow": false
       }
     },
     "series": [
       {
         "type": "column",
         "name": "Current Year Sales",
         "color": "rgba(124,181,236,1)",
         "data": ["getColumn", 1],
         "pointPadding": 0.3,
         "pointPlacement": 0.0
       }
     ]
   }
   ```

1. 选择**应用代码**。Quick 将 JSON 架构转换为显示在分析中的视觉对象。要更改呈现的视觉对象，请更新 JSON 架构中的相应属性，然后选择**应用代码**。

1. （可选）打开**参考**下拉列表以访问有用的 Highctarts 参考资料的链接。

当您对呈现的视觉对象感到满意时，请关闭属性窗格。有关可用于配置 Highcharts 视觉效果的 Quick Sight 特定表达式的更多信息，请参阅[适用于 Highcharts 视觉效果的亚马逊快速 JSON 表达式语言](highchart-expressions.md)。

## 交互式 Highchart 功能
<a name="interactive-features"></a>

Amazon Quick Sight 中的 Highchart 可视化支持自定义操作、突出显示和自定义字段颜色一致性，使您可以创建与其他 Quick Sight 视觉效果无缝集成的交互式且视觉上有凝聚力的图表。

### 自定义操作
<a name="custom-actions-feature"></a>

通过自定义操作，您可以为 Highchart 可视化效果中的任何数据点定义特定行为。此功能与 Quick Sight 的现有操作框架无缝集成，使您能够创建响应用户点击的交互式图表。该系统目前支持单个数据点选择，让您可以精确控制用户交互。自定义操作可以在各种图表类型中实现，包括折线图、条形图和堆叠条形图等。

要实现自定义操作，需要修改 Highcharts JSON 配置。向您的系列配置添加一个事件块，指定点击事件和相应的操作。例如：

```
{
  "series": [{
    "type": "line",
    "data": ["getColumn", 1],
    "name": "value",
    "events": {
      "click": [
        "triggerClick", { "rowIndex": "point.index" }
      ]
    }
}]
```

此配置可在图表的数据点上启用点击事件，从而允许 Quick Sight 根据所选数据处理自定义操作。

### 跨视觉对象突出显示
<a name="visual-highlighting-feature"></a>

跨视觉对象突出显示通过在不同图表之间创建视觉对象连接来增强控制面板的交互性。当用户选择一个图表中的元素时，其他视觉对象中的相关元素会自动突出显示，而不相关的元素则会变暗。此功能可帮助用户快速识别多个可视化效果之间的关系和模式，从而提高数据理解和分析能力。

要启用跨视觉对象突出显示并保持字段颜色一致性，请在 Highcharts JSON 配置中使用 `quicksight` 子句。该子句充当 Highcharts 渲染和 Quick 的视觉交互系统之间的桥梁。下面是有关如何设置的示例：

```
{
  "quicksight": {
    "pointRender": ["updatePointAttributes", {
      "opacity": ["case", 
        ["dataMarkMatch", ["getColumnName", 0], "series.name"],
        1,  // Full opacity for matching elements
        0.1 // Dim non-matching elements
      ],
      "color": ["getColumnColorOverrides", ["getColumnName", 0], "series.name"]
    }]
  }
}
```

此配置使用 Quick Sight 的 JSON 表达式语言，根据用户交互和预定义的配色方案动态修改不透明度和颜色等视觉属性。

对于更复杂的场景，您可以根据多种条件设置突出显示。这使得您的可视化效果具有更细致的交互性。以下示例根据季度或星期几突出显示元素：

```
{
  "quicksight": {
    "pointRender": ["updatePointAttributes", {
      "opacity": ["case",
        ["||",
          ["dataMarkMatch", "quarter", "series.name"],
          ["dataMarkMatch", "day_of_week", "point.name"]
        ],
        1,  // Full opacity for matching elements
        0.1 // Dim non-matching elements
      ],
    }]
  }
}
```

### 字段级颜色一致性
<a name="field-color-feature"></a>

保持控制面板的视觉连贯性对于有效的数据解释至关重要。字段级颜色一致性功能可确保分配给特定维度的颜色在控制面板的所有视觉对象中保持不变。这种一致性有助于用户快速识别和跟踪不同图表类型和视图中的特定数据类别，从而增强整体用户体验和数据理解。

# 适用于 Highcharts 视觉效果的亚马逊快速 JSON 表达式语言
<a name="highchart-expressions"></a>

Highcharts 视觉对象接受大多数[有效的 JSON 值](https://www.w3schools.com/js/js_json_datatypes.asp)、标准算术运算符、字符串运算符和条件运算符。Highcharts 视觉对象不支持以下 JSON 值：
+ 函数
+ 日期
+ 未定义的值

快速创作者可以使用 JSON 表达式语言为 highcharts 视觉效果创建 JSON 架构。JSON 表达式语言用于将 JSON 绑定到 APIs 或数据集，以允许动态填充和修改 JSON 结构。开发人员还可以使用 JSON 表达式语言，通过简洁直观的表达式对 JSON 数据进行扩充和转换。

在 JSON 表达式语言中，表达式以数组形式表示，其中第一个元素指定操作，后续元素是参数。例如，`["unique", [1, 2, 2]]` 对数组 `[1, 2, 2]` 应用 `unique` 操作，结果为 `[1, 2]`。这种基于数组的语法允许使用灵活的表达式，从而可以对 JSON 数据进行复杂的转换。

JSON 表达式语言支持*嵌套表达式*。嵌套表达式是包含其他表达式作为参数的表达式。例如，`["split", ["toUpper", "hello world"], " "]` 首先将字符串 `hello world` 转换为大写，然后将其拆分为单词数组，结果为 `["HELLO", "WORLD"]`。

使用以下部分详细了解 Amazon Quick 中 Highcharts 视觉效果的 JSON 表达式语言。

**Topics**
+ [算术](jle-arithmetics.md)
+ [数组运算](jle-arrays.md)
+ [Amazon 快速表达式](jle-qs-expressions.md)

# 算术
<a name="jle-arithmetics"></a>

下表显示了可与 JSON 表达式语言一起使用的算术表达式。


| 操作 | Expression | Input | Output | 
| --- | --- | --- | --- | 
| 加 | ["\$1", operand1, operand2] | \$1 sum: ["\$1", 2, 4] \$1 | \$1 sum: 6 \$1 | 
| 减 | ["-", operand1, operand2] | \$1 difference: ["-", 10, 3] \$1 | \$1 difference: 7 \$1 | 
| 乘 | ["\$1", operand1, operand2] | \$1 product: ["\$1", 5, 6] \$1 | \$1 product: 30 \$1 | 
| 除 | ["/", operand1, operand2] | \$1 quotient: ["/", 20, 4] \$1 | \$1 quotient: 5 \$1 | 
| 取模 | ["%", operand1, operand2] | \$1 remainder: ["%", 15, 4] \$1 | \$1 remainder: 3 \$1 | 
| 幂 | ["\$1\$1", base, exponent] | \$1 power: ["\$1\$1", 2, 3] \$1 | \$1 power: 8 \$1 | 
| 绝对值 | ["abs", operand] | \$1 absolute: ["abs", -5] \$1 | \$1 absolute: 5 \$1 | 
| Square Root | ["sqrt", operand] | \$1 sqroot: ["sqrt", 16] \$1 | \$1 sqroot: 4 \$1 | 
| 对数（以 10 为底） | ["log10", operand] | \$1 log: ["log10", 100] \$1 | \$1 log: 2 \$1 | 
| 自然对数 | ["ln", operand] | \$1 ln: ["ln", Math.E] \$1 | \$1 ln: 1 \$1 | 
| 四舍五入 | ["round", operand] | \$1 rounded: ["round", 3.7] \$1 | \$1 rounded: 4 \$1 | 
| 向下取整 | ["floor", operand] | \$1 floor: ["floor", 3.7] \$1 | \$1 floor: 3 \$1 | 
| 向上取整 | ["ceil", operand] | \$1 ceiling: ["ceil", 3.2] \$1 | \$1 ceiling: 4 \$1 | 
| 正弦 | ["sin", operand] | \$1 sine: ["sin", 0] \$1 | \$1 sine: 0 \$1 | 
| 余弦 | ["cos", operand] | \$1 cosine: ["cos", 0] \$1 | \$1 cosine: 1 \$1 | 
| 正切 | ["tan", operand] | \$1 tangent: ["tan", Math.PI] \$1 | \$1 tangent: 0 \$1 | 

# 数组运算
<a name="jle-arrays"></a>

JSON 表达式语言允许对以下函数进行通用数组操作：
+ `map` – 将映射函数应用于数组的每个元素，并返回包含转换值的新数组。

  例如，`["map", [1, 2, 3], ["*", ["item"], 2]]` 通过将数组 `[1, 2, 3]` 的每个元素乘以 2 来映射该数组的每个元素。
+ `filter` – 根据给定的条件筛选数组并返回仅包含满足条件的元素的新数组

  例如，`["filter", [1, 2, 3, 4, 5], ["==", ["%", ["item"], 2], 0]]` 筛选数组 `[1, 2, 3, 4, 5]` 以仅包含偶数。
+ `reduce` – 通过对每个元素应用 Reducer 函数并累加结果，将数组缩减为单个值。

  例如，`["reduce", [1, 2, 3, 4, 5], ["+", ["acc"], ["item"]], 0]` 将数组 `[1, 2, 3, 4, 5]` 缩减为其元素之和。
+ `get` – 通过指定键或索引，从对象或数组中检索值。

  例如，`["get", ["item"], "name"]` 从当前项检索 `"name"` 属性的值。
+ `unique` – 给定一个数组，仅返回此数组内唯一的项。

  例如，`["unique", [1, 2, 2]]` 将返回 `[1, 2]`。

# Amazon 快速表达式
<a name="jle-qs-expressions"></a>

Amazon Quick 提供了其他表达式来增强 Highcharts 视觉效果的功能。使用以下各节详细了解 Highcharts 视觉效果的常用快速表达式。有关 Amazon Quick 中的 JSON 表达式语言的更多信息，请参阅中的 [Highcharts 视觉 QuickStart 指南](https://democentral.learnquicksight.online/#Dashboard-FeatureDemo-Highcharts-Visual)。[DemoCentral](https://democentral.learnquicksight.online/#)

**Topics**
+ [`getColumn`](#highcharts-expressions-getcolumn)
+ [`formatValue`](#highcharts-expressions-formatvalue)

## `getColumn`
<a name="highcharts-expressions-getcolumn"></a>

使用 `getColumn` 表达式从指定的列索引返回值。例如，下表显示了产品列表及其类别和价格。


| Product name | 类别 | Price | 
| --- | --- | --- | 
|  产品 A  |  Technology  |  100  | 
|  产品 B  |  零售  |  50  | 
|  产品 C  |  零售  |  75  | 

以下 `getColumn` 查询生成一个数组，显示所有产品名称及其价格。

```
{
	product name: ["getColumn", 0], 
	price: ["getColumn", 2]
}
```

返回以下 JSON：

```
{
	product name: ["Product A", "Product B", "Product C"],
	price: [100, 50, 75]
}
```

您还可以一次传递多个列来生成一组数组，如下例所示。

**输入**

```
{
	values: ["getColumn", 0, 2]
}
```

**输出**

```
{
	values: [["Product A", 100], ["Product B", 50], ["Product C", 75]]
}
```

与 `getColumn` 类似，以下表达式可用于从字段井或主题返回列值：
+ `getColumnFromGroupBy` 从分组依据字段返回列。第二个参数是要返回的列的索引。例如，`["getColumnFromGroupBy", 0]` 以数组形式返回第一个字段的值。您可以传递多个索引来获取一组数组，其中每个元素都与分组依据字段井中的字段对应。
+ `getColumnFromValue` 从值字段井返回列。您可以传递多个索引来获取一组数组，其中每个元素都与值字段井中的字段对应。
+ `getColorTheme`返回 Quick 主题的当前调色板，如以下示例所示。

  ```
  {
  "color": ["getColorTheme"]
  }
  ```

  ```
  {
  "color": ["getPaletteColor", "secondaryBackground"]
  }
  ```

**示例**

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/get-column-example.png)


`getColumn` 可以访问表中的任何列：
+ `["getColumn", 0]` - 返回数组 `[1, 2, 3, 4, 5, ...]`
+ `["getColumn", 1]` - 返回数组 `[1, 1, 1, 1, 1, ...]`
+ `["getColumn", 2]` - 返回数组 `[1674, 7425, 4371, ...]`

`getColumnFromGroupBy` 的工作方式类似，但是其索引仅限于分组依据字段井中的列：
+ `["getColumnFromGroupBy", 0]` - 返回数组 `[1, 2, 3, 4, 5, ...]`
+ `["getColumnFromGroupBy", 1]` - 返回数组 `[1, 1, 1, 1, 1, ...]`
+ `["getColumnFromGroupBy", 2]` - 不起作用，因为分组依据字段井中只有两列

`getColumnFromValue` 的工作方式类似，但是其索引仅限于值字段井中的列：
+ `["getColumnFromValue", 0]` - 返回数组 `[1, 2, 3, 4, 5, ...]`
+ `["getColumnFromValue", 1]` - 不起作用，因为值字段井中只有一列
+ `["getColumnFromValue", 2]` - 不起作用，因为值字段井中只有一列

## `formatValue`
<a name="highcharts-expressions-formatvalue"></a>

使用`formatValue`表达式将快速格式化应用于您的值。例如，以下表达式使用在 Quick 字段井的第一个字段中指定的格式值来格式化 x 轴标签。

```
 "xAxis": {
		"categories": ["getColumn", 0],
		"labels": {
		"formatter": ["formatValue", "value", 0]
		}
	}
```

# 使用直方图
<a name="histogram-charts"></a>

使用 Amazon Quick 中的直方图来显示数据中连续数值的分布情况。Amazon Quick 使用非标准化直方图，即使用每个数据桶中数据点或事件的绝对计数。

要创建直方图，需要使用一个度量。新的直方图一开始会在 X 轴上显示十个*条柱*（也称为*桶*）。它们在图表上显示为条形。您可以根据数据集自定义条柱。Y 轴显示每个条柱中值的绝对计数。

请确保调整格式设置，以便获得清晰可识别的形状。如果数据包含异常值，有一个或多个值偏离 X 轴的一侧，这可以清晰地展示出来。有关 Amazon Quick 如何处理超出显示限制的数据的信息，请参阅[显示限制](working-with-visual-types.md#display-limits)。

## 直方图的功能
<a name="histogram-chart-features"></a>

可以通过下表了解直方图支持的功能。


****  

| 功能 | 支持？ | 评论 | 有关更多信息 | 
| --- | --- | --- | --- | 
| 更改图例显示 | 否 |  | [Quick 中关于视觉类型的图例](customizing-visual-legend.md) | 
| 更改标题显示 | 是 |  | [Quick 中视觉类型上的标题和字幕](customizing-a-visual-title.md) | 
| 更改轴范围 | 否 | 但是，您可以更改条柱计数或条柱间隔宽度（分布范围）。 |  | 
| 显示或隐藏轴线、网格线、轴标签和轴排序图标 | 是 |  | [Quick 中视觉类型上的轴和网格线](showing-hiding-axis-grid-tick.md) | 
| 改变视觉对象颜色 | 是 |  | [Quick 中视觉类型中的颜色](changing-visual-colors.md) | 
| 聚焦或排除元素 | 否 |  |  | 
| 排序 | 否 |  |  | 
| 执行字段聚合 | 否 | 直方图仅使用计数聚合。 |  | 
| 添加向下钻取 | 否 |  |  | 

## 创建直方图
<a name="create-histogram-chart"></a>

要创建直方图，请按照以下过程操作。

**创建直方图**

1. 在分析页面上，选择工具栏上的**可视化**。

1. 在应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在**视觉类型**窗格上，选择直方图图标。

1. 在 **Fields list (字段列表)** 窗格中，选择要在 **Value (值)** 字段井中使用的字段。**Count (计数)** 聚合会自动应用于该值。

   生成的直方图显示以下内容：
   + 默认情况下，X 轴显示 10 个条柱，表示所选度量中的间隔。您可以在下一步中自定义条柱。
   + Y 轴显示每个条柱中各个值的绝对计数。

1. （可选）在视觉对象控件上选择 **Format (格式)**，以更改直方图的格式。您可以按计数或宽度设置条柱格式，但不能两者同时采用。计数设置更改显示的条柱数。宽度设置更改每个条柱包含的间隔的宽度或长度。

## 设置直方图格式
<a name="format-histogram-chart"></a>

要设置直方图格式，请按照以下过程操作。

**设置直方图格式**

1. 选择要使用的直方图。它应该是突出显示的选择。视觉对象控件显示在直方图的右上角。

1. 选择视觉对象控件菜单上的齿轮图标，查看 **Format visual (设置视觉对象格式)** 选项。

1. 在**属性**窗格中，设置以下选项来控制直方图的显示：
   + **Histogram (直方图)** 设置。选择以下*某个*设置：
     + 条柱计数（选项 1）：X 轴上显示的条柱数。
     + 条柱宽度（选项 1）：每个间隔的宽度（或长度）。此设置控制要包含在每个条柱中的项目或事件数量。例如，如果数据以分钟为单位，则可将其设置为 10 以显示 10 分钟的间隔。
   + 使用以下设置，您可以探索为数据集直方图设置格式的最佳做法。例如，在某些情况下，某个条柱中可能会出现很高的峰值，而其他大多数条柱的峰值却很低。这不是一个有价值的视图。您可以单独或综合使用以下各项设置：
     + 更改 **X 轴**设置中**显示的数据点数**。

       默认情况下，Amazon Quick 最多可显示 100 个垃圾桶（存储桶）。如果要显示更多（最多可显示 1,000 个），请更改**显示的数据点数**的 X 轴设置。
     + 在 **Y 轴**设置中启用**对数刻度**。

       有时，您的数据不符合您想要的形状，这可能会产生误导性的结果。例如，如果形状向右偏斜过多，而无法正确辨识，则可以对其应用对数刻度。这样做不会对数据进行标准化；但是，这确实可以减少偏斜。
     + 显示 **Data labels (数据标签)**。

       您可以启用数据标签的显示以查看图表中的绝对计数。即使在大多数情况下不想显示这些标签，也可以在开发分析时启用它们。标签可以帮助您决定格式设置和筛选选项，因为它们可以显示出因为太小而无法呈现的条柱中的计数。

       要查看所有数据标签（即使重叠），请启用 **Allow labels to overlap (允许标签重叠)**。

1. （可选）更改其他视觉对象设置。有关更多信息，请参阅 [在 Amazon 中快速格式化](formatting-a-visual.md)。

## 了解直方图
<a name="histogram-understanding"></a>

虽然直方图看起来与条形图相似，其实它们非常不同。事实上，唯一的相似之处就是它们的外观，因为它们都使用条形。在直方图上，每个条形称为一个*条柱*或一个*桶*。

每个条柱都包含一个叫做*间隔*的值范围。当您将鼠标暂停在某个条柱上时，有关间隔的详细信息将显示在工具提示中，其中会显示两个用图象字符括起来的数字。图象字符的类型指示其中所括的数字是否是所选条柱内的间隔的一部分，如下所示：
+ 数字旁为方括号表示包含该数字。
+ 数字旁为圆括号表示不包含该数字。

例如，假设直方图中的第一个条形显示以下表示法。

```
[1, 10)
```

方括号表示数字 1 包含在第一个间隔中。圆括号表示不包含数字 10。

在同一直方图中，第二个条形显示以下表示法。

```
[10, 20)
```

在本例中，第二个间隔包含 10，不包含 20。数字 10 不能同时包含在两个间隔中，因此该表示法显示了哪个间隔包含它。

**注意**  
在直方图中用于标记间隔的模式来自标准数学表示法。以下示例使用一组数字（包括 10、20 以及它们之间的每一个数字）展示了可能的模式。  
[10，20] – 这是全封闭集。它的两端都为硬边界。
[10，21）– 这是半开放集。它的左端为硬边界，右端为软边界。
（9，20] – 这是半开放集。它的左端为软边界，右端为硬边界。
（9，21） – 这是全开放集。它的两端都为软边界。

由于直方图使用量化数据（数字）而不是定性数据，因此数据的分布有一个逻辑顺序。这就是所谓的*形状*。形状通常是根据每个条柱中的计数描述形状所具有的质量。包含较多数值的条柱形成*峰值*。包含较少数值的条柱在图表边缘形成*尾巴*，在峰值之间形成*低谷*。大多数直方图都具有以下某种形状：
+ 非对称或*偏斜*分布的值聚集在左侧或右侧（X 轴的低端或高端）附近。偏斜方向由数据的较长尾巴的位置而不是峰值的位置决定。这是因为此方向也描述了均值（平均值）的位置。在偏斜分布中，均值和中位数是两个不同的数字。偏斜分布的不同类型如下：
  + *负*偏斜或*左*偏斜 – 均值在峰值左侧的图表。左侧有一个较长的尾巴，右侧有一个峰值，后面跟一个较短的尾巴。
  + *正*偏斜或*右*偏斜 – 均值在峰值右侧的图表。右侧有一个较长的尾巴，左侧有一个峰值，有时前面会有一个较短的尾巴。
+ 对称或*正态*分布的形状在中心点两侧是完全对称的（例如，钟形曲线）。在正态分布中，均值和中位数是相同的值。正态分布的不同类型如下：
  + 正态分布或*单峰*分布 – 有一个中心峰值代表最常见值的图表。这通常称为钟形曲线或高斯分布。
  + 双峰 – 有两个峰值代表最常见值的图表。
  + 多峰 – 有三个或更多峰值代表最常见值的图表。
  + 均匀 – 没有高峰或低谷且数据分布相对均匀的图表。

下表介绍了直方图与条形图的不同之处。


| 直方图 | 条形图 | 
| --- | --- | 
| 直方图显示一个字段中值的分布。 | 条形图则会比较按维度分组的一个字段中的值。 | 
| 直方图将值分类到代表一系列值的条柱中，例如 1-10、10-20。 | 条形图则会绘制按类别分组的值。 | 
| 所有条柱的总和恰好等于所筛选数据中的全部值。 | 条形图则不需要显示所有可用的数据。您可以在视觉层面更改显示设置。例如，条形图可以仅显示前 10 类数据。 | 
| 重新排列条形会影响整个图表的意义。 | 可以按任意顺序排列条形，而不会改变整个图表的含义。 | 
| 条形之间没有间隔，表示这是连续数据。 | 条形之间有间隔，表示这是分类数据。 | 
| 如果直方图中包含一条线，它表示数据的一般形状。 | 如果条形图中包含一条线，则称为组合图，这条线表示与条形不同的度量。 | 

# 使用图像组件
<a name="image-component"></a>

使用图像组件将静态图像从桌面上传到快速分析。每张快速分析表最多支持 10 个图像组件。每个工作表 50 个视觉对象这一限制不包括图像组件。图像组件的文件大小不能超过 1MB。

图像组件支持以下文件格式：
+ `.bmp`
+ `.jpg/.jpeg`
+ `.png`
+ `.tiff`
+ `.webp`

使用以下步骤将图像组件添加到快速分析中：

**向快速分析中添加图像组件**

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

1. 打开要向其添加图像的快速分析。

1. 选择分析顶部工具栏中的**添加图像**按钮。

1. 您的桌面文件选择将打开。选择要上传的文件，然后选择**打开**。图像组件的文件大小不能超过 1MB。

1. 图像将上传到 Quick 并显示在分析中。

1. （可选）要添加替代文本或更新图像缩放选项，请选择图像右上角的**属性**图标以打开**属性**窗格。

1. （可选）要向图像添加[自定义工具提示](https://docs.aws.amazon.com/quicksuite/latest/userguide/customizing-visual-tooltips)，请打开**属性**窗格，选择**交互**，然后选择**添加操作**。图像组件不支持筛选操作。您还可以使用**交互**部分向图像组件添加自定义导航和 URL 操作。

1. （可选）要复制或替换图像，请选择图像右上角的**更多选项**省略号（三个点）图标，然后选择要执行的操作。

# 使用 KPIs
<a name="kpi"></a>

使用关键绩效指标 (KPI) 可以直观呈现关键值与其目标值之间的比较。

KPI 会显示值比较、正在比较的两个值以及为显示的数据提供上下文的视觉对象。您可以根据业务需求从一组预先设计的布局中进行选择。下图显示了使用迷你图的 KPI 视觉对象示例。

1. 在**视觉对象窗格**中选择 **添加 (\$1)** 下拉菜单。

1. 从“视觉对象类型”菜单中选择 KPI 图标。

## KPI 功能
<a name="kpi-features"></a>

要了解 Amazon Quick 中的 KPI 视觉类型支持的功能，请使用下表。


| 功能 | 支持？ | 评论 | 有关更多信息 | 
| --- | --- | --- | --- | 
| 更改标题显示 | 是 |  | [Quick 中视觉类型上的标题和字幕](customizing-a-visual-title.md) | 
| 删除标题 | 是 | 您可以选择不显示标题。 |  | 
| 更改比较方法 | 是 | 默认情况下，Amazon Quick 会自动选择一种方法。设置有自动、差异、百分比和差异百分比。 |  | 
| 更改显示的主要值 | 是 | 您可以选择比较 (默认) 或实际。 |  | 
| 显示或删除进度栏 | 是 | 您可以设置视觉对象格式以显示 (默认) 或不显示进度条。 |  | 

有关 KPI 格式设置选项的更多信息，请参阅 [KPI 选项](KPI-options.md)。

## 正在创建 KPI
<a name="create-KPI"></a>

要创建 KPI，请按照以下过程操作。

**创建 KPI**

1. 为您的数据集创建一个新的分析。

1. 在 **Visual types** 窗格中，选择 KPI 图标。

1. 从 **Fields list (字段列表)** 窗格中，将要使用的字段拖到相应的字段井中。您必须使用目标字段井指示的度量字段。如果您选择使用维度字段作为度量，则系统会对其自动应用 **Count** 聚合函数来创建数值。

   要创建 KPI，请将一个度量拖到 **Value** 字段井上。要将该值与目标值进行比较，请将另一个度量拖到 **Target value** 字段井上。

1. (可选) 选择视觉对象右上角的视觉对象菜单，然后选择 **Format visual** 可选择格式选项。

## 更改 KPI 的布局
<a name="KPI-layout"></a>

要更改 KPI 的布局，请按照以下过程操作。

**更改 KPI 的布局**

1. 导航到要更改的 KPI 视觉对象，然后选择 **KPI 布局**。

1. 在 **KPI 布局**窗格中，选择要使用的 KPI 布局。

# 使用图层地图
<a name="layered-maps"></a>

使用图层地图来可视化具有自定义地理边界的数据，例如国会选区、销售区域或用户定义的区域。使用图层地图，Quick 作者可以将 GeoJSON 文件上传到 Amazon Quick，这些文件在底图上塑造图层，并与快速数据结合以可视化相关的指标和维度。形状图层可以通过颜色、边框和不透明度来设置样式。快速创作者还可以通过工具提示和自定义操作为图层地图添加交互性。

**注意**  
Amazon Quick 图层地图视觉效果仅支持多边形形状。不支持线和点几何体。

下图显示了 Amazon Quick 中的图层地图视觉效果。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/layer-map.png)


## 使用分层地图创建形状图层
<a name="layered-maps-create"></a>

使用以下步骤在 Amazon Quick 中创建带有图层地图视觉效果的形状图层。

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

1. 打开要向其添加图层地图的快速分析。

1. 在应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在**视觉对象类型**窗格上，选择图层地图图标。

1. 分析中会出现一个空地图视觉对象，并提示您继续配置图层。选择**配置图层**以继续配置图层地图。

1. **图层属性**窗格在右侧打开。导航到**形状文件**部分，然后选择**上传形状文件**。

1. 选择要可视化的 GeoJSON 文件。文件必须是`.geojson`格式化的，并且不得超过 100 MB。

1. 导航到**数据**部分。

1. 对于**形状文件关键字段**，选择希望形状可视化的字段。

1. （可选）对于**数据集关键字段**，选择希望形状可视化的数据集字段。要为形状指定颜色，请添加一个色域。如果色域是度量，则形状使用渐变色。如果色域是维度，则形状使用分类着色。如果未为形状分配色域，请使用**图层属性**窗格的**样式**部分中的填充颜色选项为所有形状设置通用颜色。

1. （可选）要更改图层名称，请导航至**图层选项**部分，然后在**图层名称**输入中输入名称。

1. （可选）要更改填充或边框颜色，请导航至**样式**部分，然后选择要更改的对象旁边的颜色开关。要调整颜色的不透明度，请在眼睛图标旁边的输入框中输入百分比。如果没有为**数据集关键字段**分配色域，则可以使用填充颜色为所有形状设置通用颜色。

# 使用折线图
<a name="line-charts"></a>

对于以下情况，可以使用折线图比较度量值在一段时间的变化情况：
+ 一段时间内的一个度量，例如，按月份排列的销售总额。
+ 一段时间内的多个度量，例如，按月份排列的销售总额和销售净额。
+ 一段时间内某个维度的一个度量，例如，按航空公司排列的每日航班延误数。

折线图根据 Y 轴显示的范围显示一组度量或维度的各个值。面积折线图与常规折线图的不同之处在于，前者中的每个值使用图表的着色区域 (而不只是一条线) 表示，这让您能够更容易地评估不同项目值的差异。

由于堆叠面积折线图与其他折线图的工作方式不同，因此如果可以，则简化堆叠面积折线图。这样，受众不会试图解释数字。相反，他们可以专注于每组值与整体的关系。一种简化方法是通过减小轴的步长大小来删除屏幕左侧下方的数字。要执行此操作，请从视觉对象菜单中选择 **Options (选项) ** 图标。在 **Y 轴**下的**格式选项**中，输入 **2** 作为**步长**。

图表上的每一条线表示一段时间内的度量值。您可以交互式地查看图表上的值。将鼠标悬停在任意一条线上可看到弹出图例，其中显示了 **X 轴**上每条线的值。如果将鼠标悬停在数据点上，则可以在 **X 轴**上看到该特定点的**值**。

使用折线图可以比较一段时间内一个或多个度量或维度的值的变化情况。

在常规折线图中，每个值由一条线表示；在面积折线图中，每个值由图表的着色区域表示。

使用堆叠面积折线图可以比较一段时间内一个或多个度量组或维度组的值的变化情况。堆叠面积折线图显示 X 轴上每个组的总值。它们使用颜色分段来显示组中每个度量或维度的值。

未选择任何着色区域时，折线图最多可在 X 轴上显示 1 万个数据点。如果填充颜色，折线图最多可在 X 轴上显示 400 个数据点，并且最多可以显示 25 个着色数据点。有关超出该视觉对象类型的显示限制的数据的更多信息，请参阅[显示限制](working-with-visual-types.md#display-limits)。

## 折线图的功能
<a name="line-chart-features"></a>

可以使用下表了解折线图支持的功能。


| 功能 | 支持？ | 评论 | 有关更多信息 | 
| --- | --- | --- | --- | 
| 更改图例显示 | 是 |  | [Quick 中关于视觉类型的图例](customizing-visual-legend.md) | 
| 更改标题显示 | 是 |  | [Quick 中视觉类型上的标题和字幕](customizing-a-visual-title.md) | 
| 更改轴范围 | 是 | 您可以设置 Y 轴的范围。 | [在 Quick 中对视觉类型进行范围和缩放](changing-visual-scale-axis-range.md) | 
| 显示或隐藏轴线、网格线、轴标签和轴排序图标 | 是 |  | [Quick 中视觉类型上的轴和网格线](showing-hiding-axis-grid-tick.md) | 
| 添加第二根 Y 轴 | 是 |  | [创建双轴折线图](#dual-axis-chart) | 
| 改变视觉对象颜色 | 是 |  | [Quick 中视觉类型中的颜色](changing-visual-colors.md) | 
| 聚焦或排除元素 | 是，但有例外 | 您可以聚焦或排除图表上的任何折线，但以下情况除外： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/line-charts.html) 在上述情况下，您只能聚焦折线，但不能排除它。 |  [聚焦视觉对象元素](focusing-on-visual-elements.md) [排除视觉对象元素](excluding-visual-elements.md) | 
| 排序 | 是，但有例外 | 您可在 X axis (X 轴) 和 Value (值) 字段井中为数字度量进行数据排序。其他数据将自动按升序排序。 | [在 Amazon Quick 中对视觉数据进行分类](sorting-visual-data.md) | 
| 执行字段聚合 | 是 | 您必须将聚合应用于为值选择的字段，不能将聚合应用于为 X 轴和颜色选择的字段。 | [更改字段聚合](changing-field-aggregation.md) | 
| 添加向下钻取 | 是 | 您可以向 X axis 和 Color 字段井添加向下钻取级别。 | [在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md) | 

## 创建折线图
<a name="create-measure-line-chart"></a>

要创建折线图，请按照以下过程操作。

**创建折线图**

1. 在分析页面上，选择工具栏上的**可视化**。

1. 在应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在 **Visual types (视觉对象类型)** 窗格上，选择某个折线图图标。

1. 从 **Fields list (字段列表)** 窗格中，将要使用的字段拖到相应的字段井中。通常，您需要使用以目标字段井指示的维度或度量字段。如果您选择使用维度字段作为度量，则系统会对其自动应用 **Count** 聚合函数来创建数值。
   + 要创建单度量折线图，请将一个维度拖到 **X axis** 字段井上，并将一个度量拖到 **Value** 字段井上。
   + 要创建多度量折线图，请将一个维度拖到 **X axis** 字段井上，并将两个或多个度量拖到 **Value** 字段井上。将 **Color** 字段井留空。
   + 要创建多度量折线图，请将一个维度拖到 **X axis** 字段井上，将一个度量拖到 **Value** 字段井上，并将另一个维度拖到 **Color** 字段井上。

1. (可选) 通过将一个或多个其他字段拖到 **X axis** 或 **Color** 字段井上来添加向下钻取层。有关添加向下钻取的更多信息，请参阅[在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md)。

## 创建双轴折线图
<a name="dual-axis-chart"></a>

如果要在同一折线图中显示两个或多个指标，则可创建双轴折线图。

*双轴图表*是具有两根 Y 轴（一根轴在图表左侧，一根轴在图表右侧）的图表。例如，假设您创建了折线图。图中展示了一段时间内注册邮件列表和免费服务的访客数量。如果这两个度量之间的刻度随时间推移变化很大，则图表可能类似于以下折线图。由于度量之间的刻度变化很大，因此刻度较小的度量几乎维持在零处。

![\[包含两条线和一条轴的折线图的图像。一条线维持在零处。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/dual-axis-chart1.png)


 如果要在同一图表中显示这些度量，则可创建双轴折线图。以下示例展示了具有两条 Y 轴的同一折线图。

![\[上一个双轴折线图的图像。两条线现在都可见。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/dual-axis-chart2.png)


**创建双轴折线图**

1. 在分析中创建折线图。有关创建折线图的更多信息，请参阅[创建折线图](#create-measure-line-chart)。

1. 在**值字段井**中选择字段下拉菜单，再选择**显示位置：左侧 Y 轴**，然后选择**右侧 Y轴**。

   您也可以使用**属性**窗格创建双轴折线图：

   1. 从折线图右上角的菜单中选择**设置视觉对象格式**图标。

   1. 在打开的**属性**窗格中，选择**数据系列**。

   1. 在**数据系列**部分，为要置于单独轴上的值选择**在右轴上显示**图标。如果需要，可使用搜索栏快速查找值。  
![\[在“设置视觉对象格式”窗格“数据系列”部分的图像中，“在右轴上显示”图标用红框标出。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/dual-axis-chart3.png)

   图标会进行更新，指明该值显示在右轴上。图表会进行更新，显示有两根轴。

   **属性**窗格将使用以下选项进行更新：
   + 要将两条线的 Y 轴同步回单一轴，请选择**属性**窗格顶部的**单一 Y 轴**。
   + 要设置图表左侧轴的格式，请选择**左侧 Y 轴**。
   + 要设置图表右侧轴的格式，请选择**右侧 Y 轴**。

   有关轴线格式设置的更多信息，请参阅[轴线和网格线](showing-hiding-axis-grid-tick.md)。有关调整轴的范围和刻度的更多信息，请参见[范围和刻度](changing-visual-scale-axis-range.md)。

# 创建地图和地理空间图
<a name="geospatial-charts"></a>

您可以在 Quick 中创建两种类型的地图：点地图和填充地图。*点式地图*按大小显示各个位置的数据值之间的差异。*填充地图*按颜色深浅显示各个位置数据值之间的差异。

**重要**  
目前，某些 AWS 区域国家（包括中国）不支持 Quick 中的地理空间图表。  
如需帮助解决地理空间方面的问题，请参阅[地理空间故障排除](geospatial-troubleshooting.md)。

在开始创建地图之前，请执行以下操作：
+ 请确保数据集包含位置数据。*位置数据*是纬度值和经度值对应的数据。数据集的位置数据可以包含纬度列和经度列，也可以包含城市名称列。Quick 可以绘制纬度和经度坐标图。它还会识别地理组件，例如，国家/地区、州或区域、县或地区、城市和邮政编码。
+ 确保位置数据字段标记为地理空间数据类型。
+ 考虑创建地理层次结构。

有关使用地理空间数据（包括更改字段数据类型和创建地理空间层次结构）的更多信息，请参阅[添加地理空间数据](geospatial-data-prep.md)。

要了解有关在 Quick 中创建地图的更多信息，请参阅以下内容。

**Topics**
+ [创建点式地图](point-maps.md)
+ [创建填充地图](filled-maps.md)
+ [与地图交互](maps-interacting.md)

# 创建点式地图
<a name="point-maps"></a>

您可以在 Quick 中创建点地图，以按大小显示每个位置的数据值之间的差异。此类地图上的每个点均对应数据中的一个地理位置，例如国家/地区、州/省或城市。地图数据点大小表示**大小**字段井中字段的幅度相对于同一字段中的其他值的值。地图数据点颜色表示**颜色**字段井中的值。如果选择颜色字段，则**颜色**字段井中的字段值会显示在图例中。

使用以下步骤在 Quick 中创建点地图。

要在 Quick 中创建点地图，请确保具备以下条件：
+ 一个地理空间字段（例如国家/地区、州/省、城市、县/区或邮政编码）。您也可以使用纬度字段和经度字段。
+ 一个表示大小的数字字段（度量）。
+ （可选）用颜色表示的分类字段（维度）。

有关设置地理空间图格式的信息，请参阅[地图和地理空间图格式设置选项](https://docs.aws.amazon.com/quicksight/latest/user/geospatial-formatting)。

## 创建点式地图
<a name="point-maps-create"></a>

**创建点式地图**

1. 向分析添加新的视觉对象。有关启动分析的更多信息，请参阅[在 Quick Sight 中开始分析](creating-an-analysis.md)。有关向控制面板添加视觉对象的更多信息，请参阅[添加视觉对象](creating-a-visual.md#create-a-visual)。

1. 对于**视觉对象类型**，请选择**地图数据点**图标。该图标看起来像上面有个点的地球仪。

1. 将地理字段从**字段列表**窗格拖到**地理空间**字段井上，例如 `Country`。您也可以选择纬度或经度字段。

   随即会出现一个点式地图，数据中的各个位置都有一个点。

   如果该字段属于地理层次结构的一部分，则层次结构会显示在字段井中。

1. 将度量从**字段列表**窗格拖到**值**字段井上。

   地图上的点会更新，以便显示各个位置的值大小。

1. （可选）将维度从**字段列表**窗格拖到**颜色**字段井上。

   每个点都会更新，以便显示维度中各分类值对应的点。

# 创建填充地图
<a name="filled-maps"></a>

您可以在 Quick 中创建填充地图，通过不同的颜色深浅来显示每个位置的数据值之间的差异。

使用以下步骤在 Quick 中创建填充地图。

要在 Quick 中创建填充地图，请确保具备以下条件：
+ 地理空间字段（例如国家/地区、州/省、县/区或邮政编码）。
+ （可选）用颜色表示的数字字段（度量）。

## 创建填充地图
<a name="filled-maps-create"></a>

**创建填充地图**

1. 向分析添加新的视觉对象。有关启动分析的更多信息，请参阅[在 Quick Sight 中开始分析](creating-an-analysis.md)。有关向控制面板添加视觉对象的更多信息，请参阅[添加视觉对象](creating-a-visual.md#create-a-visual)。

1. 对于**视觉对象类型**，请选择**填充地图**的图标。

1. 将地理字段从**字段列表**窗格拖到**位置**字段井上，例如`Country`。

   出现一个填充地图，其中数据中的各个位置按其在数据集中出现的次数（计数）填充。

   如果该字段属于地理层次结构的一部分，则层次结构会显示在字段井中。

1. （可选）将维度从**字段列表**窗格拖到**颜色**字段井上，例如 `Sales`。

   每个地点都会更新，以便显示销售总额。

# 与地图交互
<a name="maps-interacting"></a>

在快速分析或已发布的仪表板中查看地图视觉对象时，您可以与之交互以浏览数据。所有数据都可以平移、放大、缩小以及自动缩放。

默认情况下，地图视觉对象始终根据基础数据进行缩放。当您在地图中平移或缩放到其他级别时，缩放数据图标会出现在地图右下角的放大和缩小图标上方。您可以使用此选项快速缩放回基础数据。

**在地图视觉对象中平移**
+ 单击地图视觉对象上的任意位置，然后向要平移地图的方向拖动光标。

**在地图视觉对象中放大或缩小**
+ 在地图视觉对象中，选择右下角的加号或减号图标。或者，您可以双击地图进行放大和 shift-double-click缩小。

**缩放回所有数据**
+ 在地图视觉对象上，选择缩放数据图标。平移或放大地图时会出现此图标。

# 使用小倍数
<a name="small-multiples"></a>

当您需要连续设置多个比较视觉对象时，请使用此功能。当您激活*小倍数*功能时，Amazon Quick 会创建一个装有小视觉效果的容器或架子，呈现。 side-by-side视觉对象的每个副本均包含一个数据视图。使用小倍数是一种全面了解业务的高效交互方式。

小倍数未列在调色板可视化图标中。相反，创建小倍数的选项在向其提供支持的视觉对象中以字段井的形式出现。

**向分析中添加小视觉对象**

1. 在折线图、条形图或饼图上，向**小倍数**字段井中添加一个字段。

1. 要查看小倍数，您需要放大存放小倍数的容器，即可同时看到所有倍数。

1. 要设置一组小倍数的格式，请从视觉对象的菜单中选择“设置视觉对象格式”（铅笔图标）。可以调整以下设置：
   + **布局**
     + **可见行**
     + **可见列**
     + **面板数量**
   + 面板标题选项（切换）
     + 字体大小和颜色
     + 字体粗细
     + 文本对齐方式
   + **面板顺序选项（切换）**

     线条粗细、样式和颜色
   + **面板装订线**（切换） 

     **Spacing**
   + **面板背景**（切换） 

     **Background color**

# 使用饼图
<a name="pie-chart"></a>

使用饼图可以比较维度中项目的值。此类图的最佳用途是显示总金额的百分比。

饼图中的每个楔形表示维度中的一个项目。楔形大小表示该项目表示的选定度量在整个维度中所占的比例。当精度不重要并且维度中的项目很少时，最好使用饼图。

要创建圆环图，请在 **Group/Color (组/颜色)** 字段井中使用一个维度。如果只有一个字段，该图会按行数显示值的划分。要按指标值显示维度值的划分，您可以将指标字段添加到 **Value (值)** 字段井。

饼图最多可为组或颜色显示 20 个数据点。有关 Amazon Quick 如何处理超出显示限制的数据的更多信息，请参阅[显示限制](working-with-visual-types.md#display-limits)。

## 饼图的功能
<a name="pie-chart-features"></a>

可以使用下表了解饼图支持的功能。


| 功能 | 支持？ | 评论 | 有关更多信息 | 
| --- | --- | --- | --- | 
| 更改图例显示 | 是 |  | [Quick 中关于视觉类型的图例](customizing-visual-legend.md) | 
| 更改标题显示 | 是 |  | [Quick 中视觉类型上的标题和字幕](customizing-a-visual-title.md) | 
| 更改轴范围 | 不适用 |  | [在 Quick 中对视觉类型进行范围和缩放](changing-visual-scale-axis-range.md) | 
| 显示或隐藏轴标签。 | 是 |  | [Quick 中视觉类型上的轴和网格线](showing-hiding-axis-grid-tick.md) | 
| 改变视觉对象颜色 | 是 |  | [Quick 中视觉类型中的颜色](changing-visual-colors.md) | 
| 聚焦或排除元素 | 是，但有例外 | 您可以聚焦或排除饼图中的楔形，但将日期字段用作维度的情况除外。在这种情况下，您只能聚焦楔形，但不能排除它。 |  [聚焦视觉对象元素](focusing-on-visual-elements.md) [排除视觉对象元素](excluding-visual-elements.md) | 
| 排序 | 是 | 您可以在为值、组或颜色选择的字段上排序。 | [在 Amazon Quick 中对视觉数据进行分类](sorting-visual-data.md) | 
| 执行字段聚合 | 是 | 您必须将聚合应用于为值选择的字段，不能将聚合应用于为组或颜色选择的字段。 | [更改字段聚合](changing-field-aggregation.md) | 
| 添加向下钻取 | 是 | 您可以向 Group/Color 字段井添加向下钻取级别。 | [在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md) | 

## 创建饼图
<a name="create-pie-chart"></a>

要创建饼图，请按照以下过程操作。

**创建饼图**

1. 在分析页面上，选择工具栏上的**可视化**。

1. 在应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在 **Visual types** 窗格中，选择饼图图标。

1. 从 **Fields list (字段列表)** 窗格中，将要使用的字段拖到相应的字段井中。通常，您需要使用以目标字段井指示的维度或度量字段。如果您选择使用维度字段作为度量，则系统会对其自动应用 **Count** 聚合函数来创建数值。

   要创建饼图，请将一个维度拖到 **Group/Color (组/颜色)** 字段井上。（可选）将一个度量拖到 **Value (值)** 字段井上。

1. (可选) 通过将一个或多个其他字段拖到 **Group/Color** 字段井上来添加向下钻取层。有关添加向下钻取的更多信息，请参阅[在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md)。

# 使用数据透视表
<a name="pivot-table"></a>

可以使用数据透视表显示两个维度的交集的度量值。

热图和数据透视表以类似表格的形式显示数据。如果需要识别趋势和离群值，请使用热图，因为它使用了颜色，能够帮您迅速找到目标。如果需要分析视觉对象上的数据，请使用数据透视表。

要创建数据透视表，请至少选择任意数据类型的一个字段，然后选择数据透视表图标。Amazon Quick 创建表格并使用相交行值的列值计数填充单元格值。通常，您可以选择一个度量以及可通过该度量测量的两个维度。

数据透视表支持向下和向右滚动。您最多可以添加 20 个字段作为行，并添加 20 个字段作为列。最多支持 50 万条记录。

使用数据透视表可以执行以下操作：
+ 可以指定多个度量值来填充表的单元格值，以便查看一系列数据
+ 可以对数据透视表的列和行进行聚类，以显示按相关维度分组的子类别的值
+ 对数据透视表行或列中的值进行排序
+ 应用统计函数
+ 为行和列添加总计和小计
+ 使用无限滚动
+ 转置行和列使用的字段
+ 创建自定义总计聚合

要轻松地转置数据透视表上行和列使用的字段，请选择视觉对象右上角附近的方向图标 (![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/pivot-orientation.png))。要查看用于显示和隐藏总计和小计、设置视觉对象格式或将数据导出到 CSV 文件的选项，请选择右上角的菜单项。

与所有视觉对象类型一样，您可以添加和删除字段。您还可以更改与视觉对象关联的字段、更改字段聚合以及更改日期字段粒度。此外，您可以突出或排除行或列。有关如何对数据透视表进行上述更改的更多信息，请参阅[在 Amazon Quick 中更改视觉对象使用的字段](changing-visual-fields.md)。

有关为数据透视表设置格式的信息，请参阅[在 Amazon 中快速格式化](formatting-a-visual.md)。

有关数据透视表的自定义总计聚合的信息，请参阅[自定义总值](tables-pivot-tables-custom-totals.md)。

**Topics**
+ [数据透视表的功能](#pivot-table-features)
+ [创建数据透视表](create-pivot-table.md)
+ [数据透视表值定向](pivot-table-value-orientation.md)
+ [展开和折叠数据透视表聚类](expanding-and-collapsing-clusters.md)
+ [在 Quick 中显示和隐藏数据透视表列](hiding-pivot-table-columns.md)
+ [在快速中对数据透视表进行排序](sorting-pivot-tables.md)
+ [在数据透视表中使用表计算](working-with-calculations.md)
+ [数据透视表限制](pivot-table-limitations.md)
+ [数据透视表最佳实践](pivot-table-best-practices.md)

## 数据透视表的功能
<a name="pivot-table-features"></a>

数据透视表不显示图例。

可以使用下表了解数据透视表支持的功能。


| 功能 | 支持？ | 评论 | 有关更多信息 | 
| --- | --- | --- | --- | 
| 更改图例显示 | 否 |  | [Quick 中关于视觉类型的图例](customizing-visual-legend.md) | 
| 更改标题显示 | 是 |  | [Quick 中视觉类型上的标题和字幕](customizing-a-visual-title.md) | 
| 更改轴范围 | 不适用 |  | [在 Quick 中对视觉类型进行范围和缩放](changing-visual-scale-axis-range.md) | 
| 改变视觉对象颜色 | 否 |  | [Quick 中视觉类型中的颜色](changing-visual-colors.md) | 
| 聚焦或排除元素 | 是，但有例外 | 您可以聚焦或排除任意列或行，但将日期字段用作维度的情况除外。在这种情况下，您只能聚焦使用日期维度的列或行，但不能排除它。 |  [聚焦视觉对象元素](focusing-on-visual-elements.md) [排除视觉对象元素](excluding-visual-elements.md) | 
| 排序 | 是 | 您可以按字母顺序或按指标升序或降序对行或列字段井中的字段进行排序。 | [在 Amazon Quick 中对视觉数据进行分类](sorting-visual-data.md) [在快速中对数据透视表进行排序](sorting-pivot-tables.md)  | 
| 执行字段聚合 | 是 | 您必须将聚合应用于为值选择的一个或多个字段。您无法将聚合应用于为行或列选择的字段。 如果您选择创建多度量数据透视表，则可以对不同的度量应用不同类型的聚合。例如，您可以显示销售额与最大折扣金额的总和。 | [更改字段聚合](changing-field-aggregation.md) | 
| 添加向下钻取 | 否 |  | [在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md) | 
| 显示和隐藏总计和小计 | 是 | 您可以显示或隐藏行和列的总计和小计。 折叠行或列时，指标会自动汇总以显示小计。如果您使用表计算，请使用聚合来显示汇总。  |  | 
| 导出或复制数据 | 是 |  您可以将所有数据导出到 CSV 文件。 您可以选择和复制单元格的内容。  | [从视觉对象中导出数据](exporting-data.md) | 
| 条件格式设置 | 是 | 您可以为值、小计和总计添加条件格式。 | [在 Quick 中对视觉类型进行条件格式化](conditional-formatting-for-visuals.md) | 

**Topics**

# 创建数据透视表
<a name="create-pivot-table"></a>

要创建数据透视表，请按照以下过程操作。

**创建数据透视表**

1. 在分析页面上，选择工具栏上的**可视化**图标。

1. 在**视觉对象**窗格上，选择 **\$1 添加**，然后选择数据透视表图标。

1. 从**字段列表**窗格中选择要包含的字段。Amazon Quick 会自动将它们放入田间油井中。

   要更改某个字段的放置位置，请将其拖动到相应的字段井中。通常，您可以使用以目标字段井指示的维度或度量字段。如果您选择使用维度字段作为度量，则系统会对其自动应用 **Count** 聚合函数来创建数值。
   + 要创建单度量数据透视表，请将一个维度拖到 **Rows** 字段井上，将另一个维度拖到 **Columns** 字段井上，并将一个度量拖到 **Values** 字段井上。
   + 要创建多度量数据透视表，请将一个维度拖到 **Rows** 字段井上，将另一个维度拖到 **Columns** 字段井上，将两个或多个度量拖到 **Values** 字段井上。
   + 要创建聚类数据透视表，请将一个或多个维度拖到 **Rows** 字段井上，将一个或多个维度拖到 **Columns** 字段井上，并将一个度量拖到 **Values** 字段井上。

   如果需要，您还可以为所有数据透视表字段井选择多个字段。这样可以将多度量与聚类数据透视表方法结合使用。

**注意**  
要查看计算字段的汇总，请务必使用聚合。例如，具有 `field-1 / field-2 `的计算字段在汇总时不会显示摘要。不过，`sum(field-1) / sum(field-2) ` 会显示汇总摘要。

## 选择布局
<a name="pivot-table-layout"></a>

在 Amazon Quick 中创建数据透视表时，您可以使用表格和层次结构布局选项进一步自定义数据的显示方式。对于使用表格布局的数据透视表，每个行字段均显示在相应列中。对于使用层次结构布局的数据透视表，所有行字段均显示在一列中。缩进用于区分不同字段的行标题。要更改数据透视表视觉对象的布局，请打开要更改的数据透视表的**设置视觉对象格式**菜单，然后从**透视选项**部分选择所需布局选项。

根据选择的数据透视表视觉对象布局，可以使用不同的格式设置选项。有关表格式和层次结构数据透视表之间格式设置差异的更多信息，请参阅 [Quick 中的表格和数据透视表格式选项](format-tables-pivot-tables.md)。

# 数据透视表值定向
<a name="pivot-table-value-orientation"></a>

您可以选择以基于列或行的格式显示数据透视表。默认为列式。更改为行式时，系统会将具有值名称的列添加到行标题列的右侧。

**更改数据透视表格式**

1. 在分析页面上，选择要编辑的数据透视表视觉对象。

1. 通过选择视觉对象顶部的字段井，展开 **Field wells (字段井)** 窗格。

1. 在 **Values** 字段井上，选择以下选项之一：
   + 选择 **Column** 为列式。
   + 选择 **Row** 为行式。
**注意**  
如果只使用一个指标，则可以通过使用 **Hide single metric (隐藏单个指标)** 选项设置视觉对象的格式和样式来消除重复的标题。

# 展开和折叠数据透视表聚类
<a name="expanding-and-collapsing-clusters"></a>

如果在数据透视表中使用分组的列或行，则可以展开或折叠分组以在视觉对象中显示或隐藏其数据。

**展开或折叠数据透视表组**

1. 在分析页面上，选择要编辑的数据透视表视觉对象。

1. 选择下列选项之一：
   + 要折叠组，请选择字段名称附近的折叠图标。
   + 要展开组，请选择字段名称附近的展开图标。折叠图标显示一个减号。展开图标显示一个加号。

   在下面的屏幕截图中，`Customer Region` 和 `Enterprise` 段处于扩展状态，`SMB` 和 `Startup` 处于折叠状态。折叠组时，其数据将在行或列中汇总。  
![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/pivot-table-collapse.png)

# 在 Quick 中显示和隐藏数据透视表列
<a name="hiding-pivot-table-columns"></a>

默认情况下，创建数据透视表时会显示所有列、行及其字段值。您可以在不必更改数据透视表值的情况下，隐藏不希望在数据透视表中显示的列和行。如果数据透视表中有多个度量，也可以隐藏值。

您可以随时选择在数据透视表中显示任何隐藏字段。若您将视觉对象作为控制面板的一部分进行发布，任何订阅该控制面板的人均可将数据透视表导出为逗号分隔值（CSV）或 Microsoft Excel 文件。订阅者可以选择仅导出可见字段或导出所有字段。有关更多信息，请参阅 [将数据从控制面板导出到 CSV](export-or-print-dashboard.md#export-dashboard-to-csv)。

**隐藏数据透视表中的列或行**

1. 在分析中选择要使用的数据透视表视觉对象。

1. 在 “**行**”、“**列**” 或 “**值**” 字段栏中选择三点菜单，然后选择 “**隐藏**”。

**显示数据透视表中的所有隐藏字段**

1. 在分析中选择要使用的数据透视表视觉对象。

1. 在**字段井**中选择任何字段，然后选择**显示所有隐藏字段**。

# 在快速中对数据透视表进行排序
<a name="sorting-pivot-tables"></a>

在 Amazon Quick 中，您可以按**行和**列**字段中的字段对数据透视表中的值进行排**序，也可以按数据透视表中的列标题快速对数据透视表中的值进行排序。在数据透视表中，您可以按字母顺序或按度量分别对行和列进行排序。

**注意**  
如果按度量对数据透视表进行排序，您无法运行“Total”、“Difference”和“Percent Difference”表计算。有关在数据透视表中使用表计算的更多信息，请参阅[在数据透视表中使用表计算](working-with-calculations.md)。

## 了解数据透视表中的排序
<a name="sorting-pivot-tables-understanding"></a>

当数据透视表中有多个窗格时，排序将独立应用于每个窗格。例如，左侧数据透视表中的 `Segment` 列按 `Cost` 升序排序。假设有多个窗格，则从头开始对每个窗格进行排序，并且每个窗格（对于 `Segment`）中的行按成本从低到高进行排序。右侧表格应用相同排序方式，但排序应用于整个表，如下所示。

![\[用红框突出显示排序的数据透视表的图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/sorting-pivot-tables2.png)


当您对数据透视表应用多种排序时，将按从外部维度到内部维度的方式应用排序。请看下面的数据透视表示例图像。`Customer Region` 列按 `Cost` 降序排序（如橙框所示）。`Channel` 列按收入目标升序排序（如蓝框所示）。

![\[显示已排序的两个度量值列的数据透视表的图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/sorting-pivot-tables3.png)


## 使用行标头或列标头对数据透视表进行排序
<a name="sorting-pivot-tables-columns"></a>

要使用行标头或列标头对数据透视表进行排序，请按照以下过程操作。

**使用表标头对表格式数据透视表中的值进行排序**

1. 在表格式数据透视表中，选择要进行排序的标头。

1. 在**排序依据**中，选择要作为排序依据的字段和排序顺序。

   您可以按字母顺序 a-z 或 z-a 对维度字段进行排序，也可以按度量升序或降序对其进行排序。  
![\[使用列标头对数据透视表中的值进行排序的 .gif 动画文件。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/sorting-pivot-table7.gif)

## 使用值标头对数据透视表进行排序
<a name="sorting-pivot-tables-values"></a>

要使用值标头对数据透视表进行排序，请按照以下过程操作。

**使用值标头对数据透视表进行排序**

1. 在数据透视表中，选择要进行排序的值标头。

1. 选择**升序**或**降序**。  
![\[使用值标头对数据透视表中的值进行排序的 .gif 动画文件。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/sorting-pivot-tables-value.gif)

   按数据透视表中的值标头排序也适用于小计。

## 使用字段井对表格式数据透视表进行排序
<a name="sorting-pivot-tables-field-wells"></a>

要使用字段井对表格式数据透视表中的值进行排序，请按照以下过程操作。

**使用字段井对表格式数据透视表中的值进行排序**

1. 在分析页面上，选择要排序的表格式数据透视表。

1. 展开**字段井**。

1. 在**行**或**列**字段井中，选择要进行排序的字段，然后选择**排序依据**字段的排序方式。

   您可以按字母顺序 a-z 或 z-a 对**行**或**列**字段井中的维度字段进行排序，也可以按度量升序或降序对其进行排序。您还可以为在字段井中选择的字段选择折叠或展开所有行或列。您也可以移除该字段，或者将其替换为其他字段。
   + 要按字母顺序对维度字段进行排序，请将光标悬停在**行**或**列**字段井的字段上，然后选择 a-z 或 z-a 排序图标。  
![\[“行”字段井中字段的图像，其中排序依据字段和按字母顺序排序的图标用红框表示。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/sorting-pivot-tables1.png)
   + 要按度量对维度字段进行排序，请将光标悬停在**行**或**列**字段井的字段上。从列表中选择度量，然后选择升序或降序排序图标。  
![\[“行”字段井中字段的图像，其中字段依据字段和排序图标用红框表示。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/sorting-pivot-tables4.png)

如果您想更好地控制如何将排序应用于数据透视表，也可以自定义排序选项。

**使用**排序选项**创建排序**

1. 在分析页面上，选择要排序的数据透视表。

1. 展开**字段井**。

1. 在**行**或**列**字段井中选择要进行排序的字段，然后选择**排序选项**。

1. 在左侧打开的**排序选项**窗格中，指定以下选项：

   1. 对于**排序依据**，从下拉列表中选择字段。

   1. 对于**聚合**，从列表中选择一个聚合。

   1. 在**排序顺序**中，选择**升序**或**降序**。

   1. 选择**应用**。

## 使用字段井对层次结构数据透视表进行排序
<a name="pivot-table-sorting-hierarchy"></a>

对于表格式数据透视表，**行**字段井中的每个字段均有单独的标题单元格。对于层次结构数据透视表，所有行字段都显示在一列中。要对这些行字段进行排序、折叠和展开这些字段，请选择**行**标签打开**组合行字段**菜单，然后选择所需选项。可以从**组合行字段菜单**对层次结构数据透视表中的每个字段单独进行排序。

![\[组合行字段菜单的图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/pivot-table-combined-row-fields-menu.png)


字段井菜单提供了更高级的格式设置选项，例如**隐藏**和**移除**。

# 在数据透视表中使用表计算
<a name="working-with-calculations"></a>

您可以使用表计算向包含度量 (数字值) 的数据透视表单元格应用统计函数。下面几节介绍可在计算中使用哪些函数以及如何应用或删除这些函数。

单元格值的数据类型会自动更改以适合您的计算。例如，假设您将 **Rank** 函数应用于货币数据类型。值将显示为整数而不是货币，因为排名的度量单位不是货币。同样，如果您应用 **Percent difference** (差额百分比) 函数，单元格值将显示为百分比。

**Topics**
+ [添加和删除数据透视表计算](adding-a-calculation.md)
+ [数据透视表计算函数](supported-functions.md)
+ [应用数据透视表计算的方法](supported-applications.md)

# 添加和删除数据透视表计算
<a name="adding-a-calculation"></a>

要在数据透视表上添加、修改和删除表计算，请按照以下过程操作。

**Topics**
+ [添加数据透视表计算](add-a-calculation.md)
+ [更改计算的应用方式](change-how-a-calculation-is-applied.md)
+ [移除计算](remove-a-calculation.md)

# 添加数据透视表计算
<a name="add-a-calculation"></a>

要向数据透视表添加表计算，请按照以下过程操作。

**向数据透视表添加表计算**

1. 通过选择视觉对象底部附近的字段井，展开**字段井**窗格。

1. 在 **Values** 字段井中选择要应用表计算的字段，选择 **Add table calculation**，然后选择要应用的函数。

**注意**  
如果按度量对数据透视表进行排序，您无法运行“Total”、“Difference”和“Percent Difference”表计算。要使用这些表计算，请从数据透视表中移除排序。

# 更改计算的应用方式
<a name="change-how-a-calculation-is-applied"></a>

要更改将表计算应用到数据透视表的方式，请按照以下过程操作。

**更改将表计算应用于数据透视表的方式**

1. 通过选择视觉对象顶部的字段井，展开 **Field wells (字段井)** 窗格。

1. 在 **Values (值)** 字段井中选择具有要更改的表计算的字段，选择 **Calculate as (计算方式)**，然后选择要应用计算的方式。

# 移除计算
<a name="remove-a-calculation"></a>

要从数据透视表删除表计算，请按照以下过程操作。

**从数据透视表中移除表计算**

1. 通过选择视觉对象底部附近的字段井，展开**字段井**窗格。

1. 在**值**字段井中选择要移除表计算的字段，然后选择**移除**。

# 数据透视表计算函数
<a name="supported-functions"></a>

您可以在数据透视表计算中使用以下函数。

**Topics**
+ [Running total](#running-total)
+ [区别](#difference)
+ [Percentage difference](#percent-difference)
+ [Percent of total](#percent-of-total)
+ [Rank](#rank)
+ [百分位数](#percentile)

您可以将列出的函数应用于以下数据：

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/running-total1.png)


![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/running-total1.png)


## Running total
<a name="running-total"></a>

**Running total** 函数计算给定单元格值与其之前的所有单元格值的总和。此总和的计算方法为 `Cell1=Cell1, Cell2=Cell1+Cell2, Cell3=Cell1+Cell2+Cell3`，依此类推。

**计算方式**选择**表横向**，沿表行应用 **Running total** 函数会得到以下结果。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/running-total2.png)


## 区别
<a name="difference"></a>

**Difference** 函数计算单元格值与其之前单元格值的差值。此差值的计算方法为 `Cell1=Cell1-null, Cell2=Cell2-Cell1, Cell3=Cell3-Cell2,`，依此类推。由于 `Cell1-null = null`，Cell1 值始终为空。

**计算方式**选择**表横向**，沿表行应用 **Difference** 函数得到以下结果。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/difference.png)


## Percentage difference
<a name="percent-difference"></a>

**Percentage Difference** 函数计算单元格值与其之前单元格值的百分比差值，然后除以其之前单元格的值。此值的计算方法为 `Cell1=(Cell1-null)/null, Cell2=(Cell2-Cell1)/Cell1, Cell3=(Cell3-Cell2)/Cell2,`，依此类推。由于 `(Cell1-null)/null = null`，Cell1 值始终为空。

**计算方式**选择**表横向**，沿表行应用 **Percentage Difference** 函数得到以下结果。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/percentage-difference.png)


## Percent of total
<a name="percent-of-total"></a>

**Percent of Total** 函数计算给定单元格占计算中包含的所有单元格总和的百分比。此百分比的计算方法为 `Cell1=Cell1/(sum of all cells), Cell2=Cell2/(sum of all cells),`，依此类推。

**计算方式**选择**表横向**，沿表行应用 **Percent of Total** 函数得到以下结果。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/percent-of-total.png)


## Rank
<a name="rank"></a>

**Rank** 函数计算单元格值与计算中包含的其他单元格值相比较的排名。Rank 始终将最高值显示为 1，最低值等于计算中包含的单元格数。如果两个或更多单元格具有相等的值，则它们排名相同，但在排名中各占一位。因此，下一个最高值的排名将下降该值所占的单元格数减 1。例如，如果对 5,3,3,4,3,2 排名，它们的排名将是 1,3,3,2,3,6。

例如，假设您具有以下数据。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/rank.png)


**计算方式**选择**表横向**，沿表行应用 **Rank** 函数得到以下结果。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/rank2.png)


## 百分位数
<a name="percentile"></a>

**Percentile** 函数计算的是计算中包含的等于或低于给定单元格值的单元格值百分比。

此百分比的计算方式如下：

```
percentile rank(x) = 100 * B / N

Where:
   B = number of scores below x
   N = number of scores
```

**计算方式**选择**表横向**，沿表行应用 **Percentile** 函数得到以下结果。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/percentile.png)


# 应用数据透视表计算的方法
<a name="supported-applications"></a>

您可以按照下述方式应用表计算。表计算一次仅应用于一个字段。因此，如果数据透视表包含多个值，则计算只应用到表示已应用计算的字段的单元格。

**Topics**
+ [表横向](#table-across)
+ [表纵向](#table-down)
+ [表先横后纵](#table-across-down)
+ [表先纵后横](#table-down-across)
+ [组横向](#group-across)
+ [组纵向](#group-down)
+ [组先横后纵](#group-across-down)
+ [组先纵后横](#group-down-across)

## 表横向
<a name="table-across"></a>

使用 **Table across (表横向)** 将沿数据透视表中的行应用计算，而不考虑分组。这种应用方式是默认值。例如，使用以下数据透视表。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/sample-pivot.png)


使用**表横向**方式应用 **Running total** 函数会得到以下结果（在最后一列中显示行总计）。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/table-across.png)


## 表纵向
<a name="table-down"></a>

使用 **Table down (表纵向)** 将沿数据透视表中的列应用计算，而不考虑分组。

使用**表纵向**方式应用 **Running total** 函数会得到以下结果（在最后一行中显示列总计）。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/table-down.png)


## 表先横后纵
<a name="table-across-down"></a>

使用 **Table across down (表先横后纵)** 将沿数据透视表中的行应用计算，得到结果后再沿数据透视表中的列应用计算。

使用**表先横后纵**应用 **Running total** 函数会得到以下结果。在这种情况下，总计将同时纵向和横向求和，总数显示在右下方的单元格中。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/running-total-across-down.png)


在这种情况下，假设您使用**表先横后纵**方式应用 **Rank** 函数。这样做意味着先沿表行确定初始排名，然后这些排名再沿着列排名。这种方法会向您提供以下结果。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/rank-table-across-down.png)


## 表先纵后横
<a name="table-down-across"></a>

使用 **Table down across (表先纵后横)** 将沿数据透视表中的列应用计算。然后，获取结果并沿数据透视表中的行对结果重新应用计算。

您可以使用**表先纵后横**方式应用 **Running total** 函数得到以下结果。在这种情况下，总计将同时纵向和横向求和，总数显示在右下方的单元格中。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/running-total-down-across.png)


您可以使用**表先纵后横**方式应用 **Rank** 函数得到以下结果。在这种情况下，初始排名是沿表列确定的。然后，这些排名再沿着行进行排名。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/rank-table-down-across.png)


## 组横向
<a name="group-across"></a>

使用 **Group across (组横向)** 将在分组边界（由应用到列的第二级分组确定）内沿数据透视表中的行应用计算。例如，如果先按字段 2 分组，然后按字段 1 分组，则在字段 2 级别应用分组。如果您按字段 3、字段 2 和字段 1 的顺序分组，则会重新在字段 2 级别应用分组。没有任何分组时，**Group across (组横向)** 会返回与 **Table across (表横向)** 相同的结果。

例如，使用以下数据透视表，其中的列先按 `Service Line` 分组，然后按 `Consumption Channel` 分组。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/sample-pivot.png)


您可以使用**组横向**方式应用 **Running total** 函数得到以下结果。在这种情况下，函数在每个服务类别分组的列确定的边界内沿行应用。`Mobile` 列针对给定行表示的 `Customer Region` 和 `Date`（年份），显示给定 `Service Line` 的两个 `Consumption Channel` 值的总计。例如，突出显示的单元格表示针对名为 `Billing` 的 `Service Line` 中的所有 `Consumption Channel` 值，在 `2012` 年份的 `APAC` 区域的总计。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/group-across.png)


## 组纵向
<a name="group-down"></a>

使用 **Group down (组纵向)** 将在分组边界（由应用到行的第二级分组确定）内沿数据透视表中的列应用计算。例如，如果先按字段 2 分组，然后按字段 1 分组，则在字段 2 级别应用分组。如果您按字段 3、字段 2 和字段 1 的顺序分组，则会重新在字段 2 级别应用分组。没有任何分组时，**Group down (组纵向)** 将返回与 **Table down (表纵向)** 相同的结果。

例如，使用以下数据透视表，其中的行先按 `Customer Region` 分组，然后按 `Date`（年份）分组。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/sample-pivot.png)


您可以使用**组纵向**方式应用 **Running total** 函数得到以下结果。在这种情况下，函数在每个 `Customer Region` 分组的行确定的边界内沿列应用。`2014` 行显示对于给定列表示的 `Service Line` 和 `Consumption Channel`，在给定 `Customer Region` 的所有年份的总计。例如，突出显示的单元格表示对于报告中显示的所有 `Date`（年份）值，`Mobile` 渠道的 `Billing` 服务的 `APAC` 区域总计。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/group-down.png)


## 组先横后纵
<a name="group-across-down"></a>

使用 **Group across down (组先横后纵)** 将在分组边界（由应用到列的第二级分组确定）内沿行应用计算。然后，该函数沿数据透视表中的列对得到的结果重新应用计算。同样在分组边界（由应用到行的第二级分组确定）内重新应用计算。

例如，如果先按字段 2 对行或列分组，然后按字段 1 分组，则在字段 2 级别应用分组。如果您按字段 3、字段 2 和字段 1 的顺序分组，则会重新在字段 2 级别应用分组。没有任何分组时，**Group across down (组先横后纵)** 会返回与 **Table across down (表先横后纵)** 相同的结果。

例如，使用以下数据透视表，其中的列先按 `Service Line` 分组，然后按 `Consumption Channel` 分组。行先按 `Customer Region` 分组，然后按 `Date`（年份）分组。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/sample-pivot.png)


您可以使用**组先横后纵**方式应用 **Running total** 函数得到以下结果。在这种情况下，总计在分组边界内先纵向后横向求和。此处，这些边界对于行来说为 `Customer Region`，对于列来说为 `Service Line`。分组右下角的单元格中为总计。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/running-total-group-across-down.png)


您可以使用**组先横后纵**方式应用 **Rank** 函数得到以下结果。在这种情况下，函数首先在每个 `Service Line` 分组的边界内沿行应用。然后向第一次计算的结果再次应用函数，这次在每个 `Customer Region` 分组确定的边界内沿列应用。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/rank-group-across-down.png)


## 组先纵后横
<a name="group-down-across"></a>

使用 **Group down across (组先纵后横)** 将在分组边界（由应用到行的第二级分组确定）内沿列应用计算。然后，Amazon Quick 获取结果并将计算结果重新应用于数据透视表的各行。同样，它在分组边界内 (由应用到列的第二级分组确定) 重新应用计算。

例如，如果先按字段 2 对行或列分组，然后按字段 1 分组，则在字段 2 级别应用分组。如果您按字段 3、字段 2 和字段 1 的顺序分组，则会重新在字段 2 级别应用分组。没有任何分组时，**Group down across (组先纵后横)** 会返回与 **Table down across (表先纵后横)** 相同的结果。

例如，使用以下数据透视表。列先按 `Service Line` 分组，然后按 `Consumption Channel` 分组。行先按 `Customer Region` 分组，然后按 `Date`（年份）分组。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/sample-pivot.png)


您可以使用**组先纵后横**方式应用 **Running total** 函数得到以下结果。在这种情况下，总计在分组边界内先纵向后横向求和。在这种情况下，这些边界对于列来说为 `Service Category`，对于行来说为 `Customer Region`。将在分组的右下角单元格中显示总计。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/running-total-group-across-down.png)


您可以使用**组先纵后横**方式应用 **Rank** 函数得到以下结果。在这种情况下，函数首先在每个 `Customer Region` 分组确定的边界内沿列应用。然后向第一次计算的结果再次应用函数，这次在每个 `Service Line` 分组确定的边界内沿行应用。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/rank-group-down-across.png)


# 数据透视表限制
<a name="pivot-table-limitations"></a>

以下限制适用于数据透视表：
+ 您可以创建最多包含 50 万条记录的数据透视表。
+ 您可以添加行和列字段值的任意组合，字段值总和最多为 40。例如，若有 10 个行字段值，则最多可以添加 30 个列字段值。
+ 您只能在非聚合值上创建数据透视表计算。例如，如果您创建一个作为度量总和的计算字段，则无法同时向此字段添加数据透视表计算。
+ 如果您正在按自定义指标进行排序，则在删除自定义指标排序之前，无法添加表计算。
+ 如果您正在使用表计算，然后添加自定义指标，则无法按自定义指标进行排序。
+ 对于由不同值计数汇总的指标的表计算，总计和小计是空白的。

# 数据透视表最佳实践
<a name="pivot-table-best-practices"></a>

最好只部署很少的行、列、指标和表计算，而不要在一个数据透视表中提供所有可能的组合。如果包含的太多，查看器可能不堪重负，而且还可能遇到基础数据库的计算限制问题。

要降低复杂性并减少出错可能性，可以执行以下操作：
+ 应用筛选器以减少视觉对象中包含的数据。
+ 在 **Row (行)** 和 **Column (列)** 字段井中使用尽量少的字段。
+ 在 **Values (值)** 字段井中使用尽量少的字段。
+ 创建额外数据透视表，让每个数据透视表显示较少的指标。

在某些情况下，企业需要检查许多相互关系的指标。在这些情况下，最好在同一个控制面板上使用多个视觉对象，每个视觉对象显示一个指标。可以减小控制面板上视觉对象的大小，并将它们并置以形成分组。如果查看器根据一个视觉对象做出的决定带来了对另一个视图的需求，则您可以部署自定义 URL 操作，以便根据用户所做的选择启动另一个控制面板。

最好把视觉对象看作是构建块。不要将一个视觉对象用于多种目的，一个视觉对象应当只促进重大业务决策的一个方面。查看器应该有足够的数据来做出明智的决定，而不是迷失在各种可能性中。

# 使用雷达图
<a name="radar-chart"></a>

您可以使用雷达图（也称为蜘蛛图）在 Amazon Quick 中可视化多变量数据。在雷达图中，多个常用变量上绘制了一组或多组值。每个变量均有独立的轴，每个轴围绕中心点呈放射状排列。每个轴上绘制了单个观测结果的数据点，各点相互连接形成多边形。可以在单个雷达图中绘制多个观测结果以显示多个多边形，这样可以更轻松地快速找到多个观测结果的离群值。

在 Quick 中，您可以通过将字段拖放到 “类别”、“值” 和 “颜色” 字段井中，沿着其**类别**、**值**或**颜色**轴组织雷达图。如何选择字段井中字段的分配方式决定绘制数据的轴。

下图显示了雷达图示例。

![\[按部门绘制员工满意度变量的雷达图。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/radar-chart-example.png)


## 雷达图的功能
<a name="radar-chart-features"></a>

要了解雷达图支持的功能，请参考下表内容。


****  

| 功能 | 支持？ | 评论 | 有关更多信息 | 
| --- | --- | --- | --- | 
| 更改图例显示 | 是 |  | [Quick 中关于视觉类型的图例](customizing-visual-legend.md) | 
| 更改标题显示 | 是 |  | [Quick 中视觉类型上的标题和字幕](customizing-a-visual-title.md) | 
| 更改轴范围 | 是 |  | [在 Quick 中对视觉类型进行范围和缩放](changing-visual-scale-axis-range.md) | 
| 改变视觉对象颜色 | 是 |  | [Quick 中视觉类型中的颜色](changing-visual-colors.md) | 
| 聚焦或排除元素 | 是 |  |  [聚焦视觉对象元素](focusing-on-visual-elements.md) [排除视觉对象元素](excluding-visual-elements.md) | 
| 排序 | 有限 | 您只能对类别和颜色字段井中的数据字段进行排序。 | [在 Amazon Quick 中对视觉数据进行分类](sorting-visual-data.md) | 
| 执行字段聚合 | 是 |  | [更改字段聚合](changing-field-aggregation.md) | 
| 添加向下钻取 | 不支持 |  | [在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md) | 
| 选择大小 | 是 |  | [在 Amazon 中快速格式化](formatting-a-visual.md) | 
| 显示总计 | 不支持 |  | [在 Amazon 中快速格式化](formatting-a-visual.md) | 

## 创建雷达图
<a name="create-radar-chart"></a>

要创雷达图，请按照以下过程操作。

**创建雷达图**

1. 在分析页面上，选择工具栏上的**可视化**。

1. 在应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在**视觉对象类型**窗格中，选择雷达图的图标。

1. 从 **Fields list (字段列表)** 窗格中，将要使用的字段拖到相应的字段井中。大多数情况下，您需要使用以目标字段井指示的维度或度量字段。

   要创建雷达图，请将字段拖到**类别**、**值**和**组/颜色**字段井上。雷达图组织轴的方式由您将字段组织到相应字段井的方式决定：
   + 在使用**数值轴**的雷达图中，维度值显示为线条，轴代表值字段。要创建使用数值轴的雷达图，请向**颜色**字段井添加一个类别字段，向**值**字段井添加一个或多个值。
   + 在使用**维度轴**的雷达图中，组维度值显示为轴，值字段显示为线条。所有轴采用同一范围和刻度。要创建使用维度轴的雷达图，请向**组**字段井添加一个维度，向**值**字段井添加一个或多个值。
   + 在使用**维度-颜色轴**的雷达图中，组维度值显示为轴，颜色维度值显示为线条。所有轴采用同一范围和刻度。要创建使用维度-颜色轴的雷达图，请向**类别**字段井添加将一个维度，向**值**字段井添加一个值，再向**颜色**字段井添加一个维度。

# 使用桑基图
<a name="sankey-diagram"></a>

使用桑基图显示从一个类别到另一类别的流程，或从一个阶段到另一阶段的路径。

例如，桑基图可以显示从一个国家/地区移民到另一国家/地区的人数。桑基图表还可以显示网络访问者从公司网站的一个页面转至下一页面的路径，以及期间可能会停留的情况。

## 桑基图的数据
<a name="sankey-diagram-data"></a>

要在 Quick 中创建 Sankey 图，您的数据集应包含一个度量和两个维度（一个维度包含源类别，另一个维度包含目标类别）。

下表是桑基图数据的简单示例。


| 维度（源） | 维度（目标） | 度量（权重） | 
| --- | --- | --- | 
|  A  |  W  |  500  | 
|  A  |  X  |  23  | 
|  A  |  Y  |  147  | 

以下桑基图是在将维度和度量添加到字段井中时创建的，左侧的 A 节点链接到右侧的 W、Y 和 X 节点。节点间每个链接的宽度由“度量（权重）”列中的值确定。节点会自动排序。

要在 Amazon Quick 中创建多级 Sankey 图，您的数据集仍应包含一个度量和两个维度（一个用于源，一个用于目标），但在这种情况下，您的数据值会有所不同。

下表是有两个阶段的多级别桑基图数据的简单示例。


| 维度（源） | 维度（目标） | 度量（权重） | 
| --- | --- | --- | 
|  A  |  W  |  500  | 
|  A  |  X  |  23  | 
|  A  |  Y  |  147  | 
|  W  |  Z  |  300  | 
|  X  |  Z  |  5  | 
|  Y  |  Z  |  50  | 

以下桑基图是在将维度和度量添加到字段井中时创建的。图中，左侧的 A 节点链接到中间的 W、Y 和 X 节点，而 W、Y 和 X 节点则链接到右侧的 Z 节点。节点间每个链接的宽度由“度量（权重）”列中的值确定。

### 使用周期性数据
<a name="sankey-diagram-cycle"></a>

桑基图使用的数据有时包含周期。例如，假设您正在可视化网站页面之间的用户流量。您可能会发现，进入页面 A 的用户会移动到页面 E，再回到页面 A。整个流程可能类似于 A-E-A-B-A-A-E-A。

当您的数据包含循环时，每个循环中的节点都会在 Quick 中重复。例如，如果您的数据包含流程 A-E-A-B-A-E-A，则会创建以下 Sankey 图。

## 准备桑基图的数据
<a name="sankey-diagram-prepare"></a>

如果数据集不包含源列或目标列，请准备好要纳入的数据。您可以在创建新数据集或编辑现有数据集时准备好数据。有关创建新数据集并进行准备的更多信息，请参阅[创建数据集](creating-data-sets.md)。有关打开现有数据集以准备数据的更多信息，请参阅[编辑数据集](edit-a-data-set.md)。

以下过程使用示例表（如下所示）来演示如何在 Quick 中为 Sankey 图准备数据。该表包含三列：客户 ID、时间和操作。


| 客户 ID | 时间 | Action | 
| --- | --- | --- | 
|  1  |  9:05 am  |  步骤 1  | 
|  1  |  9:06 am  |  步骤 2  | 
|  1  |  9:08 am  |  步骤 3  | 
|  2  |  11:44 am  |  步骤 1  | 
|  2  |  11:47 am  |  步骤 2  | 
|  2  |  11:48 am  |  步骤 3  | 

要使用此数据在 Quick 中创建 Sankey 图，请先向表中添加源列和目标列。要了解操作方法，请按照以下过程操作。

**向表中添加源列和目标列**

1. 向表添加“步骤编号”列，对每行进行编号或排序。

   有多种方法可以计算“步骤编号”列。如果您的数据源与 SQL 兼容，并且您的数据库支持`ROW_NUMBER`或`RANK`功能，则可以在 Quick 中使用自定义 SQL 对 “步骤编号” 列中的行进行排序。有关在 Quick 中使用自定义 SQL 的更多信息，请参阅[使用 SQL 自定义数据](adding-a-SQL-query.md)。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/sankey-diagram.html)

1. 向表添加“下一行编号”列，其值等于步骤编号加一。

   例如，在表的第一个数据行中，“步骤编号”的值为 1。要计算该行的“下一步编号”的值，请在该值上加 1。

   1 \$1 1 = 2

   在表的第二个数据行中，“步骤编号”的值为 2，因此“下一步编号”的值为 3。

   2 \$1 1 = 3    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/sankey-diagram.html)

1. 将表自身联接起来：

   1. **联接类型**选择**内部**。

   1. 对于**联接子句**，请执行以下操作：

      1. 选择**客户 ID** = **客户 ID**

      1. 选择**下一步编号** = **步骤编号**

   联接两个表会为“客户 ID”、“时间”、“操作”、“步骤编号”和“下一步编号”创建两列。联接左侧表中的列为源列。联接右侧表中的列为目标列。

   有关在 Quick 中联接数据的更多信息，请参阅[联接数据](joining-data.md)。

1. （可选）通过重命名列指明源列和目标列。

   以下是示例：

   1. 将左侧的**操作**列重命名为**源**。

   1. 将右侧的**操作 [复制]**列重命名为**目标**。

   1. 将左侧的**时间**列重命名为**开始时间**。

   1. 将右侧的**时间 [复制]**列重命名为**结束时间**。

   数据现已做好可视化的准备。

## 创建桑基图
<a name="sankey-diagram-create"></a>

要创建桑基图，请按照以下过程操作。

**创建桑基图**

1. 在分析屏幕上，选择左侧工具栏上的**可视化**。

1. 在应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在**视觉对象类型**窗格中，选择桑基图的图标。

1. 从视觉对象右上角的菜单上，选择**属性**图标。

1. 在**属性**窗格中，选择**源**或**目标**部分。

### 自定义节点数
<a name="sankey-diagram-number-nodes"></a>

要自定义桑基图中显示的节点数，请按照以下过程操作。Quick 最多支持 100 个源/目标节点。

**自定义桑基图中显示的节点数**

1. 在分析页面上，选择要设置格式的桑基图视觉对象。

1. 从视觉对象右上角的菜单中选择**设置视觉对象格式**图标。

1. 在打开的**属性**窗格中，选择**源**或**目标**选项卡。

1. 在**显示的节点数**字段中输入数字。

   图中的节点数将更新为您指定的数字。靠前的节点将自动显示。其余节点则归入**其他**类别。
**注意**  
指定源节点的数量可以控制图中可显示的源节点总数。指定目标节点的数量可以控制每个源节点可显示的目标节点数。这表示，如果图中有多个源节点，则目标节点的总数将大于指定的数量。  
Quick 最多支持 100 个源/目标节点。

   例如，以下桑基图的源节点数限制为三个（共五个），因此图中显示了前三个源节点。另外两个源节点归入“其他”类别。

   要从图中移除**其他**类别，请在视图中将其选中，然后选择**隐藏“其他”类别**。

## 桑基图的功能
<a name="sankey-diagram-features"></a>

要了解桑基图支持的功能，请参考下表内容。


| 功能 | 支持？ | 有关更多信息 | 
| --- | --- | --- | 
| 更改图例显示 | 否 |  | 
| 更改标题显示 | 是 | [Quick 中视觉类型上的标题和字幕](customizing-a-visual-title.md) | 
| 更改轴范围 | 否 |  | 
| 改变视觉对象颜色 | 否 |  | 
| 聚焦或排除元素 | 是 |  [聚焦视觉对象元素](focusing-on-visual-elements.md) [排除视觉对象元素](excluding-visual-elements.md)  | 
| 排序 | 否 |  | 
| 执行字段聚合 | 是 | [更改字段聚合](changing-field-aggregation.md) | 
| 添加向下钻取 | 否 |  | 
| 条件格式设置 | 否 |  | 

# 使用散点图
<a name="scatter-plot"></a>

可以使用散点图跨两个维度可视化两三个度量。

散点图上的每个气泡代表一个或两个维度值。X 轴和 Y 轴代表应用到维度的两种不同的度量。当维度中某个项目的两个度量在图表上相交时，该位置会显示一个气泡。您也可以选择使用气泡大小来表示其他的度量。

无论视觉对象中使用的是颜色还是标签维度，散点图在聚合和非聚合场景中最多可显示 2500 个数据点。由于限制操作的顺序，可能会出现数据集显示较少数据点的情况。有关 Amazon Quick 如何处理超出显示限制的数据的更多信息，请参阅[显示限制](working-with-visual-types.md#display-limits)。

## 散点图的功能
<a name="scatter-plot-features"></a>

可以使用下表了解散点图支持的功能。


| 功能 | 支持？ | 评论 | 有关更多信息 | 
| --- | --- | --- | --- | 
| 更改图例显示 | 是，但有例外 | 如果您填充了 Group/Color 字段井，散点图会显示图例。 | [Quick 中关于视觉类型的图例](customizing-visual-legend.md) | 
| 更改标题显示 | 是 |  | [Quick 中视觉类型上的标题和字幕](customizing-a-visual-title.md) | 
| 更改轴范围 | 是 | 您可以设置 X 轴和 Y 轴的范围。 | [在 Quick 中对视觉类型进行范围和缩放](changing-visual-scale-axis-range.md) | 
| 显示或隐藏轴线、网格线、轴标签和轴排序图标 | 是 |  | [Quick 中视觉类型上的轴和网格线](showing-hiding-axis-grid-tick.md) | 
| 改变视觉对象颜色 | 是 |  | [Quick 中视觉类型中的颜色](changing-visual-colors.md) | 
| 聚焦或排除元素 | 是，但有例外 | 您可以聚焦或排除散点图中的气泡，但将日期字段用作维度的情况除外。在这种情况下，您只能聚焦气泡，但不能排除它。 |  [聚焦视觉对象元素](focusing-on-visual-elements.md) [排除视觉对象元素](excluding-visual-elements.md) | 
| 排序 | 否 |  | [在 Amazon Quick 中对视觉数据进行分类](sorting-visual-data.md) | 
| 执行字段聚合 | 是 | 您必须将聚合应用于为 X 轴、Y 轴和大小选择的字段，不能将聚合应用于为组或颜色选择的字段。 | [更改字段聚合](changing-field-aggregation.md) | 
| 显示非聚合字段 | 是 | 在字段上下文菜单上，选择无即可显示非聚合的 X 和 Y 轴值。如果散点图显示非聚合字段，则无法将聚合应用于颜色或标签字段井中的字段。散点图不支持混合聚合。 |  | 
| 添加向下钻取 | 是 | 您可以向 Group/Color 字段井添加向下钻取级别。 | [在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md) | 

## 创建散点图
<a name="create-scatter-plot"></a>

要创建散点图，请按照以下过程操作。

**创建散点图**

1. 在分析页面上，选择工具栏上的**可视化**。

1. 在应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在 **Visual types** 窗格中，选择散点图图标。

1. 从 **Fields list (字段列表)** 窗格中，将要使用的字段拖到相应的字段井中。通常，您需要使用以目标字段井指示的维度或度量字段。如果您选择使用维度字段作为度量，则系统会对其自动应用 **Count** 聚合函数来创建数值。

   要创建散点图，请将一个度量拖到 **X 轴**字段井上，将另一个度量拖到 **Y 轴**字段井上，再将一个维度拖到**颜色**或**标签**字段井上。要使用气泡大小表示另一个度量，请将该度量拖到 **Size** 字段井上。

1. （可选）将一个或多个其他字段添加到**颜色**字段井上可添加向下钻取层。有关添加向下钻取的更多信息，请参阅[在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md)。

## 散点图用例
<a name="scatter-use-cases"></a>

即便使用的是颜色字段，也可使用字段菜单上的聚合选项**无**来选择绘制非聚合值；该菜单还包含**总和**、**最小值** 和**最大值**等聚合选项。如果将一个值设置为聚合值，则另一个值会自动设置为聚合值。这同样适用于非聚合场景。不支持混合聚合场景意味着，如果一个值为非聚合值，则不能将令一个值设置为聚合值。请注意，非聚合场景（**无**选项）仅支持数值，而类别值（例如日期或维度）将仅显示聚合值，例如 **count** 和 **count distinct**。

您可以使用**无**选项，从 **X 轴**和 **Y 轴**字段菜单中选择将 X 和 Y 值设置为聚合值或非聚合值。此操作会定义是否按**颜色**和**标签**字段井中的维度对值进行聚合。首先，添加必填字段并根据用例选择适当的聚合，如以下部分所示。

### 非聚合用例
<a name="advanced-scatter-plot-options-unaggregated"></a>
+ 采用了“颜色”的非聚合 X 和 Y 值  
![\[非聚合颜色\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/unaggregated-color.png)
+ 采用了“标签”的非聚合 X 和 Y 值  
![\[非聚合标签\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/unaggregated-label.png)
+ 采用了“颜色”和“标签”的非聚合 X 和 Y 值  
![\[unaggregated-color-label\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/unaggregated-color-label.png)

### 聚合用例
<a name="advanced-scatter-plot-options-aggregated"></a>
+ 采用了“颜色”的聚合 X 和 Y 值  
![\[聚合颜色\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/aggregated-color.png)
+ 采用了“标签”的聚合 X 和 Y 值  
![\[聚合标签\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/aggregated-label.png)
+ 采用了“颜色”和“标签”的聚合 X 和 Y 值  
![\[aggregated-color-label\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/aggregated-color-label.png)

# 使用表作为视觉对象
<a name="tabular"></a>

可以使用表视觉对象查看数据的自定义表视图。要创建表视觉对象，请为任意数据类型选择至少一个字段。您可以添加所需数量的列（最多 200 列），还可以添加计算列。

表视觉对象不显示图例。您可以在表中隐藏或显示标题。您还可以隐藏或显示总计，并选择在表的顶部还是底部显示总计。有关更多信息，请参阅 [Quick 中按类型排列分析格式](analytics-format-options.md)。

**创建表视觉对象**

1. 打开 Amazon Quick，然后在左侧的导航窗格中选择 “**分析**”。

1. 选择下列选项之一：
   + 要创建新分析，请选择右上角的**新建分析**。有关更多信息，请参阅 [在 Quick Sight 中开始分析](creating-an-analysis.md)。
   + 要使用现有分析，请选择要编辑的分析。

1. 从文件菜单中选择**插入**，然后选择**添加视觉对象**。

1. 在左下角，从**视觉对象类型**中选择表格图标。

1. 在 **Fields list (字段列表)** 窗格中，选择要使用的字段。如果要添加计算字段，请在文件菜单上选择**插入**，然后选择**添加计算字段**。

   要创建非聚合数据视图，请仅将字段添加到**值**字段井中。执行此操作会显示未进行任何聚合的数据。

   要创建聚合数据视图，请选择要聚合的字段，然后将其添加到 **Group by (分组依据)** 字段井中。

**在表中显示或隐藏列**

1. 在视觉对象上选择要隐藏的字段，然后选择**隐藏列**。

1. 要显示隐藏列，请选择任何列，然后选择**显示所有隐藏列**。

**行列转置**
+ 选择视觉对象右上角附近的转置图标（![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/transpose-icon.png)）。上面有两个呈 90 度的箭头。

**垂直对齐列**

1. 在视觉对象上，选择视觉对象右上角附近的**设置视觉对象格式**图标（![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/format-visual-icon.png)）。

1. 在**属性**窗格中选择**表选项**，然后选择表的垂直对齐方式。

**标头文本换行**

1. 在视觉对象上，选择视觉对象右上角附近的**设置视觉对象格式**图标（![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/format-visual-icon.png)）。

1. 在**属性**窗格中选择**表选项**，然后选择**标头文本自动换行**。

**重新排列表格图中的列**

1. 打开包含您想要排序的视觉对象的分析。默认情况下，将打开“视觉对象”窗格。

1. 请执行以下操作之一：
   + 拖放**字段井**中的一个或多个字段重新排列字段顺序。
   + 直接在表格中选择一个字段，然后在**移动列**上选择向左或向右箭头。

# 使用字段样式设置
<a name="field-styling"></a>

使用格式视觉菜单 URLs 的 “**字段样式**” 面板，可以在表格中以链接的形式呈现。表格的每个页面最多可以添加 500 行链接。仅支持 https 和 mailto 超链接。

**向表格添加链接**

1. 在 Q **u** ick 主页上，选择 “分析”，然后选择要自定义的分析。

1. 选择要更改的表格。

1. 在表格右上角的菜单上，选择**设置视觉对象格式**。

1. 对于**设置视觉对象格式**，选择**字段样式设置**。

1. 在**字段样式设置**窗格中，从菜单中选择要设置样式的字段。

1. 在 “**字段样式**” 菜单的 “**网址选项**” 部分，选择 “**创建 URLs超链接**”。

向表格添加链接后，如果在**字段样式**窗格的**打开方式**部分选择了链接，您可以选择要打开链接的位置。您可以选择在新选项卡、新窗口或同一选项卡中打开链接。

您也可以在**字段样式**窗格的**样式设置方式**部分中选择如何设置链接样式。链接可以显示为超链接、图标或纯文本，也支持自定义设置。

要调整链接图标或 URL 的字体大小，请在**设置视觉对象格式**菜单**表选项**窗格的**单元格**部分更改**字体大小**。

您可以将表格 URLs 中任何指向图像的内容设置为在表格中以图像的形式呈现。如果希望将产品图像作为表的一部分包含在内，此操作会非常有用。

**以图像 URLs 形式显示**

1. 在 Q **u** ick 主页上，选择 “分析”，然后选择要自定义的分析。

1. 选择要更改的表格。

1. 在表格右上角的菜单上选择**设置视觉对象格式**。

1. 在**设置视觉对象格式**菜单中选择**字段样式设置**。

1. 从**字段样式设置**窗格的菜单中选择要设置样式的字段。

1. 在 “**字段样式**” 菜单的 “**网址选项**” 部分，选择 “**显示 URLs 为图像**”。

在表格中呈现图像后，可以在**字段样式**窗格的**图像大小**部分选择如何调整图像大小。您可以根据图像单元格的高度或宽度调整图像，也可以选择不缩放图像。图像大小默认根据单元格的高度进行调整。

# 冻结表视觉对象中的列
<a name="tables-freeze-columns"></a>

您可以冻结表视觉对象中的列，从而将特定列锁定在屏幕上的适当位置。这样一来，即便读者滚动浏览表格，重要信息仍然可见。您可以逐一冻结列，也可以通过一个操作冻结一组列。所有固定列均固定在表格最左侧，在屏幕上始终可见。这允许 Quick 读取器在与表格的其他部分交互时为关键数据或信息提供一个恒定的参考点。

**冻结表中的列**

1. 在要冻结列的表格中，选择要固定的列。

1. 选择以下任一选项。
   + 要冻结单列，请选择**冻结列**。
   + 要将所有列冻结到所选列，请选择**冻结到此列**。

如果表中有多个固定列，您可以按所需顺序对这些列进行重新排序。要调整表格上固定列的顺序，请选择要移动的列的标头，然后选择向所需方向**移动**。

**取消冻结表中的列**

1. 在要更改的表格上，选择要解除固定的固定列。

1. 选择以下任一选项。
   + 要取消冻结单列，请选择**取消冻结列**。
   + 要取消冻结所有冻结的列，请选择**取消冻结所有列**。

# 自定义总值
<a name="tables-pivot-tables-custom-totals"></a>

快速创作者可以从现场井中为其表或数据透视表视觉对象定义总和小计聚合。对于表格，只有为视觉对象开启了总计，才可以使用自定义总计菜单。

**更改总计或小计的聚合**

1. 导航到要更改的分析，然后选择要定义总计的表格或数据透视表视觉对象。

1. 从字段井中选择要更改的字段。

1. 选择**总计**，然后选择所需聚合。可用选项如下：
   + **默认** – 总计计算使用与指标字段相同的聚合。
   + **Sum** – 计算视觉对象中数据的总和。
   + **Average** – 计算视觉对象中数据的平均值。
   + **Min** – 计算视觉对象中数据的最小值。
   + **Max** – 计算视觉对象中数据的最大值。
   + **无（隐藏）**– 不计算总计。选择此选项后，视觉对象中的总计和小计单元格将留空。如果使用计算总计或小计的指标字段对外部维度进行排序，则该维度按字母顺序进行排序。将值从**无（隐藏）**更改为另一个值时，外部维度将按使用指定聚合类型计算的小计进行排序。

以下限制适用于自定义总计。
+ 自定义总计不支持条件格式设置。
+ 字符串列不支持总计聚合。总计聚合包括 **Min**、**Max**、**Sum** 和 **Average**。
+ 日期列与 **Average** 和 **Sum** 总计聚合函数不兼容。

# 对表进行排序
<a name="table-sort"></a>

在 Amazon Quick 中，您可以按表中列标题中的字段或使用**排序可视化工具对表中的值进行排序**。您最多可以对单个表中的 10 列进行排序。Quick 也可以使用非可视排序您可以按**升**序或降序对列进行排**序**。下图显示了**视觉对象排序**图标和弹出窗口。

![\[视觉对象排序图标和它打开的视觉对象排序弹出窗口。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/table-sort-icon.png)


## 单列排序选项
<a name="table-sort-single-column"></a>

Quick Authors 可以从字段栏、列标题或 “**排序” 视觉**菜单中访问单列排序选项。使用以下步骤在 Quick 中对表格进行单列排序。

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

1. 打开要进行的分析并导航到要排序的表。

1. 选择要排序的列的标题。

1. 对于**排序依据**，选择箭头图标，然后选择要作为排序依据的字段。

您也可以在**视觉对象排序**菜单中设置单列排序。要访问“视觉对象排序”菜单，请在视觉对象菜单上选择**视觉对象排序**图标。在**视觉对象排序**菜单中，选择要作为排序依据的字段，然后选择按升序还是降序排序。默认情况下，新排序按升序进行排序。完成后，选择**应用**。

使用单列排序的表每次只对一列进行排序。当用户选择一个新列进行排序时，先前的排序顺序将被覆盖。

要更改单列排序，请打开**视觉对象排序**菜单，然后使用下拉菜单选择新的字段或排序顺序。完成更改后，选择**应用**。

要将表重置为其原始状态，请打开**视觉对象排序**菜单，然后选择**重置**。

## 多列排序选项
<a name="table-sort-multi-column"></a>

快速作者可以从 “排序” **视觉菜单中访问多列排序**选项。使用以下过程为表设置多列排序。

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

1. 打开要进行的分析并导航到要排序的表。

1. 选择**视觉对象排序**图标以打开**视觉对象排序**菜单。

   1. 或者，选择要排序的标题。

   1. 对于**排序依据**，选择箭头图标，然后选择**多个字段**。

1. 在打开的**视觉对象排序**菜单中，从**排序依据**下拉列表中选择一个字段，然后选择该字段是按升序还是降序排序。

1. 要添加其他排序，请选择**添加排序**，然后重复步骤 4 中的工作流。每个表最多可以添加 10 个排序。

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

列将按添加到**视觉对象排序**菜单中的顺序进行排序。要更改列的排序顺序，请打开**视觉对象排序**菜单，然后使用**排序依据**下拉菜单对排序进行重新排序。完成后，选择**应用**将新的排序顺序应用于表。

要将表重置为其原始状态，请打开**视觉对象排序**菜单，然后选择**重置**。

## 非视觉对象排序选项
<a name="table-sort-off-visual"></a>

快速作者可以配置非可视排序，按字段和聚合对表中的值进行排序，该字段和聚合是该表使用的数据集的一部分，但不在表的某个字段井中。一次可以将一个非字段排序配置为一个表。

使用以下过程配置非视觉对象排序。

**向表添加非视觉对象排序**

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

1. 打开要进行的分析并导航到要排序的表。

1. 选择表中任何列的标题。

1. 对于**排序依据**，选择箭头图标，然后选择**非视觉对象字段**。

1. 在出现的**非视觉对象字段**窗格中，打开**排序依据**下拉菜单，然后选择要排序的字段。

1. 对于**聚合**，打开下拉菜单并选择要使用的聚合。

1. 对于**排序顺序**，选择要按升序还是降序排序。

1. 完成后，请选择 **Apply**。

对表应用非视觉对象排序后，排序将显示在**视觉对象排序**菜单中。包含非视觉对象排序的表的排序顺序取决于添加非非视觉对象排序时表的排序配置。如果向已配置单列或多列排序的表添加了非视觉对象排序，则非视觉对象排序将覆盖所有其他排序。如果在单列或多列排序之前应用了非视觉对象排序，则可以向表添加排序和重新排序更多排序。

# 使用文本框
<a name="textbox"></a>

使用文本框通过添加文本向分析中的工作表添加上下文。文本可以包含指向外部网站的说明、描述甚至超链接。文本框上的工具栏提供字体设置，便于自定义字体类型、样式、颜色、大小、间距、以像素为单位的大小、文本突出显示和对齐方式。文本框本身并无格式设置。

要向新文本框添加文本，只需将其选中并键入内容。

# 使用树形图
<a name="tree-map"></a>

可以使用树形图可视化维度的一个或两个度量。

树形图上的每个矩形代表维度中的一个项目。矩形大小表示该项目表示的选定度量在整个维度中所占的比例。您可以选择使用矩形颜色来表示该项目的另一个度量。矩形颜色表示项目的值在度量范围内所处的位置，深色表示该值较高，浅色表示该值较低。

树形图最多可为 **Group by (分组依据)** 字段显示 100 个数据点。有关 Amazon Quick 如何处理超出显示限制的数据的更多信息，请参阅[显示限制](working-with-visual-types.md#display-limits)。

## 树形图的功能
<a name="tree-map-features"></a>

可以使用下表了解树形图支持的功能。


****  

| 功能 | 支持？ | 评论 | 有关更多信息 | 
| --- | --- | --- | --- | 
| 更改图例显示 | 是 |  | [Quick 中关于视觉类型的图例](customizing-visual-legend.md) | 
| 更改标题显示 | 是 |  | [Quick 中视觉类型上的标题和字幕](customizing-a-visual-title.md) | 
| 更改轴范围 | 不适用 |  | [在 Quick 中对视觉类型进行范围和缩放](changing-visual-scale-axis-range.md) | 
| 改变视觉对象颜色 | 否 |  | [Quick 中视觉类型中的颜色](changing-visual-colors.md) | 
| 聚焦或排除元素 | 是，但有例外 | 您可以聚焦或排除树形图中的矩形，但将日期字段用作维度的情况除外。在这种情况下，您只能聚焦矩形，但不能排除它。 |  [聚焦视觉对象元素](focusing-on-visual-elements.md) [排除视觉对象元素](excluding-visual-elements.md) | 
| 排序 | 否 | 在大小列中，默认排序为按度量降序排序。 | [在 Amazon Quick 中对视觉数据进行分类](sorting-visual-data.md) | 
| 执行字段聚合 | 是 | 您必须将聚合应用于为大小和颜色选择的字段，不能将聚合应用于选择的分组依据字段。 | [更改字段聚合](changing-field-aggregation.md) | 
| 添加向下钻取 | 是 | 您可以向 Group by 字段井添加向下钻取级别。 | [在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md) | 

## 创建树形图
<a name="create-tree-map"></a>

要创建树形图，请按照以下过程操作。

**创建树形图**

1. 在分析页面上，选择工具栏上的**可视化**。

1. 在应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在 **Visual types** 窗格中，选择树形图图标。

1. 从 **Fields list (字段列表)** 窗格中，将要使用的字段拖到相应的字段井中。通常，您需要使用以目标字段井指示的维度或度量字段。如果您选择使用维度字段作为度量，则系统会对其自动应用 **Count** 聚合函数来创建数值。

   要创建树形图，请将一个度量拖到 **Size** 字段井上，并将一个维度拖到 **Group by** 字段井上。或者，将另一个度量拖到 **Color** 字段井上。

1. (可选) 通过将一个或多个其他字段拖到 **Group by** 字段井上来添加向下钻取层。有关添加向下钻取的更多信息，请参阅[在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md)。

# 使用瀑布图
<a name="waterfall-chart"></a>

使用瀑布图显示加上或减去值时的累计汇总。在瀑布图中，初始值会出现（正值或负值）变化，每次变化以一个条形表示。最终总计以最后一个条形表示。瀑布图又称*桥梁图*，因为条形之间的连接线将条形连接在一起，表明其在外观上属于同一情况。

由于瀑布图可以显示一个时间段内的变化或从一个时间段到另一个时间段的变化，因此最常用于显示财务数据。您可以用该图来可视化影响项目成本的不同因素。例如，您可以使用瀑布图来显示同一个月内的销售总额与净收入之比，或者去年与今年的净收入差异，以及导致这种变化的因素。

您还可以使用瀑布图显示统计数据，例如雇用的新员工数量，以及一年内离职的员工数量。

以下屏幕截图显示了瀑布图。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/waterfall-chart.png)


**创建基本瀑布图视觉对象**

1. 打开 Amazon Quick，然后在左侧的导航窗格中选择 “**分析**”。

1. 选择下列选项之一：
   + 要创建新分析，请选择右上角的**新建分析**。有关更多信息，请参阅 [在 Quick Sight 中开始分析](creating-an-analysis.md)。
   + 要使用现有分析，请选择要编辑的分析。

1. 选择**添加（\$1）、添加视觉对象**。

1. 在左下角，从**视觉对象类型**中选择瀑布图的图标。

1. 从**字段列表**窗格中选择要用于相应字段井的字段。瀑布图要求**值**字段中设置有一个类别或度量。

1. (可选) 通过将一个或多个其他字段拖到 **Group/Color** 字段井上来添加向下钻取层。有关添加向下钻取的更多信息，请参阅[在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md)。

   要了解瀑布图支持的功能，请参阅 [Quick 中按类型排列分析格式](analytics-format-options.md)。有关自定义选项，请参阅[在 Amazon 中快速格式化](formatting-a-visual.md)。

# 使用文字云
<a name="word-cloud"></a>

作为一种引人入胜的方式来显示单词与数据集中其他单词相关的使用频率，请使用文字云。此类视觉对象的最佳用途是显示单词或短语频率。它也可以添加有趣的内容来显示趋势项目或操作。您可以将固定数据集用于创意目的。例如，您可以制定团队目标，编写激励短语、某个特定单词的各种翻译，或者任何您想引起注意的内容。

文字云中的每个单词表示维度中的一个或多个值。单词的大小表示一个值在选定维度中出现的频率，与同一维度中其他值出现的频率成比例。当精度不重要且没有大量不同的值时，文字云是最佳选择。

以下屏幕截图显示了文字云的示例。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/word-cloud.png)


要创建文字云，请使用 **Group by (分组依据)** 字段井中的一个维度。（可选）您可以将指标添加到 **Size (大小)** 字段井。

文字云通常在 20-100 个单词或短语之间看起来更好，而格式设置提供了广泛的灵活性。如果单词太多，它们可能会变得太小而不易阅读，具体取决于显示器的大小。默认情况下，文字云显示 100 个不同的单词。要显示更多单词，请更改 **Number of words (单词数)** 的格式设置。

对于 **Group by (分组依据)**，文字云限制为 500 个唯一值。要避免显示单词 **Other**，请设置视觉对象的格式以隐藏 **Other (其他)** 类别。有关 Amazon Quick 如何处理超出显示限制的数据的更多信息，请参阅[显示限制](working-with-visual-types.md#display-limits)。

## 文字云功能
<a name="word-cloud-features"></a>

可以使用下表了解文字云支持的功能。


| 功能 | 支持？ | 评论 | 有关更多信息 | 
| --- | --- | --- | --- | 
| 更改图例显示 | 否 |  | [Quick 中关于视觉类型的图例](customizing-visual-legend.md) | 
| 更改标题显示 | 是 |  | [Quick 中视觉类型上的标题和字幕](customizing-a-visual-title.md) | 
| 更改轴范围 | 不适用 |  | [在 Quick 中对视觉类型进行范围和缩放](changing-visual-scale-axis-range.md) | 
| 改变视觉对象颜色 | 是 | 要更改颜色，请选择一个单词，然后选择一种颜色。 | [Quick 中视觉类型中的颜色](changing-visual-colors.md) | 
| 聚焦或排除元素 | 是 |  |  [聚焦视觉对象元素](focusing-on-visual-elements.md) [排除视觉对象元素](excluding-visual-elements.md) | 
| 排序 | 是 |  | [在 Amazon Quick 中对视觉数据进行分类](sorting-visual-data.md) | 
| 执行字段聚合 | 是 | 您不能向为 Group by (分组依据) 选择的字段应用聚合。您必须向为 Size (大小) 选择的字段应用聚合。 | [更改字段聚合](changing-field-aggregation.md) | 
| 添加向下钻取 | 是 | 您可以向 Group by 字段井添加向下钻取级别。 | [在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md) | 
| 使用格式选项 | 是 | 您可以选择允许垂直单词、强调比例、使用流畅布局、使用小写以及设置单词之间的填充量。您可以设置文字云的最大字符串长度（默认为 40）。您也可以为 Group by (分组依据) 字段选择单词数（默认值为 100；最大值为 500） | [在 Amazon 中快速格式化](formatting-a-visual.md) | 
| 显示总计 | 否 |  | [在 Amazon 中快速格式化](formatting-a-visual.md) | 

## 创建文字云
<a name="create-word-cloud"></a>

可使用以下过程创建文字云。

**创建文字云**

1. 在分析页面上，选择工具栏上的**可视化**。

1. 在应用程序栏上选择**添加**，然后选择**添加视觉对象**。

1. 在 **Visual types (视觉对象类型)** 窗格上，选择文字云图标。

1. 从 **Fields list (字段列表)** 窗格中，将要使用的字段拖到相应的字段井中。通常，您需要使用以目标字段井指示的维度或度量字段。如果您选择使用维度字段作为度量，则默认情况下，将应用 **Count** 聚合函数。

   要创建文字云，请将维度添加到 **Group by (分组依据)** 字段井。（可选）将度量添加到 **Size (大小)** 字段井。

1. (可选) 通过将一个或多个其他字段拖到 **Group by** 字段井上来添加向下钻取层。有关添加向下钻取的更多信息，请参阅[在 Quick Sight 中向视觉数据添加向下钻取](adding-drill-downs.md)。

# 在 Amazon 中快速格式化
<a name="formatting-a-visual"></a>

您可以选用各种选项来设置数据可视化对象的格式和样式。要设置视觉对象格式，请选择要设置格式的视觉对象，然后选择视觉对象右上角的**设置视觉对象格式**图标。打开“设置视觉对象格式”窗格后，单击不同视觉对象和控件即可查看特定视觉对象或控件的格式设置数据。有关设置视觉对象控件格式的更多信息，请参阅[在 Amazon Quick 中使用带有参数的控件](parameters-controls.md)。

参阅以下各节来设置内容的格式和样式：

**注意**  
从字段井中应用的任何格式更改仅应用于选定的视觉对象。

**Topics**
+ [Quick 中按类型排列分析格式](analytics-format-options.md)
+ [Quick 中的表格和数据透视表格式选项](format-tables-pivot-tables.md)
+ [在 Quick 中向表格添加数据栏](format-data-bars.md)
+ [在 Quick 中向表格添加迷你图](format-sparklines.md)
+ [Quick 中的地图和地理空间图表格式选项](geospatial-formatting.md)
+ [Quick 中视觉类型上的轴和网格线](showing-hiding-axis-grid-tick.md)
+ [Quick 中视觉类型中的颜色](changing-visual-colors.md)
+ [在 Amazon Quick 中使用场关卡着色](format-field-colors.md)
+ [在 Quick 中对视觉类型进行条件格式化](conditional-formatting-for-visuals.md)
+ [KPI 选项](KPI-options.md)
+ [Quick 中视觉类型上的标签](customizing-visual-labels.md)
+ [根据 Quick 中的语言设置格式化视觉数字数据](customizing-visual-language-preferences.md)
+ [Quick 中关于视觉类型的图例](customizing-visual-legend.md)
+ [Quick 中折线图上的折线和标记样式](line-and-marker-styling.md)
+ [Quick 中缺少视觉类型数据](customizing-missing-data-controls.md)
+ [Quick 中视觉对象类型的参考线](reference-lines.md)
+ [在 Quick 中格式化雷达图](format-radar-chart.md)
+ [在 Quick 中对视觉类型进行范围和缩放](changing-visual-scale-axis-range.md)
+ [小倍数轴选项](small-multiples-options.md)
+ [Quick 中视觉类型上的标题和字幕](customizing-a-visual-title.md)
+ [Quick 中有关视觉类型的工具提示](customizing-visual-tooltips.md)

# Quick 中按类型排列分析格式
<a name="analytics-format-options"></a>

使用以下列表查看分析期间哪类格式设置适用于可视化对象：
+ 条形图（水平和垂直）支持以下格式：
  + 自定义、显示或隐藏标题、字段标签和数据标签
  + 自定义、显示或隐藏图例（例外：没有分簇或多个度量的简单图表不显示图例）
  + 为水平条形图指定 x 轴上的轴范围和增幅，为垂直条形图指定 y 轴上的轴范围和增幅
  + 选择要在垂直条形图的 x 轴上显示的数据点数，以及在水平条形图的 y 轴上显示的数据点数
  + 显示或隐藏轴线、轴标签、轴排序图标和图表网格线
  + 自定义、显示或移除参考线
  + 显示或隐藏“其他”类别

  水平条形图支持按 y 轴和**值**进行排序。垂直条形图支持按 x 轴和**值**进行排序。

  堆叠条形图支持显示总计。
+ 箱形图支持以下格式设置：
  + 自定义、显示或隐藏标题
  + 自定义、显示或隐藏图例
  + 指定 x 轴上的轴范围和标签刻度以及 y 轴上的轴范围和步长
  + 显示或隐藏轴线、轴标签、轴排序图标和图表网格线
  + 选择 y 轴上显示的数据点数。
  + 显示或隐藏“其他”类别 
  + 添加参考线

  箱形图支持按**分组依据**进行排序。
+ 组合图支持以下格式：
  + 自定义、显示或隐藏标题、字段标签和数据标签
  + 自定义、显示或隐藏图例（例外：没有分簇、堆叠或多个度量的简单图表不显示图例）
  + 指定条形图和折线图上的轴范围
  + 将条形图和线形图的 Y 轴同步到一个轴中。
  + 选择 x 轴上显示的数据点数
  + 显示或隐藏轴线、轴标签、轴排序图标和图表网格线
  + 自定义、显示或移除参考线
  + 显示或隐藏“其他”类别

  组合图支持按 x 轴、**条形**和**线条**进行排序。
+ 圆环图支持以下格式：
  + 自定义、显示或隐藏标题、数据标签和图例
  + 自定义、显示或隐藏组或颜色和值字段的标签
  + 从**组/颜色**中选择要显示的切片数量
  + 显示或隐藏“其他”类别

  圆环图支持按**组/颜色**和**值**进行排序。
+ 填充地图支持以下格式设置：
  + 自定义、显示或隐藏标题。
  + 自定义、显示或隐藏图例

  填充地图支持按**位置**和**颜色**进行排序。
+ 漏斗图支持以下格式设置：
  + 自定义、显示或隐藏标题和数据标签
  + 自定义、显示或隐藏组或颜色和值字段的标签
  + 选择要在**分组依据**字段中显示的阶段数量
  + 显示或隐藏“其他”类别

  漏斗图支持按**分组依据**和**值**进行排序。
+ 量规图支持以下格式：
  + 自定义、显示或隐藏标题。显示或隐藏轴标签。
  + 自定义一个或多个值的显示方式：隐藏、实际值、比较
  + 选择比较方法（在使用两个度量时可用）
  + 选择要在量规图中显示的轴范围和填充
  + 选择弧线样式（180 度到 360 度）和弧线厚度

  仪表盘图不支持排序。
+ 地理空间图（地图）支持以下格式：
  + 自定义、显示或隐藏标题和图例
  + 选择底图图像。
  + 选择显示含聚类或不含聚类的地图数据点。

  地理空间图不支持排序。
+ 热图支持以下格式：
  + 自定义、显示或隐藏标题、图例和标签
  + 选择要显示的行和列数量
  + 选择颜色或渐变。
  + 显示或隐藏“其他”类别

  热图支持按**值**和**列**进行排序。
+ 直方图支持以下格式：
  + 自定义、显示或隐藏标题、字段标签和数据标签
  + 指定 y 轴上的轴范围、刻度和增幅
  + 选择 x 轴上显示的数据点数
  + 显示或隐藏轴线、轴标签、轴排序图标和图表网格线

  直方图不支持排序。
+ 关键绩效指标 (KPIs) 支持以下格式：
  + 自定义、显示或隐藏标题
  + 显示或隐藏趋势箭头和进度条
  + 自定义比较方法，例如自动、差异、百分比 (%) 或差异百分比 (%)
  + 自定义要用于比较或作为实际值的主要值
  + 条件格式设置

  KPIs 不支持排序。
+ 折线图支持以下格式：
  + 自定义、显示或隐藏标题、字段标签和数据标签
  + 自定义、显示或隐藏图例（例外：简单图表不显示图例）
  + 指定轴范围和增幅（y 轴上）
  + 选择 x 轴上显示的数据点数
  + 显示或隐藏轴线、轴标签、轴排序图标和图表网格线
  + 自定义、显示或移除参考线
  + 自定义线条的样式设置和线条上数据点的标记
  + 显示或隐藏“其他”类别，除非 x 轴表示日期

  折线图仅支持按 x 轴和**值**进行数值排序。
+ 饼图支持以下格式：
  + 自定义、显示或隐藏标题、数据标签和图例
  + 自定义、显示或隐藏组或颜色和值字段的标签
  + 将指标显示为值、百分比或值和百分比
  + 从 **Group/Color (组/颜色)** 字段中选择要显示的切片数量
  + 显示或隐藏“其他”类别

  饼图支持按**值**和**组/颜色**进行排序。
+ 数据透视表支持以下格式：
  + 自定义、显示或隐藏标题
  + 自定义、显示或隐藏列、行和值字段的标签
  + 自定义表格标题的字体大小 cells/body 
  + 显示或隐藏行或列上的总计和小计
  + 自定义总计或小计标签
  + 选择其他样式设置选项：将表调整为适合查看的尺寸、隐藏 \$1/- 按钮、隐藏列字段名称、使用单个指标时隐藏重复标签
  + 条件格式设置

  数据透视表支持按**列**和**行**进行排序。有关对数据透视表数据进行排序的更多信息，请参阅[在快速中对数据透视表进行排序](sorting-pivot-tables.md)。
+ 散点图支持以下格式：
  + 自定义、显示或隐藏标题、图例、字段标签和数据标签
  + 自定义、显示或移除参考线
  + 指定轴范围和增幅（x 轴和 y 轴上）
  + 显示或隐藏轴线、轴标签、轴排序图标和图表网格线

  散点图不支持排序。
+ 表格支持以下格式：
  + 自定义、显示或隐藏标题、图例和列
  + 自定义、显示或隐藏分组依据和值字段的列名
  + 自定义表格标题的字体大小 cells/body 
  + 显示或隐藏位于表顶部或底部的合计
  + 为总计提供自定义标签
  + 添加条件格式设置

  表支持按**分组依据**和**值**进行排序。
+ 树形图支持以下格式：
  + 自定义、显示或隐藏标题和图例
  + 自定义、显示或隐藏分组依据、大小和颜色字段的标签
  + 选择颜色或渐变。
  + 从 **Group by (分组依据)** 字段中选择要显示的正方形数量
  + 显示或隐藏“其他”类别

  折线图支持按**大小**、**分组依据**和**颜色**进行排序。
+ 瀑布图支持以下格式设置：
  + 自定义、显示或隐藏标题或副标题
  + 自定义总计标签
  + 指定 x 轴标签的大小和方向以及 y 轴标签的范围和方向。
  + 显示或隐藏轴线、轴标签、轴排序图标和图表网格线
  + 显示或隐藏“其他”类别
  + 自定义图例的大小和位置。
  + 自定义并显示或隐藏数据标签。

  瀑布图支持按**类别**和**值**进行排序。
+ 文字云支持以下格式：
  + 自定义、显示或隐藏标题
  + 自定义单词颜色，以及要从 **Group by (分组依据)** 字段中显示的单词数量
  + 显示或隐藏“其他”类别
  + 选择其他样式选项：允许垂直单词、强调比例或使用流畅布局、小写、填充级别或最大字符串长度

  文字云支持按**分组依据**进行排序。

# Quick 中的表格和数据透视表格式选项
<a name="format-tables-pivot-tables"></a>

您可以在 Quick 中自定义表格和数据透视表以满足您的业务需求。您可以通过指定文本颜色、大小、换行和对齐方式来自定义表标头、单元格和总计。您还可以指定表的行高、添加边框和网格线并添加自定义背景颜色。此外，您也可以自定义总计和小计的显示方式。

如果条件格式设置已应用于表格或数据透视表，则其优先级高于您配置的任何其他样式设置。

在将表格或数据透视表视觉对象导出到 Microsoft Excel 时，视觉对象采用的格式自定义设置不会反映在下载的 Excel 文件中。

**设置表格或数据透视表格式**
+ 在分析中，选择要自定义的表格或数据透视表，然后选择**设置视觉对象格式**图标。  
![\[“设置视觉对象格式”图标的图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/format-tables-icon.png)

  **属性**窗格将在左侧打开。

接下来，您可以在**属性**窗格中找到有关自定义表格或数据透视表各个区域的选项的描述。

**Topics**
+ [标头](format-tables-headers.md)
+ [单元格格式设置](format-tables-pivot-tables-cells.md)
+ [总计和小计](format-tables-pivot-tables-totals.md)
+ [Quick 中表和数据透视表中的行和列大小](format-tables-pivot-tables-resize-rows-columns.md)
+ [自定义数据透视表数据](format-tables-pivot-tables-layout-options.md)

# 标头
<a name="format-tables-headers"></a>

## 展开所有标头
<a name="format-tables-headers-expand"></a>

您可以选择展开数据透视表的所有标头来显示标头的所有子行和孙子行。

**展开数据透视表的所有标头**

1. 在要更改的视觉对象上选择任意标头打开**视觉对象**菜单。

1. 选择**展开以下所有选项**。

## 标头高度
<a name="format-tables-headers-row"></a>

您可以自定义表标头高度。

**自定义表标头高度**

1. 在**属性**窗格中，选择**标题**。

1. 在**行高**字段中输入一个以像素为单位的数字。可以输入一个从 8 到 500 的整数。

**自定义数据透视表标头高度**

1. 在**属性**窗格中，选择**标题**。

1. 在**列**部分的**行高**字段中输入一个以像素为单位的数字。可以输入一个从 8 到 500 的整数。

## 标头文本
<a name="format-tables-headers-text"></a>

您可以自定义表标头文本。

**自定义表标头文本**

1. 在**属性**窗格中，选择**标题**。

1. 导航到**文本**部分并执行以下一项或多项操作：
   + 要更改标题文本的颜色，请选择**文本样式**下方的颜色样本，然后选择所需的表格文本颜色。
   + 要更改标题文本的字体或字体大小，请打开**字体**或**字体大小**下拉列表，然后选择所需的字体或字体大小。
   + 要将标题文本加粗、倾斜或加下划线，请从样式栏中选择适当的图标。
   + 要在太长显示不全的标头中实现文本换行，请选择**文本换行**。标头文本换行不会自动增加标头的高度。按照前面的步骤增加标头高度。
   + 要更改标头文本的水平对齐方式，请选择水平对齐图标。您可以选择靠左对齐、居中对齐、靠右对齐或自动对齐。
   + 要更改标头文本的垂直对齐方式，请选择垂直对齐图标。您可以选择靠上对齐、居中对齐或靠下对齐。

**自定义数据透视表标头文本**

1. 在**属性**窗格中，选择**标题**。

   标头部分展开并显示列标头和行标头的自定义选项。

1. 在**标头**部分执行以下一项或多项操作：
   + 要将行样式应用于行或列的字段名称，请根据要自定义的标签选择**样式行标签**或**样式列标签**。
   + 要自定义标题字体，请导航至**行**或**列**部分的**文本**子部分，然后执行以下一项或多项操作：
     + 要更改标题文本的颜色，请选择**文本样式**下方的颜色样本，然后选择所需的表格文本颜色。
     + 要更改标题文本的字体或字体大小，请打开**字体**或**字体大小**下拉列表，然后选择所需的字体或字体大小。
     + 要将标题文本加粗、倾斜或加下划线，请从样式栏中选择适当的图标。
   + 要更改标头文本的水平对齐方式，请选择对齐图标。您可以选择靠左对齐、居中对齐、靠右对齐或自动对齐。您可以为**列**部分列标头和**行**部分行标头选择水平对齐方式。
   + 要更改标头文本的垂直对齐方式，请选择对齐图标。您可以选择靠上对齐、居中对齐或靠下对齐。您可以为**列**部分列标头和**行**部分行标头选择垂直对齐方式。
   + 要隐藏行标签或列字段名称，请选择**行标签**或**列字段名称**旁边的眼睛图标。

## 标头背景颜色
<a name="format-tables-headers-background"></a>

您可以自定义表标头的背景颜色。

**自定义表标头的背景颜色**

1. 在**属性**窗格中，选择**标题**。

1. 对于**背景**，选择背景颜色图标，然后选择一种颜色。您可以选择系统提供的颜色，将标头文本颜色重置为默认颜色，或者创建自定义颜色。

**自定义数据透视表标头的背景颜色**

1. 在**属性**窗格中，选择**标题**。

   **标头**部分展开并显示列标头和行标头的自定义选项。

1. 在**列**部分选择背景颜色图标，然后选择一种颜色。

1. 在**行**部分选择背景颜色图标，然后选择一种颜色。

## 标头边框
<a name="format-tables-headers-border"></a>

您可以自定义标头边框的颜色。

**自定义表标头边框**

1. 在**属性**窗格中，选择**标题**。

1. 对**边框**执行以下一项或多项操作：
   + 要自定义所需的边框类型，请选择边框类型图标。您可以选择无边框、仅添加水平边框、仅添加垂直边框或添加所有边框。
   + 要自定义边框粗细，请选择边框粗细度。
   + 要自定义边框颜色，请选择边框颜色图标，然后选择一种颜色。您可以选择系统提供的颜色，将边框颜色重置为默认颜色，或者创建自定义颜色。

**自定义数据透视表标头边框**

1. 在**属性**窗格中，选择**标题**。

   **标头**部分展开并显示列标头和行标头的自定义选项。

1. 在**列**和**行**部分，对**边框**执行以下一项或多项操作：
   + 要自定义所需的边框类型，请选择边框类型图标。您可以选择无边框、仅添加水平边框、仅添加垂直边框或添加所有边框。
   + 要自定义边框粗细，请选择边框粗细度。
   + 要自定义边框颜色，请选择边框颜色图标，然后选择一种颜色。您可以选择系统提供的颜色，将边框颜色重置为默认颜色，或者创建自定义颜色。

## 层次结构数据透视表的标头样式设置选项
<a name="format-pivot-tables-header-styling"></a>

您可以隐藏或重命名层次结构数据透视表的**行**标签。

**更改层次结构数据透视表的**行**标签**

1. 选择要更改的层次结构数据透视表，然后打开**设置视觉对象格式**菜单。

1. 在**标头**部分，您可以执行以下任务：
   + 选择**隐藏行标签**来隐藏数据透视表中的**行**标签。
   + 在**行标签**字段中输入要在数据透视表上显示的标签。

# 单元格格式设置
<a name="format-tables-pivot-tables-cells"></a>

## 行高
<a name="format-tables-pivot-tables-cells-row"></a>

您可以自定义表的行高。

**自定义表格或数据透视表的行高**

1. 在**属性**窗格中，选择**单元格**。

   **单元格**部分展开并显示单元格的自定义选项。

1. 在**行高**字段中输入一个以像素为单位的数字。可以输入一个从 8 到 500 的整数。

## 单元格文本
<a name="format-tables-pivot-tables-cells-text"></a>

您可以自定义表中单元格文本的格式。

**设置表格或数据透视表中单元格文本的格式**

1. 在**属性**窗格中，选择**单元格**。

   **单元格**部分展开并显示单元格的自定义选项。

1. 对**文本**执行以下一项或多项操作：
   + 要更改单元格文本的颜色，请选择**文本样式**下方的颜色样本，然后选择所需的表格文本颜色。
   + 要更改单元格文本的字体或字体大小，请打开**字体**或**字体大小**下拉列表，然后选择所需的字体或字体大小。
   + 要将单元格文本加粗、倾斜或加下划线，请从样式栏中选择适当的图标。
   + 要在太长显示不全的标头中实现文本换行，请选择**文本换行**。单元格文本换行不会自动增加行高。按照前面的步骤增加行高。
   + 要更改单元格文本的水平对齐方式，请选择水平对齐图标。您可以选择靠左对齐、居中对齐、靠右对齐或自动对齐。只能为层次结构数据透视表的**行**字段配置水平对齐方式。
   + 要更改单元格文本的垂直对齐方式，请选择垂直对齐图标。您可以选择靠上对齐、居中对齐、靠下对齐或自动对齐。表格式数据透视表的**自动对齐**值为垂直对齐。层次结构数据透视表的**自动对齐**值为居中对齐。  
![\[设置视觉对象格式菜单中单元格的垂直和水平对齐选项。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/format-pivot-table-alignment.png)

## 单元格背景颜色
<a name="format-tables-pivot-tables-cells-background"></a>

您可以自定义表单元格的背景颜色。

**自定义表格或数据透视表中单元格的背景颜色**

1. 在**属性**窗格中，选择**单元格**。

   **单元格**部分展开并显示单元格的自定义选项。

1. 对**背景**执行以下一项或多项操作：
   + 要让交替呈现行背景颜色，请选择**交替行颜色**。清除此选项意味着所有单元格采用相同背景颜色。
   + 如果您选择交替呈现行背景颜色，请选择相应背景颜色图标并选择一种颜色，分别为**奇数行**和**偶数行**选择一种颜色。您可以选择系统提供的颜色，将背景颜色重置为默认颜色，或者创建自定义颜色。
   + 如果您选择不交替呈现行背景颜色，请选择背景颜色图标并为所有单元格选择一种颜色。您可以选择系统提供的颜色，将背景颜色重置为默认颜色，或者创建自定义颜色。

## 单元格边框
<a name="format-tables-pivot-tables-cells-border"></a>

您可以自定义表单元格的边框。

**自定义表格或数据透视表中单元格的边框**

1. 在**属性**窗格中，选择**单元格**。

   **单元格**部分展开并显示单元格的自定义选项。

1. 对**边框**执行以下一项或多项操作：
   + 要自定义所需的边框类型，请选择边框类型图标。您可以选择无边框、仅添加水平边框、仅添加垂直边框或添加所有边框。
   + 要自定义边框粗细，请选择边框粗细度。
   + 要自定义边框颜色，请选择边框颜色图标，然后选择一种颜色。您可以选择系统提供的颜色，将边框颜色重置为默认颜色，或者创建自定义颜色。

# 总计和小计
<a name="format-tables-pivot-tables-totals"></a>

在表格和数据透视表上，您可以配置总计或小计的显示方式。表可以在视觉对象顶部或底部显示总计。数据透视表可以在行和列上显示总计和小计。

## 在 Quick 中向表和数据透视表添加合计和小计
<a name="format-tables-pivot-tables-totals-position"></a>

您可以将总计列添加到表格和数据透视表视觉对象，也可以将小计列添加到数据透视表视觉对象。

**显示或隐藏数据透视表的总计和小计**

1. 要显示总计，请打开**属性**窗格，然后选择**总计**。
   + 要显示行的总计，请打开**行**。总计显示在视觉对象的底行上。选择**冻结总计**，即可让总计在滚动查看表格期间始终可见。
   + 要显示列的总计，请打开**列**。总计显示在视觉对象的最后一列。

1. 要显示总计，请打开**属性**窗格，然后选择**小计**。
   + 要显示行的小计，请打开**行**。总计显示在视觉对象的底行上。
   + 要显示列的小计，请打开**列**。
   + 对于**级别**，请选择下列选项之一：
     + 选择**最后**仅显示图表层次结构最后一个字段的小计。这是默认选项。
     + 选择**全部**即可显示每个字段的小计。
     + 选择**自定义**即可自定义要显示小计的字段。

将行总计添加到表格或数据透视表视觉对象后，您还可以选择将总计定位在视觉对象的顶部或底部。您也可以更改数据透视表列总计的位置。

**定位表格或数据透视表的行或列总计**

1. 在**属性**窗格中，选择**总计**。

1. （可选）在**行**中选择**显示总计**。

1. （可选）在**列**中选择**显示总计**。

1. （可选）在**行**菜单中打开**定位**下拉菜单，选择要显示总计的位置。选择**顶部**将总计定位在表格顶部，选择**底部**将总计定位在表格底部。

1. （可选）在**列**菜单中打开**定位**下拉菜单，选择显示总计的位置。选择**左侧**将总计定位在表格左侧，选择**右侧**将总计定位在表格右侧。

您无法更改数据透视表视觉对象小计的位置。如果数据透视表使用层次结构布局，则小计行位于表格顶部。表格式数据透视表的小计显示在表格底部。

## 自定义总计和小计标签
<a name="format-tables-pivot-tables-totals-text"></a>

您可以重命名表格和数据透视表视觉对象中的总计，以便账户读者更好地了解上下文。默认情况下，总计和小计显示时不带标签。

**重命名表格或数据透视表视觉对象中的总计**

1. 在**属性**窗格中，选择**总计**或**小计**。

1. 在**标签**中输入要在总计中显示的单词或短语。

   在数据透视表中，您还可以将标签添加到列总计和小计。为此，请在**列**部分的**标签**中输入单词或短语。

1. （可选）在表格式数据透视表中，您还可以将组名添加到小计。要将组名添加到行小计，选择**标签**字段旁的**加号（\$1）**图标即可添加所需的组名参数。您也可以在此字段中输入单词或短语。

您还可以为表格和数据透视表视觉对象的总计和小计标签更改文本大小和字体颜色。

**设置总计和小计文本的格式**

1. 在**属性**窗格中，选择**总计**或**小计**。

1. 对**文本**执行以下一项或多项操作：
   + 要更改总计或小计文本的颜色，请选择**文本样式**下方的颜色样本，然后选择所需的表格文本颜色。
   + 要更改总计或小计文本的字体或字体大小，请打开**字体**或**字体大小**下拉列表，然后选择所需的字体或字体大小。
   + 要将总计或小计文本加粗、倾斜或加下划线，请从样式栏中选择适当的图标。

   在数据透视表中，您还可以为列总计和小计添加格式文本。为此，请在**列**部分重复上述步骤。

## 总计和小计的背景颜色
<a name="format-tables-pivot-tables-totals-background"></a>

**自定义总计和小计的背景颜色**

1. 在**属性**窗格中，选择**总计**或**小计**。

1. 对于**背景**，选择背景颜色图标，然后选择一种颜色。您可以选择系统提供的颜色，将背景颜色重置为默认颜色，或者创建自定义颜色。

   在数据透视表中，您还可以为列总计和小计添加背景颜色。为此，请在**列**部分为**背景**选择背景颜色图标。

## 总计和小计边框
<a name="format-tables-pivot-tables-totals-border"></a>

**自定义总计和小计的边框**

1. 在**属性**窗格中，选择**总计**或**小计**。

1. 对**边框**执行以下一项或多项操作：
   + 要自定义所需的边框类型，请选择边框类型图标。您可以选择无边框、仅添加水平边框、仅添加垂直边框或添加所有边框。
   + 要自定义边框粗细，请选择边框粗细度。
   + 要自定义边框颜色，请选择边框颜色图标，然后选择一种颜色。您可以选择系统提供的颜色，将边框颜色重置为默认颜色，或者创建自定义颜色。

   在数据透视表中，您还可以为列总计和小计添加边框。为此，请在**列**部分重复上述步骤。

## 将总计和小计样式设置应用于单元格
<a name="format-tables-pivot-tables-totals-apply"></a>

在数据透视表中，您可以将应用于总计的任何文本、背景颜色和边框样式设置应用于同一列或同一行的单元格。数据透视表使用的布局不同，行小计的显示方式也有所不同。在表格式数据透视表中，显式小计标题显示在视觉对象上方。在层次结构数据透视表中，显式小计标题则不会显示。相反，作者使用**设置视觉对象格式**菜单将小计样式设置应用于各个字段。折叠标头无法设置为小计样式。

**将总计和小计样式涉资应用于单元格**

1. 在**属性**窗格中，选择**总计**或**小计**。

1. 对于**样式设置应用对象**，选择要应用小计样式设置的视觉对象。可从以下选项中进行选择。
   + **无**：从所有单元格中移除样式设置选项。
   + **仅限标头**：将样式设置选项应用于数据透视表中的所有标头。
   + **仅限单元格**：将样式设置选项应用于数据透视表中的非标头单元格。
   + **标头和单元格**：将样式设置选项应用于数据透视表中的所有单元格。

# Quick 中表和数据透视表中的行和列大小
<a name="format-tables-pivot-tables-resize-rows-columns"></a>

作者和读者可以调整表格或数据透视表视觉对象的行和列大小，也可以调整行高和列宽。作者还可以为数据透视表视觉对象中的列设置默认列宽。

**调整表格或数据透视表的行大小**
+ 在表格或数据透视表视觉对象中，将光标悬停在要调整大小的线条上直至水平光标出现。水平光标出现时，选择该线条并将其拖至新高度。

  您可以通过选择单元格和行标头的水平线来调整行高。  
![\[调整表格或数据透视表的行大小。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/resize-table-row1.gif)

**调整表格或数据透视表的列宽**
+ 在表格或数据透视表视觉对象中，将光标悬停在要调整大小的线条上直至垂直光标出现。垂直光标出现时，选择该线条并将其拖至新宽度。

  您可以通过选择单元格、列标头和行标头上的垂直线来调整列宽。  
![\[调整表格或数据透视表的列大小。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/resize-table-row2.gif)

**设置数据透视表的默认列宽**

1. 选择要更改的数据透视表，然后打开**设置视觉对象格式**菜单。

1. 在**透视选项**部分，导航到**列宽值（像素）**字段，然后以像素为单位输入所需的默认值。

# 自定义数据透视表数据
<a name="format-tables-pivot-tables-layout-options"></a>

您可以自定义 Quick 阅读器查看数据透视表的方式，以便更易于阅读和理解。您可以选择隐藏数据透视表的加号和减号图标，隐藏只有单一指标值的列，或隐藏视图中的折叠列。这些选项可以帮助 Quick 作者清除数据透视表中的混乱内容，为 Quick 用户提供更轻松的阅读体验。这与选择数据透视表布局不同。有关数据透视表布局选项的更多信息，请参阅[选择布局](create-pivot-table.md#pivot-table-layout)。

您也可以从数据透视表的**组合行字段菜单**访问这些选项。您为数据透视表选择的布局决定了此菜单的访问方式。有关访问**组合行字段**菜单的更多信息，请参阅：

**更改数据透视表的布局**

1. 在**设置视觉对象格式**窗格中选择**透视选项**。

1. 在**透视选项**菜单中选择以下选项即可自定义视图：
   + **隐藏 \$1/— 按钮** — 默认情况下隐藏数据透视表中的加号和减号图标。读者仍然可以选择显示加号和减号图标以及展开或折叠列和行。
   + **隐藏单一指标** – 隐藏只有单一指标值的列。
   + **隐藏折叠列** – 自动隐藏数据透视表中的所有折叠列。此选项仅适用于表格式数据透视表。

# 在 Quick 中向表格添加数据栏
<a name="format-data-bars"></a>

在 Amazon Quick 中，您可以使用数据栏为表格视觉对象添加视觉上下文。通过为表填充颜色，数据栏便于显示和比较一组字段中的数据。*数据栏*提供不同颜色或阴影，您可将其添加到表格单元格。数据栏相对于单列的所有单元格的范围进行测量，这与条形图类似。您可以使用数据栏突出显示波动趋势，例如本年每季度的利润。

您只能将数据栏应用于添加到视觉对象的**值**字段井中的字段。您无法将数据栏应用于添加到分组依据的项目。

您可以为单个表创建多达 200 种不同的数据栏配置。

![\[在表格中显示数据栏的图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/data-bars-1.png)


**将数据栏添加到表格**

1. 在分析页面上，选择要设置格式的视觉对象。

1. 从视觉对象右上角的菜单中选择**设置视觉对象格式**图标。**设置视觉对象格式**窗格随即打开。

1. 在**属性**窗格中，打开**视觉对象**下拉列表并选择**添加数据栏**。

1. 在出现的**数据栏**弹出窗口中，选择要用数据栏表示的值字段。您只能选择添加到视觉对象的**值**字段井中的字段。

1. （可选）选择标有**正值颜色**的图标，即可选择要表示正值数据栏的颜色。默认颜色为绿色。

1. （可选）选择标有**负值颜色**的图标，即可选择要表示负值数据栏的颜色。默认颜色为红色。

创建数据栏时，根据各自表示的字段值命名数据栏。例如，如果您通过添加数据栏来表示产品在一段时间内的利润，则数据栏配置标记为“利润”。在**属性**菜单的**视觉对象**窗格中，数据栏按其创建顺序列出。

**移除视觉对象的数据栏**

1. 从视觉对象右上角的菜单中选择**设置视觉对象格式**图标。将打开**属性**窗格。

1. 在**属性**窗格中，打开**视觉对象**下拉菜单并选择要移除的数据栏。

1. 选择**移除数据栏**。

# 在 Quick 中向表格添加迷你图
<a name="format-sparklines"></a>

Sparklines 是直接在表格单元格中显示趋势的小型内联图表，可帮助读者在不离开表格视图的情况下快速识别模式和季节性。当您需要紧凑的趋势可视化以及表格数据时，请使用迷你图。

**将迷你图应用于表格**

1. 在分析页面上，选择要格式化的表格视觉对象。

1. 从视觉对象右上角的菜单中选择**设置视觉对象格式**图标。**设置视觉对象格式**窗格随即打开。

1. 在 “**属性**” 窗格中，打开 “**视觉效果**” 下拉列表并选择 “**应用 SPARK** LINES”。

1. 在迷你图编辑窗格中，配置数据设置：
   + 对于 “**值” 列**，选择您希望迷你图表示的度量字段。其他迷你图或数据栏已经使用的字段不可用。
   + 对于 **X 轴字段**，选择要沿水平轴绘制的维度字段。X 轴字段不得与 “分**组依**据” 字段中的字段完全相同。您还可以配置 X 轴字段的排序方向和时间粒度（对于日期/时间字段）。

1. （可选）展开 “**演示文稿**” 部分以自定义火花线外观。有关详细信息，请参阅 [火花线选项](#format-sparklines-options)。

1. （可选）配置标记可见性。默认情况下，所有标记均处于隐藏状态。你可以选择显示：
   + **所有点**-在每个数据点上显示一个标记。
   + **最大值**-在最高值上显示标记。
   + **最小值**-在最低值上显示标记。

1. 选择**应用**。

迷你图以其表示的值字段命名（例如，“Profit”）。迷你图按其创建顺序显示在 “**视觉效果**” 窗格中。

## 火花线选项
<a name="format-sparklines-options"></a>

下表描述了火花线演示选项。


| 设置 | 选项 | 默认值 | 说明 | 
| --- | --- | --- | --- | 
| Y 轴行为 | 共享、独立 | 已共享 | 为了便于比较，Shared 在所有行上使用相同的 Y 轴刻度。Independent 分别缩放每行，以突出显示各个趋势形状。 | 
| 视觉对象类型 | 线、区域线 | 行 | 区域线在该线条下方添加阴影区域。 | 
| 线条颜色 | 颜色选取器 | 主题颜色 | 火花线的自定义颜色。 | 
| 线插值 | 线性、平滑、阶梯式 | 线性 | 控制点的连接方式。 | 

## 编辑和移除迷你图
<a name="format-sparklines-edit-remove"></a>

要编辑迷你图，请在 “**格式**化视觉对象**” 窗格中打开 “视觉**效果” 下拉列表，然后选择要修改的迷你图旁边的编辑图标。更新设置并选择 “**应用**”。

**要移除迷你图，请打开迷你图的编辑窗格，然后选择删除。**

## 自动移除
<a name="format-sparklines-auto-removal"></a>

当字段更改使迷你图无效时，Quick 会自动将其删除：
+ 所有**分组依据**字段都被移除——所有迷你图都被移除。
+ **迷你图的值列已从 “值” 字段中移除，即该火花线被移除。**
+ Sparkline 的 X 轴字段已添加到 **Group by 字段中，该火花线已被**移除。

自动移除火花图时会显示一条通知。

## 火花线限制
<a name="format-sparklines-limitations"></a>

使用迷你图时，请考虑以下几点：
+ **每张桌子的最大火花线 — 每张表格**最多可视化三列火花线
+ **最大数据点**-每条火花线最多 52 个数据点。如果您的数据超过此限制，Quick 会根据您的 X 轴排序顺序显示最后 52 个数据点。
+ **字段要求**-“分**组依**据” 字段中至少有一个字段，“**值**” 字段中至少有一个字段
+ **X 轴约束**-X 轴字段不能与任何 “分**组**依据” 字段相同
+ **独占值列用法**-迷你图和数据栏不能同时使用值列
+ **导出支持** — 火花线包含在 PDF 导出中，但不包含在 CSV 或 Excel 导出中
+ **筛选行为**-应用于表格的筛选器还会筛选迷你图数据

# Quick 中的地图和地理空间图表格式选项
<a name="geospatial-formatting"></a>

在 Amazon Quick 中，您可以从地图和地理空间图表的多个格式选项中进行选择。若要查看格式设置选项，您可以从当前所选地理空间图右上角的视觉对象菜单打开**属性**窗格。

快速创作者和读者还可以从视觉菜单中切换地理空间地图视觉对象的不同格式选项。

![\[从视觉对象菜单切换地理空间图格式设置选项。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/geospatial-map-options-1.gif)


**Topics**
+ [Quick 中基于地理空间地图的基础地图](base-maps.md)
+ [Amazon Quick 中的地理空间热图](heat-maps.md)
+ [Quick 中地理空间点图上的标记聚类](marker-clustering-on-maps.md)

# Quick 中基于地理空间地图的基础地图
<a name="base-maps"></a>

在 Quick 中创建地图视觉对象时，可以更改地图的底部。*底图*是显示在地图数据下方的地图样式，例如卫星视图与街景视图。

在 Quick 中，基础地图有四个选项：浅灰色画布、深灰色画布、街道和影像。以下列表包含每个底图选项的示例：

**重要**  
亚太地区（孟买） AWS 区域 (ap-south-1) 仅支持浅灰色画布。
+ 浅灰色画布  
![\[这是以浅灰色画布为底图的地图视觉对象的示例图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/map-layers1.png)
+ 深灰色画布  
![\[这是以深灰色画布为底图的地图视觉对象的示例图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/map-layers2.png)
+ 街景  
![\[这是以街道为底图的地图视觉对象的示例图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/map-layers3.png)
+ 影像  
![\[这是以影像为底图的地图视觉对象的示例图像。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/map-layers4.png)

## 更改底图
<a name="base-maps-change"></a>

要更改底图，请按照以下过程操作。

**更改底图**

1. 在分析中创建点式地图或填充地图。有关更多信息，请参阅 [创建地图和地理空间图](geospatial-charts.md)。

1. 在地图视觉对象上，选择**设置视觉对象格式**图标。

1. 在打开的**属性**窗格中，选择**底图**部分，然后选择所需底图。

# Amazon Quick 中的地理空间热图
<a name="heat-maps"></a>

使用地理空间热图来揭示地理空间视觉对象中标记的集中模式。热图使用彩色叠加层显示数据点的集中度，该叠加层突出显示视觉对象标记的强度或集中度。

![\[这是标记聚类的工作示例。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/heat-map-1.png)


**将地理空间图转换为热图**

1. 打开分析并选择要设置格式的地理空间图。当您选择视觉对象时，视觉对象周围会高亮显示。

1. 要打开格式面板，请从视觉菜单中选择 “**格式化视觉**对象” 图标。

1. 在左侧的格式设置窗格中选择**点**。

1. 选择**热图**。

1. （可选）对于**热图渐变**，请为**高密度**和**低密度**值选择所需颜色。

# Quick 中地理空间点图上的标记聚类
<a name="marker-clustering-on-maps"></a>

通过标记聚类提高地图上共位点的可读性。点式地图上的地理空间位置用标记表示。每个数据点通常都有一个标记。但邻近标记过多，地图就会变得难以阅读。为了便于解读地图，您可以启用标记聚类来表示地图位置分组。当读者放大地图时，聚类标记会与区域标记分离并单独显示。

![\[这是标记聚类的工作示例。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/map-marker-clustering.gif)


**向地图添加聚类点**

1. 打开分析并选择要设置格式的地理空间图。当您选择视觉对象时，视觉对象周围会高亮显示。

1. 要打开格式面板，请从视觉菜单中选择 “**格式化视觉**对象” 图标。

1. 在左侧的格式设置窗格中选择**点**。

1. 请选择以下选项之一：
   + **基本** – 使用地图数据点的默认显示设置。
   + **聚类点** – 当一个区域中有多个地图数据点时将其聚合。

# Quick 中视觉类型上的轴和网格线
<a name="showing-hiding-axis-grid-tick"></a>

在 Quick 中创建图表时，轴线、轴标签、轴排序图标和网格线会自动添加到图表中。如果需要，您可以通过设置视觉对象格式来显示或隐藏这些视觉对象，还可以自定义轴标签的大小和方向。

您可以为以下图表类型设置轴线、网格线、轴标签和轴排序图标的格式：
+ 条形图
+ 箱形图
+ 组合图
+ 直方图
+ 折线图
+ 散点图
+ 瀑布图

**设置图表轴线、轴标签和网格线的格式**

1. 在分析页面上，选择要设置格式的视觉对象。

1. 从视觉对象右上角的菜单中选择设置视觉对象格式图标。

   **属性**窗格将在左侧打开。

**显示或隐藏轴线**

1. 在**属性**窗格中，选择要设置格式的轴。

1. 选择**显示轴线**。清除该复选框可隐藏所选轴的轴线。选中复选框即可显示。

**自定义轴标题**

1. 在**属性**窗格中，选择要设置格式的轴。

1. 选择**显示标题**。清除该复选框可隐藏所选轴的轴标题和下拉插入符号图标。选中复选框即可显示。

1. 要更改默认字段名称的标题，请在文本框中输入标题。

**注意**  
除了本主题前面列出的图表类型外，您还可以自定义饼图、圆环图、漏斗图、热图和树形图中的轴标题。

**修改轴字体设置**

1. 在**属性**窗格中，选择要设置格式的轴。

1. 调整以下属性：
   + **字体系列**
   + **文本大小**
   + **样式**（粗体、斜体、下划线）
   + **Color (颜色)**

**注意**  
轴标题支持@@ **下划线**，但轴标签不支持下划线
不同的图表类型使用不同的术语：  
**条形@@ **/折线图**-**X 轴和 Y 轴****
**饼图**-**值**
**热图**-**行**和**列**

**显示或隐藏排序图标**

1. 在**属性**窗格中，选择要设置格式的轴。

1. 选择**显示排序**。清除该复选框可隐藏所选轴的排序图标。选中复选框即可显示。

   当您选择移除排序图标时，排序图标将从轴上移除。如有任何排序在移除图标之前已应用于视觉对象，其不会从视觉对象中移除。

**注意**  
除了本主题前面列出的图表类型外，您还可以显示或隐藏饼图、圆环图、漏斗图、热图和树形图中的排序图标。

**显示或隐藏数据缩放**

1. 在**属性**窗格中，选择 **X 轴**。

1. 选择**显示数据缩放**。清除该复选框可隐藏数据缩放。选中复选框即可显示。

   数据缩放栏自动出现在有 X 轴且包含多个数据点的图表上。左右调整数据缩放栏可缩放至图表中的特定数据点。
**注意**  
如果您使用数据缩放栏进行放大或缩小，然后选择隐藏数据缩放栏，缩放位置则会发生变化。视觉对象会完全缩小来包含所有数据点。再次显示数据缩放可将视觉对象恢复为先前的状态。

**显示或隐藏轴标签**

1. 在**属性**窗格中，选择要设置格式的轴。

1. 选择**显示标签**。清除该复选框可隐藏所选轴的轴标签。选中复选框即可显示。

**更改标签大小**

1. 在**属性**窗格中，选择要设置格式的轴。

1. 为**标签大小**选择一个大小。

**更改标签方向**

1. 在**属性**窗格中，选择要设置格式的轴。

1. 为**标签方向**选择一个方向。

**显示或隐藏网格线**

1. 在**属性**窗格中，选择要设置格式的轴。

1. 选择**显示网格线**。清除该复选框可隐藏所选轴的网格线。选中复选框即可显示。

# Quick 中视觉类型中的颜色
<a name="changing-visual-colors"></a>

您可以更改以下图表类型的一个、部分或所有元素的颜色：
+ 条形图
+ 圆环图
+ 量规图
+ 热图
+ 折线图
+ 散点图
+ 树形图

要更改条形图、圆环图、仪表盘图、折线图和散点图的颜色，请参阅[更改图表颜色](#format-colors-on-charts)。

要更改热图和树形图的颜色，请参阅[更改热图和树形图的颜色](#format-colors-on-heatmaps-and-treemaps)。

## 更改图表颜色
<a name="format-colors-on-charts"></a>

您可以更改图表上所有元素使用的图表颜色，也可以更改单个元素的颜色。当您为单个元素设置颜色时，它会覆盖图表颜色。

例如，假设您将图表颜色设置为绿色。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/color-priority1.png)


所有的条形都变成绿色。即使您选择第一个条形，图表颜色也适用于所有条形。然后，将 **SMB** 条的颜色设置为蓝色。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/color-priority2.png)


查看结果，您决定在绿色条和蓝色条之间需要更多的对比度，因此将图表颜色更改为橙色。如果您正在更改图表颜色，您选择从哪个条形打开快捷菜单并不重要。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/color-priority3.png)


**SMB** 条保持为蓝色。这是因为它是直接配置的。其余的条形变为橙色。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/color-priority4.png)


当您更改分组元素的颜色时，会在所有组中更改该元素的颜色。例如，簇状条形图中的条形。在以下示例中，客户群体将从 **Y-axis (Y 轴)** 移出并移入 **Group/Color (组/颜色)** 字段井。客户区域添加为 **Y-axis (Y 轴)**。对于所有客户区域，图表颜色保持为橙色，SMB 保持为蓝色。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/color-priority5.png)


如果视觉对象具有显示类别（维度）的图例，您可以单击图例中的值以查看可用操作的菜单。例如，假设条形图在 **Color (颜色)** 或 **Group/Color (组/颜色)** 字段井中有一个字段。条形图菜单显示您可以通过单击或右键单击条形来选择的操作，如下所示：
+ 聚焦或排除视觉对象元素
+ 更改视觉对象元素的颜色
+ 向下钻取层次结构
+ 从菜单激活的自定义操作，包括筛选或 URL 操作

以下是使用图例更改维度颜色的示例。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/visual-elements-legend-color.png)


### 为视觉对象设置新颜色
<a name="change-visual-color"></a>

要更改视觉对象的颜色，请按照以下过程操作。

**更改视觉对象的颜色**

1. 在分析页面上，选择要修改的视觉对象。

1. 要更改图表颜色，请在视觉对象上选择任意元素，然后选择 **Chart Color**。

   要选择元素，请执行以下操作：
   +  在条形图上，选择任意条。
   +  在折线图上，选择一条线的末尾。
   +  在散点图上，选择一个元素。字段必须位于 **Field wells** 的 **Group/Color** 部分中。

1. 选择要使用的颜色。您可以从现有调色板选择，也可以选择自定义颜色。要使用自定义颜色，请输入颜色的十六进制代码。

   视觉对象上的所有元素都更改为使用该颜色，但之前单独设置过颜色的元素除外。在这种情况下，元素颜色将覆盖图表颜色。

1. 要更改视觉对象上单个元素的颜色，请选中相应元素，选择**颜色 <field name>**，然后选择要使用的颜色。您可以从现有调色板选择，也可以选择自定义颜色。要使用自定义颜色，请输入颜色的十六进制代码。

   重复该步骤，为要修改的所有元素设置颜色。要将颜色更改回原来的颜色，请选择 **Reset to default (重置为默认值)**。

### 将视觉对象颜色重置为默认值
<a name="reset-visual-color"></a>

要恢复视觉对象的默认颜色，请按照以下过程操作。

**将视觉对象恢复为默认颜色**

1. 在分析页面上，选择要修改的视觉对象。

1. 选择**图表颜色**，在视觉对象上选择任意元素，然后选择**重置为默认值**。执行此操作可将图表颜色恢复为该视觉对象类型的默认颜色。

   视觉对象上的所有元素都更改为该视觉对象类型的默认颜色，但之前单独设置过颜色的元素除外。在这种情况下，元素颜色设置将覆盖图表颜色设置。

1. 要将单个元素的颜色改回默认值，请选择相应元素，选择**颜色 <field name>**，然后选择**重置为默认值**。

   单个元素的默认颜色为图表颜色 (如果您指定过的话)，否则，为该视觉对象类型的默认颜色。

## 更改热图和树形图的颜色
<a name="format-colors-on-heatmaps-and-treemaps"></a>

**更改热图或树形图显示的颜色**

1. 选择要编辑的热图或树形图。

1. 在设置菜单中选择**展开**，然后选择齿轮图标打开**属性**面板。

1. 为**颜色**选择要使用的设置：

1. 对于**渐变颜色**或**离散颜色**，选择色条旁的色块，然后选择要使用的颜色。对每个色块重复此操作。色条默认有两种颜色。

1. 如果要添加第三种颜色，请选中**启用 3 种颜色**复选框。色条中间会出现一个新色块。

   您可以输入数字来定义两种主要渐变颜色之间的中点。如果添加值，则中间颜色代表您输入的数字。如果将此项留空，则中间颜色的作用与渐变的其他颜色类似。

1. 如果要限制图表仅采用所选颜色，请选中**启用步骤**复选框。此操作会将色条上的标签从**渐变颜色**更改为**离散颜色**。

1. 对于**空值颜色**，请选择一种颜色来描绘 NULL 值。此选项仅在热图中提供。

# 在 Amazon Quick 中使用场关卡着色
<a name="format-field-colors"></a>

使用字段级别着色，您可以为快速分析或仪表板中所有视觉对象的特定字段值指定特定的颜色。颜色按字段指定，既可简化颜色设置过程，又可确保使用同一字段的所有视觉对象的一致性。例如，假设您想为自己的航运公司创建一组视觉对象来追踪不同地区的运费。您可以使用字段级别着色为每个地区指定不同颜色，用以表示分析或控制面板中所有视觉对象中的字段。如此，账户读者可以快速了解其正在寻找的字段颜色，更轻松地找到所需信息。

快速创作者可以为每个字段配置多达 50 种基于字段的颜色。在视觉对象级别定义的颜色优先于基于字段的颜色。这意味着，如果作者为视觉对象的某个值设置了颜色，则该颜色将覆盖该单个视觉对象基于字段的颜色配置。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/field-coloring.gif)


**将字段级别着色应用于旧账户**

1. 在分析的**字段**窗格中，选择要指定颜色的字段旁的省略号（三个点），然后选择**编辑字段颜色**。

1. 在出现的**编辑字段颜色**窗格中选择要指定颜色的值，然后选择所需颜色。您可以将颜色应用于**字段值**窗格中显示的所有值。

1. 为所需字段指定颜色后选择**应用**。

如果要重置字段的颜色值，请打开**编辑字段颜色**窗格，然后选择要重置的字段旁的刷新图标。您可以选择**重置颜色**来重置分析中的所有颜色值。

在**编辑字段颜色**窗格中选择**显示未使用颜色**，即可查看可配置为新字段的未使用颜色列表。重置字段颜色时，废弃的颜色将添加到**未使用颜色**列表中且可指定给新字段。

# 在 Quick 中对视觉类型进行条件格式化
<a name="conditional-formatting-for-visuals"></a>

在某些视觉对象类型中，您可以添加条件格式设置来突出显示某些数据。当前支持的条件格式选项包括更改文本或背景颜色以及使用符号图标。您可以使用所提供的图标集中的图标，也可以使用 Unicode 图标。

条件格式可用于以下视觉对象：
+ 量规图
+ 关键绩效指标 (KPIs)
+ 数据透视表
+ 表

对于表格和数据透视表，您可以为字段或受支持的聚合设置多个条件，以及要应用于目标单元格的多个格式选项。对于 KPIs 和仪表图，您可以根据应用于数据集中任何维度的条件来设置主值的格式。对于量规图，还可以根据条件设置弧线的前景色。

**在视觉对象上使用条件格式设置**

1. 在分析页面上，选择要设置格式的视觉对象。

1. 在视觉对象上，打开右上角向下图标上的上下文菜单。然后选择 **Conditional formatting (条件格式)**。

   格式设置选项显示在左侧。选择下列选项之一：
   + ****对于数据透视表**** – 首先选择要使用的度量。您可以在一个或多个字段上设置条件格式。选择仅限于 **Values (值)** 字段井中的度量。
   + ****对于表**** – 首先选择要使用的字段。您可以在一个或多个字段上设置条件格式。您还可以选择将格式应用于整个行。对整个行设置格式将向 **Apply on top (应用于顶部)** 添加一个选项，该选项除了应用其他条件添加的格式外，还应用行格式。
   + For KPIs — ****对****主值或进度条或两者都应用格式设置。

1. 对于此过程中的其余步骤，请选择要使用的功能。并非所有选项都适用于所有视觉对象。

1. （可选）选择 **Add background color (添加背景颜色)** 以设置背景颜色。如果已添加背景颜色，请选择 **Background (背景)**。
   + **填充类型** – 背景颜色可以为**纯色**或**渐变**。如果选择使用渐变色，则会显示其他颜色选项，使您能够为渐变比例选择最小值和最大值。最小值默认为最低值，最大值默认为最高值。
   + **格式设置依据的字段** – 应用格式时要使用的字段。
   + **聚合** – 要使用的聚合（仅显示可用聚合）。
   + **条件** – 要使用的比较运算符，例如“大于”。
   + **值** – 要使用的值。
   + **颜色** – 要使用的颜色。
   + **其他选项：**在数据透视表中，您可以通过从上下文菜单（**…**）中选择**值**、**小计**和**总计**等选项来设置要设置格式的内容。

1. （可选）选择 **Add text color (添加文本颜色)** 以设置文本颜色。如果已添加文本颜色，请选择 **Text (文本)**。
   + **格式设置依据的字段** – 应用格式时要使用的字段或项目。
   + **聚合** – 要使用的聚合（仅显示可用聚合）。此选项适用于表格和数据透视表。
   + **条件** – 要使用的比较运算符，例如“大于”。
   + **值** – 要使用的值。
   + **颜色** – 要使用的颜色。
   + **Additional options: (其他选项:)** 在表格和数据透视表中，您可以通过从上下文菜单 (**…**) 中选择选项 **Values (值)**、**Subtotals (小计)** 和 **Totals (总计)** 来设置要设置格式的内容。

1. （可选）选择 **Add icons (添加图标)** 以设置图标或图标集。如果已添加图标，请选择 **Icon (图标)**。
   + **格式设置依据的字段** – 应用格式时要使用的字段或项目。
   + **聚合** – 要使用的聚合（仅显示可用聚合）。此选项适用于表格和数据透视表。
   + **图标集** – 应用于**格式设置依据的字段**中字段的图标集。此选项适用于表格和数据透视表。
   + **反转颜色** – 反转表格和数据透视表的图标颜色。
   + **自定义条件** – 为表格和数据透视表提供更多图标选项。
   + **条件** – 要使用的比较运算符。
   + **值** – 要使用的值。
   + **图标** – 要使用的图标。要选择图标集，请使用 **Icon (图标)** 符号选择要使用的图标。从提供的图标集中进行选择。在某些情况下，您可以添加自己的图标。要使用自己的图标，请选择**使用自定义 Unicode 图标**。粘贴要用作图标的 Unicode 字形。选择 **Apply (应用)** 以保存，或选择 **Cancel (取消)** 以退出图标设置。
   + **颜色** – 要使用的颜色。
   + **仅显示图标** – 将值替换为表格和数据透视表的图标。
   + **其他选项:**
     + 在表格和数据透视表中，您可以通过从上下文菜单 (**…**) 中选择选项 **Values (值)**、**Subtotals (小计)** 和 **Totals (总计)** 来设置要设置格式的内容。
     + 在数据透视表中，启用 **Custom conditions (自定义条件)** 会激活预设条件格式，您可以保留、添加或使用您自己的设置覆盖这些条件格式。

1. （可选）选择 **Add foreground color (添加前景颜色)** 以设置 KPI 进度条的前景颜色。如果已添加前景颜色，请选择 **Foreground (前景)**。
   + **格式设置依据的字段** – 应用格式时要使用的字段。
   + **条件** – 要使用的比较运算符。
   + **值** – 要使用的值。
   + **颜色** – 要使用的颜色。

1. 完成配置条件格式设置后，请选择以下一个或多个选项：
   + 要保存您的工作，请选择 **Apply (应用)**。
   + 要取消选择并返回到上一个面板，请选择**Cancel (取消)**。
   + 要关闭设置面板，请选择 **Close (关闭)**。
   + 要重置此面板上的所有设置，请选择 **Clear (清除)**。

# KPI 选项
<a name="KPI-options"></a>

您可以 KPIs 在 Amazon Quick 中进行自定义以满足您的业务需求。您可以添加上下文迷你图或进度条，分配主要值和次要值，并向其中添加条件格式。 KPIs

要在 Quick 中格式化 KPI，请导航到要更改的 KPI，然后选择 “**格式化视觉对象” 图标以打开 “格式****化**” 视觉对象。

使用以下过程为执行格式化任务 KPIs。

## 将视觉对象添加到 KPI 中
<a name="KPI-add-visual"></a>

在 Quick 中，您可以选择向任何 KPI 添加区域火花线、火花线或进度条。添加视觉效果可为正在查看 KPI 数据的读者 KPIs 提供可视化上下文。要将视觉对象添加到 KPI，请按照以下过程操作。

**将视觉对象添加到 KPI 中**

1. 导航到要更改的 KPI，然后打开设置视觉对象格式菜单。

1. 在**属性**菜单中，选中**视觉对象**框以在 KPI 图表上显示视觉对象。

1. （可选）打开**视觉对象**下拉菜单，从中选择要在 KPI 上显示的视觉对象类型。您可以选择显示面积迷你图、迷你图或进度条。要显示迷你图，请确保您的 KPI 在**趋势**字段井设置了值。**面积迷你图**为默认值。

1. （可选）要更改迷你图的颜色，请选择**视觉对象**下拉菜单左侧的颜色图标，然后选择所需颜色。进度条不支持颜色格式设置。

1. （可选）选择**添加工具提示**，将工具提示添加到 KPI 视觉对象中。

## 自定义主要值和次要值
<a name="KPI-customize-values"></a>

使用**设置视觉对象格式**菜单自定义字体、颜色，并选择显示哪个主要值。您还可以选择显示次要值。

**自定义 KPI 的主要值和次要值**

1. 导航到要更改的 KPI，打开**设置视觉对象格式**菜单，再导航到 **KPI** 部分。

1. 对于**主要值**，使用**字体**下拉菜单选择所需字体大小。默认值为**自动**。

1. （可选）要更改主要值的字体颜色，请选择**字体**下拉菜单旁的颜色图标，然后选择所需颜色。

1. 对于**显示的主要值**，您可以选择显示实际值或主要值的比较值。

1. 要添加次要值，请选择**次要值**。

   1. （可选）使用**字体**下拉菜单选择所需字体大小。默认值为**超大**。

   1. （可选）要更改次要值的字体颜色，请选择**字体**下拉菜单旁的颜色图标，然后选择所需颜色。

## 的条件格式化选项 KPIs
<a name="KPI-conditional-formatting"></a>

自动为 KPIs 比较值设置条件格式。默认情况下，正值用绿色表示，负值用红色表示。您可以从**属性**窗格自定义这些颜色值的颜色值。

**更改正值和负值的颜色**

1. 在**属性**窗格中，打开**条件格式**部分，然后选择要更改的比较值。

1. 要更改正值的颜色，请导航到**条件 \$11**，选择**颜色**图标，然后选择所需颜色。

1. 要更改负值的颜色，请导航到**条件 \$12**，选择**颜色**图标，然后选择所需颜色。

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

您还可以在**条件格式设置**菜单中为**实际值**添加文本颜色和图标。要为实际值添加文本颜色或图标，请选择**添加文本颜色**或**添加图标**来设置新值。

# Quick 中视觉类型上的标签
<a name="customizing-visual-labels"></a>

要自定义、显示或隐藏视觉对象的标签，请按照以下过程操作。

**自定义、显示或隐藏视觉对象的标签**

1. 在分析页面上，选择要设置格式的视觉对象。您可以直接在视觉对象上选择标签，然后选择 **Rename (重命名)**，从而更改标签。要还原为默认名称，请删除您的输入。

1. 要查看更多选项，请从视觉对象右上角的向下图标中选择视觉菜单，然后选择**格式**化视觉效果图标。

   对于数据透视表，您可以重新标记行名、列名和值名称。此外，在 **Styling (样式)** 下，您可以选择隐藏列标签或指标标签（仅对于单个指标）。

   您可以将相同的值添加到相同的视觉对象多次。您可以执行此操作以显示应用不同聚合或表计算的相同值。默认情况下，字段全部显示相同的标签。您可以使用**属性**面板编辑名称，可通过选择右上角的 **V** 形图标打开该面板。

1. 在**属性**窗格上，启用或禁用**显示标题**。此选项会移除轴标题。

1. 选择窗格右上角的 **X** 图标即可关闭**属性**窗格。

# Quick 中视觉类型上的数据标签
<a name="customizing-visual-data-labels"></a>

要自定义视觉对象上的数据标签，您可以使用**属性**窗格显示数据标签，然后使用这些设置配置这些标签。条形图、折线图、组合图、区域图、散点图、甜甜圈图、箱线图、瀑布图、热图、树状图、直方图、漏斗图、sankey、仪表图、雷达图和饼图支持自定义数据标签。

您可以自定义以下选项：
+ 位置，它确定标签相对于数据点的位置（对于条形图、组合图和折线图）：
  + 对于垂直条形图，您可以自定义以设置位置：
    + 条形上面
    + 条形内部
    + 条形底部
    + 条形顶部
  + 对于水平条形图，您可以自定义以设置位置：
    + 条形右侧
    + 条形内部
  + 对于折线图，您可以自定义以设置位置：
    + 线条上面
    + 线条上的点的左侧或右侧
    + 线条下面
  + 对于散点图，您可以自定义以设置位置：
    + 点上面
    + 点的左侧或右侧
    + 点下面
+ 字体大小和颜色（对于条形图、组合图、折线图、散点图和饼图）
+ 标签模式，它确定如何标记数据（对于条形图、组合图、折线图和散点图）：
  + 对于条形图、组合图和散点图，您可以标记：
    + 全部 
    + 通过组或颜色
  + 对于折线图，可以使用以下标签选项：
    + 全部 
    + 通过组或颜色
    + 线条末尾
    + 仅最小值或最大值
    + 最小值和最大值
  + 对于饼图，可以使用以下标签选项：
    + 显示类别 
    + 显示指标
    + 选择将指标标签显示为值、百分比或值和百分比 
+ 组选择（对于条形图和折线图，在标签模式为“按组/颜色”时）
+ 允许标签重叠（对于条形图和折线图），用于较少的数据点
+ 对于垂直条形图、组合图和折线图，过长的标签默认是倾斜的。您可以在 **X-axis (X 轴)** 设置下面配置角度。

**注意**  
如果向轴添加多个度量，则数据标签仅显示第一个度量的格式。

**配置数据标签**

1. 在分析页面上，选择要设置格式的视觉对象。

1. 从视觉对象右上角的向下图标中选择视觉菜单，然后选择 “**格式**化视觉效果” 图标。

1. 在**属性**窗格上，选择**数据标签**。

1. 启用 **Show data labels (显示数据标签)** 以显示并自定义标签。可以禁用该选项以隐藏数据标签。

1. 选择要使用的设置。对于每种图表类型，提供的设置略有不同。要查看所有可用的选项，请在执行此过程之前查看该列表。

   您可以立即查看在视觉对象上进行的每处更改的效果。

1. 要修改数据标签字体设置，请调整以下属性：
   + **字体系列**
   + **文本大小**
   + **样式**（粗体、斜体）
   + **Color (颜色)**

1. 选择窗格右上角的 X 图标即可关闭**属性**窗格。

# 根据 Quick 中的语言设置格式化视觉数字数据
<a name="customizing-visual-language-preferences"></a>

在 Amazon Quick 中，您可以选择数字数据值在视觉对象中的显示方式，使其与您选择的地区语言保持一致。

作为 Quick 作者，您可以选择最适合受众群体的语言格式。Amazon Quick 会根据您选择用于查看 Quick in 的语言在分析级别配置数字数据语言。您可以更改数字、货币和日期的格式设置。您可以在右上角快速**用户**菜单的**语言**下拉列表中更改您的快捷语言设置。您可以更改工作表中各个视觉对象中字段的语言格式设置，也可以在单个视觉对象级别更改语言格式设置。

**更改分析中所有视觉对象的数值语言格式设置**

1. 在要更改的分析的**视觉对象**窗格中，选择要更改的字段旁边的更多操作（三个点）图标。从出现的菜单中打开**格式**下拉列表，然后选择**更多格式设置选项**。

1. 在左侧显示的**设置数据格式**窗格中，选择**应用语言格式**。

   重新打开**设置数据格式**菜单并选择**重置为默认值**，即可重置字段的默认语言格式。默认语言格式为美式英语。

**更改分析中单个视觉对象的数值语言格式设置**

1. 在分析页面上，选择要修改的视觉对象。

1. 使用以下任一选项导航到**设置数据格式**窗格：
   + 在包含要更改的数据的视觉对象上，选择要更改的字段，打开**格式**下拉列表，然后选择**更多格式设置选项**。  
![\[访问视觉对象中的设置数据格式窗格。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/format-visual-numeric-data-language-3.png)
   + 在分析的**字段井**部分，打开要更改的字段旁的下拉菜单。打开**格式**菜单，然后选择**更多格式设置选项**。  
![\[从字段井中访问设置数据格式窗格。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/format-visual-numeric-data-language-6.png)

1. 在出现的**设置数据格式**窗格中，选择**应用语言格式**。

   重新打开**设置数据格式**菜单并选择**重置为默认值**，即可重置视觉对象的默认语言格式。默认语言格式为美式英语。

# Quick 中关于视觉类型的图例
<a name="customizing-visual-legend"></a>

*视觉对象图例*通过将元素值映射到颜色，帮助您识别视觉对象元素所代表的内容。视觉对象图例默认显示在视觉对象的右侧。您可以选择隐藏或显示视觉对象图例，也可以设置图例标题和位置的格式。您还可以自定义图例标题和项目的字体设置。

**显示或隐藏视觉对象图例**

1. 登录 Quick at[https://quicksight.aws.amazon.com/](https://quicksight.aws.amazon.com/).

1. 在分析页面上，选择要设置格式的视觉对象。

1. 选择要设置格式的视觉对象，然后选择**属性**图标以打开“属性”窗格。

1. 开启**图例**以显示视觉对象的图例。图例显示时，会按字母顺序显示值。要隐藏图例，请关闭**图例**。

**自定义视觉对象图例**

1. 打开“属性”窗格并展开**图例**部分。

1. 使用**位置**下拉列表来自定义图例在视觉对象中的位置。

1. 对于**图例标题**，输入图例的自定义名称，然后执行以下全部或部分操作：

   1. （可选）要更改图例标题的颜色，请选择图例标题下方的颜色样本，然后选择所需的图例标题颜色。

   1. （可选）要更改图例标题的字体或字体大小，请打开**字体**或**字体大小**下拉列表，然后选择所需的字体或字体大小。

   1. （可选）要将图例标题加粗、倾斜或加下划线，请从样式栏中选择适当的图标。

1. 对于**图例项**，请执行以下全部或部分操作：

   1. （可选）要更改图例项字体的颜色，请选择所需的颜色样本，然后选择所需的图例标题颜色。

   1. （可选）要更改图例项的字体或字体大小，请打开**字体**或**字体大小**下拉列表，然后选择所需的字体或字体大小。

   1. （可选）要将图例项字体加粗、倾斜或加下划线，请从样式栏中选择适当的图标。

1. 选择右上角的 **X** 图标以关闭**属性**窗格。

# Quick 中折线图上的折线和标记样式
<a name="line-and-marker-styling"></a>

在快速折线图中，您可以通过多种选项来强调您希望读者关注的内容：颜色、线条样式和标记。您可以同时或单独使用这些选项，帮助读者在不同情况下更快地理解您的折线图。例如，如果某些读者看不到色差（可能是因为色盲或单色打印），可以使用线条式样区分图表中的一条线或多条线。

在其他情况下，您可以使用阶梯线图提请注意数据的突变或间隔。例如，假设您创建了显示美国邮票价格变化的图表，并且您想强调价格随时间推移而上涨的幅度。您可以使用阶梯线图，因为在下次价格变动之前，阶梯线图的数据点之间会保持平稳。读者可以通过阶梯线图更清楚地了解有关价格突然上涨的数据故事。如果想展示随着时间推移而逐渐变化的故事，您更有可能改用平缓的斜率设计线条。

**自定义可视化对象的样式设置**

1. 打开分析并选择要设置格式的图表。

1. 在要设置格式的视觉对象的右上角，选择用铅笔图标表示的**设置视觉对象格式**。

1. 在左侧选择**数据系列**。

1. 请选择以下选项之一：
   + **基本样式** – 可编辑图表上所有线条和标记的样式设置
   + **选择要设置样式的系列** – 可编辑从列表中选择的字段的样式设置

   根据视觉对象中兼容字段的数量显示不同选项。

1. 切换**线条**可打开或关闭线条样式设置。

   您可以自定义以下线条选项：
   + 线条粗细。
   + 线条样式：实线、虚线或点线。
   + 线条的颜色。
   + 线条类型：直线、平滑线或阶梯线。

1. 切换**标记**可打开或关闭标记样式设置。

   您可以自定义以下标记选项：
   + 标记粗细。
   + 标记样式：圆形、三角形、正方形、菱形等。
   + 标记颜色。

1. 对于**轴**，选择在左侧还是右侧显示轴。

1. 您所作的更改会自动保存。

1. （可选）要撤销自定义，请选择下列一个或多个选项：
   +  要撤销某项更改，请单击左上角的撤销箭头。根据需要重复上述步骤。您也可使用提供的恢复箭头执行恢复操作。
   +  要重置数据系列的基本样式，请选择**基本样式**，然后单击**重置为默认值**。
   +  要移除**已设置样式系列**中列出的数据系列的所有样式设置，请选择一个字段，然后单击**移除样式设置**。

# Quick 中缺少视觉类型数据
<a name="customizing-missing-data-controls"></a>

您可以自定义折线图和面积图中缺失数据点的可视化方式。您可以选择以如下格式显示缺失的数据点：
+ *虚线*：缺失数据点时会中断的不连续线。这是默认的缺失数据格式。
+ *实线*：通过跳过缺失的数据点并将线条连接到同系列的下一个可用数据点来显示连续线。要显示连续线，应取消选中 **X 轴**窗格上的**显示数据差异**复选框。
+ *显示为零*：将缺失数据点的值设为零。

**自定义视觉对象的缺失数据设置**

1. 在分析页面上，选择要设置格式的视觉对象。

1. 选择视觉对象右上角的**设置视觉对象格式**图标，即可访问**设置视觉对象格式**菜单。

1. 打开设置视觉对象格式菜单的 **Y 轴**窗格，然后导航到**缺失数据**部分。

1. 选择要设置的缺失数据格式。

# Quick 中视觉对象类型的参考线
<a name="reference-lines"></a>

*参考线*是视觉对象中的视觉标记，类似于标尺线。参考线通常用于需要与数据一起显示的值。您可以使用参考线传达阈值或限值。参考线不属于用于构建图表的数据的一部分。相反，参考线基于您输入的值或您在图表使用的数据集中标识的字段。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/formatting-reference-lines-example.png)


Quick 支持以下参考线：
+  条形图
+  折线图
+  组合图

设计分析时，您可以创建、更改和删除参考线。您可以分别为这些图表自定义线条式样、标签字体和颜色。您可以将数值显示为数字、货币或百分比。您还可以按照自定义字段井中字段的方式来自定义值的数值格式。

参考线有两种类型：
+ *常数线*显示在基于您在格式设置中指定值的位置。此值无需与任何字段相关。您可以自定义线条的格式设置。
+ *计算线*显示在基于函数结果值的位置。在配置过程中，您可以指定要使用哪个度量（指标）以及要应用哪个聚合。这些聚合与您应用于字段井的聚合相同。然后，您需要通过提供聚合应用于参考线的字段计算，例如平均值、最小值、最大值或百分位数。该字段需位于图表使用的数据集中，但无需显示在图表的字段井中。

100% 堆叠图不支持计算出的参考线。

**添加或编辑参考线（控制台）**

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

1. 打开要更改的分析。

1. 选择要更改的视觉对象，然后打开**属性**菜单。

1. 在打开的**属性**窗格中，打开**参考行**下拉列表，然后选择**添加新行**。

1. 将打开**新建参考行**菜单。使用此菜单来配置您的新参考行。下表描述了所有可配置的参考行属性。
   + **数据** 
     + **类型** – 要使用的参考线类型。请选择以下选项之一：
       + 要根据自己输入的单个值创建常数线，请选择**常数线**。
       + 要根据字段创建计算线，请选择**计算线**。
     + **值** –（仅适用于常数线）要使用的值。此为视觉对象上线条的位置。其会立即出现，因此您可以尝试进行设置。
     + **列** –（仅适用于计算线）要用于参考线的列。
     + **聚合为**（列） –（仅适用于计算线）要应用于选定列的聚合。
     + **计算** –（仅适用于计算线）要应用于聚合的计算。
     + **百分比值** –（仅在**计算**设置为**百分比**时适用）输入一个从 1 到 100 的数字。
     + **图表类型** –（适用于组合图）选择**条形**或**折线**。
   + **线型** 
     + **式样** – 线条采用的式样。有效选项包括**虚线**、**点线**和**实线**。
     + **颜色** – 用于线条的颜色。
   + **标签**
     + **类型** – 显示的标签类型。有效选项包括**仅限值**、**自定义文本**、**自定义文本和值**、**无标签**。如果选择的选项包含自定义文本，请输入您希望在线条上显示的标签文本。
     + **输入自定义文本**（文本框）–（仅在**类型**设置为**自定义文本和值**时适用）选择要显示与标签相关的值的位置。有效选项为**靠左**或**靠右**。
     + **位置** – 标签相对于线条的位置。有效选项包括以下选项的组合：靠左、居中、靠右、靠上、靠下。
     + **值格式** – 值使用的格式。选择下列选项之一：
       + **与值相同** – 使用已在可视化对象中为此字段选择的格式设置。
       + **显示为** – 从可用选项中进行选择，例如数字、货币或百分比。
       + **格式**-从可用的格式选项中进行选择。
     + **字体大小** – 标签文本使用的字体大小。
     + **颜色** – 标签文本使用的颜色。

1. 要保存您的选择，请选择**保存**。

**列出现有参考线**

1. 选择要更改的视觉对象，然后打开**属性**窗格。

1. 在**属性**窗格中，打开**参考行**下拉列表，然后选择要更改的行旁边的省略号（三个点）。

1. 选择**编辑**。

1. 将打开**新建参考行**菜单。使用此菜单更改参考行。完成后，选择**完成**。

**禁用参考线**

1. 选择要更改的视觉对象，然后打开**属性**窗格。

1. 在**属性**窗格中，打开**参考行**下拉列表，然后选择要更改的行旁边的省略号（三个点）。

1. 选择**禁用**。

**删除参考线**

1. 选择要更改的视觉对象，然后打开**属性**窗格。

1. 在**属性**窗格中，打开**参考行**下拉列表，然后选择要更改的行旁边的省略号（三个点）。

1. 选择**删除**。

# 在 Quick 中格式化雷达图
<a name="format-radar-chart"></a>

您可以在 Amazon Quick 中自定义雷达图，以按照您想要的方式排列数据。您可以自定义雷达图的系列样式、起始角度、填充面积和网格形状。

**设置雷达图的系列样式**

1. 选择要更改的雷达图视觉对象，然后选择视觉对象右上角的**设置视觉对象格式**图标。

1. 在左侧的**属性**窗格中，打开**雷达图**下拉列表。

1. 在**系列样式**下选择所需样式。您可以在如下样式之间进行选择：
   + **折线**：选中后，系统将勾勒由数据创建的多边形。
   + **面积**：选中后，系统将填充由数据创建的多边形。

   默认选定值为**折线**。

**选择雷达图的起始角度**

1. 选择要更改的雷达图视觉对象，然后选择视觉对象右上角的**设置视觉对象格式**图标。

1. 在左侧的**属性**窗格中，打开**雷达图**下拉列表。

1. 在**起始角度**下输入所需的起始角度值。默认值为 90 度。

**设置雷达图的填充面积**

1. 选择要更改的雷达图视觉对象，然后选择视觉对象右上角的**设置视觉对象格式**图标。

1. 在左侧的**属性**窗格中，打开**轴**下拉列表。

1. 选中**填充网格线**复选框。

1. （可选）选择偶数和奇数网格线的颜色。
   + 选择出现的**偶数颜色**图标，然后选择偶数网格线所需的颜色。此值的默认颜色为白色。
   + 选择出现的**奇数颜色**图标，然后选择奇数网格线所需的颜色。此值的默认颜色为白色。

**选择雷达图的网格形状**

1. 选择要更改的雷达图视觉对象，然后选择视觉对象右上角的**设置视觉对象格式**图标。

1. 在左侧的**属性**窗格中，打开**雷达图**下拉列表。

1. 在**网格形状**下选择雷达图所需的网格形状。您可以选择**多边形**或**圆形**。

# 在 Quick 中对视觉类型进行范围和缩放
<a name="changing-visual-scale-axis-range"></a>

要更改视觉对象上所显示值的刻度，您可以使用**属性**窗格设置视觉对象的一个或两个轴的范围。此选项可用于条形图、组合图、折线图和散点图上的值轴。

默认情况下，轴范围从 0 开始，以显示的度量的最大值结束。对于分组依据轴，您可以在视觉对象上使用数据缩放工具来动态调整刻度。

**设置视觉对象的轴范围**

1. 在分析页面上，选择要设置格式的视觉对象。

1. 选择视觉对象右上角的控制菜单，然后选择齿轮图标。

1. 在**属性**窗格上，根据自定义的视觉对象类型选择 **X 轴**或 **Y 轴**。对于横向条形图，此为 **X-Axis** 部分，对于垂直条形图和折线图，此为 **Y-Axis** 部分，对于散点图，此为两个轴。在组合图上，请改为使用 **Bars (条形图)** 和 **Lines (折线图)**。

1. 在框中输入新名称以重命名轴。要还原为默认名称，请删除您的输入。

1. 通过选择以下选项之一来设置轴范围：
   + 选择 **Auto (starting at 0)** 可使范围从 0 开始，以显示的度量的最大值结束。
   + 选择 **Auto (based on data range)** 可使范围从显示的度量的最小值开始，以显示的度量的最大值结束。
   + 选择**自定义**可让范围以指定的值开始和结束。

     如果选择**自定义**，请在该部分的字段中输入开始值和结束值。通常使用整数作为范围的值。对于 100% 堆叠条形图，请使用小数值指示所需的百分比。例如，如果要将范围指定为 0-30% 而不是 0-100%，请输入 0 作为起始值，输入 0.3 作为结束值。

1. 对于 **Scale (刻度)**，默认为线性刻度。要显示对数刻度，请启用对数选项。Quick 根据该轴中的值范围选择要显示的轴标签。
   + 在线性刻度上，轴标签以均匀间隔排列，可显示标签之间的算术差。标签以集合形式显示数字，例如 \$11000, 2000, 3000…\$1 或 \$10, 50 million, 100 million…\$1，而不是 \$110 thousand, 1 million, 1 billion…\$1。

     在以下情况下使用*线性刻度*：
     + 图表上显示的所有数字都采用相同的数量级。
     + 您希望轴标签以均匀间隔排列。
     + 轴值具有相似的位数，例如 100、200、300。
     + 数字之间的变化率相对缓慢和稳定，换言之，趋势线永远不会变得垂直。

     示例：
     + 同一国家不同地区的利润
     + 制造物品所产生的费用
   + 在*对数刻度*上，轴值以一定间隔排列，可显示数量级，作为比较它们的一种方式。对数刻度通常用于显示非常大的值或百分比范围，或显示指数增长。

     在以下情况下使用对数刻度：
     + 图表上显示的数字不是相同数量级。
     + 您希望轴标签具有灵活间隔，可反映该轴中较宽的值范围。这可能意味着轴值具有不同的位数，例如 10、100、1000。这也可能意味着轴标签间隔不均匀。
     + 数字之间的变化速率呈指数级增长，或者太大，无法以有意义的方式显示。
     + 图表的客户了解如何解释采用对数刻度的数据。
     + 图表显示增长速度越来越快的值。在刻度上移动给定距离表示数字已乘以另一个数字。

     示例：
     + 很长一段时间内的高收益股票价格
     + 大流行病感染率的增长

1. 要自定义轴标签上显示的值的数量，请输入一个从 1 到 50 的整数。

1. 对于组合图表，选择 **Single Y Axis (单个 Y 轴)** 将条形图和线形图的 Y 轴同步到一个轴中。

1. 选择窗格右上角的 **X** 图标即可关闭**属性**窗格。

# 小倍数轴选项
<a name="small-multiples-options"></a>

您可以为小倍数视觉对象的各个面板配置 x 和 y 轴。您可以沿独立的 x 轴或独立的 y 轴对数据进行分组。您还可以将 x 和 y 轴置于图表内部或外部，从而提高数据的可读性。

对于使用独立 x 轴的小倍数视觉对象，轴上仅显示与各个面板相关的值。例如，假设您有使用面板表示美国各地区的小倍数视觉对象。使用独立的 x 轴，每个面板仅显示面板所代表的区域中的状态，并隐藏面板区域之外的状态。

对于使用独立 y 轴的小倍数视觉对象，各个面板均使用其相应 y 轴刻度，该刻度由其包含的数据范围决定。默认情况下，数据标签显示在面板内侧。

**为小倍数视觉对象配置独立轴**

1. 选择要更改的小倍数视觉对象，然后打开**设置视觉对象格式**菜单。

1. 在出现的**属性**窗格中，打开**倍数选项**菜单。

1. 对于 **X 轴**，请从下拉菜单中选择**独立**。

   对于 **Y 轴**，请从下拉菜单中选择**独立**。

您可以通过从 **X 轴**或 **Y 轴**下拉菜单中选择**共享**来恢复更改。

您还可以在小倍数视觉对象中配置所有面板 x 轴和 y 轴的标签位置。您可以选择在面板内侧或外侧显示轴标签。

**为小倍数视觉对象配置轴标签位置**

1. 选择要更改的小倍数视觉对象，然后打开**设置视觉对象格式**菜单。

1. 在出现的**属性**窗格中，打开**倍数选项**菜单。

1. 对于 **X 轴标签**，请从下拉菜单中选择**内侧**或**外侧**。

   对于 **Y 轴标签**，请从下拉菜单中选择**内侧**或**外侧**。

# Quick 中视觉类型上的标题和字幕
<a name="customizing-a-visual-title"></a>

在 Quick 中，您可以格式化视觉标题和字幕以满足您的业务需求。Quick 为标题和字幕提供富文本格式，并且能够在标题中添加超链接和参数。您可以在“属性”窗格中编辑标题，也可以双击视觉对象中的标题或副标题来编辑标题。

使用以下过程自定义视觉对象的标题和副标题的显示方式。默认显示视觉对象标题。创建副标题后，副标题同样默认显示。

1. 登录 Quick at[https://quicksight.aws.amazon.com/](https://quicksight.aws.amazon.com/).

1. 打开要更新的分析。

1. 在分析页面上，选择要设置格式的视觉对象。

1. 在视觉对象右侧，选择**属性**图标。

1. 在打开的**属性**窗格中，选择**显示设置**选项卡。

1. 要编辑视觉对象的标题或副标题，请选择**编辑标题**或**编辑副标题**旁边的画笔图标。或者，您可以选择**编辑标题**或**编辑副标题**旁边的眼球图标来隐藏标题或副标题，如下图所示。

1. 在打开的**编辑标题**或**编辑副标题**弹出窗口中，可以使用以下选项进行所需的更新：
   + 要输入自定义标题或副标题，请在编辑器中输入标题或副标题文本。标题最长可输入 120 个字符，其中包括空格。副标题最长可输入 500 个字符。
   + 要更改字体类型，请从左侧的列表中选择字体类型。
   + 要更改字体大小，请从右边的列表中选择大小。
   + 要更改字体粗细和突出显示，或者为文本添加下划线或删除线，可分别选择粗体、强调、下划线或删除线图标。
   + 要更改字体颜色，请选择颜色（Abc）图标，然后选择一种颜色。您也可以输入十六进制数或 RGB 值。
   + 要添加无序列表，请选择无序列表图标。
   + 要更改文本对齐方式，请选择靠左对齐、居中对齐或靠右对齐图标。
   + 要将参数添加到标题或副标题中，请从右侧**参数**下的列表中选择现有参数。有关如何创建参数的更多信息，请参阅[在 Amazon Quick 中设置参数](parameters-set-up.md)。
   + 要添加超链接，请突出显示要链接的文本，选择超链接图标，然后从以下选项中进行选择：
     + 在**输入链接**中输入要链接到的 URL。

       选择右侧的 \$1 图标将现有参数、函数或计算添加到 URL。
     + 要编辑显示文本，请在**显示文本**中输入文本。
     + 要在与 Quick 相同的浏览器选项卡中打开超链接，请选择**相同选项卡**。
     + 要在新的浏览器选项卡中打开超链接，请选择**新选项卡**。
     + 要删除超链接，请选择左下角的删除图标。

     完成超链接配置后选择**保存**。

1. 完成后，选择 **Save**。

1. 对于**替代文本**，输入想要用于视觉对象的替代文本。

1. 完成后，关闭属性窗格。

# Quick 中有关视觉类型的工具提示
<a name="customizing-visual-tooltips"></a>

当您将光标悬停在 Quick 视觉对象中的任何图形元素上时，会出现一个工具提示，其中包含有关该特定元素的信息。例如，将光标悬停在折线图中的日期上方，即会出现包含这些日期相关信息的工具提示。默认情况下，字段井中的字段决定了工具提示中显示的信息。工具提示最多可以显示 10 个字段。

您可以向查看者提供有关视觉对象中数据的更多信息，自定义查看者可以看到的内容。当查看者将光标悬停在元素上方时，您甚至可以隐藏工具提示。要执行此操作，您可以自定义该视觉对象的工具提示。

## 在视觉对象中自定义工具提示
<a name="customizing-visual-tooltips-customize"></a>

要自定义视觉对象的工具提示，请按照以下过程操作。

**在视觉对象中自定义工具提示**

1. 在分析页面上，选择要设置格式的视觉对象。

1. 从视觉对象右上角的菜单中选择**设置视觉对象格式**图标。

1. 在打开的**属性**窗格中，选择**工具提示**。

1. 为**类型**选择**详细工具提示**。出现一组新的选项。

**显示或隐藏工具提示中的标题**
+ 选择**将主要值用作标题**。

  清除该选项可隐藏工具提示中的标题。选择该选项可在工具提示中将主字段值显示为标题。

**显示或隐藏工具提示中字段的聚合**
+ 选择**显示聚合**。

  清除该选项可隐藏工具提示中字段的聚合。选择该选项可显示工具提示中字段的聚合。

**向工具提示添加字段**

1. 选择**添加字段**。

1. 在打开的**向工具提示添加字段**页面上，选取**选择字段**，然后从列表中选择字段。

   您最多可以向工具提示添加 10 个字段。

1. （可选）在**标签**中输入字段的标签。此选项为工具提示字段创建自定义标签。

1. （可选）根据添加的是维度还是度量，选择您希望聚合在工具提示中的显示方式。如果未选择任何选项，Quick 将使用默认聚合。

   如果向工具提示添加度量，则可以选择该字段的聚合方式。为此，请选择**选择聚合**，然后从列表中选择聚合。有关 Quick 中聚合类型的更多信息，请参阅[更改字段聚合](changing-field-aggregation.md)。

1. 选择**保存**。

   新字段会添加到工具提示中字段的列表。

**从工具提示中移除字段**
+ 在**字段**列表下，选择要移除的字段的字段菜单（三个点），然后选择**隐藏**。

**重新排列工具提示中字段的顺序**
+ 在**字段**列表下，选择字段的字段菜单（三个点），然后选择**向上移动**或**向下移动**。

**为工具提示字段自定义标签**

1. 选择要自定义的字段的字段菜单（三个点），然后选择**编辑**。

1. 在打开的**编辑工具提示字段**页面上，在**标签**中输入要在工具提示中显示的标签。

1. 选择**保存**。

## 在 Quick 中使用工作表工具提示
<a name="customizing-visual-tooltips-sheet"></a>

表格工具提示可在不中断分析流程的情况下提供丰富的背景信息，从而改变查看者浏览数据的方式。查看者无需离开视觉对象或打开单独的表格，而是可以即时访问详细的细分、趋势和支持信息，从而使仪表板更加直观，减少对多张表格的需求。

工作表工具提示仅适用于交互式工作表。分页报告不支持它们。您可以将工具提示表复制到另一个工具提示工作表，也可以将工具提示表复制到常规交互式工作表。此外，您可以将视觉对象复制到工具提示表中。

### 工作表工具提示的工作原理
<a name="customizing-visual-tooltips-sheet-how"></a>

当作者创建工作表工具提示时，将创建工具提示表并将其与视觉对象相关联。此工具提示表的工作原理与普通工作表类似。您可以使用自由格式布局向其中添加视觉效果、文本框和图像。当查看者将鼠标悬停在数据点上方时，工具提示表将继承源视觉对象中的所有筛选器，并为特定数据点添加额外的筛选器。例如，如果您的源视觉效果被筛选为 “2025 数据”，而查看者将鼠标悬停在 “电子产品” 上，则工具提示仅显示 2025 年的电子数据。

以显示按产品类别划分的销售额的条形图为例。您可以创建一个工作表工具提示，其中显示月销售额的趋势线、year-over-year 增长的KPI和带有类别名称的文本框，所有这些都筛选到查看者将鼠标悬停在哪个类别上。

### 工作表工具提示限制
<a name="customizing-visual-tooltips-sheet-limits"></a>

以下限制适用于工作表工具提示：
+ 每次分析最多 50 张工具提示表
+ 每个工具提示表最多 5 个视觉效果
+ 每个工具提示表最多 5 个文本框
+ 每个工具提示表最多 5 张图片
+ 工具提示表仅使用自由形式布局
+ 工具提示表上不允许使用图层地图视觉效果
+ 工具提示表的最大大小为 640 像素宽 x 720px 高

### 创建工作表工具提示
<a name="customizing-visual-tooltips-sheet-create"></a>

使用以下步骤为视觉对象创建工作表工具提示。

**创建工具提示表**

1. 在分析页面上，选择要向其添加工作表工具提示的视觉对象。

1. 从视觉对象右上角的菜单中选择**设置视觉对象格式**图标。

1. 在打开的 “**属性**” 窗格中，选择 “**交互**” > “**工具提示”**。

1. 对于 “**类型**”，选择 “**工作表工具提示”**。

1. 选择 “**创建工具提示表**”。您将自动导航到工具提示表编辑体验。工具提示名称是自动生成的，您可以通过选择选项卡标题对其进行编辑。

1. 向工具提示表中添加视觉效果、文本框或图像。使用自由格式布局排列它们。

1. 完成后，选择工作表工具提示标题左侧的 “**返回**” 按钮，返回源工作表。要预览工具提示，请将鼠标悬停在视觉对象中的任何数据点上。

### 为视觉对象分配工具提示表
<a name="customizing-visual-tooltips-sheet-assign"></a>

在 “**属性**” 窗格中选择 “**工作表工具提示**” 作为工具提示类型时，会出现一个控件，允许您选择分析中所有可用的工具提示工作表。您可以将一个工具提示表分配给多个视觉对象，也可以为每个视觉对象创建单独的工具提示表。

**如果要将相同的工具提示表应用于另一个视觉对象，则可以通过在 “属性” 窗格的 “**交互**” > “工具提示手风琴” 中将一个**工具提示**表分配给多个视觉对象来实现。**

### 编辑工具提示表
<a name="customizing-visual-tooltips-sheet-edit"></a>

使用以下步骤编辑现有工作表工具提示。

**编辑工具提示表**

1. 选择任何启用了工作表工具提示的视觉效果。

1. 打开 “**属性**” 窗格并导航至 “**交互**” > “**工具提示”**。

1. 在**工具提示**手风琴中，选择要编辑的工具提示，然后选择工具提示表名称旁边的编辑图标以导航到该工具提示。

1. 对工具提示表上的视觉效果、文本框或图像进行更改。

### 在工具提示类型之间切换
<a name="customizing-visual-tooltips-sheet-switch"></a>

您可以随时在基本、详细和工作表工具提示类型之间切换视觉对象的工具提示。

**更改工具提示类型**

1. 选择要更新的视觉效果。

1. 打开 “**属性**” 窗格，选择 “**交互**”，然后选择 “**工具提示**”。

1. **在 “**类型**” 中，选择所需的工具提示类型：**基本工具提示**、**详细工具提示或表格工具提示**。**

**注意**  
切换工作表工具提示可以保留您的工作。您可以随时切换回来，而不会丢失工具提示表的设计。

### 工作表工具提示注意事项
<a name="customizing-visual-tooltips-sheet-considerations"></a>

使用工作表工具提示时，请记住以下几点：
+ 表和数据透视表支持工作表工具提示，但不支持基本或详细的工具提示。
+ 工具提示表中的视觉对象不支持上下文菜单、可视菜单或自定义操作。
+ [使用自定义操作进行筛选和导航](quicksight-actions.md)当工具提示表呈现为工具提示时，不支持工具提示表中的视觉效果。
+ 工作表工具提示支持筛选器、跨工作表筛选和参数。不支持筛选控件。
+ 工作表描述不显示在工具提示表上。
+ 跨表筛选器的范围不能限定为工具提示表。
+ 分析必须至少包含一张常规的交互式表格。分析不能只包含工具提示表。
+ 图层地图视觉效果不能放在工具提示表中。
+ 不支持工具提示表上的工具提示。

这些限制可确保工具提示表快速加载，并为观看者保持专注、可扫描的体验。要进行更复杂的分析，可以考虑使用向下钻取操作或单独的详细信息表。

## 隐藏视觉对象的工具提示
<a name="customizing-visual-tooltips-hide"></a>

如果您不希望光标悬停在视觉对象中的数据上方时显示工具提示，可将其隐藏。

**隐藏视觉对象的工具提示**

1. 在分析页面上，选择要设置格式的视觉对象。

1. 从视觉对象右上角的菜单中选择**设置视觉对象格式**图标。

1. 在打开的**属性**窗格中，选择**工具提示**。

1. 选择**显示工具提示**。

   清除该选项可隐藏视觉对象的工具提示。选择该选项即可显示。

# 自定义数据表示方式
<a name="analyzing-data-analyses"></a>

要在快速分析中创建视觉对象（图表）时进一步了解数据，可以在视觉对象中对数据进行排序和筛选。您还可以在视觉对象中更改日期字段的粒度、数据类型、角色和字段格式。

**Topics**
+ [在 Amazon Quick 中更改视觉对象使用的字段](changing-visual-fields.md)
+ [在 Amazon Quick 中对视觉数据进行分类](sorting-visual-data.md)

# 在 Amazon Quick 中更改视觉对象使用的字段
<a name="changing-visual-fields"></a>

您可以使用 **Fields list** 窗格、字段井或视觉对象上的视觉对象编辑器/拖放目标添加或修改视觉对象的字段。

字段井、视觉对象编辑器和拖放目标适用于特定的视觉对象，这取决于所选择的视觉对象类型。有关详细信息，请参阅 [Amazon Quick Sight 中的视觉类型](working-with-visual-types.md) 小节中相应的视觉对象类型主题。

**重要**  
您还可以通过使用字段井和视觉对象编辑器来更改数字字段的数据类型和格式。如果以这种方式更改某个字段，则仅为选定的视觉对象更改该字段。有关更改数字字段数据类型和格式的更多信息，请参阅[在 Amazon Quick 中更改视觉对象使用的字段](#changing-visual-fields)。

可以使用以下主题了解在视觉对象上添加、删除和修改字段的更多信息。

**Topics**
+ [使用视觉对象字段控件](using-visual-field-controls.md)
+ [添加或删除字段](adding-or-removing-a-field.md)
+ [更改与视觉对象元素关联的字段](changing-a-field-association.md)
+ [更改字段聚合](changing-field-aggregation.md)
+ [更改日期字段粒度](changing-date-field-granularity.md)
+ [自定义字段格式](customizing-field-format.md)

# 使用视觉对象字段控件
<a name="using-visual-field-controls"></a>

您可以使用用户界面（UI）控件编辑视觉对象使用的字段。

您可以使用这些控件执行以下操作：
+ 创建一个视觉对象，然后通过在**字段列表**窗格中选择字段或将字段拖到字段井或拖放目标来将字段分配给其上的不同元素。
+ 通过将字段拖到拖放目标或字段井上，或在字段井或视觉对象编辑器中选择其他字段来更改与视觉对象元素关联的字段。
+ 使用字段井或视觉对象编辑器来更改字段聚合或日期粒度。

字段井、视觉对象编辑器和拖放目标适用于特定的视觉对象，这取决于所选择的视觉对象类型。

## 将字段拖到拖放目标或字段井上
<a name="dragging-a-field"></a>

当您将字段拖到放置目标或字段井时，Amazon Quick 会为您提供有关目标元素需要度量还是维度的信息。Amazon Quick 还为您提供有关该元素是否可用于字段分配的信息。

例如，在将度量拖到新的单度量折线图上的值拖放目标时，将会看到显示为绿色的拖放目标。该绿色编码指示拖放目标需要度量。拖动标签指示目标可用于添加字段。

在将维度拖到新折线图上的 X 轴或带有颜色的拖放目标时，将会看到显示为蓝色的标签。该蓝色编码指示拖放目标需要维度。拖动标签指示目标可用于添加字段。

您也可以将度量或维度拖到折线图中元素已与字段关联的拖放目标。在这种情况下，拖动标签指示您正在替换当前与拖放目标关联的字段。

# 添加或删除字段
<a name="adding-or-removing-a-field"></a>

您可以通过在 **Fields list (字段列表)** 窗格上选择一个字段，将其添加到视觉对象中。也可以将其拖动到视觉对象上的拖放目标或字段井中。每种视觉对象类型都有与字段井一一对应的拖放目标，因此，您可以使用任何一种方法。

在某些图表上，当图表任意一侧的**值**字段中有两个或更多字段时，**轴标题**字段将被隐藏。以下图表可能会出现这种效果：
+ 条形图
+ 折线图
+ 箱形图
+ 组合图
+ 瀑布图

要从视觉对象中删除一个字段，请在**字段列表**窗格中取消选中该字段。或者选择使用该字段的视觉对象编辑器或字段井，然后从上下文（右键单击）菜单中选择**移除**。

## 通过在字段列表窗格中选择字段来添加字段
<a name="add-a-field-data-set"></a>

您也可以让 Amazon Quick 将字段映射到最合适的视觉元素。为此，只需在**字段列表**窗格中选择该字段。Amazon Quick 通过填充与该字段类型（度量或维度）相对应的第一个空字段来将字段添加到视觉效果中。如果所有视觉元素都已填充，Amazon Quick 会很好地确定最合适的字段，并用您选择的字段替换其中的字段。

## 使用拖放目标添加字段
<a name="add-a-field-drop-target"></a>

要使用拖放目标向视觉对象添加字段，请先在 **Fields list (字段列表)** 窗格中选择一个字段。然后，将该字段拖到在视觉对象上所选的拖放目标，确保放置指示符显示正在添加该字段。

## 使用字段井添加字段
<a name="add-a-field-field-well"></a>

要使用字段井将字段添加到视觉对象中，请在 **Fields list** 窗格中选择一个字段。然后，将该字段拖到目标字段井上，从而确保放置指示符显示正在添加该字段。

1. 将字段项拖到**字段井**中。

1. 将要添加的字段从 **Fields list (字段列表)** 窗格拖到适当的字段井上。

**注意**  
您可以将相同的值添加到相同的视觉对象多次。您可以执行此操作以显示应用不同聚合或表计算的相同值。默认情况下，字段全部显示相同的标签。您可以使用**属性**面板编辑名称，可通过选择右上角的 **V** 形图标打开该面板。

# 更改与视觉对象元素关联的字段
<a name="changing-a-field-association"></a>

您可以使用字段井、拖放目标或视觉对象上的视觉对象编辑器更改分配到视觉对象中某个元素的字段。对于数据透视表，请使用字段井或拖放目标，因为该视觉对象类型未提供视觉对象编辑器。

## 使用视觉对象编辑器更改字段映射
<a name="change-field-mappings-element-controls"></a>

要修改字段到视觉对象元素的映射，请按照以下过程操作。

**使用视觉对象编辑器修改字段映射**

1. 在视觉对象上，选择要更改字段的视觉对象元素的视觉对象编辑器。

1. 在视觉对象编辑器菜单上，选择要与该视觉对象元素关联的字段。

## 使用拖放目标更改字段映射
<a name="change-field-mappings-drop-target"></a>

要使用拖放目标修改字段到视觉对象元素的映射，请在 **Fields list** 窗格中选择一个字段。然后，将该字段拖到视觉对象上的拖放目标，从而确保放置指示符显示正在替换该字段。

## 使用字段井更改字段映射
<a name="change-field-mappings-field-wells"></a>

要修改字段到视觉对象元素的映射，请按照以下过程操作。

**使用字段井修改字段映射**

1. 将字段项拖到**字段井**中。

1. 选择表示要重新映射的元素的字段井，然后从显示的菜单中选择一个新字段。

# 更改字段聚合
<a name="changing-field-aggregation"></a>

您可以向字段应用函数以显示聚合信息，例如，给定产品的销售总额。您可以使用视觉对象编辑器或字段井中的选项来应用聚合函数。Amazon Quick 中提供了以下聚合函数：
+ Average – 计算所选字段的平均值。
+ Count – 提供包含给定维度的所选度量的记录数。例如，提供某个状态的订单 ID 数。
+ Distinct Count – 对于选定的一个或多个维度，提供所选度量中包含的不同值的计数。例如，提供某个区域的产品数。简单的计数可以显示每个区域售出的产品数量。Distinct Count 可以显示每个区域售出多少种不同的产品。您可能已售出 2,000 件商品，但只有两种不同的商品类型。
+ Max – 计算所选字段的最大值。
+ Min – 计算所选字段的最小值。
+ Median – 计算指定度量的中值，并按照选定的一个或多个维度进行分组。
+ Sum – 计算所选字段的所有值的总和。
+ Standard Deviation – 根据样本或总体偏差计算指定度量中的一组数字的标准差，并按照选定的一个维度或多个维度进行分组。
+ Variance – 根据样本或总体偏差计算指定度量中的一组数字的方差，并按照选定的一个维度或多个维度进行分组。
+ Percentile – 计算指定度量的第 *n* 个百分位数，并按照选定的一个或多个维度进行分组。

所有聚合函数都可应用于数字字段。如果您选择在需要度量的字段井中使用 *Count*，其会自动应用于维度。如果您以这种方式使用了维度，则也可以更改应用到它的聚合函数。您不能将聚合函数应用于维度字段井中的字段。

支持聚合字段的视觉对象元素因视觉对象类型而异。

## 使用视觉对象编辑器在字段上更改或添加聚合
<a name="change-field-aggregation-element-controls"></a>

要在字段上更改或添加聚合函数，请按照以下过程操作。

**在字段上更改或添加聚合函数**

1. 在视觉对象上，选择要应用聚合函数的字段的视觉对象编辑器。

1. 在视觉对象编辑器菜单上，选择 **Aggregate (聚合)**，然后选择要应用的聚合函数。

## 使用字段井在字段上更改或添加聚合
<a name="change-field-aggregation-field-wells"></a>

要向数据透视表视觉对象上的字段添加聚合函数，请按照以下过程操作。

**向数据透视表视觉对象上的字段添加聚合**

1. 将字段项拖到**字段井**中。

1. 选择包含要应用聚合函数的字段的字段井。

1. 在字段井菜单上，选择 **Aggregate (聚合)**，然后选择要应用的聚合函数。

# 更改日期字段粒度
<a name="changing-date-field-granularity"></a>

您可以更改视觉对象上日期字段的粒度，以确定显示项目值的时间间隔。您可以将日期字段粒度设为以下值之一：
+ Year
+ 季度
+ Month
+ 周
+ 天（这是默认值）
+ 小时
+ 分钟
+ 秒

只有在字段包含时间数据时，才能使用小时和分钟。

## 使用视觉对象编辑器更改日期字段粒度
<a name="change-date-granularity-element-controls"></a>

要使用视觉对象编辑器更改日期字段粒度，请按照以下过程操作。

**使用视觉对象编辑器更改日期字段粒度**

1. 在视觉对象上，选择要更改粒度的日期字段的字段井。

1. 在字段井菜单上，选择 **Aggregate (聚合)**，然后选择要应用的时间间隔，如下所示：

## 使用字段井更改日期字段粒度
<a name="change-date-granularity-field-wells"></a>

要使用字段井更改日期字段粒度，请按照以下过程操作。

**使用字段井更改日期字段粒度**

1. 将字段项拖到**字段井**中。

1. 选择包含日期字段的字段井，然后选择 **Aggregate (聚合)**。选择要使用的日期粒度。

# 自定义字段格式
<a name="customizing-field-format"></a>

使用以下过程自定义分析中字段的外观。

**自定义分析中字段的外观**

1. 在分析中，选择要设置格式的字段，方法如下：在字段井中选择，或者在**可视化**窗格的**字段列表**中选择。

1. 选择 **Show as (显示为)** 可更改字段如何显示在分析中，并可从上下文菜单的选项中选择。可用选项的列表根据字段的数据类型而异。如果您从字段列表中选择非数字字段，则可以更改*计数格式*，这是在对字段计数时使用的格式。

1. 选择 **Format (格式)** 可更改字段的格式，并可从上下文菜单的选项中选择。如果您未看到要使用的选项，请从上下文菜单中选择 **More formatting options (更多格式选项)**。

   此时打开 **Format Data (设置数据格式)** 窗格，显示您选择的数字或日期字段类型的选项。

   现在，上下文菜单中 **Show as (显示为)** 的选项显示在 **Format Data (设置数据格式)** 窗格顶部的下拉列表中。其余选项特定于数据类型以及您选择的字段显示方式。

对于日期和时间数据，默认格式模式为 YYYY-MM-DD **`T`**HH: mm: sszz，例如 2016-09-22T17:00:00-07:00。

对于数字，您可选择以下几种显示在数字之后的单位：
+ 无单位后缀。这是默认值。
+ 千 (K)
+ 百万 (M)
+ 十亿 (B)
+ 万亿 (T)
+ 自定义单位前缀或后缀

对于货币，您可以从以下符号中选择：
+ 美元 (\$1)
+ 欧元 (€)
+ 英镑 (£)
+ 日元 (¥)

# 更改字段格式
<a name="changing-a-field-format"></a>

您可以在分析上下文中更改字段的格式。可供字段使用的格式选项因字段的数据类型而异。

使用**字段列表**窗格中的菜单选项或视觉对象字段井进行简单的格式更改，或使用**设置数据格式**窗格进行更广泛的格式设置更改。

**Topics**
+ [设置货币字段的格式](format-a-currency-field.md)
+ [设置日期字段的格式](format-a-date-field.md)
+ [设置数字字段的格式](format-a-number-field.md)
+ [设置百分比字段的格式](format-a-percent-field.md)
+ [设置文本字段的格式](format-a-text-field.md)
+ [将字段的格式恢复为默认设置](set-field-format-to-default.md)

# 设置货币字段的格式
<a name="format-a-currency-field"></a>

设置货币字段的格式时，可以从常用选项列表中选择货币符号，也可以打开**设置数据格式**窗格手动设置字段格式。手动设置字段格式允许您选择要使用的符号、要使用的分隔符、要显示的小数位数、要使用的单位以及如何显示负数。

更改字段格式会更改分析中所有视觉对象的格式，但不会更改基础数据集中的格式。

如果您要从常用选项列表中为货币字段选择符号，可以通过几种方法访问此类列表。可以从 **Field list (字段列表)** 窗格、视觉对象编辑器或者视觉对象字段井中访问它。

**通过选择列表选项来选择货币字段的符号**

1. 请选择以下选项之一：
   + 在**字段列表**窗格中，选择要设置其格式的数字字段右侧的选择器图标。
   + 在包含与要设置其格式的货币字段相关联的视觉对象编辑器的任何视觉对象上，选择该视觉对象编辑器。展开**字段井**窗格，然后选择与要更改的数字字段相关联的字段井。

1. 选择**格式**，然后选择所需的货币字段：
   + 显示为美元 (\$1)。
   + 显示为英磅 (£)。
   + 显示为欧元 (€)。
   + 以日元或人民币（¥）显示。

**手动更改货币字段的格式**

1. 请选择以下选项之一：
   + 在**字段列表**窗格中，选择要设置其格式的数字字段右侧的选择器图标。
   + 在包含与要设置其格式的数字字段相关联的视觉对象编辑器的任何视觉对象上，选择该视觉对象编辑器。展开**字段井**窗格，然后选择与要更改的数字字段相关联的字段井。

1. 选择 **Format (格式)**，然后选择 **More Formatting Options (更多格式化选项)**。

   **设置数据格式**窗格随即打开。

1. 展开 **Symbol** 部分，并从以下选项中选择：
   + 显示为美元 (\$1)。这是默认值。
   + 显示为英磅 (£)。
   + 显示为欧元 (€)。
   + 以日元或人民币（¥）显示。

1. 展开 **Separators** 部分，并从以下选项中选择：
   + 在 **Decimal** 下面，选择点或逗号作为小数分隔符。默认为点。如果选择逗号，则请使用点号或空格作为千位分隔符。
   + 在 **Thousands (千)** 下面，选择或清除 **Enabled (启用)** 以指示是否要使用千位分隔符。**Enabled** 默认处于选中状态。
   + 如果使用千位分隔符，请选择是使用逗号、点还是空格作为分隔符。默认为逗号。如果选择点号，则请使用逗号作为小数分隔符。

1. 展开 **Decimal Places** 部分并选择要使用的小数位数。默认值为 2。字段值将舍入为指定的小数位。例如，如果您指定两位小数，则值 6.728 将舍入为 6.73。

1. 展开 **Units** 部分，并从以下选项中选择：
   + 选择要使用的单位。选择单位会向数字值添加适当的后缀。例如，如果您选择 **Thousands**，则字段值 1234 将显示为 1.234K。

     单位选项如下所示：
     + 无单位后缀。这是默认值。
     + 千 (K)
     + 百万 (M)
     + 十亿 (B)
     + 万亿 (T)
   + 如果要使用自定义前缀或后缀，请在 **Prefix** 或 **Suffix** 框中指定。使用自定义后缀是指定 Amazon Quick 已提供的货币后缀之外的货币后缀的好方法。您可以同时指定两者。除了通过选择单位而添加的后缀外，还可以指定自定义前缀。

1. 展开 **Negatives** 部分，并选择是通过使用减号还是通过将其括在括号中来显示负值。使用减号是默认设置。

1. 展开 **Null 值**部分，然后选择是将 Null 值显示为 `null` 还是显示为自定义值。默认使用 `null`。
**注意**  
使用表格或数据透视表时，仅对放置在**行**、**列**或**分组依据**字段井中的字段显示 Null 值。**值**字段井中的字段 Null 值在表格或数据透视表中显示为空。

# 设置日期字段的格式
<a name="format-a-date-field"></a>

在您设置日期字段的格式时，可在常用格式选项列表中选择。您也可以打开**设置数据格式**窗格，从常用格式列表中进行选择，或者为日期和时间值指定自定义格式设置。

更改字段格式会更改分析中使用该数据集的所有视觉对象的格式，但不会更改数据集本身的格式。

如果您要通过从常用选项列表中选择来设置日期字段的格式，可以通过多种方式来访问此类列表。可以从 **Field list (字段列表)** 窗格、视觉对象编辑器或者视觉对象字段井中访问它。

**通过选择列表选项来更改日期字段的格式**

1. 请选择以下选项之一：
   + 在**字段列表**窗格中，选择要设置其格式的数字字段右侧的选择器图标。
   + 在包含与要设置其格式的数字字段相关联的视觉对象编辑器的任何视觉对象上，选择该视觉对象编辑器。展开**字段井**窗格，然后选择与要更改的数字字段相关联的字段井。

1. 选择**格式**，然后选择所需的格式。系统为日期字段提供了以下快速格式选项：
   + 显示月、日、年和时间。
   + 显示月、日和年。
   + 显示月份和年份。
   + 显示年份。

**手动更改日期字段的格式**

1. 请选择以下选项之一：
   + 在**字段列表**窗格中，选择要设置其格式的数字字段右侧的选择器图标。
   + 在包含与要设置其格式的数字字段相关联的视觉对象编辑器的任何视觉对象上，选择该视觉对象编辑器。展开**字段井**窗格，然后选择与要更改的数字字段相关联的字段井。

1. 选择 **Format (格式)**，然后选择 **More Formatting Options (更多格式化选项)**。

   **设置数据格式**窗格随即打开。

1. 展开 **Date** 部分。选择一个现有日期格式，或选择**自定义**，并在**设置数据格式**窗格下方的**自定义**部分指定一种格式模式。如果为**日期**部分选择**自定义**，则也须为接下来的**时间**部分选择**自定义**。在**自定义**部分中指定的模式必须包含您需要的任何日期和时间格式设置。

   默认选择为**自定义**，默认格式模式为“MMM D, YYYY h: mma”，例如“Sep 20, 2022 5:30pm”。

1. 展开 **Time** 部分。选择一个现有时间格式，或选择**自定义**，并在**设置数据格式**窗格下方的**自定义**部分指定一种格式模式。如果为**时间**部分选择**自定义**，则也须为前面的**日期**部分选择**自定义**。在**自定义**部分中指定的模式必须包含您需要的任何日期和时间格式设置。

   默认选择为**自定义**，默认格式模式为“MMM D, YYYY h: mma”，例如“Sep 20, 2022 5:30pm”。

1. **如果您在 “**日期**” 和 “**时间**” 部分中选择 “**自定义”，请展开 “自定义**” 部分并使用 Moment.js JavaScript 文档中 [Moment.js 显示格式中指定的格式](https://momentjs.com/docs/#/displaying/)模式语法指定所需的格式模式。**
**注意**  
Quick 支持 Moment.js 库`Z`中与时区相关的显示标记，但不支持该`z`标记。

   如果您在**日期**和**时间**部分中选择**自定义**以外的其他选项，则会使用反映您选择的格式模式填充**自定义**。例如，如果您在**日期**部分选择“Jun 21, 2016”，在**时间**部分选择“17:00:00pm”，**自定义**部分将显示格式模式“MMM DD, YYYY HH:mm:ssa”。

1. (可选) 展开 **Custom** 部分并使用 **Preview** 以验证您指定的格式。

1. 展开 **Null 值**部分，然后选择是将 Null 值显示为 `null` 还是显示为自定义值。默认使用 `null`。

# 在 Quick 中自定义日期格式
<a name="format-visual-date-controls"></a>

在 Quick 中，您可以在筛选器和参数控件中自定义日期的格式设置。例如，您可以指定将控件中的日期格式设置为 20-09-2021 或 09-20-2021。除其他自定义设置外，您还可以指定将日期中的月份（例如 September）缩短为三个字母（Sep）。

以下是可用于创建自定义日期格式的标记列表。您能以组合方式使用这些符号，控制日期在控件中的显示方式。

## 支持设置日期格式的标记列表
<a name="format-date-supported-tokens"></a>

使用以下标记在 Quick 中自定义日期格式。


| 示例 | 说明 | 令牌 | 
| --- | --- | --- | 
|  0–6  |  用数字表示一周中的某一天。0 表示星期日，6 表示星期六。  |  `d`  | 
|  Mo–Su  |  用 2 个字符的文本表示一周中的某一天。  |  `dd`  | 
|  Mon–Sun  |  用 3 个字符的文本表示一周中的某一天。  |  `ddd`  | 
|  Monday–Sunday  |  用文本表示一周中的某一天。  |  `dddd`  | 
|  99 或 21  |  用 2 位数表示年份。  |  `YY`  | 
|  1999 或 2021  |  用 4 位数字完整表示年份。  |  `YYYY`  | 
|  1–12  |  表示月份，前面不带 0。  |  `M`  | 
|  1st、2nd 到 12th  |  表示月份，前面不带 0 但带有序数后缀。  |  `Mo`  | 
|  01–12  |  表示月份，前面带 0。  |  `MM`  | 
|  Jan–Dec  |  用 3 位数文本表示月份。  |  `MMM`  | 
|  January–December  |  用文本完整表示月份。  |  `MMMM`  | 
|  1–4  |  用数字表示季度。  |  `Q`  | 
|  1st–4th  |  用带有序数后缀的数字表示季度。  |  `Qo`  | 
|  1-31  |  表示月份中的某一天，前面不带 0。  |  `D`  | 
|  1st、2nd 到 31st  |  表示月份中的某一天，前面不带 0 但带有序数后缀。  |  `Do`  | 
|  01–31  |  用 2 位数表示月份中的某一天，前面带 0。  |  `DD`  | 
|  1–365  |  表示一年中的某一天，前面不带 0。  |  `DDD`  | 
|  001–365  |  表示一年中的某一天，前面带 0。  |  `DDDD`  | 
|  1–53  |  表示一年中的某一周，前面不带 0。  |  `w`  | 
|  1st–53rd  |  表示一年中的某一周，前面不带 0 但带有序数后缀。  |  `wo`  | 
|  01–53rd  |  表示一年中的某一周，前面带 0。  |  `ww`  | 
|  1–23  |  表示小时，采用 24 小时制，前面不带 0。  |  `H`  | 
|  01–23  |  表示小时，采用 24 小时制，前面带 0。  |  `HH`  | 
|  1–12  |  表示小时，采用 12 小时制，前面不带 0。  |  `h`  | 
|  01–12  |  表示小时，采用 12 小时制，前面带 0。  |  `hh`  | 
|  0-59  |  表示分钟，前面不带 0。  |  `m`  | 
|  00–59  |  表示分钟，前面带 0。  |  `mm`  | 
|  0-59  |  表示秒数，前面不带 0。  |  `s`  | 
|  00–59  |  表示秒数，前面带 0。  |  `ss`  | 
|  am 或 pm  |  am/pm  |  `a`  | 
|  AM 或 PM  |  AM/PM  |  `A`  | 
|  1632184215  |  表示 Unix 时间戳。  |  `X`  | 
|  1632184215000  |  表示毫秒 Unix 时间戳。  |  `x`  | 
|  Z  |  零 UTC 偏移。  |  `Z`  | 

不支持以下日期类型。
+ 带冒号的时区偏差。例如，\$107:00。
+ 不带冒号的时区偏差。例如，\$10730。

### 预设日期格式
<a name="visuals-preset-date-formats"></a>

要快速自定义显示为以下示例格式之一的日期和时间，您可以使用以下 Quick 预设标记。


| 示例 | 令牌 | 
| --- | --- | 
|  8:30 PM  |  `LT`  | 
|  8:30:25 PM  |  `LTS`  | 
|  August 2 1985  |  `LL`  | 
|  Aug 2 1985  |  `ll`  | 
|  August 2 1985 08:30 PM  |  `LLL`  | 
|  Aug 2 1985 08:30 PM  |  `lll`  | 
|  Thursday, August 2 1985 08:30 PM  |  `LLLL`  | 
|  Thu, Aug 2 1985 08:30 PM  |  `llll`  | 

## 常见日期格式
<a name="visuals-common-date-formats"></a>

以下是三个常见的日期示例及其相关的标记格式，供您快速参考。


| 示例 | 标记格式 | 
| --- | --- | 
|  Sep 20, 2021  |  `MMM DD, YYYY`  | 
|  20-09-21 5pm  |  `DD-MM-YY ha`  | 
|  Monday, September 20, 2021 17:30:15  |  `dddd, MMMM DD, YYYY HH:mm:ss`  | 

## 在日期中添加单词
<a name="visuals-adding-words-to-dates"></a>

要在日期格式中包含单词，例如 *20th of Sep, 2021* 中的“of”一词，请在单词中的每个字符前输入反斜杠（\$1）。例如，对于“20th of Sep, 2021”日期示例，请使用以下标记格式：`Do \o\f MMM, YYYY`。

## 示例：在筛选条件控件中自定义日期格式
<a name="format-visual-date-controls-example"></a>

要了解如何使用日期标记格式为筛选条件控件自定义日期，请按照以下过程操作。

**了解使用数据标记为筛选条件控件自定义日期**

1. 在快速分析中，选择要自定义的筛选控件。

1. 在筛选条件控件上，选择**编辑控件**图标。

1. 在打开的**编辑控件**页面上，在**日期格式**中输入所需的自定义日期格式。使用在本主题前文中列出的标记。

   例如，假设您想使用以下格式自定义日期：*Sep 3rd, 2020 at 5pm*。为此，您可以输入以下标记格式：

   `MMM Do, YYYY \a\t ha`

   输入每个标记时，日期格式的预览效果会显示在输入字段下方。

1. 选择**应用**。

   控件中的日期会更新为您指定的格式。

# 设置数字字段的格式
<a name="format-a-number-field"></a>

在设置数字字段的格式时，可以从常用选项列表中选择小数位和千位分隔符格式。也可以打开**设置数据格式**窗格手动设置字段格式。通过手动设置字段格式，您可以选择要使用的分隔符以及要显示的小数位数。您还可以选择要使用的单位以及如何显示负数。

更改字段格式会更改分析中所有视觉对象的格式，但不会更改基础数据集中的格式。

如果要通过从常用选项列表中选择来设置数字字段格式，则可以从 **Field list** 窗格、视觉对象编辑器或视觉对象字段井访问此类列表。

**通过选择列表选项来更改数字字段的格式：**
+ 请选择以下选项之一：
  + 在**字段列表**窗格中，选择要设置其格式的数字字段右侧的选择器图标。
  + 在包含与要设置其格式的数字字段相关联的视觉对象编辑器的任何视觉对象上，选择该视觉对象编辑器。展开**字段井**窗格，然后选择与要更改的数字字段相关联的字段井。
+ 选择**格式**，然后选择所需的格式。系统为数字字段提供了以下快速格式选项：
  + 使用逗号作为千位分隔符，并使用小数点显示数字的小数部分，例如，1,234.56。
  + 使用小数点显示数字的小数部分，例如，1234.56。
  + 将数字显示为整数，并使用逗号作为千位分隔符，例如，1,234。
  + 将数字显示为整数，例如，1234。

**手动更改数字字段的格式：**

1. 请选择以下选项之一：
   + 在**字段列表**窗格中，选择要设置其格式的数字字段右侧的选择器图标。
   + 在包含与要设置其格式的数字字段相关联的视觉对象编辑器的任何视觉对象上，选择该视觉对象编辑器。展开**字段井**窗格，然后选择与要更改的数字字段相关联的字段井。

1. 选择 **Format (格式)**，然后选择 **More Formatting Options (更多格式化选项)**。

   **设置数据格式**窗格随即打开。

1. 展开 **Separators** 部分，并从以下选项中选择：
   + 在 **Decimal** 下面，选择点或逗号作为小数分隔符。默认为点。如果选择逗号，则请使用点号或空格作为千位分隔符。
   + 在 **Thousands (千)** 下面，选择或清除 **Enabled (启用)** 以指示是否要使用千位分隔符。**Enabled** 默认处于选中状态。
   + 如果使用千位分隔符，请选择是使用逗号、点还是空格作为分隔符。默认为逗号。如果选择点号，则请使用逗号作为小数分隔符。

1. 展开 **Decimal Places** 部分，并从以下选项中选择：
   + 选择 “**自动**” 让 Amazon Quick 自动确定适当的小数位数，或者选择 “**自定义**” 以指定小数位数。默认值为 **Auto**。
   + 如果选择 **Custom**，请输入要使用的小数位数。字段值将舍入为指定的小数位。例如，如果您指定两位小数，则值 6.728 将舍入为 6.73。

1. 展开 **Units** 部分，并从以下选项中选择：
   + 选择要使用的单位。选择单位会向数字值添加适当的后缀。例如，如果您选择 **Thousands**，则字段值 1234 将显示为 1.234K。

     单位选项如下所示：
     + 无单位后缀。这是默认值。
     + 千 (K)
     + 百万 (M)
     + 十亿 (B)
     + 万亿 (T)
   + 如果要使用自定义前缀或后缀，请在 **Prefix** 或 **Suffix** 框中指定。您可以同时指定两者。除了通过选择单位而添加的后缀外，还可以指定自定义前缀。

1. 展开 **Negatives** 部分，并选择是通过使用减号还是通过将其括在括号中来显示负值。使用减号是默认设置。

1. 展开 **Null 值**部分，然后选择是将 Null 值显示为 `null` 还是显示为自定义值。默认使用 `null`。
**注意**  
使用表格或数据透视表时，仅对放置在**行**、**列**或**分组依据**字段井中的字段显示 Null 值。**值**字段井中的字段 Null 值在表格或数据透视表中显示为空。

# 设置百分比字段的格式
<a name="format-a-percent-field"></a>

在设置百分比字段的格式时，可以从常用选项列表中选择小数位数。也可以打开**设置数据格式**窗格手动设置字段格式。通过手动设置字段格式，您可以选择要使用的分隔符。您还可以选择要显示的小数位数以及如何显示负数。

更改字段格式会更改分析中所有视觉对象的格式，但不会更改基础数据集中的格式。

如果您要从常用选项列表中为某个百分比字段选择小数位数，可以通过多种方法访问此类列表。可以从 **Field list (字段列表)** 窗格、视觉对象编辑器或者视觉对象字段井中访问它。

**通过选择列表选项更改百分比字段的小数位数**

1. 请选择以下选项之一：
   + 在**字段列表**窗格中，选择要设置其格式的数字字段右侧的选择器图标。
   + 在包含与要设置其格式的百分比字段相关联的视觉对象编辑器的任何视觉对象上，选择该视觉对象编辑器。展开**字段井**窗格，然后选择与要更改的数字字段相关联的字段井。

1. 选择**格式**，然后选择所需的小数位数。系统为百分比字段提供了以下快速格式：
   + 显示带两位小数的值。
   + 显示带一位小数的值。
   + 显示不带小数的值。

**手动更改百分比字段的格式**

1. 请选择以下选项之一：
   + 在**字段列表**窗格中，选择要设置其格式的数字字段右侧的选择器图标。
   + 在包含与要设置其格式的数字字段相关联的视觉对象编辑器的任何视觉对象上，选择该视觉对象编辑器。展开**字段井**窗格，然后选择与要更改的数字字段相关联的字段井。

1. 选择 **Format (格式)**，然后选择 **More Formatting Options (更多格式化选项)**。

   **设置数据格式**窗格随即打开。

1. 展开 **Separators** 部分，并从以下选项中选择：
   + 在 **Decimal** 下面，选择点或逗号作为小数分隔符。默认为点。如果选择逗号，则请使用点号或空格作为千位分隔符。
   + 在 **Thousands (千)** 下面，选择或清除 **Enabled (启用)** 以指示是否要使用千位分隔符。**Enabled** 默认处于选中状态。
   + 如果使用千位分隔符，请选择是使用逗号、点还是空格作为分隔符。默认为逗号。如果选择点号，则请使用逗号作为小数分隔符。

1. 展开 **Decimal Places** 部分，并从以下选项中选择：
   + 选择 “**自动**” 让 Amazon Quick 自动确定适当的小数位数，或者选择 “**自定义**” 以指定小数位数。默认值为 **Auto**。
   + 如果选择 **Custom**，请输入要使用的小数位数。字段值将舍入为指定的小数位。例如，如果您指定两位小数，则值 6.728 将舍入为 6.73。

1. 展开 **Negatives** 部分，并选择是通过使用减号还是通过将其括在括号中来显示负值。使用减号是默认设置。

1. 展开 **Null 值**部分，然后选择是将 Null 值显示为 `null` 还是显示为自定义值。默认使用 `null`。
**注意**  
使用表格或数据透视表时，仅对放置在**行**、**列**或**分组依据**字段井中的字段显示 Null 值。**值**字段井中的字段 Null 值在表格或数据透视表中显示为空。

# 设置文本字段的格式
<a name="format-a-text-field"></a>

设置文本字段格式时，您可以使用**字段列表**窗格、视觉对象编辑器或视觉对象字段井来选择如何显示 Null 值。

**选择如何显示文本字段的 Null 值**

1. 请选择以下选项之一：
   + 在**字段列表**窗格中，选择要设置其格式的数字字段右侧的选择器图标。
   + 在包含与要设置其格式的百分比字段相关联的视觉对象编辑器的任何视觉对象上，选择该视觉对象编辑器。展开**字段井**窗格，然后选择与要更改的数字字段相关联的字段井。

1. 选择 **Format (格式)**，然后选择 **More Formatting Options (更多格式化选项)**。

   **设置数据格式**窗格随即打开。

1. 展开 **Null 值**部分，然后选择是将 Null 值显示为 `null` 还是显示为自定义值。默认使用 `null`。

# 将字段的格式恢复为默认设置
<a name="set-field-format-to-default"></a>

可以使用以下过程将字段的格式恢复为默认设置。

**将字段的格式恢复为默认设置**

1. 在**字段列表**窗格中，选择想要重置的字段右侧的选择器图标。

1. 选择 **Format (格式)**，然后选择 **More Formatting options (更多格式化选项)**。

   **设置数据格式**窗格随即打开。

1. 选择 **Reset to defaults**。

# 在 Amazon Quick 中对视觉数据进行分类
<a name="sorting-visual-data"></a>

您可以使用多种方法对大多数视觉对象类型的数据进行排序。您可以使用快速排序选项或字段井来选择视觉对象数据的排序顺序。您也可以使用字段井按非视觉对象指标对数据进行排序。您可以排序的视觉对象元素取决于视觉对象类型以及该视觉对象是否支持排序。有关支持排序的具体视觉对象类型的更多信息，请参阅 [Quick 中按类型排列分析格式](analytics-format-options.md)。

对值进行排序时，数据透视表的行为方式与表不同。有关对数据透视表进行排序的更多信息，请参阅[在快速中对数据透视表进行排序](sorting-pivot-tables.md)。

对于 SPICE 数据集，您可以对大小不超过以下限制的文本字符串进行排序：
+ 最多 200 万 (2,000,000) 个唯一值
+ 最多 16 个列

超出限制时，视觉对象会在右上角显示一个通知。

您可以对支持排序的任何视觉对象类型进行排序。如果视觉对象类型支持排序，则可以使用快速排序选项或字段井进行排序。

**快速对维度和度量进行排序**
+ 请执行以下操作之一：
  + 选择显示在任一轴上字段名称旁边的排序图标。在直接查询中，任何数据类型都会显示此图标。对于 SPICE，此图标只能用于日期时间、数字和小数这三种数据类型。
  + 选择字段名称，然后从菜单中选择排序选项。如果标签未显示在轴上，请检查视觉对象格式，查看该轴是否设置为显示标签。在较小的视觉对象上，显示标签会自动隐藏。您可能需要使视觉对象足够大以显示标签。

**使用非视觉对象指标进行排序**

1. 打开包含您想要排序的视觉对象的分析。默认情况下，将打开“视觉对象”窗格。

1. 选择一个支持排序的字段，然后选择**排序依据**、**排序选项**。

1. 在**排序选项**窗格上，按特定字段排序、选择聚合、按升序或降序排序，或者进行组合操作。

1. 选择 **Apply (应用)** 以保存更改。或者，选择**清除**重新开始或选择**取消**返回。

**使用字段井进行排序**

1. 打开包含您想要排序的视觉对象的分析。默认情况下，将打开“视觉对象”窗格。

1. 选择支持排序的字段井。

1. 在字段井菜单中，选择 **Sort**，然后选择升序或降序排序顺序图标。

# 使用 Amazon Quick Sight 中的主题
<a name="themes-in-quicksight"></a>

在 Amazon Quick Sight 中，*主题*是一组设置，您可以将其应用于多个分析和控制面板。Amazon Quick Sight 包含一些主题，您可以使用模板编辑器添加自己的主题。您可以共享权限级别被设置为用户或拥有者的主题。有权使用主题的任何人都可以将其应用于分析和控制面板，或者使用 **Save as (另存为)** 来创建自己的副本。主题拥有者还可以编辑主题并与他人共享。

一个分析只能应用一个主题。如果您（使用**应用**按钮）将主题应用于分析，所有人（包括分析和控制面板查看者）的主题均会立即变更。要在不应用颜色选项的情况下浏览和保存颜色选项，请避免编辑和保存所应用的主题。

所有颜色都有成对的背景色和前景色。前景色应专门显示在与其匹配的背景色之上，因此请选择对比鲜明的颜色。

下表定义了不同的设置。


| Group | 设置 | 设置将更改什么 | 
| --- | --- | --- | 
|  主色   |  主要背景  | 用于视觉对象和其他高强调 UI 的背景色。  | 
|  Main   |  主要前景  | 显示在主要背景区域（如网格线、边框、表格条带、图标等）上的文本和其他前景元素的颜色。  | 
|  Main   |  辅助背景  |  用于工作表背景和工作表控件的背景颜色。  | 
|  Main   |  辅助前景  | 用于在辅助背景上显示的任何工作表标题、工作表控件文本或 UI 的前景颜色。 | 
|  Main   |  强调  | 此设置用作以下内容的交互式提示：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/themes-in-quicksight.html) | 
|  Main   |  强调前景  | 应用于出现在强调色上的任何文本或其他元素的前景颜色。 | 
| Main | 字体 | 所有文本使用的字体。您可以从 Amazon Quick Sight 支持的各种字体中进行选择。 | 
|  数据   |  数据颜色  | 这些是将颜色分配给组时图表轮换的数据颜色。您可以在此列表中添加或删除颜色，也可以选择一种颜色进行更改。 | 
|  数据   |  最小最大渐变  | 当渐变用作刻度时（例如在热图中）使用的默认最小和最大渐变颜色。 | 
|  数据   |  空白填充颜色  | 此颜色与数据颜色一起使用，用于表示缺少数据。例如，此颜色显示在关键绩效指标 (KPI) 和量规图的进度条的空白部分中，或者用于空白的热图单元格。 | 
|  布局   |  边框  | 此设置可切换当前未选择的视觉对象周围的边框。选定视觉对象的边框仍显示强调色。 | 
|  布局   |  边距  | 此设置可切换图纸边界和视觉对象之间的空间。 | 
|  布局   |  Gutter（间距）  | 此设置可显示或隐藏网格中视觉对象之间的空间。 | 
|  其他   |  成功  成功前景  | 这些颜色用于成功消息，例如成功下载的勾选标记。 | 
|  其他   |  警告  警告前景  | 这些颜色用于警告和提示消息。 | 
|  其他   |  危险  危险前景  | 这些颜色用于错误消息。 | 
|  其他   |  维度  维度前景  | 这些颜色用于标识为维度的字段的名称。此选项还可为嵌入式控制面板的筛选条件面板中的维度设置颜色。 | 
|  其他   |  度量  度量前景  | 这些颜色用于标识为度量的字段的名称。这些颜色还适用于嵌入式控制面板的筛选条件面板中的度量。 | 

**简要浏览主题查看器和编辑器**

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

1. 打开一个分析，或创建一个新分析。您必须打开一个分析才能处理主题。但是，您看到的应用了主题的视图只是预览效果。

   主题与分析是相互独立的。即使您保存了主题，分析也不会发生任何更改。

1. 在应用程序栏中选择**编辑**，然后选择**主题**。将打开主题面板。

1. 主题列表将显示以下内容：
   + **Applied theme (已应用的主题)** 显示当前应用于此分析及其控制面板的主题。
   + **My themes (我的主题)** 显示您创建的主题和共享给您的主题。
   +  **入门主题**显示由 Amazon Quick Sight 创建的主题。

1. 每个主题都有上下文菜单，可以通过 **…** 图标访问。

   可对每个主题执行的操作取决于您的访问级别。
   + ****主题所有者**** – 如果您创建了主题，或者有人与您共享了主题并让您成为所有者，您可以执行以下操作：
     + **编辑** – 更改主题设置，然后保存更改。
     + **保存** – 保存您对主题所作的更改。如果您编辑了已应用的主题并保存更改，则新主题设置将应用于使用该主题的所有分析和控制面板。在您覆盖已应用的主题之前，系统将显示一条信息性消息。
     + **共享** – 共享主题并将用户或所有者权限分配给其他人。
     + **删除** – 删除主题。您不能撤消此操作。在您确认删除之前，系统将显示一条信息性消息。
   + ****主题用户**** — 如果有人与你共享了模版，或者它是 Amazon Quick Sight 主题，你可以执行以下操作：
     + **应用** – 将主题应用于当前分析。此选项还会将主题应用于从分析创建的控制面板。在您覆盖已应用的主题之前，系统将显示一条信息性消息。
     + **另存为** – 将当前主题保存为其他名称，以便您进行编辑。
   + ****分析作者**** – 如果您有权访问分析，但无权访问主题，可以执行以下操作：
     + 您可以看到应用了主题的分析。
     + 您可以在 **Theme (主题)** 面板中看到主题。
     + 您可以使用 **Save as (另存为)** 来创建您自己的主题副本。
   + ****控制面板查看者**** – 如果您有权访问控制面板，但无权访问主题，可以执行以下操作：
     + 您可以看到应用了主题的控制面板。
     + 您无法看到主题或其设置。控制面板用户无法看到 **Theme (主题)** 面板。

1. 要浏览主题的设置，请选择左侧的图标以查看颜色设置。

以下过程将引导您完成主题的创建。您可以从要用于预览颜色的分析或分析副本开始。或者您也可以开始一个新分析。保存主题后，您可以将其应用于当前分析或其他分析。如果您与其他人共享主题，那么其他人也可以使用它。

**使用主题编辑器**

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

1. 打开一个分析，或创建一个新分析。在应用程序栏中选择**编辑**，然后选择**主题**。将打开**主题**面板。

   您必须打开一个分析才能处理主题。但是，您看到的应用了主题的视图只是预览效果。主题与分析是相互独立的。即使您保存了主题，分析也不会发生任何更改。

1. 选择 **Main (主色)**。每种设置中使用的拾色器都是 Amazon Quick Sight 中使用的标准拾色器。

   为 **Primary background (主要背景)** 和 **Primary foreground (主要前景)** 设置颜色，以便在视觉对象和其他高影响力 UI 中使用。

   为 **Secondary background (辅助背景)** 和 **Secondary foreground (辅助前景)** 设置颜色，以便在工作表和工作表控件中使用。

   为 **Accent (强调)** 和 **Accent foreground (强调前景)** 设置颜色，以便在交互式提示中使用，包括按钮、选定视觉对象周围的边框、加载指示符、叙述自定义、链接以及嵌入式控制面板中的筛选器窗格。

1. 选择**数据**。

   设置 **Colors (颜色)** 以用作数据颜色。指定颜色时，图表会旋转这些颜色。您可以添加或删除颜色，也可以通过拖放来更改颜色的顺序。要更改现有颜色，请选中它以打开颜色编辑器。

   为 **Min max gradient (最小-最大梯度)** 设置颜色，以便在将梯度用作比例时（例如在热图中）使用。

   为 **Empty fill (空白填充)** 设置颜色，以在显示缺少的数据时使用，例如进度条的未填充部分。

1. 选择 **Layout (布局)**。

   启用或禁用 **Border (边框)** 复选框，以显示或隐藏当前未选中的视觉对象周围的边框。

   启用或禁用 **Margin (边距)** 复选框，以显示或隐藏图纸边界和视觉对象之间的空间。

   启用或禁用 **Gutter (间距)** 复选框，以显示或隐藏网格中视觉对象之间的空间。

1. 选择 **Other (其他)**。

   为 **Success (成功)** 设置颜色，以便在成功消息中使用，例如，当您成功下载 .csv 文件时。成功前景颜色当前未使用。

   为 **Warning (警告)** 设置颜色，以便在警告和信息性消息中使用。警告前景颜色当前未使用。

   为 **Danger (危险)** 设置颜色，以便在错误消息中使用。危险前景颜色当前未使用。

   为 **Dimension (维度)** 设置颜色，以便用于标识为维度的字段的名称。此选项还可为嵌入式控制面板的筛选条件面板中的维度设置颜色。

   为 **Measure (度量)** 设置颜色，以便用于标识为度量的字段的名称。此选项还可为嵌入式控制面板的筛选器面板中的度量设置颜色。

1. 要保存主题，请选择**主色**并为新主题命名，然后在浏览器右上方选择**保存**。

   保存主题不会将其应用于分析，即使您可以看到使用当前分析的颜色的预览。

1. 要共享主题，请保存或关闭您正在查看的主题。在您的主题集合中找到该主题。从上下文菜单（…）中选择**共享**。

1. 要应用主题，请保存或关闭您正在查看的主题。在您的主题集合中找到该主题。从上下文菜单（…）中选择**应用**。

# 使用键盘快捷键访问亚马逊 Quick Sight
<a name="quicksight-accessibility"></a>

您可以使用以下键盘快捷键在 Amazon Quick Sight 控制面板或分析中导航：
+ 使用 `TAB` 键浏览菜单选项或视觉对象。
+ 使用 `Shift+TAB` 键向后移动到上一个选择。
+ 使用 `Enter` 键选择一个视觉对象或菜单选项。
+ 使用 `ESC` 键清除视觉对象或菜单项中的选择。

![\[alt_text\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/keyboard-shortcuts-1.gif)


## 在视觉对象中使用快捷键
<a name="in-visual-shortcuts"></a>

您可以使用 `TAB`、`Shift+TAB` 和 `Enter` 键在所选视觉对象中浏览并选择不同字段。例如，假设您想使用视觉对象标题中包含的链接。为此，请选择所需的视觉对象，然后使用 `TAB` 键直到只选中链接。然后，使用 `Enter` 键单击链接。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/keyboard-shortcuts-2.gif)


您也可以使用这些键盘快捷键进行浏览，然后进入视觉对象右上角的可视化菜单。为此，请选择所需的视觉对象，然后使用 `TAB` 键进入要选择的字段。如果您错过了所需的字段，请使用 `Shift+TAB` 键返回字段。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/keyboard-shortcuts-3.gif)


# 使用控制面板和报告在 Amazon Quick Sight 中共享和订阅数据
<a name="working-with-dashboards"></a>

*控制面板*是分析的只读快照，您可以与其他 Amazon Quick Sight 用户共享该快照以进行报告。控制面板会保留您在发布控制面板时的分析配置，包括筛选、参数、控件和排序顺序等。用于分析的数据不会作为控制面板的一部分捕获。当您查看控制面板时，它将反映分析使用的数据集中的当前数据。

当您共享控制面板时，可以指定哪些用户能够访问它。作为控制面板查看者的用户可以查看和筛选控制面板数据。对用户在查看控制面板时应用的筛选条件、控件或排序的任何选择仅在用户查看控制面板时存在，控制面板关闭后不会保存。作为控制面板所有者的用户可以编辑和共享控制面板，并可以选择性选地编辑和共享分析。如果您希望他们还编辑和共享数据集，则可以在分析中进行相应设置。

如果使用企业版，网站或应用程序中也可以嵌入共享控制面板。有关嵌入式控制面板的更多信息，请参阅[亚马逊 Quick Sight 的嵌入式分析](embedded-analytics.md)。

参阅以下各节，学习如何发布和共享控制面板、订阅阈值警报以及发送和订阅控制面板电子邮件报告。

**Topics**
+ [发布控制面板](creating-a-dashboard.md)
+ [共享 Amazon 快速浏览控制面板](sharing-a-dashboard.md)
+ [在仪表板视觉对象中使用快速操作连接器](action-connectors-in-dashboard-visuals.md)
+ [分享你对 Amazon Quick Sight 控制面板的看法](share-dashboard-view.md)
+ [通过电子邮件安排和发送 Quick Sight 报告](sending-reports.md)
+ [在 Amazon Quick Sight 中订阅电子邮件报告](subscribing-to-reports.md)
+ [在 Amazon Quick Sight 中处理阈值警报](threshold-alerts.md)
+ [打印控制面板或分析](printing1.md)
+ [导出 Amazon Quick Sight 分析或控制面板为 PDFs](export-dashboard-to-pdf.md)
+ [PDF 导出任务失败的错误代码](qs-reports-error-codes.md)
+ [为 Amazon Quick Sight 整理资产到文件夹中](folders.md)

# 发布控制面板
<a name="creating-a-dashboard"></a>

当您发布分析时，该分析会变成一个控制面板，供您的 Amazon Quick 账户的用户共享和交互，在某些情况下，也可以与不在您账户中的匿名用户共享和交互。您可以选择发布分析的一张工作表、分析中的所有工作表或想要的任何其他工作表组合。如果发布交互式工作表，该工作表将成为用户可以进行交互的交互式控制面板。当您发布像素完美报告表时，该工作表将变成像素完美报告，当您在 Amazon Quick Sight 中安排报告时，它会生成并保存报告数据的快照。您可以发布一个仪表板，其中包含来自相同分析的交互式表格和像素完美报告的任意组合。

有关计划报告的更多信息，请参阅 [通过电子邮件安排和发送 Quick Sight 报告](sending-reports.md)。

有关查看报告快照的更多信息，请参阅 [在 Amazon Quick Sight 中使用像素完美报告](qs-reports-consume-reports.md)。

可以使用以下过程发布和选择性地共享控制面板。您还可以使用此过程重命名已发布的控制面板。重命名的控制面板将保留其安全性和电子邮件报告设置。

1. 打开要使用的分析。选择**发布**。

1. 请执行以下操作之一：
   + 要创建新的控制面板，请选择**新的控制面板**，然后键入控制面板名称。
   + 要更换现有控制面板，请执行下列操作之一。更换控制面板会对其进行更新，但不会更改安全新或电子邮件报告设置。
     + 要使用您的更改更新控制面板，请选择 **Replace an existing dashboard (更换现有控制面板)**，然后从列表中选择一个控制面板。
     + 要重命名，请选择**替换现有控制面板**，再从列表中选择一个控制面板，然后选择铅笔图标。输入新名称以重命名现有控制面板，然后单击复选标记或按 Enter 键确认。当您在重命名后发布控制面板时，它还会保存您对分析所做的任何更改。直到您**发布**后，对分析或控制面板的更改才会保留。必须发布控制面板的初始版本才能重命名它。

1. （可选）在**工作表**下拉菜单中选择想要发布的工作表。在选择了要添加到新控制面板中的工作表后，下拉菜单会显示选择了多少要发布的工作表。默认选项为**已选择所有工作表**。

   如果您要替换现有控制面板，则会在下拉菜单中预先选择已发布到现有控制面板的工作表，除非您从以前未发布过的分析中进行发布。您可以通过从下拉列表中选择或取消选择工作表来对此进行更改。

1. （可选）在注释部分添加对所做更改的评论，可在[版本历史记录](publishing-a-previous-dashboard-version.md)下查看。

1. （可选）要允许控制面板读者共享数据故事，请选择**允许共享数据故事**。有关数据故事的更多信息，请参阅 [在 Amazon Quick Sight 中处理数据故事](working-with-stories.md)。

1. （可选）打开**更多设置**。仅当新的控制面板中至少有一个工作表是交互式工作表时，这些选项才可用。
**注意**  
这是一个可滚动的窗口。在 **Publish a dashboard (发布控制面板)** 窗口中，向下滚动以查看所有可用的选项。

   （可选）您可以关闭几个选项来简化此控制面板的体验，如下所示：
   + 对于 **Dashboard options (控制面板选项)**：
     + 将 **Expand on-sheet controls by default (默认展开工作表上的控件)** 保持清除状态以显示简化的视图。默认情况下，将禁用该功能。要默认显示控件，请开启该选项。
     + 清除 **Enable advanced filtering on the left pane (启用左侧窗格中的高级筛选)** 后，控制面板查看者将无法自行筛选数据。如果查看者创建自己的筛选器，这些筛选器只有在用户查看控制面板时才存在。无法保存或重用筛选器。
     + 清除**启用悬停工具提示**以关闭工具提示。
   + 对于 **Visual options (视觉对象选项)**：
     + 清除**启用视觉对象菜单**以完全关闭视觉对象菜单。
     + 如果您的控制面板查看者不需要从控制面板中的视觉对象下载数据，请清除**启用下载选项**。CSV 文件仅包含在下载视觉对象时其中当前可见的内容。查看器通过使用每个视觉对象上的视觉菜单来下载数据。
     + 清除**启用最大化视觉对象选项**以关闭放大视觉对象来填充屏幕的功能。
   + 对于 **Data point options (数据点选项)**：
     + 如果控制面板不提供可钻取字段层次结构，请清除 **Enable drill up/down (启用向上/向下钻取)**。
     + 清除**启用单击工具提示**以关闭在读者选择（单击）数据点时显示的工具提示。
     + 清除**启用排序选项**以关闭排序控件。

1. 选择 **Publish dashboard（发布控制面板）**。

   如果已重命名现有控制面板，则屏幕顶部将刷新以显示新名称。

1. （可选）执行以下操作之一：
   + 要发布而不共享某个控制面板，请在出现**与用户共享控制面板**屏幕时选择右上角的 **x**。您始终可以通过从应用程序栏中选择**文件 > 共享**来稍后共享控制面板。
   + 要共享该控制面板，请按照[共享 Amazon 快速浏览控制面板](sharing-a-dashboard.md)中的过程操作。

   完成这些步骤后，您便完成了创建和共享控制面板的过程。控制面板的订阅者接收包含指向控制面板的链接的电子邮件。组不会收到邀请电子邮件。

# 复制 Amazon 快速浏览控制面板
<a name="copying-a-dashboard"></a>

如果您在现有控制面板上拥有共有者访问权限或**另存为**权限，则可以对其进行复制。为此，请从控制面板创建新分析，然后根据您复制的分析创建新的控制面板。

在将原始控制面板保存为新的分析后，您可以通过与其他用户共享这一新分析来协作处理它。例如，您可以使用此工作流来保留控制面板的生产版本，同时还可以开发或测试其新版本。

**复制控制面板**

1. 登录 Quick 并从主页上选择 “**控制面板**”。

1. 打开您想要复制的控制面板。

1. 选择右上角的**另存为**，然后键入新分析的名称。当使用**另存为**保存现有控制面板时，其会基于控制面板创建分析。
**注意**  
如果没看到**另存为**，请向管理员核实自己是否拥有正确的权限。

1. (可选) 更改新的分析。

1. （可选）与其他用户共享分析，以便可以协作更改。具有访问权限的所有用户都可以对新分析进行更改。

   要与其他用户共享分析，请选择页面右上角的**共享**，然后选择**共享分析**。

1. （可选）依次选择**共享**、**发布控制面板**，可创建包含对新分析更改的新控制面板。

有关更多信息，请参阅下列内容：
+ [共享 Amazon 快速浏览控制面板](sharing-a-dashboard.md)
+ [分享快速观察分析](sharing-analyses.md)

# 删除 Amazon 快速浏览控制面板
<a name="deleting-a-dashboard"></a>

当您删除 Amazon Quick Sight 控制面板时，该控制面板将从您的账户以及该控制面板所属的所有文件夹中永久删除。您无法再访问已删除的控制面板。您只能删除您拥有或共有的控制面板。可以使用以下过程删除控制面板。

**删除控制面板**

1. 在 Amazon Quick 主页的 “**控制面板**” 选项卡上，在控制面板上选择要删除的详细信息图标（垂直点）。

1. 选择**删除**。然后，再次选择**删除**以确认要删除该控制面板。删除控制面板会从您的账户中永久删除该控制面板，并且该控制面板将从其所属的所有文件夹中消失。您仍然可以根据发布已删除控制面板的分析访问和创建其他控制面板。

# 发布 Amazon Quick Sight 控制面板的先前版本
<a name="publishing-a-previous-dashboard-version"></a>

每次更新分析并将其发布时，都会创建一个新版本的 Amazon Quick Sight 控制面板。要恢复到控制面板的先前版本，您可以在控制面板的**版本历史记录**下搜索它并发布您感兴趣的先前版本。每个控制面板最多可以存储 1000 个永不删除的版本。使用以下过程发布控制面板的先前版本。

**发布控制面板的先前版本**

1. 在 Amazon Quick 主页的控制**面板**选项卡上，选择要管理的控制面板。

1. 在右侧工具栏上选择**版本历史记录**。当前发布的控制面板版本以及以前可用的版本将显示在列表中。注释部分中添加的任何评论都将与相应的版本一起出现。

1. 选择感兴趣的控制面板版本。您可以看到此版本的发布时间以及发布者。

1. 要恢复到此版本，请选择**发布**。单击**确认**以发布版本。

# 共享 Amazon 快速浏览控制面板
<a name="sharing-a-dashboard"></a>

默认情况下，Amazon Quick Sight 中的控制面板不会与任何人共享，只有所有者才能访问。但是，在您发布控制面板后，您可以在 Amazon Quick 账户中与其他用户或群组共享该控制面板。您也可以选择与 Quick 账户中的所有人共享控制面板，并让账户中的所有用户都能在 Quick 主页上看到控制面板。此外，您可以复制控制面板的链接，以便与有权访问该控制面板的其他人共享。

**重要**  
有权访问控制面板的用户也可以看到关联分析中使用的数据。

共享控制面板后，您可以查看有权访问该控制面板的其他用户或组并可控制其拥有的访问权限类型。您也可以撤销任何用户对控制面板的访问权限。您也可以从中移除自己。

您还可以复制控制面板或视觉对象嵌入代码并将其粘贴到应用程序中，将交互式控制面板和视觉对象嵌入网站和应用。有关更多信息，请参阅 [通过一键嵌入代码为注册用户嵌入 Amazon Quick Sight 视觉效果和控制面板](embedded-analytics-1-click.md)。

# 授予对控制面板的访问权限
<a name="share-a-dashboard"></a>

您可以与账户中的特定用户或群组或 Amazon Quick 账户中的所有人共享控制面板和视觉效果。您也可以与互联网上的任何人共享。您可以使用 Quick 控制台或 Quick Sight API 共享仪表板和视觉效果。对共享视觉对象的访问权限取决于为该视觉对象所属的控制面板配置的共享设置。要在您的网站或应用程序中共享和嵌入视觉对象，请调整该视觉对象所属的控制面板的共享设置。有关更多信息，请参阅下列内容：
+ [授予个人 Amazon Quick Sight 用户和群组访问亚马逊快速瞄准仪表板的权限](share-a-dashboard-grant-access-users.md)
+ [向您 Amazon Quick Sight 账户中的所有人授予访问控制面板的权限](share-a-dashboard-grant-access-everyone.md)
+ [允许互联网上的任何人访问 Amazon Quick Sight 控制面板](share-a-dashboard-grant-access-anyone.md)
+ [使用 Quick Sight API 授予您 Amazon Quick 账户中的所有人访问控制面板的权限](share-a-dashboard-grant-access-everyone-api.md)
+ .[允许互联网上的任何人使用 Quick Sight API 访问 Amazon Quick Sight 控制面板](share-a-dashboard-grant-access-anyone-api.md)

# 授予个人 Amazon Quick Sight 用户和群组访问亚马逊快速瞄准仪表板的权限
<a name="share-a-dashboard-grant-access-users"></a>

要授予对控制面板的访问权限，请按照以下过程操作。

**授予用户或组对控制面板的访问权限**

1. 打开已发布的控制面板，选择右上角的**共享**。再选择**共享控制面板**。

1. 在打开的**共享控制面板**页面中，执行以下操作：

   1. 对于左侧的**邀请用户和组加入控制面板**，请在搜索框中输入用户电子邮件或组名称。

      与您查询相匹配的任何用户或组都将显示在搜索框下方的列表中。只有活动用户和组显示在列表中。

   1. 对于想要授予控制面板访问权限的用户或组，请选择**添加**。然后选择您希望他们拥有的权限级别。

      您可以选择 “**查看**者” 或 “**共同所有者**”，具体取决于用户的快速角色。每个角色的可用权限如下：
      + **读者**-只能向快速读者授予**查看**者访问仪表板的权限。他们可以查看、导出和打印控制面板，但无法将控制面板另存为分析。他们可以对控制面板数据进行查看、筛选和排序。他们还可以使用控制面板上的任何控件或自定义操作。他们对控制面板进行的任何更改仅在他们查看更改时存在，关闭控制面板后不会保存更改。
      + **作者** — 可以向快速作者授予**查看**者或**共同所有者**访问仪表板的权限。
        + 拥有“查看者”访问权限的作者可以查看、导出和打印控制面板。他们可以对控制面板数据进行查看、筛选和排序。他们还可以使用控制面板上的任何控件或自定义操作。他们对控制面板进行的任何更改仅在他们查看更改时存在，关闭控制面板后不会保存更改。

          不过，除非控制面板所有者另有指定，否则他们可以将控制面板另存为分析。此特权将授予对数据集的只读访问权限，以便他们可以据此创建新的分析。所有者可以选择为他们提供与分析相同的权限。如果所有者还希望他们编辑和共享数据集，则可以在分析中进行相应设置。
        + 拥有“共有者”访问权限的作者可以查看、导出和打印控制面板。他们还可以编辑、共享和删除控制面板。除非控制面板所有者另有指定，否则他们还可以将控制面板保存为分析。此特权将授予对数据集的只读访问权限，以便他们可以据此创建新的分析。所有者可以选择为他们提供与分析相同的权限。如果所有者还希望他们编辑和共享数据集，则可以在分析中进行相应设置。
      + **群组**-只能向快速群组授予**查看者**访问仪表板的权限。他们可以查看、导出和打印控制面板，但无法将控制面板另存为分析。

      将用户或组添加到控制面板后，您可以在**用户和组**下的**管理权限**部分中查看关于他们的信息。您可以看到他们的用户名、电子邮件地址、权限级别和“另存为”权限。

      要允许用户或组将控制面板另存为分析，请在**另存为分析**列中开启**允许“另存为”**。

   1. 要将更多用户添加到控制面板，请在搜索框中输入其他用户电子邮件地址或组名称，然后重复步骤 A 和 B。

# 向您 Amazon Quick Sight 账户中的所有人授予访问控制面板的权限
<a name="share-a-dashboard-grant-access-everyone"></a>

或者，您可以与账户中的所有人共享您的 Amazon Quick Sight 控制面板。在执行该操作后，您账户中的所有人都可以访问控制面板，即使没有向他们单独授予访问权限和分配权限。如果有指向控制面板的链接（由您共享）或嵌入了控制面板，他们就可以访问该控制面板。

与账户中的所有人共享控制面板不会影响电子邮件报告。例如，假设您选择与账户中的所有人共享控制面板。还假设您在为同一控制面板设置电子邮件报告时选择**向有权访问控制面板的所有用户发送电子邮件报告**。在这种情况下，电子邮件报告仅发送给有权访问控制面板的人员。他们通过与其明确共享的某人、组或共享文件夹获得访问权限。

**向账户中的所有人授予对控制面板的访问权限**

1. 打开已发布的控制面板，选择右上角的**共享**。再选择**共享控制面板**。

1. 在打开的**共享控制面板**页面中，对于左下角的**启用访问权限**，开启**此账户中的所有人**。使用 Active Directory 登录的账户无法访问**此账户中的所有人**开关。使用 Active Directory 的账户可以通过调用 `UpdateDashboardPermissions` API 来启用此设置。有关更多信息`UpdateDashboardPermissions`，请参阅[UpdateDashboardPermissions](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_UpdateDashboardPermissions.html)《*Amazon Quick Sight API 参考*》。

1. （可选）在 **Quick Sight 中开启 “可发现**”。

   当你与账户中的所有人共享仪表板时，所有者还可以选择在 Quick Sight 中将仪表板设置为可见。可发现的控制面板会显示在**控制面板**页面上每个人的控制面板列表中。开启此选项后，账户中的所有人都可以查看和搜索控制面板。关闭此选项后，只有当他们获得了相应链接或嵌入了控制面板时，才能访问控制面板。控制面板未显示在**控制面板**页面上，用户也无法进行搜索。

# 允许互联网上的任何人访问 Amazon Quick Sight 控制面板
<a name="share-a-dashboard-grant-access-anyone"></a>


|  | 
| --- |
|  适用于：企业版  | 

您还可以通过 Amazon Quick 控制台的 “共享” 菜单与互联网上的任何人**共享**您的 Amazon Quick Sight 控制面板。当你这样做时，当你共享控制面板链接或嵌入仪表板时，互联网上的任何人都可以访问控制面板，即使他们不是你的 Quick 账户的注册用户。

要在共享控制面板时向互联网上的任何人授予对控制面板的访问权限，请按照以下部分操作。

**Topics**
+ [开始之前](share-a-dashboard-grant-access-anyone-prerequisites.md)
+ [向互联网上的任何人授予对控制面板的访问权限](share-a-dashboard-grant-access-anyone-access.md)
+ [更新公开共享的控制面板](share-a-dashboard-grant-access-anyone-update.md)
+ [关闭公开共享设置](share-a-dashboard-grant-access-anyone-no-share.md)

# 开始之前
<a name="share-a-dashboard-grant-access-anyone-prerequisites"></a>

在您可以与互联网上的任何人共享控制面板之前，请确保执行以下操作：

1. 在账户中开启会话容量定价。如果您尚未在账户中开启会话容量定价，则无法更新账户的公开共享设置。

1. 在 IAM 控制台中向管理用户分配公开共享权限。您可以使用新策略添加这些权限，也可以向现有用户添加新权限。

   以下示例策略提供了可用于 `UpdatePublicSharingSettings` 的权限。

------
#### [ JSON ]

****  

   ```
   {
   "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": "quicksight:UpdatePublicSharingSettings",
               "Resource": "*",
               "Effect": "Allow"
           }
       ]
   }
   ```

------

   若账户不希望具有管理员权限的用户使用此功能，则可以添加拒绝公开共享权限的 IAM 策略。以下示例策略拒绝了可用于 `UpdatePublicSharingSettings` 的权限。

------
#### [ JSON ]

****  

   ```
   {
   "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": "quicksight:UpdatePublicSharingSettings",
               "Resource": "*",
               "Effect": "Deny"
           }
       ]
   }
   ```

------

   有关将 IAM 与 Quick Sight 配合使用的更多信息，请参阅[在 IAM 中使用快速](security_iam_service-with-iam.md)。

   如果您不希望组织中的任何账户使用公开共享功能，也可以将“拒绝”策略用作服务控制策略（SCP）。有关更多信息，请参阅《*AWS Organizations 用户指南》*中的[服务控制策略 (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。

1. 在您的 Amazon Quick 账户上开启公开共享。

   1. 在 Amazon 快速入门页面中，选择浏览器窗口右上角的用户图标，然后选择**快速管理**。

   1. 在打开的页面中，向下滚动到 “**权限**” 部分。

   1. 选择左侧**的仪表板公共访问权限**。

   1. 在打开的页面上，选择**互联网上的任何人**。

      开启此设置时，系统会出现一个弹出窗口，要求确认您的选择。确认自己的选择后，您可以授予对特定控制面板的公有访问权限，并通过共享链接或将控制面板嵌入公共应用程序、wiki 或门户来与他们共享这些控制面板。

# 向互联网上的任何人授予对控制面板的访问权限
<a name="share-a-dashboard-grant-access-anyone-access"></a>

**向互联网上的任何人授予对控制面板的访问权限**

1. 在 Quick 中，打开要共享的已发布仪表板。您必须是控制面板的所有者或共有者。

1. 在已发布的控制面板中，选择右上角的**共享**图标，然后选择**共享控制面板**。

1. 在打开的**共享控制面板**页面中，从左下角的**启用访问权限**部分中选择**互联网上的任何人（公开）**。

   此设置允许您通过链接或嵌入方式与互联网上的任何人共享控制面板。打开此开关还会自动打开 “**此账户中的所有人**” 选项，这意味着控制面板将与您的 Quick 账户中的任何人共享。如果不想出现这种情况，请关闭此选项。

1. 在出现的**允许公有访问权限**弹出窗口中，在方框中输入 `confirm` 确认自己的选择，然后选择**确认**。

**确认控制面板的访问设置后，Amazon Quick 控制台中控制面板的右上角会出现一个橙色的 PUBLIC 标签。**此外，眼睛图标会显示在 Quick Sight 仪表板页面的仪表板上，包括平铺视图和列表视图。

请注意，开启公有访问权限后，只能使用链接访问控制面板，或者使用嵌入代码嵌入后才能访问。有关共享指向控制面板链接的更多信息，请参阅 [共享共享控制面板的链接](share-a-dashboard-share-link.md)。有关为互联网上的任何人嵌入控制面板的更多信息，请参阅 [使用一键嵌入代码为匿名用户嵌入 Amazon Quick Sight 视觉效果和控制面板](embedded-analytics-1-click-public.md)。

# 更新公开共享的控制面板
<a name="share-a-dashboard-grant-access-anyone-update"></a>

要更新互联网上的任何人都可以访问的共享控制面板，请按照以下过程操作。

**要更新公共控制面板：**

1. 在 Amazon 快速入门页面中，选择与您要更新的控制面板相关的分析，然后进行所需的更改。您必须是分析的所有者或共有者。

1. 在分析中，选择**发布**。

1. 在出现的弹出窗口中选择**替换现有控制面板**，然后选择要更新的公共控制面板。

1. 要确认自己的选择，请输入 `confirm`，然后选择**发布控制面板**。

   选择**发布控制面板**后，您的公共控制面板将根据新的更改进行相应更新。

# 关闭公开共享设置
<a name="share-a-dashboard-grant-access-anyone-no-share"></a>

您可以随时关闭控制面板的公开共享设置。您可以关闭个人控制面板或账户中所有控制面板的公开共享设置。视觉对象共享设置在控制面板级别确定。如果关闭包含要嵌入的视觉对象的控制面板的公开共享设置，用户将无法访问该视觉对象。

下表介绍了控制面板公开可用的不同场景。


| 账户级别的公开设置 | 控制面板级别的公开设置 | 公有访问权限 | 视觉对象指示符 | 
| --- | --- | --- | --- | 
|  关  |  关  |  关  |  无  | 
|  开  |  关  |  关  |  无  | 
|  开  |  开  |  是  |  控制面板上会出现一个橙色徽章，**控制面板**页面的控制面板上会出现一个眼睛图标。  | 
|  关  |  开  |  否  |  控制面板上会出现一个灰色徽章，**控制面板**页面的控制面板上会出现一个带斜杠的眼睛图标。撤销控制面板的公有访问权限最长可能需要两分钟。  | 

**关闭单个控制面板的公开共享设置**

1. 在 Amazon Quick 中，打开您不想再共享的已发布控制面板。您必须是控制面板的所有者或共有者。

1. 在已发布的控制面板中，选择右上角的**共享**图标，然后选择**共享控制面板**。

1. 在打开的**共享控制面板**页面中，从左下角的**启用访问权限**部分中关闭**互联网上的任何人（公开）**开关。

   此操作将移除对控制面板的公有访问权限。现在，只有与之共享的用户才能进行访问。

**关闭 Quick 用户帐户中所有仪表板的公共共享设置**

1. 在 Amazon 快速入门页面中，选择浏览器窗口右上角的用户图标，然后选择**快速管理**。

1. 在打开的页面中，向下滚动到 “**权限**” 部分。

1. 选择左侧**的仪表板公共访问权限**。

1. 在打开的页面上，关闭**互联网上的任何人**开关。

   在从**公开共享**菜单中禁用公开共享设置时，将出现一个弹出窗口，要求您确认自己的选择。选择**我已阅读并确认此更改**，然后选择**确认**来确认您的选择。

   此操作将移除您账户中对每个控制面板的公有访问权限。对互联网上的任何人都可见的控制面板现在只能由与之共享每个控制面板的用户访问。开启了公开设置的个人控制面板会出现灰色徽章，**控制面板**页面上显示的眼睛图标会带划线，表示账户级别的公开设置已禁用，并且无法查看控制面板。撤销控制面板的公有访问权限最长可能需要两分钟。

如果您的会话容量定价订阅已过期，系统会自动删除您账户中的公开共享设置。续订您的订阅以恢复对公开共享设置的访问权限。

# 使用 Quick Sight API 授予您 Amazon Quick 账户中的所有人访问控制面板的权限
<a name="share-a-dashboard-grant-access-everyone-api"></a>


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

或者，您可以使用该`UpdateDashboardPermissions`操作通过 Quick Sight API 向账户中的所有人授予访问控制面板的权限。

以下示例 API 请求说明了如何使用 AWS CLI 命令执行此操作。其会授予账户中控制面板的链接权限，并允许执行以下操作：`DescribeDashboard`、`QueryDashboard` 和 `ListDashboard`。

```
aws quicksight update-dashboard-permissions \
--aws-account-id account-id \
--region aws-directory-region \
--dashboard-id dashboard-id \
--grant-link-permissions 
	Principal="arn:aws:quicksight:aws-directory-region:account-id:namespace/default",
	Actions="quicksight:DescribeDashboard, quicksight:QueryDashboard, 
	quicksight:ListDashboardVersions"
```

对上述请求的响应与以下内容类似。

```
{
		"Status": 200,
		"DashboardArn": "arn:aws:quicksight:AWSDIRECTORYREGION:ACCOUNTID:dashboard/
		DASHBOARDID",
		"DashboardId": "DASHBOARDID",
		"LinkSharingConfiguration": {
			"Permissions": [
				{
					"Actions": [
						"quicksight:DescribeDashboard",
						"quicksight:ListDashboardVersions",
						"quicksight:QueryDashboard"
					],
					"Principal": "arn:aws:quicksight:AWSDIRECTORYREGION:ACCOUNTID:namespace/default"
				}
			]
		},
		"Permissions": [
			// other dashboard permissions here
		],
		"RequestId": "REQUESTID"
	}
```

您还可以使用相同的 API 操作来阻止账户中的所有用户访问控制面板。以下示例请求说明了如何使用 CLI 命令来阻止访问。

```
aws quicksight update-dashboard-permissions \
--aws-account-id account-id \
--region aws-directory-region \
--dashboard-id dashboard-id \
--revoke-link-permissions 
	Principal="arn:aws:quicksight:aws-directory-region:account-id:namespace/default",
	Actions="quicksight:DescribeDashboard, quicksight:QueryDashboard, 
	quicksight:ListDashboardVersions"
```

有关更多信息，请参阅 *Amazon Quick API 参考[UpdateDashboardPermissions](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateDashboardPermissions.html)*中的。

当 Quick 用户账户中的所有用户都被授予控制面板访问权限时，以下代码段将作为`eventName``UpdateDashboardAccess`、和的一部分添加到 AWS CloudTrail 日志中。`eventCategory` `Management`

```
"linkPermissionPolicies": 
	[
		{
			"principal": "arn:aws:quicksight:AWSDIRECTORYREGION:ACCOUNTID:
							namespace/default",
			"actions": 
			[
				"quicksight:DescribeDashboard",
				"quicksight:ListDashboardVersions",
				"quicksight:QueryDashboard"
			]
		}
	]
```

# 允许互联网上的任何人使用 Quick Sight API 访问 Amazon Quick Sight 控制面板
<a name="share-a-dashboard-grant-access-anyone-api"></a>

或者，您可以使用该`UpdateDashboardPermissions`操作，通过 Amazon Quick Sight API 向互联网上的任何人授予访问控制面板的权限。

开始之前，请确保授予账户中的所有人对控制面板的访问权限。有关更多信息，请参阅 [使用 Quick Sight API 授予您 Amazon Quick 账户中的所有人访问控制面板的权限](share-a-dashboard-grant-access-everyone-api.md)。

以下 API 请求示例，说明如何使用 AWS CLI 命令向互联网上的任何人授予访问控制面板的权限。其会授予账户中控制面板的链接权限，并允许执行以下操作：`DescribeDashboard`、`QueryDashboard` 和 `ListDashboardVersions`。

```
aws quicksight update-dashboard-permissions 
--aws-account-id account-id 
--region aws-directory-region
--dashboard-id dashboard-id
--grant-link-permissions 
Principal="arn:aws:quicksight:::publicAnonymousUser/*",
Actions="quicksight:DescribeDashboard, quicksight:QueryDashboard, 
quicksight:ListDashboardVersions"
```

对上述请求的响应与以下内容类似。

```
{
    "Status": 200,
    "DashboardArn": "arn:aws:quicksight:AWSDIRECTORYREGION:ACCOUNTID:dashboard/
    DASHBOARDID",
    "DashboardId": "DASHBOARDID",
    "LinkSharingConfiguration": {
        "Permissions": [
            {
                "Actions": [
                    "quicksight:DescribeDashboard",
                    "quicksight:ListDashboardVersions",
                    "quicksight:QueryDashboard"
                ],
                "Principal": "arn:aws:quicksight:AWSDIRECTORYREGION:ACCOUNTID:namespace/default"
            },
                "Principal": "arn:aws:quicksight:::publicAnonymousUser/*",
                "Actions": [
                    "quicksight:DescribeDashboard",
                    "quicksight:ListDashboardVersions",
                    "quicksight:QueryDashboard"
                ]
            }
        ]
    },
    "Permissions": [
        // other dashboard permissions here
    ],
    "RequestId": "REQUESTID"
}
```

您还可以使用相同的 API 操作来阻止互联网上的任何人访问控制面板。以下示例请求说明了如何使用 CLI 命令来阻止访问。

```
aws quicksight update-dashboard-permissions \
--aws-account-id account-id \
--region aws-directory-region \
--dashboard-id dashboard-id \
--revoke-link-permissions 
Principal="arn:aws:quicksight:::publicAnonymousUser/*",
Actions="quicksight:DescribeDashboard, quicksight:QueryDashboard, 
quicksight:ListDashboardVersions"
```

有关更多信息，请参阅 *Amazon Quick API 参考[UpdateDashboardPermissions](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateDashboardPermissions.html)*中的。

当互联网上的任何人被授予访问控制面板的权限时，以下代码段将作为`eventName``UpdateDashboardAccess`、和的一部分添加到 AWS CloudTrail 日志中。`eventCategory` `Management`

```
"linkPermissionPolicies": 
	[
		{
			"principal": "arn:aws:quicksight:::publicAnonymousUser/*",
			"actions": 
			[
				"quicksight:DescribeDashboard",
				"quicksight:ListDashboardVersions",
				"quicksight:QueryDashboard"
			]
		}
	]
```

# 共享共享控制面板的链接
<a name="share-a-dashboard-share-link"></a>

授予用户对控制面板的访问权限后，您可以复制指向该控制面板的链接并将其发送给这些用户。任何有权访问控制面板的人都可以访问该链接并查看控制面板。

**向用户发送指向控制面板的链接**

1. 打开已发布的控制面板，选择右上角的**共享**。再选择**共享控制面板**。

1. 在打开的**共享控制面板**页面中，选择左上角的**复制链接**。

   指向控制面板的链接将复制到剪贴板。类似于以下内容：

   `https://quicksight.aws.amazon.com/sn/accounts/accountid/dashboards/dashboardid?directory_alias=account_directory_alias`

   有权访问此控制面板的用户和群组（或您的 Quick 账户中的所有用户）可以使用链接访问该控制面板。如果他们是第一次访问 Quick，系统会要求他们使用电子邮件地址或账户的 Quick 用户名和密码登录。登录后，他们会有权访问该控制面板。

# 查看有权访问共享控制面板的人
<a name="view-users-dashboard"></a>

可以使用以下过程查看哪些用户或组可以访问控制面板。

1. 打开已发布的控制面板，选择右上角的**共享**。再选择**共享控制面板**。

1. 在打开的**共享控制面板**页面中，在**管理权限**下查看用户和组及其角色和设置。

   您可以通过在右上角的搜索框中输入特定用户或组的名称或其名称的任何部分来搜索查找该用户或组。搜索区分大小写，并且不支持通配符。删除搜索词将视图返回给所有用户。

# 撤消对共享控制面板的访问权限
<a name="revoke-access-to-a-dashboard"></a>

可以使用以下过程撤销用户对控制面板的访问权限。

**撤销对控制面板的用户访问权限**

1. 打开控制面板，选择右上角的**共享**。再选择**共享控制面板**。

1. 在打开的**共享控制面板**页面中，在**管理权限**下找到要删除的用户，然后选择最右边的删除图标。

# 在仪表板视觉对象中使用快速操作连接器
<a name="action-connectors-in-dashboard-visuals"></a>

## 先决条件
<a name="action-connectors-in-dashboards-prerequisites"></a>

在开始之前，请确保[至少创建一个操作连接器](builtin-services-integration.md)。

连接器必须满足以下要求：
+ 使用**用户身份验证**方法
+ 使用以下集成之一：
  + Atlassian 吉拉云
  + Microsoft Outlook
  + Microsoft Teams
  + Salesforce
  + ServiceNow
  + Slack

## 在仪表板上启用快速操作以使用操作连接器
<a name="enable-quick-actions-on-dashboards"></a>

**在仪表板上启用快速操作以使用操作连接器**

1. 如果存在仪表板，请转到仪表板的源分析。否则，[请创建新的分析](quickstart-createanalysis.md)。

1. 选择**发布**。

1. 在 “**新建控制面板**” 或 “**替换现有面板”** 之间进行选择

1. 选中 “**仪表板选项**” 下的 “**启用快速操作**” 复选框。

1. 选择 **Publish dashboard（发布控制面板）**。

## 在视觉对象上使用操作连接器
<a name="use-action-connectors-on-visuals"></a>

**在视觉对象上使用操作连接器**

1. 在**启用快速操作**发布选项的情况下打开仪表板。

1. 将鼠标悬停在视觉对象上。

1. 选择闪电螺栓图标。

1. 将出现一个菜单，其中包含所有支持的操作连接器和操作的列表。

1. 从列表中选择所需的操作。

1. 如果您之前未使用过连接器，或者您之前的登录凭证已过期，则会出现身份验证模式。使用适合您组织的凭据登录。

1. 右侧窗格中将出现一个 “**操作**” 表单。

1. 输入操作中需要包含的所有信息。

1. 某些字段允许包含自动填充值。选择 “**自动填充**” 以打开菜单。选择您需要的值，它们将被添加到您输入的文本中。
   + **今天的日期**：注入今天的日期
   + **视觉名称**：注入视觉名称
   + **全部**：注入上述两个

1. 某些操作支持添加附件的功能。您可以选择通过选中 “视觉图像” 复选框来附加带有这些操作的**视觉对象的图像**。

1. 选择表单底部的操作按钮以调用该操作。

## 安全和自定义
<a name="dashboard-security-and-customizations"></a>

**自定义 Permissions/Capability 定制**
+ **操作**功能：如果您的用户或角色被限制使用操作权能的权限，则无法查看或使用操作

要了解有关自定义权限的更多信息，请参阅[在 Amazon Quick 中创建自定义权限配置文件](create-custom-permissions-profile.md)。

**行级安全 (RLS) /列级安全 (CLS)**
+ 对于基于使用 RLS 或 CLS 的数据集的视觉对象，您无法查看或使用操作。

要了解有关 RLS 的更多信息，请参阅[在 Amazon Quick 中使用行级安全](row-level-security.md)。

要了解有关 CLS 的更多信息，请参阅[使用列级安全性来限制对数据集的访问。](row-level-security.md)

**仪表板发布选项**
+ 启用快速操作
  + 在禁用 “**启用快速操作” 发布选项的情况下发布的仪表板的任何视觉效果都无法查看或使用操作**。

要了解有关仪表板发布选项的更多信息，请参阅[发布仪表板](creating-a-dashboard.md)。

## 限制
<a name="action-connectors-on-dashboard-limitations"></a>

**视觉图像附件支持**

以下视觉类型不支持图像附件：
+ 高位图表（使用 HTML 时）
+ ML Insights（使用 HTML 时）
+ 文本框和见解（使用 HTML 时）
+ 自定义内容

**注意**  
对于这些视觉效果，“**视觉图像**” 复选框不会出现在用户界面上。

# 分享你对 Amazon Quick Sight 控制面板的看法
<a name="share-dashboard-view"></a>

在与已发布的控制面板交互时，您可以选择共享指向该控制面板的唯一链接，其中仅包含您所作的更改。例如，如果您筛选控制面板中的数据，则可以与有权查看该控制面板的其他人共享您所看到的内容。如此，他们就可以看到您所看到的内容，而无需创建新的控制面板。

当其他人使用您发送给他们的链接访问您的控制面板视图时，他们看到的控制面板与创建链接时完全相同。他们会看到您更改的任何参数、筛选条件或控件。

**共享您的控制面板视图**

1. 打开已发布的控制面板，再根据需要进行任何更改。

1. 选择右上角的**共享**，然后选择**共享此视图**。

1. 在打开的**使用链接共享**页面上，选择**复制链接**。

1. 将链接粘贴到电子邮件或 IM 消息中，以便与他人共享。

   只有有权在 Quick Sight 中查看仪表板的人员才能访问该链接。

# 通过电子邮件安排和发送 Quick Sight 报告
<a name="sending-reports"></a>

**重要**  
欧洲（西班牙）（eu-south-2）地区的Amazon Quick Sight使用欧洲（爱尔兰）（eu-west-1）的内部电子邮件服务（Amazon SES）向Quick Sight用户发送电子邮件。计划报告、警报和其他功能中包含的客户数据在送达 Quick Sight 用户之前通过电子邮件从欧洲（西班牙）传递到欧洲（爱尔兰）。  
作为一项隐私保护措施，以下通过电子邮件发送客户数据的功能已默认受到限制或禁用。  
计划报告电子邮件中的文件附件和工作表预览。[下载链接选项](https://docs.aws.amazon.com/quicksuite/latest/userguide/email-reports-from-dashboard)是默认选项。
使用阈值警报的电子邮件。
异常检测警报。
有关 AWS 隐私功能的更多信息，请参阅[AWS 服务的隐私功能](https://aws.amazon.com/compliance/privacy-features/)。

在企业版中，您可以一次性或按计划（每天、每周、每月或每年）以报告形式发送控制面板。您可以通过电子邮件将报告发送给共享您的 Amazon Quick 订阅的用户或群组。要接收电子邮件报告，用户或组成员必须满足以下条件：
+ 它们是您的 Quick 订阅的一部分。
+ 您已与他们共享控制面板。
+ Amazon Quick Sight 无法向超过 5,000 名会员发送定期电子邮件。

Amazon Quick Sight 根据每个用户或群组的数据权限生成自定义电子邮件快照，这些权限在控制面板中定义。电子邮件报告的行级别安全性（RLS）、列级别安全性（CLS）和动态默认参数适用于定期电子邮件和临时（一次性）电子邮件。

Quick 作者可以使用 Quick 控制台中的 “**立即报告**” 按钮或 [https://docs.aws.amazon.com//quicksight/latest/APIReference/API_StartDashboardSnapshotJobSchedule.html](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_StartDashboardSnapshotJobSchedule.html)API 运行计划的报告。

在控制面板具有可用的电子邮件报告时，作为读者的订阅者将会在该控制面板上看到一个 **Reports (报告)** 选项。他们可以使用**计划**菜单来订阅或取消订阅电子邮件。有关更多信息，请参阅 [在 Amazon Quick Sight 中订阅电子邮件报告](subscribing-to-reports.md)。

您最多可以为每个控制面板创建 5 个计划。

Quick Sight 仪表板查看者还可以通过 Quick Sight 仪表板为自己安排报告。有关读者生成的报告的更多信息，请参阅[在 Amazon Quick Sight 中创建读者生成的报告](reader-scheduling.md)。

使用以下主题了解有关电子邮件报告设置和报告计费的更多信息。

**Topics**
+ [为 Quick Sight 仪表板配置电子邮件报告设置](email-reports-from-dashboard.md)
+ [电子邮件报告如何计费](sending-reports-billing-info.md)

# 为 Quick Sight 仪表板配置电子邮件报告设置
<a name="email-reports-from-dashboard"></a>


|  | 
| --- |
|  适用于：企业版  | 

在 Amazon Quick Enterprise 版中，您可以通过电子邮件从控制面板中的任何工作表发送报告。您可以从交互式仪表板和像素完美报告表发送报告。计划包含邮件发送时间、所含内容以及收件人的设置。您可以查看示例报告和报告中使用的数据集列表。要设置或更改从控制面板发送的计划，请确保您是控制面板的所有者或共有者。

如果您有权访问控制面板，则可以通过打开控制面板视图来更改订阅选项。有关其工作方式的更多信息，请参阅 [在 Amazon Quick Sight 中订阅电子邮件报告](subscribing-to-reports.md)。

可用于电子邮件报告的计划选项如下：
+ **一次（不重复）**– 仅在您选择的日期和时间发送一次报告。
+ **每天** – 在您选择的时间每天重复发送。
+ **每周** – 每周的同一天或几天在您选择的时间重复发送。您也可以使用此选项以每周为间隔发送报告，例如每隔一周或每三周。
+ **每月** – 每月的同一天在您选择的时间重复发送。您也可以使用此选项在每月的特定日期发送报告，例如每个月的第二个星期三或最后一个星期五。
+ **每年** – 每年选定的一个或多个月份的同一天，在您选择的时间重复发送。您也可以使用此选项在特定日期或选定月份中的几组日期发送报告。例如，您可以将报告配置为在每年 1 月、3 月和 9 月的第一个星期一、7 月 14 日或每年 2 月、4 月和 6 月的第二天发送。
+ **自定义** – 配置您的计划报告来契合自己的业务需求。

您可以自定义报告的标题、可选的电子邮件主题和正文。

虽然您可以对报告进行配置，让有权访问的每个人都能收到一份副本，但这通常不是最佳计划。我们建议限制自动发送的电子邮件，尤其是发送给用户组的电子邮件。您可以从访问列表中选择特定人员，先从少量订阅用户入手。在为任何人订阅之前，请先验证贵公司的策略。

您可以通过以下方式直接向报告订阅中添加人员：
+ （推荐）从提供的访问列表中选择收件人，以指定和维护要通过电子邮件向其发送报告的人员列表。您可以使用搜索框按电子邮件地址或组名称查找人员。
+ 要向控制面板的所有订阅用户发送报告，请在出现提示时选择**向有权访问控制面板的所有用户发送电子邮件报告**。

其他想要接收电子邮件的任何人都可以打开控制面板，将自己的订阅选项设置为“选择加入”或“选择退出”。

**重要**  
当您与新的 Quick 用户名或群组共享仪表板时，他们会自动开始接收电子邮件报告。如果不希望出现这种情况，您需要在每次向控制面板添加人员时编辑报告设置。

对于现有的电子邮件日程安排，您可以在更改时在 Amazon Quick Sight 中暂停日程安排。在**计划**窗格中，您可以使用每个报告下方显示的切换开关来暂停或恢复计划的报告。暂停报告不会从 Quick Sight 中删除该报告的日程安排。

请注意，如果报告包含自定义视觉对象，即使您可以访问来自私有网络的图像，也不能将其包含在电子邮件报告中。如果想要包含图像，请使用公开可用的图像。

在开始之前，请确保您使用的是 Amazon Quick Enterprise 版，并且已与目标收件人共享控制面板。

**创建或更改电子邮件报告**

1. 打开 “快速”，然后在左侧的导航窗格上选择 “**仪表板**”。

1. 打开控制面板以配置其电子邮件报告。

1. 在右上角选择**计划**，然后选择**计划**。

1. 选择**添加计划**。

1. 在出现的**新计划**窗格中输入计划名称。也可以选择给新计划添加描述。

1. 在**内容**选项卡中，切换 **PDF**、**CSV** 或 **Excel** 开关以选择报告格式。像素完美报告目前支持 CSV 和 Excel 格式。

1. 在**内容**选项卡的**工作表**下拉菜单中，选择要为其安排报告的工作表。

   如果选择 **CSV** 或 **Excel**，请从控制面板的任何工作表中选择要包含在报告中的表格或数据透视表视觉对象。您最多可以为每个计划选择 5 个视觉对象。

   如果选择 **Excel**，则会生成一个 Excel 工作簿作为最终输出。

1. 在**日期**选项卡中，从**重复**下拉菜单中选择报告的频率。如果不确定，请选择**发送一次（不重复）**。

1. 对于**开始日期**，选择想要发送第一份报告的开始日期和运行时系统。

1. 对于**时区**，请从下拉菜单中选择时区。

1. 在**电子邮件**选项卡中，为**电子邮件主题行**输入自定义主题行，或将其留空以使用报告标题。

1. 输入您要接收报告的用户或群组的 “快捷群组” 名称的电子邮件地址。您也可以选择**发送给具有访问权限的所有用户**方框，将报告发送给您账户中有权访问控制面板的所有人。

1. 对于**电子邮件标头**，请输入您希望电子邮件报告显示的标头。

1. （可选）对于**电子邮件正文**，请将其留空或输入要显示在电子邮件开头的自定义消息。

1. （可选）对于 PDF 附件，您可以选择**在电子邮件正文中包含工作表**，以便在电子邮件正文中显示 PDF 快照的第一页。

1. 选择您希望报告使用的附件方法。可用选项如下：
   + **文件附件** – 将快照的附件上传到电子邮件中。电子邮件大小不能超过 10MB。此限制包括所有附件。
   + **下载链接** – 向电子邮件正文添加链接，用户可以访问该链接来下载快照报告。当用户选择下载链接时，系统会提示他们在报告开始下载之前进行登录。该链接将在报告发送一年后过期。

1. （可选，推荐）要在保存更改之前发送报告示例，请选择**发送测试报告**。此选项显示在控制面板所有者的用户名旁边。

1. 请执行以下操作之一：
   + （推荐）选择**保存**确认自己的输入。
   + 要立即发送报告，请选择**保存并立即运行**。即使您计划的开始日期是将来的日期，报告也会立即发送。

# 电子邮件报告如何计费
<a name="sending-reports-billing-info"></a>

作者和管理员可以接收任意数量的电子邮件报告，而无需支付额外的费用。

对于读者（具有读者角色的用户），它对每个报告的一个会话收费，最多为每月的最大费用。在收到电子邮件报告后，读者获得会话积分以在同一个月内访问控制面板，而无需支付额外的费用。读者会话积分不会累积到下一个计费月份。

对于读者，电子邮件报告和交互式会话费用最多累计到每月的最大费用。对于达到每月的最大费用的读者，不会进一步收费，并且他们可以接收所需数量的额外电子邮件报告。

# 在 Amazon Quick Sight 中订阅电子邮件报告
<a name="subscribing-to-reports"></a>

在企业版中，Amazon Quick 作者可以在报告表单中设置对控制面板的订阅。有关更多信息，请参阅 [通过电子邮件安排和发送 Quick Sight 报告](sending-reports.md)。然后，快速读者和作者可以订阅仪表板并调整其报告设置。有关以读者身份订阅控制面板的更多信息，请参阅 [订阅 Amazon Quick Sight 控制面板电子邮件和提醒](subscriber-alerts.md)。

可以使用以下过程更改特定控制面板的订阅和报告设置。

1. 首先，打开与您共享的控制面板或者您拥有或共有的控制面板。

1. 选择右上角的 **Reports (报告)** 图标。

1. 将显示 **Change report preferences (更改报告首选项)** 屏幕。此屏幕显示当前报告计划以及订阅和优化选项。

   对于 **Subscription (订阅)**，选择 **Subscribe (订阅)** 以开始接收报告，或者选择 **Unsubscribe (取消订阅)** 以停止接收报告。

   在 **Optimize (优化)** 下面，选择您希望在其中查看报告的设备。
   + 如果您通常使用移动设备，或者您希望查看纵向格式的报告，请选择 **Viewing on a mobile device (在移动设备上查看)**。在您收到报告时，将在单个垂直列中显示视觉对象。
   + 如果您通常使用桌面，或者您希望查看横向格式的报告，请选择 **Viewing on a desktop (在桌面上查看)**。在您收到报告时，将使用在桌面上的控制面板中显示的相同布局显示视觉对象。

1. 选择 **Update (更新)** 以确认您的选择，或选择 **Cancel(取消)** 以放弃更改。

# 在 Amazon Quick Sight 中处理阈值警报
<a name="threshold-alerts"></a>


|  | 
| --- |
|  适用于：企业版  | 

要随时了解数据的重要变化，您可以使用 Amazon Quick Sight 控制面板中的 KPI、Gauge、表格和数据透视表视觉效果创建阈值提醒。您可以利用这些警报为数据设置阈值，并在数据超过阈值时通过电子邮件收到通知。您还可以随时在支持 Quick Sight 的 Web 浏览器中查看和管理警报。

例如，假设您是一家大型组织的客户成功经理，您想知道支持队列中的工单数量何时会超过特定数量。还假设您有一个控制面板，其中包含 KPI、仪表盘、表格或数据透视表视觉对象，可以追踪该队列中的工单数量。在这种情况下，您可以创建警报，在工单数量超过指定阈值时通过电子邮件收到通知。这样，您就可以在收到通知后立即采取行动。

您可以为单个视觉对象创建多个警报。如果视觉对象在您创建警报后被作者更新或删除，您的警报设置并不会更改。创建警报时，警报会采用当时应用于视觉对象的所有筛选条件。如果您或作者更改了筛选条件，则现有警报不会更改。不过，如果您创建了新警报，则新警报将采用新的筛选条件设置。

例如，假设您有一个带筛选条件控件的控制面板，可用于将控制面板中每个视觉对象的数据从一个美国城市切换到另一个城市。控制面板上有一个显示平均航班延误情况的 KPI 视觉对象，并且您对从美国华盛顿州西雅图起飞的航班延误情况感兴趣。您将筛选条件控件更改为西雅图，并在视觉对象上设置警报。此警报将追踪从西雅图起飞的航班延误情况。假设明天还想追踪从俄勒冈州波特兰起飞的航班延误情况，因此您将筛选条件控件更改为波特兰并创建另一个警报。这个新警报将追踪从波特兰起飞的航班延误情况。您现在有两个警报，西雅图上有一个，波特兰有一个，且独立运行。

阈值警报不适用于 `eu-central-2` 欧洲（苏黎世）区域。

有关 KPI、计量表、表格或数据透视表视觉对象的更多信息，请参阅[Amazon Quick Sight 中的视觉类型](working-with-visual-types.md)。

**注意**  
您无法在嵌入式仪表板或 Quick 移动应用程序中为视觉对象创建提醒。  
对于表视觉对象，无法为位于 `Group by` 字段井中的值创建阈值警报。只能为位于 `Value` 字段井中的值创建警报。  
不使用日期时间字段作为趋势的 KPI 视觉对象不支持警报。例如，显示航空公司 X 和 Y 之间航班差异的 KPI，而不是显示日期 A 和 B 之间航班差异的 KPI。

使用以下部分在 Quick Sight 中为 KPI、仪表、表格和数据透视表视觉对象创建和配置阈值警报。

**Topics**
+ [警报权限](threshold-alerts-permissions.md)
+ [创建警报](threshold-alerts-creating.md)
+ [管理阈值警报](threshold-alerts-managing.md)
+ [调查警报失败原因](threshold-alerts-failures.md)
+ [警报计划](threshold-alerts-scheduling.md)
+ [在阈值警报中使用快速操作连接器](action-connectors-in-threshold-alerts.md)

# 警报权限
<a name="threshold-alerts-permissions"></a>

如果您是管理员，则可以通过创建自定义权限策略来控制组织中谁可以在 Quick Sight 中设置阈值警报。要在 Quick 中设置自定义权限，请在任何 Quick 页面的右上角选择您的用户名，选择 M **anage Quick**，然后选择**自定义**权限。

# 创建警报
<a name="threshold-alerts-creating"></a>

要在控制面板中创建 KPI 或仪表盘视觉对象的阈值，请按照以下过程操作。

**创建警报**

1. 打开 Quick 并导航到所需的仪表板。

   有关在 Quick 中以仪表板订阅者身份查看仪表板的更多信息，请参阅[与 Amazon 快速浏览仪表板互动](exploring-dashboards.md)。

1. 在控制面板中选择要为其创建警报的视觉对象，打开右上角的菜单，然后选择**创建警报**。

1. 在视觉对象右上角的菜单中，选择**创建警报**图标。

   您也可以在右上角蓝色工具栏中选择警报图标。然后，在打开的**创建警报**页面中选择要为其创建警报的 KPI、仪表盘、表格或数据透视表视觉对象，然后选择**下一步**。

   您还可以通过选择单元格并选择**创建警报**，在表格或数据透视表视觉对象上创建警报。您只能为单个单元格创建警报，无法为整列或使用自定义聚合的值创建警报。有关自定义集成的更多信息，请参阅 [聚合函数](calculated-field-aggregations.md)。

1. 在右侧打开的**创建警报**页面上，执行以下操作：

   1. 对于**名称**，请输入警报的名称。

      默认情况下，警报名称使用视觉对象名称。如果需要，您可以更改名称。

   1. 对于**要追踪的值**，请选择要设为阈值的值。显示的信息会有所不同，具体视您要为其创建警报的视觉对象类型而定。

      此选项可用的值基于控制面板作者在视觉对象中设置的值。例如，假设您有一个 KPI 视觉对象，可显示两个日期之间的百分比差异。鉴于此，您会看到两个警报值选项：百分比差异和实际值。

      如果视觉对象中只有一个值，则无法更改此选项。该值即为当前值并显示在此处，以便您在选择阈值时可以将其用作参考。例如，如果您要设置平均成本警报，则此值将显示当前的平均成本是多少（比如 5 美元）。有了这个参考值，您可以在设置阈值的同时做出更明智的决策。

   1. 对于**条件**，请为阈值选择一个条件。

      您可以选择以下条件。
      + **高于** – 设置一条规则，当警报值超过您设置的阈值时，会触发警报。
      + **低于** – 设置一条规则，当警报值低于您设置的阈值时，会触发警报。
      + **等于** – 设置一条规则，当警报值等于您设置的阈值时，会触发警报。

   1. 对于**阈值**，请输入一个值以提示警报。

   1. 对于**通知首选项**，选择您希望在超出所设置的阈值时收到通知的频率。

      可从以下选项中进行选择。
      + **尽量频繁** – 只要超出阈值，此选项就会向您发出警报。如果选择此选项，每天可能会多次收到警报。
      + **每天最多一次** – 当超出阈值时，此选项每天会向您发出一次警报。
      + **每周最多一次** – 当超出阈值时，此选项每周会向您发出一次警报。

   1. （可选）选择**没有数据时给我发送电子邮件** – 选择此选项后，当没有数据可供检查警报规则时，您会收到通知。

   1. 选择**保存**。

      右上角会出现一条消息，指明警报已保存。如果您的数据超过了您设置的阈值，则会通过与您的 Quick 账户关联的地址通过电子邮件收到通知。

# 管理阈值警报
<a name="threshold-alerts-managing"></a>

您可以编辑现有警报，将其开启或关闭，或者查看触发警报的历史记录。请按照以下过程执行该操作。

**编辑现有警报**

1. 打开 “快速”，选择 “**控制面板**”，然后导航到要为其编辑警报的仪表板。

1. 在“控制面板”页面上，选择右上角的**警报**。

1. 在打开的**管理警报**页面上，找到想要编辑的警报，然后选择警报名称下方的**编辑**。

   您可以编辑警报名称、条件和阈值。

1. 选择**保存**。

**查看触发警报的历史记录**

1. 打开 “快速”，选择 “**控制面板**”，然后导航到要查看其警报历史记录的仪表板。

1. 在“控制面板”页面上，选择右上角的**警报**。

1. 在打开的**管理警报**页面上，找到要查看其历史记录的警报，然后选择警报名称下方的**历史记录**。

**开启或关闭现有警报**

1. 打开 “快速”，选择 “**仪表板**”，然后导航到要为其开启或关闭提醒的仪表板。

1. 在“控制面板”页面上，选择右上角的**警报**。

1. 在打开的**管理警报**页面上，找到要开启或关闭的警报，然后按警报名称选择或清除切换开关。

   当切换开关为蓝色时，警报会开启；当切换开关为灰色时，警报会关闭。

**删除现有警报**

1. 打开 “快速”，选择 “**控制面板**”，然后导航到要从中删除警报的仪表板。

1. 在“控制面板”页面上，选择右上角的**警报**。

1. 在打开的**管理警报**页面上，找到要开启或关闭的警报，选择警报旁边的三个点菜单，然后从下拉菜单中选择**删除**。

# 调查警报失败原因
<a name="threshold-alerts-failures"></a>

当警报失败时，Quick 会向您发送有关失败的电子邮件通知。警报失败的原因有多种，包括以下原因：
+ 警报使用的数据集已删除。
+ 警报的所有者失去了对数据集或数据集中某些行或列的权限。
+ 警报的所有者失去对控制面板的访问权限。
+ 警报所追踪的数据没有数据。

发生故障时，Quick 会向您发送通知，如果故障原因不太可能得到解决，则会禁用该警报。例如，因失去对控制面板的访权限或者控制面板被删除而导致警报失败。否则，Quick 会再次尝试检查您的数据是否违反了阈值。四次失败后，Quick 会关闭警报并通知您警报已关闭。如果可以再次检查警报，Quick 会向您发送通知。

要调查警报失败原因，请检查您是否仍然可以访问控制面板。还要检查您是否有权访问正确的数据集以及数据集中正确的行和列。如果您失去访问权或权限，请联系控制面板所有者。如果您拥有必要的访问权和权限，则可能需要编辑警报，避免将来警报失败。

# 警报计划
<a name="threshold-alerts-scheduling"></a>

创建警报时，Quick 会根据数据集的计划刷新时间，根据您设置的阈值检查您的数据是否存在任何违规行为。警报中显示的信息会有所不同，具体视您要为其创建警报的视觉对象类型而定。对于 SPICE 数据集，将在成功刷新 SPICE 数据集后检查警报规则。对于直接查询数据集，默认情况下，会在下午 6:00 至上午 8:00 之间随机检查 AWS 区域 包含数据集的警报规则。

如果您是数据集所有者，则可以在数据集设置中设定警报评估计划。要了解操作方法，请参阅以下过程。

**设置数据集的警报评估计划**

1. 在 Quick 中，选择左侧导航栏中的**数据**。

1. 选择要为其安排警报评估的数据集。

1. 选择**设置警报计划**。

1. 在打开的**设置警报计划**页面中，执行以下操作。
   + 对于**时区**，请选择时区。
   + 对于**重复**，请选择您希望对数据进行评估的频率。
   + 对于**开始**，请输入您希望警报评估开始的时间。

# 在阈值警报中使用快速操作连接器
<a name="action-connectors-in-threshold-alerts"></a>

## 先决条件
<a name="action-connectors-in-threshold-alerts-prerequisites"></a>

在开始之前，请确保[至少创建一个操作连接器](builtin-services-integration.md)。

连接器必须满足以下要求：
+ 使用**服务身份验证**方法
+ 使用以下集成之一：
  + Atlassian 吉拉云
  + Microsoft Outlook
  + Salesforce
  + ServiceNow

## 在仪表板上启用快速操作以使用操作连接器
<a name="enable-quick-actions-on-dashboards-for-threshold-alert"></a>

**在仪表板上启用快速操作以使用操作连接器**

1. 如果存在仪表板，请转到仪表板的源分析。否则，[请创建新的分析](quickstart-createanalysis.md)。

1. 选择**发布**。

1. 在 “**新建控制面板**” 或 “**替换现有面板”** 之间进行选择

1. 选中 “**仪表板选项**” 下的 “**启用快速操作**” 复选框。

1. 选择 **Publish dashboard（发布控制面板）**。

## 在阈值警报中使用操作连接器
<a name="use-action-connectors-in-threshold-alert"></a>

**在阈值警报中使用操作连接器**

1. 在**启用快速操作**发布选项的情况下打开仪表板。

1. 将鼠标悬停在支持阈值警报的视觉对象上。可以在此[处](threshold-alerts.md)找到支持警报的视觉对象类型。

1. 选择铃铛图标。

1. **创建警报**窗格在右侧打开。

1. 选择 **Add Action**。

1. 此时将出现一个菜单，其中包含所有支持的操作连接器和操作的列表。

1. 从列表中选择所需的操作。

1. 右侧窗格中将出现一个 “**操作**” 表单。

1. 输入操作中需要包含的所有信息。

1. 某些字段允许包含自动填充值。选择 “**自动填充**” 以打开菜单。选择您需要的值，它们将被添加到您输入的文本中。
   + **值**：注入警报用来评估警报条件的当前值
   + **警报名称**：注入警报名称
   + **条件**：注入警报条件
   + **阈值**：注入阈值
   + **全部**：注入以上所有内容

1. 某些操作支持添加附件的功能。通过选中 “将**此工作表包含为 PDF” 复选框，您可以选择附加包含这些操作的当前仪表板工作表的 PDF**。

1. 选择 “**添加操作**”，将操作添加到警报中。

1. 回到**创建警报**窗格，配置的操作将添加到底部的警报中。

1. 配置警报的所有其他所需字段，然后选择**保存**。

1. 当你配置的阈值被突破时，应该会调用此操作。要了解有关何时评估阈值警报的更多信息，请参阅[警报计划](threshold-alerts-scheduling.md)。

## 安全和自定义
<a name="threshold-alert-security-and-customizations"></a>

**自定义 Permissions/Capability 定制**
+ **操作**功能：如果您的用户或角色被限制使用操作权能的权限，则无法查看或使用操作
+ **“导出为 PDF**” 功能：
  + 针对警报的新操作：如果您的用户或角色被限制使用 “**导出为 PDF” 功能的权限，则在向警报添加新操作时，您将看不到附加工作表 PDF** 的选项。
  + 针对警报的现有操作：如果您的现有警报中包含包含 PDF 附件的操作，则当您的用户或角色被限制使用 “**导出为 PDF” 功能时，这些操作将在不带 PDF** 附件的情况下发出。

要了解有关自定义权限的更多信息，请参阅[在 Amazon Quick 中创建自定义权限配置文件](create-custom-permissions-profile.md)。

**行级安全 (RLS) /列级安全 (CLS)**
+ 针对警报的新操作：如果您的控制面板包含带有 RLS 或 CLS 的数据集，那么
  + 您无法向使用 RLS 或 CLS 跟踪数据集的新警报添加操作
  + 您可以在没有 RLS 或 CLS 的情况下向跟踪不同数据集的新警报添加操作，但不能在这些操作中包含 PDF 附件
+ 针对警报的现有操作：如果您在创建带有操作的警报后向数据集添加 RLS 或 CLS，那么
  + 对跟踪该数据集的警报的现有操作将完全停止运行
  + 在同一仪表板上跟踪不同数据集的警报的现有操作将在不带任何 PDF 附件的情况下发出

要了解有关 RLS 的更多信息，请参阅[在 Amazon Quick 中使用行级安全](row-level-security.md)。

要了解有关 CLS 的更多信息，请参阅[使用列级安全性来限制对数据集的访问。](row-level-security.md)

**仪表板发布选项**
+ 为交互式工作表启用 PDF 生成
  + 警报上的新操作：如果您的仪表板禁用了 “为**交互式表格发布启用 PDF 生成 PDF” 选项，则在添加新的提醒操作时，您将看不到附加工作表 PDF** 的选项。
  + 警报上的现有操作：如果您的现有警报中包含包含 PDF 附件的操作，则当仪表板上的 “**为交互式表格发布启用 PDF 生成 PDF**” 选项被禁用时，这些操作将在不带 PDF 附件的情况下发出。
+ 启用快速操作
  + 针对警报的新操作：如果您的仪表板关闭了 “**启用快速操作” 发布选项，则您将看不到向警报添加操作**的选项。
  + 警报上的现有操作：当仪表板上的 “**启用快速操作发布” 选项被禁用时，您对警报的现有操作**将完全停止运行。

要了解有关仪表板发布选项的更多信息，请参阅[发布仪表板](creating-a-dashboard.md)。

# 打印控制面板或分析
<a name="printing1"></a>

您可以在 Amazon Quick Sight 中打印控制面板或分析。

可以使用以下过程进行打印。

1. 打开要打印的控制面板或分析。

1. 选择右上角的 **Print (打印)** 图标。

1. 在 **Prepare for printing (准备打印)** 屏幕上，选择要使用的纸张尺寸和方向。

1. 选择 **Go to Preview (转到预览)**。

1. 请执行以下操作之一：
   + 要继续打印，请选择 **Print (打印)** 以打开操作系统的打印对话框。
   + 要更改纸张尺寸或方向，请选择 **Configure (配置)**。

1. 要退出预览屏幕，请选择 **Exit preview (退出预览)**。

# 导出 Amazon Quick Sight 分析或控制面板为 PDFs
<a name="export-dashboard-to-pdf"></a>

您可以将内容从控制面板导出到可移植文档格式（PDF）文件。与打印输出类似，此格式提供下载时屏幕上显示的当前工作表的快照。

**将控制面板工作表导出为 PDF**

1. 打开 “快速”，然后在左侧的导航窗格上选择 “**仪表板**”。

1. 打开要导出的控制面板。

1. 在右上角依次选择**导出**、**下载为 PDF**。在后台进行下载。

   当文件准备好下载时，会出现一条消息，提示 **PDF 已准备就绪**。

1. 选择**立即下载**来下载该文件。选择**关闭**直接关闭文件，不进行下载。

   如果您在未下载文件的情况下关闭此对话框并想要重新创建该文件，请重复上一步骤。此外，可下载的文件仅在五分钟内暂时可用。如果等待下载的时间过长，则文件会过期。如果发生这种情况，Quick Sight 将显示一条错误消息，说明请求已过期。

1. 对想要导出的每张工作表重复前面的步骤。

您也可以附加 PDFs 到控制面板电子邮件报告。有关更多信息，请参阅 [通过电子邮件安排和发送 Quick Sight 报告](sending-reports.md)。

# PDF 导出任务失败的错误代码
<a name="qs-reports-error-codes"></a>

在 Amazon Quick Sight 中生成 PDF 报告时，可能会遇到生成 PDF 报告的请求失败的情况。导致失败的原因有多种。Quick Sight 提供的错误代码可以帮助您了解错误发生的原因，并提供解决问题的指导。下表列出了 PDF 导出任务失败时 Quick Sight 返回的错误代码。


| 错误代码 | 指导 | 
| --- | --- | 
| INVALID\$1DATAPREP\$1SYNTAX | 请检查计算字段的语法，然后重试。 | 
| POST\$1AGGREGATED\$1METRIC\$1AS\$1DIMENSION | 聚合 metrics/operands 不能用作视觉对象的分组维度。请选择有效视觉对象的分组维度，然后重试。 | 
| SPICE\$1TABLE\$1NOT\$1FOUND | 数据集已被删除或不可用。请导入有效的数据集，然后重试。 | 
| FIELD\$1NOT\$1FOUND | 字段不再可用。请更新或替换此数据集中缺失的字段，然后重试。 | 
| FIELD\$1ACCESS\$1DENIED | 您无权访问此数据集中的某些字段。请求访问权限，然后重试。 | 
| PERMISSIONS\$1DATASET\$1INVALID\$1COLUMN\$1VALUE | 发现无效的行级别权限列值。请检查父数据集规则，然后重试。 | 
| COLUMN\$1NOT\$1FOUND | 请替换筛选条件或参数中缺少的列，然后重试。 | 
| INVALID\$1COLUMN\$1TYPE | 某些字段的数据类型已更改，无法自动更新。请调整数据集中的这些字段，然后重试。 | 
| PERMISSIONS\$1DATASET\$1USER\$1DENIED | 您无权访问此数据集。请求访问此数据集，然后重试。 | 
| DATA\$1SOURCE\$1TIMEOUT | 您的查询超时。请减少数据量，或者将数据导入 SPICE，然后重试。 | 
| MAX\$1PAGE\$1EXCEEDED\$1ERROR | 您的文件已准备就绪，但内容不完整。 PDFs 有 1,000 页的上限。请选择页数较少的 PDF，然后重试。 | 
| INSUFFICIENT\$1BODY\$1HEIGHT\$1ERROR | 请将页眉和页脚调整为小于页面高度，然后重试。 | 
| FIRST\$1PAGE\$1HEIGHT\$1TOO\$1SMALL\$1ERROR | 请调整各部分给表格腾出空间，然后重试。 | 
| INTERNAL\$1ERROR | 我们现在无法创建您的 PDF。请等待几分钟，然后重试。 | 

# 为 Amazon Quick Sight 整理资产到文件夹中
<a name="folders"></a>


|  | 
| --- |
|  适用于：企业版  | 

在 Quick Enterprise 版中，您的团队成员可以创建个人和共享文件夹，为 Quick Sight 资产管理添加分层结构。使用文件夹，人们可以更轻松地组织、浏览和发现控制面板、分析、数据集、数据来源和主题。在文件夹中，您仍然可以使用常用工具搜索资产或将资产添加到收藏夹列表中。

您可以在 Quick Sight 中使用以下类型的文件夹：
+ 个人文件夹，用于自己整理工作。

  只有拥有个人文件夹的人才能看到这些文件夹。您不能将个人文件夹的所有权转让给其他任何人。
+ 共享文件夹：
  + **共享文件夹**可以整理工作并简化多人之间的共享。要创建和管理共享文件夹，您需要成为 Quick Sight 管理员。
  + **共享受限文件夹**是 Quick Sight 中的一种共享文件夹，可确保资源保留在共享文件夹中。使用共享受限文件夹中的资产创建的资产也必须保留在受限文件夹中。位于受限文件夹中的资产不能在受限文件夹之外移动或共享。例如，如果您创建的数据集使用位于共享受限文件夹中的数据来源，则无法将新数据集移到该共享受限文件夹之外。

    可以将位于受限文件夹中的资产移动到受限文件夹树内的一个或多个子文件夹中。受限文件夹的子文件夹的行为与受限文件夹类似，但依赖资产可以存在于同一根受限文件夹下的不同子文件夹中。根受限文件夹充当边界，只要所有子文件夹中的资产仍在根文件夹树内，它们就可以存在。例如，位于一个子文件夹中的数据集可以使用位于同一文件夹树中的另一个子文件夹或根文件夹中的数据来源。可以在根文件夹或其任何子文件夹中创建任何受支持的资产类型。用户可以在不同的子文件夹中拥有不同的角色。子文件夹权限从该子文件夹的父文件夹继承。

    只能通过 Quick Sight [https://aws.amazon.com/quicksight/latest/APIReference/API_CreateFolder.html](https://aws.amazon.com/quicksight/latest/APIReference/API_CreateFolder.html)API 操作创建受限文件夹。
  + 作为文件夹查看者且在 Quick 中具有 “作者” 或 “管理员” 角色的用户可以查看该文件夹中的所有资产类型。作为文件夹查看者且在 Quick 中具有 “读者” 角色的用户只能看到该文件夹中的仪表板和故事。

  所有共享文件夹对有权访问的用户可见。

使用以下主题了解有关在 Quick Sight 中创建和配置文件夹或子文件夹的更多信息。

**Topics**
+ [快速浏览文件夹的注意事项](folders-limitations.md)
+ [Quick Sight 文件夹概述](folders-functionality.md)
+ [Quick Sight 共享文件夹的权限](folders-security.md)
+ [创建和管理 Quick Sight 共享文件夹的成员权限](sharing-folders.md)
+ [使用快速瞄准器创建 Quick Sight 缩放的文件夹 APIs](folders-scaled.md)

# 快速浏览文件夹的注意事项
<a name="folders-limitations"></a>

在开始在 Amazon Quick Sight 中创建和修改文件夹之前，请查看适用于 Quick Sight 文件夹的以下限制。
+ 您无法与其他人共享您 AWS 账户中的文件夹 AWS 账户。
+ 对于拥有 Quick Reader 权限的用户，以下限制适用：
  + 读者不能拥有个人或共享文件夹。
  + 读者无法创建或管理文件夹或文件夹内容。
  + 读者不能拥有*贡献者*访问级别。
  + 在共享文件夹中，读者只能看到控制面板资产。

此外，以下限制特别适用于共享文件夹：
+ 共享文件夹（位于树的顶层）的名称在您的 AWS 帐户中必须是唯一的。
+ 在单个文件夹中，多个资产不能具有相同的名称。例如，在顶层文件夹中，您不能创建两个同名的子文件夹。在同一个文件夹中，不能添加两个同名资源，即使它们有不同的资产 IDs。每项资产的路径的行为类似于 Amazon S3 密钥名称。它在您的 AWS 账户中必须是唯一的。
+ 只能使用 Quick Sight CLI 创建受限制的共享文件夹。

[Quick Sight 文件夹概述](folders-functionality.md)要详细了解 Amazon Quick Sight 中提供的不同类型的文件夹，请参阅。

# Quick Sight 文件夹概述
<a name="folders-functionality"></a>

在 Quick Sight 中，您可以创建个人和共享文件夹。您还可以选择个人或共享文件夹旁边的收藏夹（![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/favorite-icon.png)）图标，以便快速访问。

您可以使用个人文件夹执行以下操作：
+ 创建子文件夹。
+ 将资产添加到您的文件夹，包括分析、控制面板、数据集和数据来源。要将资产添加到个人文件夹，您必须已经可以访问这些资产。多个资产可以具有相同的名称。

**共享文件夹（不受限）**

Quick 管理员可以使用共享文件夹执行以下任务。
+ 创建或删除共享文件夹及其中的子文件夹。您可以在顶级文件夹中移动其中任何一个。
+ 添加或移除所有者、贡献者和查看者。当您让某人成为某个文件夹的*所有者*时，您就赋予了他们对该文件夹中每项资产的所有权。有关更多信息，请参阅 [Quick Sight 共享文件夹的权限](folders-security.md)。

下表汇总了 Quick 用户在根据其角色处理不受限制的共享文件夹时可以采取的操作。


****  

| Action | 所有者 | 贡献者 | 查看者 | 
| --- | --- | --- | --- | 
| 与无权访问文件夹的用户共享该文件夹中的资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 修改文件夹权限 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 在文件夹中创建资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 修改文件夹中的资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 删除文件夹中的资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 将现有资产添加到文件夹 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 从共享文件夹中移除资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 查看文件夹中的资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | 
| 在共享文件夹之外创建使用位于共享文件夹中的资产的下游资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是\$1 | 
| 在使用位于该文件夹之外的资产的文件夹中创建下游资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 创建子文件夹 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 删除子文件夹 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 管理子文件夹权限 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 将现有资源添加到子文件夹 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 在子文件夹中创建新资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 删除子文件夹中的资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 

\$1必须为用户分配管理员或作者角色才能创建资产。

**受限共享文件夹**

受限共享文件夹提供额外的安全边界，限制在文件夹之外共享数据。具有相应 IAM 权限的管理员可以使用受限共享文件夹执行以下任务。
+ 可以使用 `CreateFolder` API 操作创建受限文件夹。有关 `CreatFolder` API 操作的更多信息，请参阅[CreateFolder](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateFolder.html)。
+ 贡献者角色分配给可以在受限文件夹中创建和编辑资产的用户。贡献者无法管理该文件夹或受限文件夹中资产的权限。
+ 管理员可以通过 `UpdateFolderPermissions` API 操作向用户分配文件夹贡献者和查看者权限。有关 `UpdateFolderPermissions` API 操作的更多信息，请参阅[UpdateFolderPermissions](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateFolderPermissions.html)。

下表汇总了 Quick Sight 用户在根据其角色处理受限共享文件夹时可以采取的操作。


****  

| Action | 贡献者 | 查看者 | 
| --- | --- | --- | 
| 与无权访问文件夹的用户共享该文件夹中的资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 修改文件夹权限 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 在文件夹中创建资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 修改文件夹中的资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 从文件夹中删除资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 将现有资产添加到文件夹 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 从共享文件夹中移除资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 查看文件夹中的资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | 
| 在共享文件夹之外创建使用位于共享文件夹中的资产的下游资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 在使用位于该文件夹之外的资产的文件夹中创建下游资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 创建子文件夹 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 删除子文件夹 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 管理子文件夹权限 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 将现有资源添加到子文件夹 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 在子文件夹中创建新资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 
| 删除子文件夹中的资产 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有 | 

受限共享文件夹不支持所有者角色。

选择最适合您的使用案例的文件夹类型后，请参阅 [Quick Sight 共享文件夹的权限](folders-security.md) 和 [创建和管理 Quick Sight 共享文件夹的成员权限](sharing-folders.md) 以创建文件夹并设置文件夹权限。

# Quick Sight 共享文件夹的权限
<a name="folders-security"></a>

共享文件夹有三个权限级别。要为用户或组设置文件夹级别的权限，请参阅 [创建和管理 Quick Sight 共享文件夹的成员权限](sharing-folders.md)。
+ **所有者** – 文件夹*所有者*拥有文件夹内的所有内容（文件夹、分析、控制面板、数据集、数据来源、主题）。他们可以创建、编辑和删除文件夹中的资产，修改文件夹及其资产的权限，以及完全删除该文件夹。受限共享文件夹不支持所有者角色。
+ **贡献者** – *贡献者*可以像所有者一样创建、编辑和删除文件夹中的资产。他们无法删除该文件夹，也无法修改该文件夹或从该文件夹继承的拥有贡献者访问权限的资产的权限。
+ **查看者** – *查看者*只能查看文件夹中的资产（文件夹、控制面板、数据集、数据来源、主题）。查看者无法编辑或共享这些资产。

以下规则也适用于共享文件夹的安全性：
+ 快速读者对某个文件夹的共享状态会与该文件夹共享。但是，读者只能对文件夹具有读取权限，并且只能在控制面板上访问视觉对象。
+ AWS 对文件夹中的每个对象都强制执行安全措施。该文件夹根据访问权限级别（管理员、作者或读者），对与之共享该文件夹的人的资产应用相同类型的安全保护。
+ *顶级文件夹*是所有子文件夹的根文件夹。在任何级别上共享子文件夹时，与之共享该文件夹的人员都会在顶级文件夹视图中看到该根文件夹。
+ 文件夹权限是指当前文件夹的权限，再加上通往根文件夹的所有文件夹的权限。
+ *共享资产*从该文件夹继承其权限。将属于文件夹所有者的资产添加到共享文件夹时，就会创建共享资产。
+ 如果您拥有不受限制的共享文件夹，则可以将该文件夹的所有权转让给另一个 Quick 管理员。
+ 受限文件夹不支持所有者角色。贡献者角色分配给在受限文件夹中创建和编辑资产的作者。文件夹贡献者无法管理受限文件夹或其资产的权限。
+ 使用 `UpdateFolderPermissions` API 更新受限共享文件夹的权限需要正确的 IAM 权限。

要创建和管理共享文件夹的权限，请参阅 [创建和管理 Quick Sight 共享文件夹的成员权限](sharing-folders.md)。

# 创建和管理 Quick Sight 共享文件夹的成员权限
<a name="sharing-folders"></a>

**共享文件夹（不受限）**

要在 Quick 控制台中创建共享文件夹并与 Quick 控制台中的一个或多个群组共享该文件夹，您必须是 Amazon QuickSight 管理员。您也可以使用 `CreateFolder` API 操作创建共享文件夹。使用以下过程共享或修改共享文件夹的成员资格权限。

1. 在左侧导航栏中，选择**文件夹**，然后选择**共享文件夹**。找到您要共享或管理权限的文件夹。

1. 要打开该文件夹行的操作菜单，请选择省略号（三个点）。

1. 选择**共享**。

1. 在**共享文件夹**模式中，添加要与之共享文件夹内容的组和用户。

1. 对于您添加的每个用户和组，请从该行的**权限**菜单中选择一个权限级别。

1. 要更新现有用户的权限类型，请选择**管理文件夹访问权限**。

1. 完成文件夹的用户和组权限设置后，选择**共享**。用户不会收到他们现在可以访问该文件夹的通知。

**受限共享文件夹** 

只能通过 `CreateFolder` API 操作创建受限共享文件夹。以下示例创建受限共享文件夹。

```
aws quicksight create-folder \
--aws-account-id AWSACCOUNTID \
--region us-east-1 \
--folder-id example-folder-name \
--folder-type RESTRICTED \
--name "Example Folder" \
```

创建受限共享文件夹后，通过 `UpdateFolderPermissions` API 调用为文件夹贡献者和查看者分配权限。以下示例更新了受限共享文件夹的权限，以向用户授予参与者权限。

```
aws quicksight update-folder-permissions \
--aws-account-id AWSACCOUNTID \
--region us-east-1 \
--folder-id example-folder-name \
--grant-permissions Principal=arn:aws:quicksight::us-east-
1::AWSACCOUNTID:user/default/:username,Actions=quicksight:CreateFolder
,quicksight:DescribeFolder, \
quicksight:CreateFolderMembership,quicksight:DeleteFolderMembership,qu
icksight:DescribeFolderPermissions \
```

您传递给用户的权限取决于您想要授予他们的文件夹角色的类型。使用以下列表确定您要授予文件夹访问权限的用户需要哪些权限。

**文件夹所有者**
+ 快速瞄准:CreateFolder
+ 快速瞄准:DescribeFolder
+ 快速瞄准:UpdateFolder
+ 快速瞄准:DeleteFolder
+ 快速瞄准:CreateFolderMembership
+ 快速瞄准:DeleteFolderMembership
+ 快速瞄准:DescribeFolderPermissions
+ 快速瞄准:UpdateFolderPermissions

**文件夹贡献者**
+ 快速瞄准:CreateFolder
+ 快速瞄准:DescribeFolder
+ 快速瞄准:CreateFolderMembership
+ 快速瞄准:DeleteFolderMembership
+ 快速瞄准:DescribeFolderPermissions

**文件夹查看者**
+ 快速瞄准:DescribeFolder

创建共享文件夹后，您可以在 Quick Sight 中开始使用该文件夹。

您还可以使用 Quick Sight APIs 创建特殊缩放的文件夹，这些文件夹最多可与 3000 个命名空间共享。要了解有关创建扩展的文件夹的更多信息，请参阅 [使用快速瞄准器创建 Quick Sight 缩放的文件夹 APIs](folders-scaled.md)。

# 使用快速瞄准器创建 Quick Sight 缩放的文件夹 APIs
<a name="folders-scaled"></a>

您可以使用 Amazon Quick Sight APIs 创建特殊缩放的文件夹，这些文件夹最多可与 3000 个命名空间共享。添加到文件夹的每个命名空间最多可以包含 100 个主体。*主体*是一个用户或一组用户。在创建缩放后的文件夹并添加所需的委托人之后，可以将任何 QuickSight 资源添加到该文件夹。然后可以将其共享给分配有文件夹主体的命名空间中的每个主体。这简化了与成千上万用户共享 Quick Sight 资产的流程。

缩放后的文件夹只能使用 Quick Sight 创建 APIs。创建扩展的文件夹时，您最多可以与同一命名空间中的 100 个主体共享该文件夹。您可以通过 `UpdateFolderPermissions` API 调用添加属于不同命名空间的主体。创建文件夹后，您可以使用 Quick Sight APIs 或 Quick 控制台在文件夹中添加和删除资源。

每个 Amazon Quick Sight 账户最多可容纳 100 个缩放文件夹 您最多可以向扩展的文件夹添加 100 个资产。如果您想共享一个包含超过 3000 个命名空间的扩展的文件夹，请联系 [AWS 支持人员](https://aws.amazon.com/contact-us/)。

## 示例
<a name="folders-scaled-examples"></a>

以下示例说明如何使用 Quick Sight 创建缩放后的文件夹 APIs。

**先决条件**

在开始之前，请验证您的 AWS Identity and Access Management 角色是否授予 API 用户调用 Quick Sight API 操作的访问权限。以下示例显示了一个 IAM 策略，您可以将其添加到现有 IAM 角色以创建、删除或修改扩展的文件夹。使用示例策略，用户可以将控制面板、分析和数据集添加到扩展的文件夹。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
        "Effect": "Allow",
        "Action": [
            "quicksight:CreateFolder",
            "quicksight:CreateFolderMembership",
            "quicksight:DeleteFolderMembership",
            "quicksight:DeleteFolder",
            "quicksight:DescribeFolderPermissions",
            "quicksight:DescribeFolderResolvedPermissions",
            "quicksight:UpdateFolderPermissions",
            "quicksight:UpdateDashboardPermissions",
            "quicksight:UpdateAnalysisPermissions",
            "quicksight:UpdateDataSetPermissions"
        ],
        "Resource": "*"
        }
    ]
}
```

------

以下示例创建扩展的文件夹。

```
aws quicksight create-folder \
--aws-account-id "AWSACCOUNTID" \
--region "us-east-1" \
--name "eastcoast-users" \
--sharing-model "NAMESPACE" \
--folder-id "eastcoast-users"
```

创建扩展的文件夹后，请与账户中的主体共享该文件夹。在每次 API 调用中，您只能向位于同一命名空间内的用户和组授予或撤销权限。以下示例与用户共享扩展的文件夹，其账户与该文件夹所在的账户相同。

```
aws quicksight update-folder-permissions \
--aws-account-id "AWSACCOUNTID" \
--region "us-east-1" \
--folder-id "eastcoast-users" \
--grant-permissions \
    '[
        {"Actions":
            ["quicksight:DescribeFolder",
            "quicksight:UpdateFolder",
            "quicksight:DeleteFolder",
            "quicksight:DescribeFolderPermissions",
            "quicksight:UpdateFolderPermissions",
            "quicksight:CreateFolderMembership",
            "quicksight:DeleteFolderMembership",
            "quicksight:CreateFolder"
            ],
        "Principal":"arn:aws:quicksight:us-east-1:AWSACCOUNTID:user/default/my-user"
        }
    ]'
```

与新主体共享文件夹后，通过 `describe-folder-permissions` API 调用验证新文件夹的权限。

```
aws quicksight describe-folder-permissions \
--aws-account-id "AWSACCOUNTID" \
--region "us-east-1" \
--folder-id "eastcoast-users" \
--namespace "default"
```

验证新文件夹权限后，在扩展的文件夹中创建一个子文件夹。子文件夹继承其创建时所在的扩展的文件夹的权限。

```
aws quicksight create-folder \
--aws-account-id "AWSACCOUNTID" \
--region "us-east-1" \
--name "new-york-users" \
--sharing-model "NAMESPACE" \
--folder-id "new-york-users" \
--parent-folder-arn "arn:aws:quicksight:us-east-1:AWSACCOUNTID:folder/eastcoast-users"
```

以下示例将对新子文件夹继承的权限进行验证。

```
aws quicksight describe-folder-resolved-permissions \
--aws-account-id "AWSACCOUNTID" \
--region "us-east-1" \
--folder-id "new-york-users" \
--namespace "default"
```

验证子文件夹的权限后，将要共享的 Quick Sight 资源添加到该文件夹。将资产添加到子文件夹后，该资产将与所有共享该子文件夹的主体共享。以下示例将控制面板添加至子文件夹。

```
aws quicksight create-folder-membership \
--aws-account-id "AWSACCOUNTID" \
--folder-id "new-york-users" \
--member-id "my-dashboard" \
--member-type "DASHBOARD" \
--region "us-east-1"
```

# 在 Amazon Quick Sight 中探索交互
<a name="using-dashboards"></a>

****  
**目标受众：**Amazon 快速控制面板订阅者或收视率 

在 Amazon Quick Sight 中，*数据控制面板*是图表、图表和见解的集合。它就像一份报纸，内容都是您感兴趣的数据，不同之处在于是数字页面。与其说是在阅读这份报纸，不如说是在与之互动。

根据您的工作内容和做好操作所需的分析，控制面板提供各种各样的设计。使用 Quick Sight，您可以与网页或移动设备上的数据进行交互。如果您还通过邮件订阅，则可以看到它的静态预览。

数据所讲述的故事反映了构建控制面板的分析师和数据科学家的专业知识。他们会完善数据、添加计算、找出故事的角度，并决定故事的呈现方式。发布者会设计控制面板，并在控制面板中加入交互式数据可视化效果和可调整视图的控件。发布者可以自定义您的互动级别，包括筛选和搜索选项。您可以与屏幕上的活动项目进行交互，以进行筛选、排序、向下钻取或跳转到其他工具。

当您查看控制面板时，会看到最近收到的数据。当您与屏幕上的项目交互时，您所做的任何更改都会改变您的控制面板视图，而不会改变其他人的视图。因此，尽管发布者可以知道您的浏览内容，但您的设备隐私会得到保障。关闭控制面板后，您的浏览内容和数据都不会保留。与往常一样，当您是 Quick 读者时，您的月度订阅由仪表板的发布者提供，您无需支付任何额外费用。

如果您也是控制面板发布者（我们称他们为作者，因为他们撰写报告），您也可以保存控制面板的副本以供进一步分析。如果您发现要发布的数据有新功能，请与原始作者合作进行更新。这样，每个人都可以看到相同版本的故事。但是，您也可以使用您的副本来了解他们的设计运作方式，或者激发您对全新事物的创作灵感。完成后，您就可以将分析结果作为新的控制面板发布。

要了解如何设置控制面板，请参阅 [使用控制面板和报告在 Amazon Quick Sight 中共享和订阅数据](working-with-dashboards.md)。

**Topics**
+ [与控制面板交互](exploring-dashboards.md)
+ [与像素完美报告互动](interacting-with-paginated-reports.md)
+ [订阅电子邮件和警报](subscriber-alerts.md)
+ [读者生成的报告](reader-scheduling.md)
+ [书签](dashboard-bookmarks.md)

# 与 Amazon 快速浏览仪表板互动
<a name="exploring-dashboards"></a>

要访问受邀共享的控制面板，请按照邀请电子邮件中的说明进行操作。如果控制面板嵌入到您已经可以访问的应用程序或网站中，那么您也可以访问该控制面板。

要使控制面板适应您的屏幕，请打开右上角的**查看**菜单，然后选择**适应窗口**。

根据控制面板的配置方式，您可以找到以下全部或部分元素：
+ 菜单栏 – 显示控制面板的名称。此外，左侧的菜单栏显示了您可以对控制面板执行的操作，包括**撤销**、**重做**和**重置**。当与控制面板互动时，您可以将它们当作探索工具，因为您知道可以在不丢失任何数据的情况下更改视图。在右侧，您可以找到**打印**控制面板、使用**数据**、选择其他 AWS **区域**以及打开您的**用户配置文件**的选项。用户个人资料菜单有一些选项，因此您可以选择 Amazon Quick Sight 显示的语言。它还包含指向快速**社区**和在线文档（**帮助**）的链接。
+ 控制面板工作表 – 如果您的控制面板有多个工作表，则这些工作表将显示为控制面板顶部的选项卡。
+ **筛选条件**菜单 – 如果控制面板发布者允许筛选，则此选项会显示在控制面板的左侧。
+ **控件**调色板 – 如果控制面板包含控件，则可以使用它们来选择要应用于控制面板的选项（参数）。有时会为您选择控件值，有时控件值会设置为 **ALL**。
+ 控制面板标题 – 控制面板的标题通常比较大。可能会有一些状态信息或说明位于它下方。
+ 控制面板小组件 – 屏幕上的项目可以包括图表、图形、洞察、叙述或图像。要查看所有内容，您可能需要垂直或水平滚动。

# 对 Amazon Quick Sight 控制面板数据使用筛选器
<a name="filtering-dashboard-data"></a>

您可以使用筛选条件优化视觉对象中显示的数据。筛选条件在任何聚合函数之前应用到数据。如果拥有多个筛选条件，则可使用 AND 联合应用所有顶级筛选条件。如果筛选条件分组到一个顶级筛选条件中，则可使用 OR 来应用分组中的筛选条件。

Amazon Quick Sight 会将所有启用的筛选条件应用于该字段。例如，假设有一个 `state = WA` 的筛选器和一个 `sales >= 500` 的筛选器。在这种情况下，数据集只包含满足这两个条件的记录。如果您禁用其中之一，则只应用一个筛选条件。请注意，应用于相同字段的多个筛选条件不相互排斥。

## 查看筛选条件
<a name="subscriber-dashboards-viewing-filters"></a>

要查看现有筛选条件，请在元素设置菜单上选择**筛选条件**，然后选择查看筛选条件。筛选条件按照创建顺序显示在**应用的筛选条件**窗格中，最早创建的筛选条件位于顶部。

### 了解 Amazon Quick Sight 控制面板中的筛选器图标
<a name="subscriber-dashboards-understanding-filter-icons"></a>

**应用的筛选条件**窗格中的筛选条件显示图标以指示它们的范围及启用状态。

未启用的筛选条件显示为灰色，无法选中其复选框。

其中一个范围图标显示在筛选条件名称的右侧，以指示在该筛选条件上设置的范围。范围图标类似于方块中的四个框。如果填充了所有框，则筛选条件应用于分析表上的所有视觉对象。如果只填充了一个框，筛选条件仅适用于所选的视觉对象。如果填充了某些框，则筛选条件适用于表上的一些视觉对象，包括当前选中的一个视觉对象。

这些范围图标与您为筛选条件选择范围时的筛选条件菜单上显示的图标一致。

### 在 Amazon Quick Sight 控制面板中查看筛选器详情
<a name="subscriber-dashboards-viewing-filter-details"></a>

要查看筛选条件详细信息，请选择左侧的**筛选条件**。筛选条件视图保留您上次的选择。因此，当您打开**筛选条件**时，您将看到**应用的筛选条件**或**编辑筛选条件**视图。

在**应用的筛选条件**视图中，您可以选择任何筛选条件以查看其详细信息。此列表中的筛选条件可能发生变化，具体取决于筛选条件的范围以及您当前选择的视觉对象。

您可以通过选择屏幕右侧的选择器关闭**编辑筛选器**视图。这样会重置 **Filter (筛选条件)** 视图。

# 在 Amazon Quick Sight 中筛选会话期间的数据
<a name="subscriber-dashboards-filtering-your-view-of-the-data"></a>

当控制面板会话处于活动状态时，您可以通过三种方式筛选数据：

1. 如果控制面板在屏幕顶部有控件，则可以通过从预设的值列表中进行选择来利用它们筛选数据。

1. 您可以使用每个小组件的设置菜单上的筛选条件图标。

1. 您可以使用页面左侧的筛选条件窗格创建自己的筛选条件。筛选图标如下所示。

要创建筛选条件，请选择左侧的**筛选条件**图标。

第一步是选择要筛选的控制面板元素。

单击您选择的项目，使所选项目高亮显示。此外，已经存在的任何筛选条件会显示在列表中。如果不存在任何筛选条件，则可以使用筛选条件旁边的加号（**\$1**）来添加一个**筛选条件**。

筛选条件选项因要筛选的字段的数据类型以及在筛选条件中选择的选项而异。以下屏幕截图显示了时间范围日期筛选条件的一些可用选项。

对于每个筛选条件，您可以选择将其应用于一个、部分还是所有控制面板元素。您也可以通过筛选条件名称旁边的复选框启用或禁用筛选条件。要删除筛选条件，请对其进行编辑并滚动到底部以查看选项。请记住，筛选条件不会从一个会话保存到下一个会话。

有关创建筛选条件的详细信息，请参阅 [使用 Amazon Quick Sight 筛选数据](adding-a-filter.md)。

# 使用 Amazon Quick Sight 控制面板上的元素
<a name="using-visuals-on-a-dashboard"></a>

每个小组件都有一个设置菜单，选择小组件时即可显示对应菜单。此菜单提供放大或缩小、筛选数据、导出数据等选项。选项因元素的小组件类型而异。

当您选择数据点时，有几个操作可用。您可以单击或点击数据点，例如，条形图上的条，线形图上线条弯曲处的点，等等。可用选项因项目类型而异。

这些操作如下所示：
+ 聚焦或排除。

  您可以聚焦或排除字段中的特定数据，例如区域、指标或日期。
+ 向上钻取或向下钻取。

  如果您的控制面板包含可供向下钻取或向上钻取的数据，您可以向上钻取到更高的级别或向下钻取以挖掘更深的细节。
+ 自定义 URL 操作。

  如果您的控制面板包含自定义操作，您可以通过选择数据点或右键单击来激活这些操作。例如，您可以直接从控制面板向某人发送电子邮件。您也可以打开另一个工作表、网站或应用程序，然后将您从此处选择的值发送过去。
+ 更改图表颜色或特定字段颜色。

  您可以将所有图表颜色更改为特定颜色。或者，您可以选择特定的字段值来更改其所属元素的颜色。

# 在 Amazon Quick Sight 中对控制面板
<a name="sorting-dashboard-data"></a>

您可以通过三种方式对数据进行排序：

1. 您可以将鼠标悬停在要作为排序依据的字段的标签上，然后选择排序图标。

1. 您可以选择其中一个控制面板元素右上角的筛选条件图标。

1. 您可以单击或点击字段，然后从上下文菜单中选择 **Sort（排序）**。

数据透视表具有不同的排序方式；您可以使用数据透视表上的列排序图标指定排序顺序。

# 导出和打印交互式 Amazon 快速浏览控制面板报告
<a name="export-or-print-dashboard"></a>

您可以导出或打印 PDF 版本的交互式控制面板。您也可以将控制面板中的部分视觉对象导出为 CSV。交互式控制面板目前不支持将整个控制面板导出为 CSV。

## 将数据从控制面板导出到 PDF
<a name="export-dashboard-to-pdf"></a>

**将交互式控制面板报告导出为 PDF**

1. 在要导出的控制面板报告中，选择右上角的**导出**图标。

1. 选择**生成 PDF**。

1. 选择 “**生成 PDF**” 后，Quick Sight 将开始准备仪表板报告以供下载。在蓝色弹出窗口中选择**查看下载**，以便打开右侧的**下载**窗格。

1. 有两种方法可以下载报告：
   + 在绿色弹出窗口中选择**立即下载**。
   + 选择右上角的**导出**图标，然后选择**查看下载**，以查看和下载所有可供下载的报告。

**打印交互式控制面板报告**

1. 在要打印的报告中，选择右上角的**导出**图标，然后选择**打印**。

1. 在出现的**准备打印**弹出窗口中，选择要使用的纸张尺寸和方向。您可以通过选择**打印背景颜色**来选择包含背景颜色。

1. 选择**转到预览**。

1. 在显示的预览窗口中，选择**打印**。

## 将数据从控制面板导出到 CSV
<a name="export-dashboard-to-csv"></a>

**注意**  
导出文件可以直接通过数据集导入返回信息。如果导入的数据包含公式或命令，则文件易受 CSV 注入影响。因此，导出文件可能会提示安全警告。为避免恶意活动，请在读取导出的文件时关闭链接和宏。

要将数据从分析或控制面板导出到逗号分隔值（CSV）文件，请使用小组件右上角的设置菜单。导出仅包含当前显示在您选择的项目中的数据。

在表格和数据透视表中，可以将数据导出到逗号分隔值（CSV）文件或 Microsoft Excel 文件。您可以选择仅导出可见字段或导出所有字段。

要仅将可见字段导出到 CSV 或 Excel 文件，请选择视觉对象右上角的菜单。选择**导出到 CSV** 或**导出到 Excel**，然后选择**将可见字段导出到 CSV** 或**将可见字段导出到 Excel**。

要将所有字段导出到 CSV 或 Excel 文件，请选择视觉对象右上角的菜单。选择**导出到 CSV** 或**导出到 Excel**，然后选择**将所有字段导出到 CSV** 或**将所有字段导出到 Excel**。

# 生成 Amazon Quick Sight 控制面板的执行摘要
<a name="use-executive-summaries"></a>

仪表板读者可以生成执行摘要，这些摘要提供 Quick Sight 为仪表板生成的所有见解的摘要。执行摘要使读者可以更轻松地一眼找到有关控制面板的关键见解和信息。

当读者查看使用**执行摘要**的仪表板时，控制面板页面右上角的 “**构建**” 下拉列表中会显示 “执行摘要” 选项。使用以下步骤生成内容摘要。如果仪表板不使用执行摘要，则**内容摘要**选项不会显示在 “**构建**” 下拉列表中。

**生成执行摘要**

1. 在要使用的控制面板中，选择**构建**，然后选择**执行摘要**。

1. 选择**汇总**。执行摘要已生成并出现在左侧。

执行摘要使用当前控制面板工作表的数据和视觉对象设置。如果控制面板或视觉对象设置已更新，则会在执行摘要的顶部显示一条警告。要刷新更新后的控制面板的执行摘要，请生成新的执行摘要。

生成执行摘要后，Amazon Quick 读者可以将摘要复制到剪贴板以便与他人共享，或者包含在 Quick Sight 故事中。有关 Quick Sight 故事的更多信息，请参阅[在 Amazon Quick Sight 中处理数据故事](working-with-stories.md)。

# 在 Amazon Quick Sight 中与像素完美报告互动
<a name="interacting-with-paginated-reports"></a>

要访问受邀分享的 pixel perfect 报告，请按照邀请电子邮件中的说明进行操作。如果像素完美报告嵌入到您已经可以访问的应用程序或网站中，则还可以访问该报告。

要使像素完美报告适合您的屏幕，请打开右上角的 “**查看**” 菜单，然后选择 “**适合窗口”**。您也可以通过报告左上角的加号（\$1）和减号（-）图标分别进行放大和缩小。

# 导出和打印亚马逊 Quick Sight 报告
<a name="interacting-with-paginated-reports-export"></a>

Pixel perfect 报告专为从特定时间点查看而设计。这些报告或快照可以以 PDF 或 CSV 格式打印或下载。

**将像素完美报告导出为 PDF**

1. 从要导出的像素完美报告中，选择右上角的**导出**图标。

1. 选择**生成 PDF**。

1. 当你选择 “**生成 PDF**” 时，Quick Sight 将开始准备像素完美报告以供下载。当报告就绪时，会显示一个提示**您的 PDF 已准备就绪**的弹出窗口。

1. 有两种方法可以下载报告：
   + 在绿色弹出窗口中选择**立即下载**。
   + 选择右上角的**导出**图标，然后选择**查看下载**，以查看和下载所有可供下载的报告。

**将像素完美报告导出为 CSV**

1. 在要导出的报告中，选择右上角的**计划**图标，然后选择**近期快照**。

1. 在右侧显示的**近期快照**菜单中，快照按最近生成到最早生成的顺序排序。快照最多可存储 1 年。找到要下载的报告，然后选择报告右侧的下载图标。

1. 在出现的报告弹出窗口中，选择要下载的报告版本旁边的下载图标。您可以选择以 CSV 格式下载报告，也可以以 PDF 格式下载报告。

**打印像素完美报告**

1. 在要打印的报告中，选择右上角的**导出**图标，然后选择**打印**。

1. 选择**打印**后，将显示浏览器的打印机弹出窗口。从这里，您可以像在浏览器上打印其他任何内容一样打印 PDF。

# 订阅 Amazon Quick Sight 控制面板电子邮件和提醒
<a name="subscriber-alerts"></a>

使用 Amazon Quick Sight，您可以订阅某些事件的更新，例如控制面板更新和异常警报。

**Topics**
+ [注册控制面板电子邮件](#subscribing-to-a-dashboard-report-for-readers)
+ [注册异常警报](#anomaly-alerts)

## 注册控制面板电子邮件
<a name="subscribing-to-a-dashboard-report-for-readers"></a>

您可以注册以获取报告格式的控制面板，并通过电子邮件接收该控制面板。您还可以配置您的报告设置。

**更改控制面板的订阅和报告设置**

1. 打开一个与您共享的控制面板。

1. 选择右上角的**计划**图标，然后在下拉列表中选择**计划**。

1. **计划**窗格显示在右侧。此窗格显示您已订阅或可以订阅的所有不同计划报告。导航到所需的报告，然后切换开关以订阅或取消订阅该报告。

## 注册异常警报
<a name="anomaly-alerts"></a>

在具有针对异常检测配置的叙述洞察的控制面板上，您可以注册以接收异常和贡献分析的警报。在更新异常时，您会收到异常警报。警报电子邮件显示异常总数，并根据您的个人警报配置提供前五个异常的详细信息。如果贡献分析配置为与异常检测一起运行，则在更新它时您会收到关键驱动因素贡献分析。

**设置异常警报**

1. 打开一个与您共享的控制面板。

1. 您可以从两个屏幕之一配置警报。选择下列选项之一，然后执行下一个步骤：
   + 在控制面板中，找到感兴趣的异常小组件。选择它以使其周围有一个突出显示的框。
   + 如果您在控制面板中并打开了**探索异常**页面，则无需返回控制面板视图即可配置警报。

1. 在右上角，选择**配置警报**。**Alert (警报)** 配置屏幕随即出现。

1. 对于**严重性**，请选择要查看的最低级别的意义。

   对于 **Direction (方向)**，选择获取有关 **Higher than expected (高于预期)** 或 **Lower than expected (低于预期)** 的异常的警报。您也可以选择 **[ALL] ([全部])** 以接收有关所有异常的警报。

1. 选择 **OK (确定)** 以确认您的选择。

1. 要停止接收异常警报，请找到控制面板中的异常小组件，并使用铃铛图标来取消订阅。您也可以使用警报电子邮件底部的 **To manage this alert (管理此警报)** 链接。

# 在 Amazon Quick Sight 中创建读者生成的报告
<a name="reader-scheduling"></a>

如果 Amazon Quick 作者为 Quick Sight 像素完美报告设置了提示报告，则 Quick Sight 控制面板查看者可以使用该提示为自己安排报告。有关像素完美报告提示的更多信息，请参阅[设置分页报告的提示](paginated-reports-prompts.md)。

使用以下部分来了解如何创建和修改读者生成的报告。

**Topics**
+ [创建读者生成的报告](#reader-scheduling-create)
+ [正在加载 Quick Sight 阅读器生成的报告的已保存视图](#reader-scheduling-load-view)
+ [更新计划读者生成的报告的视图](#reader-scheduling-update-view)
+ [更新读者生成的报告计划](#reader-scheduling-update-schedule)

## 创建读者生成的报告
<a name="reader-scheduling-create"></a>

使用以下过程创建读者生成的报告。

**创建读者生成的报告**

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

1. 打开要为其创建报告的控制面板。

1. 选择控制面板页面顶部的**计划**。

1. 此时将打开计划窗格。要添加新的报告计划，请选择**添加**。如果您没有看到 “**添加**” 按钮，则说明仪表板不包含像素完美表，或者您的 Quick 帐户中没有添加 Pixel 完美报告。有关分页报告附加组件的更多信息，请参阅[开始使用](qs-reports-getting-started.md)。

1. 对于**计划名称**，输入新计划的名称。计划名称最多可包含 100 个字符。

1. 对于**描述**，选择希望报告使用的查看选项。您可以从以下视图中进行选择：
   + **自定义视图** – 控制面板的当前视图。
   + **原始视图** – 作者发布的控制面板视图。

1. 在 “**内容**” 中，选择要为其生成 PDF 报告的像素完美报告表。

1. 对于**日期**，选择要接收报告的频率。可用于电子邮件报告的计划选项如下：
   + **一次（不重复）**– 仅在您选择的日期和时间发送一次报告。
   + **每天** – 在您选择的时间每天重复发送。
   + **每周** – 每周的同一天或几天在您选择的时间重复发送。您也可以使用此选项以每周为间隔发送报告，例如每隔一周或每三周。
   + **每月** – 每月的同一天在您选择的时间重复发送。您也可以使用此选项在每月的特定日期发送报告，例如每个月的第二个星期三或最后一个星期五。
   + **每年** – 每年选定的一个或多个月份的同一天，在您选择的时间重复发送。您也可以使用此选项在特定日期或选定月份中的几组日期发送报告。例如，您可以将报告配置为在每年 1 月、3 月和 9 月的第一个星期一、7 月 14 日或每年 2 月、4 月和 6 月的第二天发送。
   + **自定义** – 配置您的计划报告来契合自己的业务需求。

   计划的报告将在指定时间起 1 小时内发送。高峰时段可能会出现延误。

1. 在**电子邮件**选项卡中，为**电子邮件主题行**输入自定义主题行，或将其留空以使用报告标题。

1. 输入您要接收报告的用户或群组的 “快捷群组” 名称的电子邮件地址。

1. 对于**电子邮件标头**，请输入您希望电子邮件报告显示的标头。

1. （可选）对于**电子邮件正文**，请将其留空或输入要显示在电子邮件开头的自定义消息。

1. （可选，推荐）要在保存更改之前发送报告示例，请选择**发送测试报告**。

1. 请执行以下操作之一：
   + （推荐）选择**保存**确认自己的输入。
   + 要立即发送报告，请选择**保存并立即运行**。即使您计划的开始日期是将来的日期，报告也会立即发送。

保存报告计划后，该计划将显示在**计划**窗格中。读者生成的报告仅供创建它们的用户使用，并且不能共享。

## 正在加载 Quick Sight 阅读器生成的报告的已保存视图
<a name="reader-scheduling-load-view"></a>

Amazon Quick 读者可以使用 “**计划**” 窗格加载已创建或接收的任何预定像素完美报告的保存视图。使用以下过程加载计划报告的已保存视图。

**加载计划报告的已保存视图**

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

1. 打开包含要更改的报告的控制面板。

1. 选择控制面板页面顶部的**计划**。

1. 此时将打开计划窗格。找到要更改的计划，然后选择报告旁边的省略号（三个点）图标以打开计划菜单，然后选择**详细信息**。

1. 选择**加载已保存视图**。将呈现用于所选计划的控制面板的已保存视图。拍摄控制面板快照时处于活动状态的所有筛选条件值都将应用于控制面板。当加载已保存的控制面板视图时，读者当前的控制面板视图将会丢失。

## 更新计划读者生成的报告的视图
<a name="reader-scheduling-update-view"></a>

Amazon Quick 阅读器在 Quick Sight 中创建报告后，他们可以使用 “**计划**” 窗格更新计划报告中使用的控制面板视图。使用以下过程来更新计划报告的控制面板视图。

**更改计划报告的控制面板视图**

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

1. 打开包含要更改的报告的控制面板。

1. 选择控制面板页面顶部的**计划**。

1. 此时将打开计划窗格。找到要更改的计划，然后选择报告旁边的省略号（三个点）图标以打开计划菜单，然后选择**详细信息**。

1. 选择**加载已保存视图**。将呈现用于所选计划的控制面板的已保存视图。拍摄控制面板快照时处于活动状态的所有筛选条件值都将应用于控制面板。当加载已保存的控制面板视图时，读者当前的控制面板视图将会丢失。

1. 更新要更改的控制面板筛选条件。

1. 选择控制面板页面顶部的**计划**。

1. 此时将打开计划窗格。找到要更改的计划，然后选择报告旁边的省略号（三个点）图标以打开计划菜单，然后选择**编辑**。

1. 导航到**控制面板视图**部分，然后选择**自定义视图**。您更新的新筛选条件值将应用于控制面板报告。

1. 选择**保存**以更新计划。

## 更新读者生成的报告计划
<a name="reader-scheduling-update-schedule"></a>

创建读者生成的报告后，Amazon Quick 读者可以使用 “**计划**” 窗格将报告计划设置为活动或非活动状态。使用以下过程来更新读者生成的报告计划的活动状态。

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

1. 打开包含要更改的报告的控制面板。

1. 选择控制面板页面顶部的**计划**以打开**计划**窗格。

1. 选择**计划**。

1. 导航至**我的计划**部分，找到要更新的计划。

1. 使用切换开关将报告计划设置为**活动**或**非活动**。

1. 完成对报告计划的更改后，关闭**计划**窗格。

# 为 Amazon Quick Sight 控制面板的视图添加书签
<a name="dashboard-bookmarks"></a>

当您以 Amazon Quick 读者或作者的身份加载控制面板时，您可以创建书签来捕捉您感兴趣的特定视图。例如，您可以使用与原始发布的控制面板不同的特定筛选条件设置来为控制面板创建书签。执行此操作即可快速返回与您相关的数据。

创建书签后，您可以将其设置为在新会话中打开控制面板时看到的控制面板的默认视图。这不会影响其他人看到的控制面板视图。

您可以为控制面板创建最多 200 个书签，并通过 URL 链接与该控制面板的其他订阅用户共享。

Quick 控制台上提供仪表板书签。

目前不支持像素完美报告的仪表板书签。有关像素完美报告的更多信息，请参阅[在 Amazon Quick Sight 中处理像素完美报告](working-with-reports.md)。

使用以下主题了解如何使用书签。

**Topics**
+ [在亚马逊 Quick Sight 中创建书签](dashboard-bookmarks-create.md)
+ [在亚马逊 Quick Sight 中更新书签](dashboard-bookmarks-update.md)
+ [在亚马逊 Quick Sight 中重命名书签](dashboard-bookmarks-rename.md)
+ [将书签设为 Amazon Quick Sight 中的默认视图](dashboard-bookmarks-default.md)
+ [在 Amazon 快速浏览中共享书签](dashboard-bookmarks-share.md)
+ [在亚马逊 Quick Sight 中删除书签](dashboard-bookmarks-delete.md)

# 在亚马逊 Quick Sight 中创建书签
<a name="dashboard-bookmarks-create"></a>

要为控制面板创建书签，请按照以下过程操作。

**为控制面板创建书签**

1. 打开要查看的已发布控制面板，更改其筛选条件或参数，或者选择所需的工作表。例如，您可以筛选感兴趣的区域，也可以使用控制面板上的工作表控件选择特定的日期范围。

1. 选择右上角的书签图标，然后选择**添加书签**。

1. 在打开的**添加书签**窗格中，输入书签的名称，然后选择**保存**。

   保存书签后，控制面板名称将更新为书签名称（位于左上角）。

   您可以通过选择右侧**书签**窗格中的**原始控制面板**，随时返回作者发布的原始控制面板视图。

# 在亚马逊 Quick Sight 中更新书签
<a name="dashboard-bookmarks-update"></a>

您可以随时更改书签控制面板视图与更新书签，以便始终反映这些更改。

**更新书签**

1. 打开已发布控制面板，对筛选条件或参数作出必要的更改，或者选择一个工作表。

1. 选择右上角的书签图标。

1. 在打开的**书签**窗格中，选择要更新的书签的上下文菜单（三个竖直的点），然后选择**更新**。

   随即显示一条消息确认更新。

# 在亚马逊 Quick Sight 中重命名书签
<a name="dashboard-bookmarks-rename"></a>

要重命名书签，请按照以下过程操作。

**重命名书签**

1. 在已发布的控制面板中，选择右上角的书签图标，打开**书签**窗格。

1. 在**书签**窗格中，选择要重命名的书签的上下文菜单（三个竖直的点），然后选择**重命名**。

1. 在**重命名书签**窗格中，输入书签的名称，然后选择**保存**。

# 将书签设为 Amazon Quick Sight 中的默认视图
<a name="dashboard-bookmarks-default"></a>

默认情况下，当您更新仪表板时，Quick Sight 会记住这些更改，并在您关闭仪表板后保留这些更改。这样，当您再次打开控制面板时，可以从中断处继续加载。您可以改为将书签设置为控制面板的默认视图。如果这样做，无论您在上次会话中做过什么更改，任何时候打开控制面板都会显示书签视图。

**将书签设置为控制面板的默认视图**

1. 在已发布的控制面板中，选择右上角的书签图标，打开**书签**窗格。

1. 在**书签**窗格中，选择要设置为默认视图的书签的上下文菜单（三个竖直的点），然后选择**设置为默认**。

# 在 Amazon 快速浏览中共享书签
<a name="dashboard-bookmarks-share"></a>

创建书签后，您可以与其他有权查看控制面板的人共享该视图的 URL 链接。然后，他们可以将该视图保存为自己的书签。

**与控制面板的其他订阅用户共享书签**

1. 在已发布的控制面板中，选择右上角的书签图标，打开**书签**窗格。

1. 在**书签**窗格中，选择要共享的书签，使控制面板更新为该视图。

1. 选择右上角的共享图标，然后选择**共享此视图**。

   您可以复制 Quick Sight 提供的 URL 链接，然后将其粘贴到电子邮件或即时消息中，以便与他人共享。然后，URL 链接的接收者可以将视图保存为自己的书签。有关共享控制面板视图的更多信息，请参阅 [分享你对 Amazon Quick Sight 控制面板的看法](share-dashboard-view.md)。

# 在亚马逊 Quick Sight 中删除书签
<a name="dashboard-bookmarks-delete"></a>

按照以下过程删除书签。

**删除书签**

1. 在已发布的控制面板中，选择右上角的书签图标，打开**书签**窗格。

1. 在**书签**窗格中，选择要删除的书签的上下文菜单（三个竖直的点），然后选择**删除**。

1. 在打开的**删除书签**窗格中，选择**是，删除书签**。

# 在 Amazon Quick Sight 中使用机器学习 (ML) 获得见解
<a name="making-data-driven-decisions-with-ml-in-quicksight"></a>

Amazon Quick Sight 使用机器学习来帮助您发现数据中隐藏的见解和趋势，识别关键驱动因素并预测业务指标。您还可以在嵌入控制面板的自然语言叙述中使用这些见解。

Amazon Quick Sight Enterprise Edition 使用机器学习 (ML) 和自然语言功能，带您超越描述和诊断分析，让您进入预测和决策阶段。您可以一目了然地了解数据，分享调查结果，并发现可实现目标的最佳决策。无需开发团队和技术部门创建必要的机器学习模型和算法即可实现此目的。

您可能已构建可视化内容来回答有关发生的事情、时间、地点的问题并提供调查下钻和模式识别。借助 ML Insights，您可以避免手动花费数小时的时间来进行分析和调查。您可以从自定义的上下文相关叙述（称为*自动叙述*）列表中进行选择，然后将其添加到分析中。除了选择自动叙述以外，您还可以选择查看预测、异常以及影响因素。您还可以添加以简单语言说明要点的自动叙述，从而为您的公司提供单个数据驱动的事实。

随着时间的流逝和数据在系统中流动，Amazon Quick Sight 会不断学习，从而提供更相关的见解。不是确定数据意味着什么，而是您可以确定使用它提供的信息做什么。

借助基于机器学习的共享基础，您的所有分析师和利益相关者都可以查看基于数百万个指标构建的趋势、异常、预测和自定义叙述。他们可以查看根本原因，考虑预测，评估风险和做出明智、正当的决策。

您可以创建如下所示的控制面板，无需手动分析，无需自定义开发技能，也无需了解机器学习建模或算法。所有这些功能都内置在 Amazon Quick Sight 企业版中。

**注意**  
在整个产品中根据需要使用机器学习功能。主动使用机器学习的功能如此处所标记。

借助 ML Insights，Amazon Quick Sight 提供了三个主要功能：
+ 机器学习@@ **支持的异常检测 —** Amazon Quick Sight 使用亚马逊久经考验的机器学习技术来持续分析您的所有数据，以检测异常（异常值）。您可以确定导致业务指标发生任何重大变化的主要驱动因素，例如higher-than-expected 销售额或网站流量下降。Amazon Quick Sight 在数百万个指标和数十亿个数据点上使用随机剪辑森林算法。这样做使您能够获得通常埋藏在聚合中、不可通过手动分析获取的深入见解。
+ 基于@@ **机器学习的预测 —** Amazon Quick Sight 使非技术用户能够自信地预测其关键业务指标。内置的 ML 随机砍伐森林算法自动处理复杂的真实世界的场景，例如检测季节性和趋势、排除离群值以及输入缺失值。您可以 point-and-click简单地与数据进行交互。
+ 自述 — 通过在 **Amazon Quick Sight 中使用自动叙述，您可以构建包含嵌入式叙述的丰富仪表板，用通**俗易懂的语言讲述您的数据故事。这样做可以节省通过图表和表进行筛选以提取要报告的关键见解的数小时时间。它还实现了在组织内分享对数据的了解，以便您可以更快地做出决策。您可以使用建议的自动叙述，也可以自定义计算和语言以满足您的独特要求。Amazon Quick Sight 就像为您的所有用户提供个人数据分析师一样。

**Topics**
+ [了解 Amazon Quick Sight 使用的机器学习算法](concept-of-ml-algorithms.md)
+ [在 Amazon Quick Sight 中使用机器学习见解的数据集要求](ml-data-set-requirements.md)
+ [在 Amazon Quick Sight 中使用见解](computational-insights.md)
+ [使用 Amazon Quick Sight 创建自动叙事](narratives-creating.md)
+ [通过 ML 支持的异常检测功能检测异常值](anomaly-detection.md)
+ [使用 Amazon Quick Sight 预测和创建假设情景](forecasts-and-whatifs.md)

# 了解 Amazon Quick Sight 使用的机器学习算法
<a name="concept-of-ml-algorithms"></a>


|  | 
| --- |
|  您不需要任何机器学习方面的技术经验即可使用 Amazon Quick Sight 中基于机器学习的功能。本节深入讨论该算法的技术细节，适用于那些希望详细了解该算法的工作原理的人员。不需要阅读该信息即可使用这些功能。  | 

Amazon Quick Sight 使用随机砍伐森林 (RCF) 算法的内置版本。以下各节解释了这意味着什么，以及如何在 Amazon Quick Sight 中使用它。

首先，让我们看一下涉及的一些术语：
+ 异常 – 由于与同一样本中的大多数其他内容不同而被划分出来的某些内容。也称为异常值、例外、偏差等。
+ 数据点 – 数据集中的一个独立单元，或者简而言之，一行。不过，如果在不同维度上使用度量，则一个行可能具有多个数据点。
+ 决策树 – 是一种可视化算法决策过程的方法，用于评估数据中的模式。
+ 预测 – 根据当前和过去的行为预测将来的行为。
+ 模型 – 算法的数学表示形式或算法学习的内容。
+ 季节性 – 在时间序列数据中循环发生的重复行为模式。
+ 时间序列 – 一个字段或列中的日期或时间数据的有序集合。

**Topics**
+ [异常检测与预测之间有何区别？](difference-between-anomaly-detection-and-forecasting.md)
+ [什么是 RCF？](what-is-random-cut-forest.md)
+ [RCF 如何应用于检测异常](how-does-rcf-detect-anomalies.md)
+ [RCF 如何应用于生成预测](how-does-rcf-generate-forecasts.md)
+ [机器学习和 RCF 参考](learn-more-about-machine-learning-and-rcf.md)

# 异常检测与预测之间有何区别？
<a name="difference-between-anomaly-detection-and-forecasting"></a>

异常检测确定异常值及其贡献驱动因素，用于回答“发生了什么不常发生的情况？” 预测回答问题“如果一切继续按预期发生，将来会发生什么情况？” 允许预测的数学还使我们能够询问“如果一些事情发生了变化，则会发生什么情况？” 

异常检测和预测都是从检查当前已知数据点开始的。Amazon Quick Sight 异常检测从已知数据开始，因此它可以确定已知集之外的内容，并将这些数据点识别为异常（异常值）。Amazon Quick Sight预测不包括异常数据点，并坚持已知模式。预测关注数据分布的既定模式。而异常检测关注偏离预期的数据点。每种方法从不同的方向接近决策制定。

# 什么是 RCF？
<a name="what-is-random-cut-forest"></a>

*随机砍伐森林* (RCF) 是一种特殊类型的*随机森林* (RF) 算法，是一种在机器学习中广泛使用且获得成功的技术。它需要使用一组随机数据点，将它们砍伐为相同数量的点，然后构建一组模型。相比之下，模型对应于决策树，因此被命名为森林。由于 RFs 无法轻易地以增量方式更新， RCFs 因此在树结构中发明了旨在允许增量更新的变量。

作为非监督型算法，RCF 使用聚类分析检测时间序列数据中的峰值、周期性或季节性中断以及数据点异常。随机砍伐森林可用作动态数据流（或时间索引的数值序列）的概要或概述。有关流的问题答案来自于该概要。以下特性描述了流以及我们如何与异常检测和预测建立关联：
+ *流式处理算法* 是一种占用内存较少的在线算法。在线算法在看到第 **(t\$11)** 个点之前就按时间 **t** 索引的输入点做出决策。小内存允许以低延迟生成答案的敏捷算法并允许用户与数据交互。
+ 在异常检测和预测中需要尊重*在线* 算法中按时间进行的排序。如果我们已经知道后天会发生什么，那么预测明天会发生什么就不是预测，而只是插入一个未知的缺失值。同样，今天引入的新产品可能是异常，但不一定在下一个季度末仍然是异常。

# RCF 如何应用于检测异常
<a name="how-does-rcf-detect-anomalies"></a>

人类可以轻松地辨别与其余数据不同的数据点。通过构建决策树的“森林”，然后监控新数据点如何更改森林，RCF 做着相同的事情。

*异常*是一个数据点，会将您的注意力从正常点上移开，比如黄色花田里一朵红花的图像。此“注意力转移”编码为树（即 RCF 中的模型）的（预期）位置被输入点占据。理念是创建其中每个决策树均来自为训练算法而采样的数据分区的森林。在更技术的角度看，每个树为样本生成特定类型的二进制空间分区树。当 Amazon Quick Sight 对数据进行采样时，RCF 会为每个数据点分配一个异常分数。它为看似异常的数据点提供较高的分数。该分数与树中的点的最终深度大致成反比。Random Cut Forest 通过从组成的每棵树计算平均分数，并根据样本大小缩放结果，从而分配异常分数。

将聚合不同模型的投票或分数，因为每个模型本身是一种弱预测器。当数据点的分数与最近的分数明显不同时，Amazon Quick Sight 会将其识别为异常。划定为异常的内容取决于应用程序。

这篇论文《[基于随机切入森林的直播异常检测》](http://proceedings.mlr.press/v48/guha16.pdf)提供了这种 state-of-the-art在线异常检测（时间序列异常检测）的多个示例。 RCFs用于连续的数据段或 “瓦片” 数据，其中直接数据段中的数据充当最新数据段的上下文。基于 RCF 的异常检测算法的先前版本对整个瓦形进行评分。Amazon Quick Sight 中的算法还提供了当前扩展环境中异常的大致位置。此大致位置在检测异常存在延迟的场景中非常有用。出现延迟是因为任何算法都需要将“以前看到的偏差”描绘为“异常偏差”，这在一些时间后进行。

# RCF 如何应用于生成预测
<a name="how-does-rcf-generate-forecasts"></a>

要预测静止时间序列中的下一个值，RCF 算法回答问题“在我们具有候选值后，最可能实现什么？” 它使用 RCF 中的单个树搜索最佳候选项。将聚合不同树中的候选项，因为每个树本身是弱预测器。聚合还允许生成分位数错误。此过程重复 **t** 次来预测未来的第 **t** 个值。

Amazon Quick Sight 中的算法叫做 *BIFOCAL*。它使用两个 RCFs来创建 CALibrated 商业智能FOrest 架构。第一个 RCF 用于筛选出异常并提供弱预测，该预测由第二个 RCF 纠正。总之，此方法提供了比其他广泛可用的算法（如 ETS）显著可靠的预测。

Amazon Quick Sight 预测算法中的参数数量明显少于其他广泛使用的算法。这样，它就现成可用，无需人针对大量时间序列数据点进行调整。随着更多数据在特定时间序列中积累，Amazon Quick Sight 中的预测可以根据数据漂移和模式变化进行调整。对于显示趋势的时间序列，首先执行趋势检测以使序列成为静止的。将使用趋势投影回该静止序列的预测。

由于算法依赖高效的在线算法 (RCF)，它可以支持交互式“假设”查询。在这些中，一些预测可更改并视为假设来提供条件预测。这是在分析过程中探索“假设”场景的能力来源。

# 机器学习和 RCF 参考
<a name="learn-more-about-machine-learning-and-rcf"></a>

要了解更多有关机器学习和此算法的信息，我们推荐以下资源：
+ [可靠的随机砍伐森林 (RRCF)：没有数学说明](https://www.linkedin.com/pulse/robust-random-cut-forest-rrcf-math-explanation-logan-wilt/)一文提供了清晰的说明但没有数学方程式。
+ [*The Elements of Statistical Learning: Data Mining, Inference, and Prediction*, Second Edition (Springer Series in Statistics)](https://www.amazon.com/Elements-Statistical-Learning-Prediction-Statistics/dp/0387848576) 一书提供了机器学习的全面基础。
+ [Random Cut Forest Based Anomaly Detection On Streams](http://proceedings.mlr.press/v48/guha16.pdf)**，这是一篇学术论文，深入介绍了异常检测和预测技术并提供了示例。

其他 AWS 服务中出现了不同的区域合作框架方法。如果要了解如何在其他服务中使用 RCF，请参阅以下内容：
+ *适用于 Apache Flink 的 Amazon 托管服务 SQL 参考：RANDOM\$1CUT\$1FOREST 和* [https://docs.aws.amazon.com/kinesisanalytics/latest/sqlref/sqlrf-random-cut-forest.html](https://docs.aws.amazon.com/kinesisanalytics/latest/sqlref/sqlrf-random-cut-forest.html)
+ *Amazon SageMaker 开发者指南：*[随机砍伐森林 (RCF) 算法](https://docs.aws.amazon.com/sagemaker/latest/dg/randomcutforest.html)。[Machine Learning for Business](https://www.amazon.com/Machine-Learning-Business-Doug-Hudgeon/dp/1617295833/ref=sr_1_3)（2018 年 10 月）中的[随机砍伐森林算法](https://freecontent.manning.com/the-randomcutforest-algorithm/)一章中也解释了这种方法。

# 在 Amazon Quick Sight 中使用机器学习见解的数据集要求
<a name="ml-data-set-requirements"></a>

要开始使用 Amazon Quick Sight 的机器学习功能，您需要连接或导入数据。您可以使用现有的 Amazon Quick Sight 数据集或创建一个新的数据集。您可以直接查询与 SQL 兼容的源，或将数据摄取到 SPICE 中。

数据必须具有以下属性：
+  至少一个指标（例如，销售额、订单数、发货单位数、注册量等）。
+  至少一个类别维度（例如，产品类别、通道、分段、行业等）。将忽略具有 NULL 值的类别。
+ 异常检测至少需要 15 个数据点才能进行训练。例如，如果您的数据粒度是每日，则需要至少 15 天的数据。如果粒度是每月，您至少需要 15 个月的数据。
+ 数据越多，预测效果越好。确保您的数据集具有足够的历史数据，以实现最佳结果。例如，如果您的数据粒度是每日，则需要至少 38 天的数据。如果粒度是每月，您至少需要 43 个月的数据。下面是每种时间粒度的要求：
  + 年：32 个数据点
  + 季度：35 个数据点
  + 月：43 个数据点
  + 周：35 个数据点
  + 日：38 个数据点
  + 小时：39 个数据点
  + 分钟：46 个数据点
  + 秒：46 个数据点
+ 如果您要分析异常或预测，则还需要至少一个日期维度。

如果您没有数据集来开始，可以下载此示例数据集：[ML Insights 示例数据集 VI](samples/ml-insights.csv.zip)。在数据集就绪后，通过该数据集创建新分析。

# 在 Amazon Quick Sight 中使用见解
<a name="computational-insights"></a>

在 Amazon Quick Sight 中，您可以将 ready-to-use分析计算作为小组件添加到分析中。您可以通过两种方式使用见解：
+ **建议的见解**

  Amazon Quick Sight 会根据其对您在视觉对象中输入的数据的解读来创建建议见解列表。该列表基于上下文而更改。换句话说，您可能会看到不同的建议，具体取决于您添加到视觉对象中的字段和您选择的视觉对象类型。例如，如果您有时间序列可视化，则您的见解可能包括 period-over-period变化、异常和预测。在您将更多可视化添加到分析中时，会生成更多建议的见解。
+ **自定义见解**

  利用自定义见解，您可以创建自己的计算，使用自己的单词为显示在小部件中的字段提供上下文。在创建自定义见解后，您可以将其添加到分析中，然后选择要使用的计算类型。然后，您可以添加文本和格式以使其按所需方式显示。您还可以添加更多字段、计算和参数。

您可以将建议的见解和自定义见解的任意组合添加到分析中，来创建最符合您的目的的决策环境。

**Topics**
+ [添加建议的洞察](adding-suggested-insights.md)
+ [将自定义洞察添加到分析中](adding-insights.md)

# 添加建议的洞察
<a name="adding-suggested-insights"></a>

使用以下过程将建议的见解添加到分析中。

在开始之前，请确保您的数据集符合[在 Amazon Quick Sight 中使用机器学习见解的数据集要求](ml-data-set-requirements.md)中列出的条件。

1. 从向视觉对象中添加了几个字段的分析开始。

1. 在左侧，选择 **Insights (见解)**。“**见解**” 面板打开，并显示ready-to-use 建议的见解列表。

   每个视觉对象还会在其顶部边界显示一个小框来显示有多少个见解可用于该视觉对象。您可以选择此框以打开 **Insights (见解)** 面板，然后它打开您最近打开的视图。

   向下滚动以预览更多见解。

   显示的见解是由您选择在视觉对象中包含的字段的数据类型控制的。每次更改您的视觉对象时都会生成此列表。如果您进行了更改，请检查 **Insights (见解)** 以查看新见解。要获得特定的见解，请参阅[将自定义洞察添加到分析中](adding-insights.md)。

1. （可选）为见解之一打开包含更多选项的上下文菜单。为此，请选择洞察右上角的省略号（**…**）。

   每种见解类型的选项有所不同。您可以与之交互的选项包括：
   + **更改时间序列聚合** – 更改为年、季度、月、周、日、小时或分钟。
   + **分析指标的促进因素** – 选择要分析的促进因素和时间范围。
   + **显示所有异常** – 浏览此时间范围内的异常。
   + **编辑预测** – 选择预测长度、预测间隔和季节性。
   + **聚焦**或**排除** – 放大或缩小您的维度数据。
   + **显示详细信息** – 查看有关最近的异常（异常值）的更多信息。
   + 提供有关见解在分析中的实用性的反馈。

1. 通过选择洞察标题旁边的加号（**\$1**）来将建议的洞察添加到分析中。

1. （可选）将见解添加到分析中后，自定义您希望其显示的叙述。为此，请选择 **v** 形视觉对象菜单，然后选择 **Customize narrative (自定义叙述)**。有关更多信息，请参阅 [使用 Amazon Quick Sight 创建自动叙事](narratives-creating.md)。

   如果您的见解针对异常（异常值），则还可以更改异常检测作业的设置。为此，请选择 **Configure anomaly (配置异常)**。有关更多信息，请参阅 [针对异常值分析设置 ML 支持的异常检测](anomaly-detection-using.md)。

1. （可选）要从分析中删除见解，请选择视觉对象右上角的 **v** 形视觉对象菜单。然后选择**删除**。

# 将自定义洞察添加到分析中
<a name="adding-insights"></a>

如果您不想使用任何建议的见解，可以创建自己的自定义见解。使用以下过程创建自定义计算见解。

1. 从现有分析开始。在顶部菜单栏上，选择**添加 \$1**。然后选择 **Add Insight (添加见解)**。

   将向分析中添加新见解的容器。

1. 请执行以下操作之一：
   + 从列表中选择要使用的计算。在您选择每个项目时，会显示该见解的输出示例。在找到要使用的项目时，请选择 **Select (选择)**。
   + 退出该屏幕并手动自定义见解。未配置的见解具有 **Customize insight (自定义见解)** 按钮。选择该按钮以打开 **Configure narrative (配置叙述)** 屏幕。有关使用表达式编辑器的更多信息，请参阅[使用 Amazon Quick Sight 创建自动叙事](narratives-creating.md)。

   由于将要启动见解创建，它不基于现有的视觉对象。将见解添加到分析中时，它会显示一条注释，指示完成您的请求所需的数据种类。例如，它可能要求 **1 dimension in Time (1 个时间维度)**。在这种情况下，您向 **Time (时间)** 字段井中添加维度。

1. 在您具有正确数据后，按照任何剩余屏幕提示完成自定义见解的创建。

1. （可选）要从分析中删除见解，请选择视觉对象右上角的 **v** 形视觉对象菜单。然后选择**删除**。

# 使用 Amazon Quick Sight 创建自动叙事
<a name="narratives-creating"></a>

*自动叙述* 是一个自然语言摘要小部件，它显示描述性文本而不是图表。您可以将这些小部件嵌入整个分析中以突出显示关键见解和注解。您不必通过视觉对象、向下钻取、比较值和重新检查想法来进行筛选以得出结论。您还不必尝试理解数据的含义，或与同事讨论不同的解释。相反，您可以通过数据来推断结论，并将其显示在简明陈述的分析中。单个解释可由每个人分享。

Amazon Quick Sight 会自动解释控制面板中的图表和表格，并以自然语言提供许多建议的见解。您可选择的建议的见解是现成的，并附带有单词、计算和函数。但如果您愿意，也可以更改它们。您还可以设计自己的见解。作为控制面板的作者，您可以充分灵活地自定义计算和语言以满足您的需求。您可以使用叙述来用普通语言有效地描述数据。

**注意**  
叙述独立于机器学习。仅在您向它们添加了预测或异常（异常值）计算时，它们才使用 ML。

**Topics**
+ [包含自动叙述的洞察](auto-narratives.md)
+ [使用叙述表达式编辑器](using-narratives-expression-editor-step-by-step.md)
+ [表达式编辑器工作区](using-narratives-expression-editor-menus.md)
+ [正在添加 URLs](using-narratives-expression-editor-urls.md)
+ [使用自动叙述计算](auto-narrative-computations.md)

# 包含自动叙述的洞察
<a name="auto-narratives"></a>

在分析中添加见解（也称为自动叙述）时，您可以从以下模板中进行选择。在下面的列表中，它们通过示例进行定义。每个定义包含自动叙述正常工作所需的最少字段的列表。如果您仅使用 **Insights (见解)** 选项卡上的建议见解，请选择相应的字段以在建议的见解列表中显示见解。

有关自定义自动叙述的更多信息，请参阅[使用自动叙述计算](auto-narrative-computations.md)。
+ **排名最后** – 例如，按销售收入排序的最后三个州。要求您在 **Categories (类别)** 字段井中具有至少一个维度。
+ **最小变化者** – 例如，按销售收入排序的最后三种所售产品。要求您在 **Time (时间)** 字段井中具有至少一个维度，并在 **Categories (类别)** 字段井中具有至少一个维度。
+ **预测***（ML 支持的洞察）*– 例如“2016 年 1 月的总销售额预测为 58613 美元。” 要求您在 **Time (时间)** 字段井中具有至少一个维度。
+ **增长率** – 例如“销售额的 3 个月复合增长率为 22.23%。” 要求您在 **Time (时间)** 字段井中具有至少一个维度。
+ **最大值** – 例如“最高月份为 2014 年 11 月，销售额为 112326 美元。” 要求您在 **Time (时间)** 字段井中具有至少一个维度。
+ **指标比较** – 例如“2014 年 12 月的总销售额为 90474 美元，比目标的 81426 美元高 10%。” 要求您在 **Time (时间)** 字段井中具有至少一个维度，并在 **Values (值)** 字段井中具有至少两个度量。
+ **最小值** – 例如“最低月份为 2011 年 2 月，销售额为 4810 美元。” 要求您在 **Time (时间)** 字段井中具有至少一个维度。
+ **异常检测***（ML 支持的洞察）*– 例如，2019 年 1 月 3 日总销售额的前三个异常值及其贡献驱动因素。要求您在 **Time (时间)** 字段井中具有至少一个维度，在 **Values (值)** 字段井中具有至少一个度量，并在 **Categories (类别)** 字段井中具有至少一个维度。
+ **同期增长率** – 例如“2014 年 11 月的总销售额从 77793 美元增加到 112326 美元，增加了 44.39%（34532 美元）。” 要求您在 **Time (时间)** 字段井中具有至少一个维度。
+ **同期迄今为止** ——例如，“2014年11月30日的ear-to-date销售额增长了25.87％（132,236美元），从511,236美元增至643,472美元。” 要求您在 **Time (时间)** 字段井中具有至少一个维度。
+ **排名最前** – 例如，按销售收入排序的前三个州。要求您在 **Categories (类别)** 字段井中具有至少一个维度。
+ **最大变化者** – 例如，2014 年 11 月按销售收入排序的最热卖产品。要求您在 **Time (时间)** 字段井中具有至少一个维度，并在 **Categories (类别)** 字段井中具有至少一个维度。
+ **总聚合** – 例如“总收入为 2297200 美元。” 要求您在 **Time (时间)** 字段井中具有至少一个维度，并在 **Values (值)** 字段井中具有至少一个度量。
+ **唯一值** – 例如“`Customer_IDs` 中有 793 个唯一值。” 要求您在 **Categories (类别)** 字段井中具有至少一个维度。

# 使用叙述表达式编辑器
<a name="using-narratives-expression-editor-step-by-step"></a>

以下演练显示了如何自定义叙述的示例。在本示例中，我们使用同期增长率计算类型。

1. 从现有分析开始。向它添加**同期增长率**见解。执行此操作的最简单方法是选择 \$1 图标，再选择 **Add insight (添加见解)**，然后从列表中选择见解类型。要了解可添加为自动叙述的计算见解类型，请参阅[包含自动叙述的洞察](auto-narratives.md)。

   选择一种见解类型后，选择 **Select (选择)** 以创建小部件。要创建空叙述，请关闭此屏幕而不选择模板。要按照此示例操作，请选择 **Period over period (同期增长率)**。

   如果您在添加见解时选择了视觉对象，则字段井已预配置了日期、指标和类别的字段。这些来自您在创建见解时选择的可视化。可以根据需要自定义字段。

   您只能为新的或现有的见解（基于文本）小部件自定义叙述。您不能向现有视觉对象（基于图表）添加叙述，因为它是不同类型的小部件。

1. 通过选择视觉对象菜单，然后选择 **Customize narrative (自定义叙述)**，在表达式编辑器中编辑叙述。

   在这种情况下，**计算**是预定义的计算（period-over-period、 period-to-date、增长率、最大值、最小值、最高移动值等），您可以在模板中引用这些计算来描述数据。目前，Amazon Quick Sight 支持 13 种不同类型的计算，您可以将其添加到您的见解中。在此示例中，默认添加**PeriodOverPeriod**是因为我们从建议的见解面板中选择**了 “按时间段**划分” 模板。

1. 选择右下角的 **Add computation (添加计算)** 来添加新计算，然后从列表中选择一个。对于本演练，请选择 **Growth rate (增长率)**，然后选择 **Next (下一步)**。

1. 通过选择要计算的期间数来配置计算。默认值为 4，并且这适用于我们的示例。（可选）您可以在屏幕顶部更改计算的名称。但是，对于我们的目的，保留名称不变。
**注意**  
您创建的计算名称在见解中是唯一的。您可以在叙述模板中引用多个相同类型的计算。例如，假设您具有两个指标：销售收入和销量。您可以为每个指标创建增长率计算，只要它们具有不同的名称。  
但是，异常计算不与同一小部件中的任何其他计算类型兼容。异常检测必须独自存在于见解中。要在同一分析中使用其他计算，请将其放入与异常分开的见解中。

   要继续，请选择 **Add (添加)**。

1. 展开右侧的 **Computations (计算)**。属于叙述一部分的计算显示在列表中。在本例中，它是**PeriodOverPeriod**和**GrowthRate**。

1. 在工作区中，在最后的句点后添加以下文本，然后添加空格：**Compounded growth rate for the last**。

1. 接下来，要添加计算，请将光标停留在单词 **last** 之后的空格后。在右侧的下方 **GrowthRate**，选择名为 **Time** Periods 的表达式（只需单击一次即可添加）。

   这样做会插入表达式 **GrowthRate.timePeri** ods，这是您在配置中设置的周期数。**GrowthRate**

1. 用** days is **（前后空格）完成句子，然后添加表达式**GrowthRate。 compoundedGrowthRate.formattedValue**，后跟一个句点 ()。`.`从列表中选择表达式，而不是键入它。但是，您可以在添加之后编辑表达式的内容。  
![\[带有打开表达式列表的表达式编辑器。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/narrative-add-expression.png)
**注意**  
**formattedValue** 表达式返回根据应用于字段上的指标的格式设置格式的字符串。要执行指标数学，请改用 **value**，这将原始值作为整数或小数返回。

1. 添加条件语句和格式。将光标放在模板末尾 `formattedValue` 表达式之后。如有必要，请添加空格。在 **Edit narrative (编辑叙述)** 菜单栏上，选择 **Insert code (插入代码)**，然后从列表中选择 **Inline IF (内联 IF)**。将打开表达式块。

1. 打开表达式块后，从表达式列表中选择**GrowthRate**compoundedGrowthRate****、、**值**。在表达式末尾输入 **>0**。选择**保存**。不要移动您的光标。

   将为条件内容显示提示；输入 **better than expected\$1**，然后选择您刚才输入的文本，并使用顶部的格式工具栏使其变为绿色和粗体。

1. 通过重复上一步，为增长率没有那么好的情况添加另一个表达式块。但这一次，使它为 **<0** 并输入文本 **worse than expected**。使它为红色而不是绿色。

1. 选择**保存**。我们刚刚创建的自定义叙述应如下所示。  
![\[自定义叙述。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/narrative-example-result.png)

表达式编辑器为您提供了复杂的工具来自定义叙述。您还可以引用您为分析或控制面板创建的参数，并使用一组内置函数进行进一步自定义。

**提示**  
要创建空叙述，请依次使用 **\$1** 图标和 **Add insights (添加见解)** 来添加见解。但不选择模板，只是关闭屏幕。  
开始自定义叙述的最佳方法是使用现有模板来了解语法。

# 表达式编辑器工作区
<a name="using-narratives-expression-editor-menus"></a>

使用表达式编辑器自定义叙述，以最好地满足您的业务需求。以下信息概述了表达式编辑器工作区，并列出了可为您的叙述配置的所有菜单选项。有关向您说明如何创建自定义叙述的演练，请参阅 [使用叙述表达式编辑器](using-narratives-expression-editor-step-by-step.md)。

在屏幕右侧是您可以添加到叙述中的项目列表：
+ **计算** – 使用此选项可从该洞察提供的计算中进行选择。您可以展开此列表。
+ **参数** – 使用此选项可选择分析中存在的参数。您可以展开此列表。
+ **函数** – 使用此选项可以从可添加到叙述中的函数中进行选择。您可以展开此列表。
+ **添加计算** – 使用此按钮可创建另一个计算。新计算将显示在 **Computations (计算)** 列表，随时可添加到见解中。

在叙述表达式编辑器的底部，有一个随您工作更新的叙述预览。如果您在叙述中引入错误或叙述为空，则此区域还会显示警报。要查看 ML 支持的洞察（如异常检测或预测）的预览，请在自定义叙述之前至少运行一次洞察计算。

编辑工具位于屏幕顶部。它们提供以下选项：
+ **插入代码** – 您可以从此菜单插入以下代码块：
  + **表达式** – 添加自由格式表达式。
  + **内联 IF** – 添加与现有文本块内联显示的 IF 语句。
  + **内联 FOR** – 添加与现有文本块内联显示的 FOR 语句。
  + **块 IF** – 添加在单独的文本块中显示的 IF 语句。
  + **块 FOR** – 添加在单独的文本块中显示的 FOR 语句。

  IF 和 FOR 语句允许您创建有条件格式化的内容。例如，您可以添加**块 IF** 语句，然后将其配置为将一个整数与计算得到的值进行比较。若要执行此操作，您可以使用以下步骤，[使用叙述表达式编辑器](using-narratives-expression-editor-step-by-step.md)中也展示了这些步骤：

  1. 打开右侧的计算菜单，然后从其中一个计算中选择一个蓝色突出显示的项目。这样做会将项目添加到叙述中。

  1. 在项目上单击一次以打开它。

  1. 输入您要执行的比较。表达式类似于如下：`PeriodOverPeriod.currentMetricValue.value>0`。

  1. 将此表达式保存在弹出编辑器中，该编辑器会提示您输入**条件内容**。

  1. 输入要在见解中显示的内容，然后按照您希望的显示方式进行格式化。或者，如果您愿意，您可以添加图像或 URL，或者为图像添加 URL。
+ **段落** – 此菜单提供更改字体大小的选项：
  + **H1 大标题**
  + H2 标题
  + H3 小标题
  + ¶1 大段落
  + ¶2 段落
  + ¶3 小段落
+ **字体** – 使用此菜单托盘可选择文本格式化选项。其中包括粗体、斜体、下划线、删除线、文本的前景颜色（字母本身）和文本的背景颜色。选择图标以打开某个选项；再次选择该图标可关闭该选项。
+ **格式设置** – 使用此菜单托盘可以选择段落格式设置的选项，包括项目符号列表、左对齐、居中和右对齐。选择图标以打开某个选项，再次选择该图标可关闭选项。
+ **图像** – 使用此图标添加图像 URL。只要链接可访问，图像就会显示在您的见解中。您可以调整图像的大小。要根据条件显示图像，请将图像放入 IF 块中。
+ **URL** – 使用此图标可添加静态或动态 URL。您也可以 URLs 添加到图像中。例如，您可以将交通指示灯图像添加到执行控制面板的洞察中，并提供指向红色、琥珀色和绿色条件的新工作表链接。

# 正在添加 URLs
<a name="using-narratives-expression-editor-urls"></a>

使用叙事表达编辑器编辑菜单上的 **URL** 按钮，可以在叙事中添加静态和动态 URLs （超链接）。您也可以使用以下键盘快捷键：⌘\$1⇧\$1L 或 Ctrl\$1⇧\$1L。

静态 URL 是不会更改的链接，始终打开相同的 URL。动态 URL 是根据您在设置时提供的表达式或参数进行更改的链接。它使用动态求值的表达式或参数构建。

以下是您可以在叙述中添加静态链接的示例：
+ **在 IF 语句中，您可以在条件内容中使用 URL。**如果您这样做，且有一个指标未能达到预期值，您的链接可以向用户发送一个 wiki，其中包含改进该指标的最佳实践列表。
+ **您可以使用以下步骤，通过静态 URL 创建指向同一控制面板中另一个工作表的链接：**

  1. 转到要链接到的工作表。

  1. 复制该工作表的 URL。

  1. 返回叙述编辑器，并使用刚刚复制的 URL 创建链接。

以下是您可以在叙述中添加动态链接的示例：
+ **使用以下步骤通过查询搜索网站。**

  1. 使用以下链接创建 URL。

     ```
     https://google.com?q=<<formatDate(now(),'yyyy-MM-dd')>>
     ```

     此链接向 Google 发送查询，其中包含的搜索文本是以下内容的计算值。

     ```
     formatDate(now(), 'yyyy-MM-dd')
     ```

     如果 `now()` 的值为 `02/02/2020`，则您叙述中的链接包含 `https://google.com?q=2020-02-02`。
+ **创建更新参数的链接。**为此，请创建或编辑链接并将 URL 设置为当前控制面板或分析的 URL。然后添加表达式，将参数值设置为末尾的值，例如 `#p.myParameter=12345`。

  假设以下是您开始使用的控制面板链接。

  ```
  https://us-east-1.quicksight.aws.amazon.com/sn/analyses/00000000-1111-2222-3333-44444444
  ```

  如果您向其添加参数值赋值，则它看起来如下所示。

  ```
  https://us-east-1.quicksight.aws.amazon.com/sn/analyses/00000000-1111-2222-3333-44444444#p.myParameter=12345
  ```

  有关中参数的更多信息 URLs，请参阅[在 URL 中使用参数](parameters-in-a-url.md)。

# 使用自动叙述计算
<a name="auto-narrative-computations"></a>

可以使用该部分帮助您了解在自定义自动叙述时可供使用的函数。仅当您希望更改或在默认计算上构建时才需要自定义叙述。

在创建自动叙述后，将打开表达式编辑器。您还可以通过依次选择视觉对象菜单和 **Customize Narrative (自定义叙述)** 来激活表达式编辑器。要在使用表达式编辑器时添加计算，请选择 **\$1 Add computation (\$1 添加计算)**。

您可以使用以下代码表达式构建自动叙述。可以从标记为 **Insert code (插入代码)** 的列表中获取这些表达式。代码语句可以内联方式（在句子中）或作为块（在列表中）显示。
+ 表达式 – 创建您自己的代码表达式。
+ IF – 在评估条件之后包括表达式的 IF 语句。
+ FOR – 循环访问值的 FOR 语句。

您可以使用以下计算构建自动叙述。您可以使用表达式编辑器而不编辑任何语法，但如果您愿意，也可以自定义它。要与语法交互，请打开自动叙述表达式编辑器中的计算小部件。

**Topics**
+ [针对异常值的 ML 支持的异常检测](anomaly-detection-function.md)
+ [最小变化者计算](bottom-movers-function.md)
+ [排名最低计算](bottom-ranked-function.md)
+ [ML 支持的预测](forecast-function.md)
+ [增长率计算](growth-rate-function.md)
+ [最大值计算](maximum-function.md)
+ [指标比较计算](metric-comparison-function.md)
+ [最小值计算](minimum-function.md)
+ [同期增长率计算](period-over-period-function.md)
+ [期初至今计算](period-to-date-function.md)
+ [最大变化者计算](top-movers-function.md)
+ [排名最高计算](top-ranked-function.md)
+ [聚合总量计算](total-aggregation-function.md)
+ [唯一值计算](unique-values-function.md)

# 针对异常值的 ML 支持的异常检测
<a name="anomaly-detection-function"></a>

ML 支持的异常检测计算搜索您的数据以查找异常值。例如，您可以检测 2019 年 1 月 3 日总销售额的前三个异常值。如果启用贡献分析，您还可以检测每个异常值的关键驱动因素。

要使用该函数，您需要在 **Time (时间)** 字段井中具有至少一个维度，在 **Values (值)** 字段井中具有至少一个度量，并在 **Categories (类别)** 字段井中具有至少一个维度。配置屏幕提供了一个选项，用于分析其他字段作为关键驱动因素的贡献，即使这些字段不在字段井中。

有关更多信息，请参阅 [通过 ML 支持的异常检测功能检测异常值](anomaly-detection.md)。

**注意**  
不能将 ML 支持的异常检测添加到其他计算中，也不能将其他计算添加到异常检测中。

## 计算输出
<a name="anomaly-detection-computation-outputs"></a>

每个函数都会生成一组输出参数。您可以将这些输出添加到自动叙述以自定义它显示的内容。您也可以添加自己的自定义文本。

要找到输出参数，请打开右侧的 **Computations (计算)** 选项卡并找到您要使用的计算。计算的名称来自您创建见解时提供的名称。请通过只单击一次来选择输出参数。如果您单击两次，您将两次添加相同的输出。您可以使用显示在叙述后面的 **`bold monospace font`** 中的项目。
+ `timeField` – 来自**时间**字段井。
  + `name` – 字段的格式化的显示名称。
  + `timeGranularity` – 时间字段粒度（**DAY**、**YEAR** 等等）。
+ `categoryFields` – 来自**类别**字段井。
  + `name` – 字段的格式化的显示名称。
+ `metricField` – 来自**值**字段井。
  + `name` – 字段的格式化的显示名称。
  + `aggregationFunction` – 用于指标的聚合（**SUM**、**AVG** 等等）。
+ `itemsCount` – 此计算中包含的项目数。
+ `items` – 异常项目。
  + `timeValue` – 日期维度中的值。
    + `value` – 异常（异常值）发生点的日期/时间字段。
    + `formattedValue`— 异常时 date/time 字段中的格式化值。
  + `categoryName` – 类别的实际名称（cat1、cat2 等等）。
  + `direction` – x 轴或 y 轴上标识为异常的方向：`HIGH` 或 `LOW`。`HIGH` 表示“高于预期”。`LOW`表示“低于预期”。

    迭代项目时，`AnomalyDetection.items[index].direction` 可以包含 `HIGH` 或 `LOW`。例如，`AnomalyDetection.items[index].direction='HIGH'` 或 `AnomalyDetection.items[index].direction=LOW`。`AnomalyDetection.direction` 可以有一个 `ALL` 的空字符串。例如，`AnomalyDetection.direction=''`。
  + `actualValue` – 异常或异常值发生点处指标的实际值。
    + `value` – 原始值。
    + `formattedValue` – 指标字段格式化的值。
    + `formattedAbsoluteValue` – 指标字段格式化的绝对值。
  + `expectedValue` – 异常（异常值）发生点处指标的预期值。
    + `value` – 原始值。
    + `formattedValue` – 指标字段格式化的值。
    + `formattedAbsoluteValue` – 指标字段格式化的绝对值。

# 最小变化者计算
<a name="bottom-movers-function"></a>

最小变化者计算按日期计算自动叙述的数据集中排名最低的请求类别数。例如，您可以创建一个计算，查找销售收入最低的三种所售产品。

要使用该函数，要求在 **Time (时间)** 字段井中具有至少一个维度并在 **Categories (类别)** 字段井中具有至少一个维度。

## 参数
<a name="bottom-movers-function-parameters"></a>

*name*   
您分配或更改的唯一描述性名称。如果您未创建自己的名称，则会分配一个名称。您可以稍后编辑它。

*日期*   
您要排名的日期维度。

*类别*   
您要排名的类别维度。

*值*   
计算所基于的聚合度量。

*Number of movers (变化者数)*   
要显示的排名结果数。

*Order by (排序依据)*   
要使用的顺序：百分比差值或绝对差值。

## 计算输出
<a name="bottom-movers-computation-outputs"></a>

每个函数都会生成一组输出参数。您可以将这些输出添加到自动叙述以自定义它显示的内容。您也可以添加自己的自定义文本。

要找到输出参数，请打开右侧的 **Computations (计算)** 选项卡并找到您要使用的计算。计算的名称来自您创建见解时提供的名称。请通过只单击一次来选择输出参数。如果您单击两次，您将两次添加相同的输出。以**粗体**显示的项目可用于叙述中。

**注意**  
这些输出参数与最大变化者计算返回的输出参数相同。
+ `timeField` – 来自**时间**字段井。
  + `name` – 字段的格式化的显示名称。
  + `timeGranularity` – 时间字段粒度（**DAY**、**YEAR** 等等）。
+ `categoryField` – 来自**类别**字段井。
  + `name` – 字段的格式化的显示名称。
+ `metricField` – 来自**值**字段井。
  + `name` – 字段的格式化的显示名称。
  + `aggregationFunction` – 用于指标的聚合（**SUM**、**AVG** 等等）。
+ `startTimeValue` – 日期维度中的值。
  + `value` – 原始值。
  + `formattedValue` – 日期时间字段格式化的值。
+ `endTimeValue` – 日期维度中的值。
  + `value` – 原始值。
  + `formattedValue` – 日期时间字段格式化的绝对值。
+ `itemsCount` – 此计算中包含的项目数。
+ `items`：最小变化的项目。
  + `categoryField` – 类别字段。
    + `value` – 类别字段的值（内容）。
    + `formattedValue` – 类别字段的格式化值（内容）。如果字段为 null，这显示“`NULL`”。如果字段为空，这显示“`(empty)`”。
  + `currentMetricValue` – 指标字段的当前值。
    + `value` – 原始值。
    + `formattedValue` – 指标字段格式化的值
    + `formattedAbsoluteValue` – 指标字段格式化的绝对值。
  + `previousMetricValue` – 指标字段的先前值。
    + `value` – 原始值。
    + `formattedValue` – 指标字段格式化的值
    + `formattedAbsoluteValue` – 指标字段格式化的绝对值。
  + `percentDifference` – 指标字段的当前值与先前值之间的百分比差异。
    + `value` – 百分比差异计算的原始值。
    + `formattedValue` – 百分比差异的格式化值（例如，-42%）。
    + `formattedAbsoluteValue` – 百分比差异的格式化绝对值（例如，42%）。
  + `absoluteDifference` – 指标字段的当前值与先前值之间的绝对差异。
    + `value` – 绝对差异计算的原始值。
    + `formattedValue` – 由指标字段的格式首选项中的设置格式化的绝对差异。
    + `formattedAbsoluteValue` – 指标字段格式化的差异的绝对值。

# 排名最低计算
<a name="bottom-ranked-function"></a>

排名最低计算按值计算自动叙述的数据集中排名最低的请求类别数。例如，您可以创建一个计算，查找销售收入最低的三个州。

要使用该函数，您需要在 **Categories (类别)** 字段井中具有至少一个维度。

## 参数
<a name="bottom-ranked-function-parameters"></a>

*name*   
您分配或更改的唯一描述性名称。如果您未创建自己的名称，则会分配一个名称。您可以稍后编辑它。

*类别*   
您要排名的类别维度。

*值*   
计算所基于的聚合度量。

*Number of results*   
要显示的排名结果数。

## 计算输出
<a name="bottom-ranked-computation-outputs"></a>

每个函数都会生成一组输出参数。您可以将这些输出添加到自动叙述以自定义它显示的内容。您也可以添加自己的自定义文本。

要找到输出参数，请打开右侧的 **Computations (计算)** 选项卡并找到您要使用的计算。计算的名称来自您创建见解时提供的名称。请通过只单击一次来选择输出参数。如果您单击两次，您将两次添加相同的输出。以**粗体**显示的项目可用于叙述中。

**注意**  
这些输出参数与排名最高计算返回的输出参数相同。
+ `categoryField` – 来自**类别**字段井。
  + `name` – 字段的格式化的显示名称。
+ `metricField` – 来自**值**字段井。
  + `name` – 字段的格式化的显示名称。
  + `aggregationFunction` – 用于指标的聚合（**SUM**、**AVG** 等等）。
+ `itemsCount` – 此计算中包含的项目数。
+ `items`：排名最低的项目。
  + `categoryField` – 类别字段。
    + `value` – 类别字段的值（内容）。
    + `formattedValue` – 类别字段的格式化值（内容）。如果字段为 null，这显示“`NULL`”。如果字段为空，这显示“`(empty)`”。
  + `metricValue` – 指标字段。
    + `value` – 原始值。
    + `formattedValue` – 指标字段格式化的值。
    + `formattedAbsoluteValue` – 指标字段格式化的绝对值。

## 示例
<a name="bottom-ranked-function-example"></a>

下面的屏幕截图显示了排名最低的计算的默认配置。

![\[排名最低的计算的默认配置。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/bottom-ranked-computation.png)


# ML 支持的预测
<a name="forecast-function"></a>

ML 支持的预测计算根据以前按季节的指标模式预测未来指标。例如，您可以创建一个计算来预测未来六个月的总收入。

要使用该函数，您需要在 **Time (时间)** 字段井中具有至少一个维度。

有关使用预测的详细信息，请参阅[使用 Amazon Quick Sight 预测和创建假设情景](forecasts-and-whatifs.md)。

## 参数
<a name="forecast-function-parameters"></a>

*name*   
您分配或更改的唯一描述性名称。如果您未创建自己的名称，则会分配一个名称。您可以稍后编辑它。

*日期*   
您要排名的日期维度。

*值*   
计算所基于的聚合度量。

*Periods forward (未来的期间)*   
要预测的未来时间段数。范围从 1 到 1,000。

*Periods backward (过去的期间)*   
要作为预测基础的过去时间段数。范围从 0 到 1,000。

*Seasonality (季节性)*   
日历年中包含的季节数。默认设置 **automatic (自动)** 会为您检测此数值。范围从 1 到 180。

## 计算输出
<a name="forecast-computation-outputs"></a>

每个函数都会生成一组输出参数。您可以将这些输出添加到自动叙述以自定义它显示的内容。您也可以添加自己的自定义文本。

要找到输出参数，请打开右侧的 **Computations (计算)** 选项卡并找到您要使用的计算。计算的名称来自您创建见解时提供的名称。请通过只单击一次来选择输出参数。如果您单击两次，您将两次添加相同的输出。以**粗体**显示的项目可用于叙述中。
+ `timeField` – 来自**时间**字段井。
  + `name` – 字段的格式化的显示名称。
  + `timeGranularity` – 时间字段粒度（**DAY**、**YEAR** 等等）。
+ `metricField` – 来自**值**字段井。
  + `name` – 字段的格式化的显示名称。
  + `aggregationFunction` – 用于指标的聚合（**SUM**、**AVG** 等等）。
+ `metricValue` – 指标维度中的值。
  + `value` – 原始值。
  + `formattedValue` – 指标字段格式化的值。
  + `formattedAbsoluteValue` – 指标字段格式化的绝对值。
+ `timeValue` – 日期维度中的值。
  + `value` – 原始值。
  + `formattedValue` – 日期字段格式化的值。
+ `relativePeriodsToForecast` – 最新日期时间记录与上一个预测记录之间的相对期间数量。

# 增长率计算
<a name="growth-rate-function"></a>

增长率计算比较一段时间内的值。例如，您可以创建一个计算以查找三个月的销售复合增长率（以百分比表示）。

要使用该函数，您需要在 **Time (时间)** 字段井中具有至少一个维度。

## 参数
<a name="growth-rate-function-parameters"></a>

*name*   
您分配或更改的唯一描述性名称。如果您未创建自己的名称，则会分配一个名称。您可以稍后编辑它。

*日期*   
您要排名的日期维度。

*值*   
计算所基于的聚合度量。

*Number of periods*   
要用于计算增长率的未来时间段数。

## 计算输出
<a name="growth-rate-computation-outputs"></a>

每个函数都会生成一组输出参数。您可以将这些输出添加到自动叙述以自定义它显示的内容。您也可以添加自己的自定义文本。

要找到输出参数，请打开右侧的 **Computations (计算)** 选项卡并找到您要使用的计算。计算的名称来自您创建见解时提供的名称。请通过只单击一次来选择输出参数。如果您单击两次，您将两次添加相同的输出。以**粗体**显示的项目可用于叙述中。
+ `timeField` – 来自**时间**字段井。
  + `name` – 字段的格式化的显示名称。
  + `timeGranularity` – 时间字段粒度（**DAY**、**YEAR** 等等）。
+ `metricField` – 来自**值**字段井。
  + `name` – 字段的格式化的显示名称。
  + `aggregationFunction` – 用于指标的聚合（**SUM**、**AVG** 等等）。
+ `previousMetricValue` – 指标维度中的先前值。
  + `value` – 原始值。
  + `formattedValue` – 指标字段格式化的值。
  + `formattedAbsoluteValue` – 指标字段格式化的绝对值。
+ `previousTimeValue` – 日期时间维度中的先前值。
  + `value` – 原始值。
  + `formattedValue` – 日期时间字段格式化的值。
+ `compoundedGrowthRate` – 指标字段的当前值与先前值之间的百分比差异。
  + `value` – 百分比差异计算的原始值。
  + `formattedValue` – 百分比差异的格式化值（例如，-42%）。
  + `formattedAbsoluteValue` – 百分比差异的格式化绝对值（例如，42%）。
+ `absoluteDifference` – 指标字段的当前值与先前值之间的绝对差异。
  + `value` – 绝对差异计算的原始值。
  + `formattedValue` – 由指标字段的格式首选项中的设置格式化的绝对差异。
  + `formattedAbsoluteValue` – 指标字段格式化的差异的绝对值。

# 最大值计算
<a name="maximum-function"></a>

最大值计算按值查找最大维度。例如，您可以创建一个计算来查找收入最高的月份。

要使用该函数，您需要在 **Time (时间)** 字段井中具有至少一个维度。

## 参数
<a name="maximum-function-parameters"></a>

*name*   
您分配或更改的唯一描述性名称。如果您未创建自己的名称，则会分配一个名称。您可以稍后编辑它。

*日期*   
您要排名的日期维度。

*值*   
计算所基于的聚合度量。

## 计算输出
<a name="maximum-computation-outputs"></a>

每个函数都会生成一组输出参数。您可以将这些输出添加到自动叙述以自定义它显示的内容。您也可以添加自己的自定义文本。

要找到输出参数，请打开右侧的 **Computations (计算)** 选项卡并找到您要使用的计算。计算的名称来自您创建见解时提供的名称。请通过只单击一次来选择输出参数。如果您单击两次，您将两次添加相同的输出。以**粗体**显示的项目可用于叙述中。

**注意**  
这些输出参数与最小值计算返回的输出参数相同。
+ `timeField` – 来自**时间**字段井。
  + `name` – 字段的格式化的显示名称。
  + `timeGranularity` – 时间字段粒度（**DAY**、**YEAR** 等等）。
+ `metricField` – 来自**值**字段井。
  + `name` – 字段的格式化的显示名称。
  + `aggregationFunction` – 用于指标的聚合（**SUM**、**AVG** 等等）。
+ `metricValue` – 指标维度中的值。
  + `value` – 原始值。
  + `formattedValue` – 指标字段格式化的值。
  + `formattedAbsoluteValue` – 指标字段格式化的绝对值。
+ `timeValue` – 日期时间维度中的值。
  + `value` – 原始值。
  + `formattedValue` – 日期时间字段格式化的值。

# 指标比较计算
<a name="metric-comparison-function"></a>

指标比较计算比较不同度量中的值。例如，您可以创建一个计算来比较两个值，例如实际销售额与目标销售额。

要使用该函数，您需要在 **Time (时间)** 字段井中具有至少一个维度，并在 **Values (值)** 字段井中具有至少两个度量。

## 参数
<a name="metric-comparison-function-parameters"></a>

*name*   
您分配或更改的唯一描述性名称。如果您未创建自己的名称，则会分配一个名称。您可以稍后编辑它。

*日期*   
您要排名的日期维度。

*值*   
计算所基于的聚合度量。

*目标值*   
要与该值进行比较的字段。

## 计算输出
<a name="metric-comparison-computation-outputs"></a>

每个函数都会生成一组输出参数。您可以将这些输出添加到自动叙述以自定义它显示的内容。您也可以添加自己的自定义文本。

要找到输出参数，请打开右侧的 **Computations (计算)** 选项卡并找到您要使用的计算。计算的名称来自您创建见解时提供的名称。请通过只单击一次来选择输出参数。如果您单击两次，您将两次添加相同的输出。以**粗体**显示的项目可用于叙述中。
+ `timeField` – 来自**时间**字段井。
  + `name` – 字段的格式化的显示名称。
  + `timeGranularity` – 时间字段粒度（**DAY**、**YEAR** 等等）。
+ `fromMetricField` – 来自**值**字段井。
  + `name` – 字段的格式化的显示名称。
  + `aggregationFunction` – 用于指标的聚合（**SUM**、**AVG** 等等）。
+ `fromMetricValue` – 指标维度中的值。
  + `value` – 原始值。
  + `formattedValue` – 指标字段格式化的值。
  + `formattedAbsoluteValue` – 指标字段格式化的绝对值。
+ `toMetricField` – 来自**值**字段井。
  + `name` – 字段的格式化的显示名称。
  + `aggregationFunction` – 用于指标的聚合（**SUM**、**AVG** 等等）。
+ `toMetricValue` – 指标维度中的当前值。
  + `value` – 原始值。
  + `formattedValue` – 指标字段格式化的值。
  + `formattedAbsoluteValue` – 指标字段格式化的绝对值。
+ `timeValue` – 日期时间维度中的值。
  + `value` – 原始值。
  + `formattedValue` – 日期时间字段格式化的值。
+ `percentDifference` – 指标字段的当前值与先前值之间的百分比差异。
  + `value` – 百分比差异计算的原始值。
  + `formattedValue` – 百分比差异的格式化值（例如，-42%）。
  + `formattedAbsoluteValue` – 百分比差异的格式化绝对值（例如，42%）。
+ `absoluteDifference` – 指标字段的当前值与先前值之间的绝对差异。
  + `value` – 绝对差异计算的原始值。
  + `formattedValue` – 由指标字段的格式首选项中的设置格式化的绝对差异。
  + `formattedAbsoluteValue` – 指标字段格式化的差异的绝对值。

# 最小值计算
<a name="minimum-function"></a>

最小值计算按值查找最小维度。例如，您可以创建一个计算来查找收入最低的月份。

要使用该函数，您需要在 **Time (时间)** 字段井中具有至少一个维度。

## 参数
<a name="minimum-function-parameters"></a>

*name*   
您分配或更改的唯一描述性名称。如果您未创建自己的名称，则会分配一个名称。您可以稍后编辑它。

*日期*   
您要排名的日期维度。

*值*   
计算所基于的聚合度量。

## 计算输出
<a name="maximum-computation-outputs"></a>

每个函数都会生成一组输出参数。您可以将这些输出添加到自动叙述以自定义它显示的内容。您也可以添加自己的自定义文本。

要找到输出参数，请打开右侧的 **Computations (计算)** 选项卡并找到您要使用的计算。计算的名称来自您创建见解时提供的名称。请通过只单击一次来选择输出参数。如果您单击两次，您将两次添加相同的输出。以**粗体**显示的项目可用于叙述中。

**注意**  
这些输出参数与最大值计算返回的输出参数相同。
+ `timeField` – 来自**时间**字段井。
  + `name` – 字段的格式化的显示名称。
  + `timeGranularity` – 时间字段粒度（**DAY**、**YEAR** 等等）。
+ `metricField` – 来自**值**字段井。
  + `name` – 字段的格式化的显示名称。
  + `aggregationFunction` – 用于指标的聚合（**SUM**、**AVG** 等等）。
+ `metricValue` – 指标维度中的值。
  + `value` – 原始值。
  + `formattedValue` – 指标字段格式化的值。
  + `formattedAbsoluteValue` – 指标字段格式化的绝对值。
+ `timeValue` – 日期时间维度中的值。
  + `value` – 原始值。
  + `formattedValue` – 日期时间字段格式化的值。

# 同期增长率计算
<a name="period-over-period-function"></a>

同期增长率计算比较两个不同时间段的值。例如，您可以创建一个计算，以了解销售额自上个时间段以来的增长或减少程度。

要使用该函数，您需要在 **Time (时间)** 字段井中具有至少一个维度。

## 参数
<a name="period-over-period-function-parameters"></a>

*name*   
您分配或更改的唯一描述性名称。如果您未创建自己的名称，则会分配一个名称。您可以稍后编辑它。

*日期*   
您要排名的日期维度。

*值*   
计算所基于的聚合度量。

## 计算输出
<a name="period-over-period-computation-outputs"></a>

每个函数都会生成一组输出参数。您可以将这些输出添加到自动叙述以自定义它显示的内容。您也可以添加自己的自定义文本。

要找到输出参数，请打开右侧的 **Computations (计算)** 选项卡并找到您要使用的计算。计算的名称来自您创建见解时提供的名称。请通过只单击一次来选择输出参数。如果您单击两次，您将两次添加相同的输出。以**粗体**显示的项目可用于叙述中。
+ `timeField` – 来自**时间**字段井。
  + `name` – 字段的格式化的显示名称。
  + `timeGranularity` – 时间字段粒度（**DAY**、**YEAR** 等等）。
+ `metricField` – 来自**值**字段井。
  + `name` – 字段的格式化的显示名称。
  + `aggregationFunction` – 用于指标的聚合（**SUM**、**AVG** 等等）。
+ `previousMetricValue` – 指标维度中的先前值。
  + `value` – 原始值。
  + `formattedValue` – 指标字段格式化的值。
  + `formattedAbsoluteValue` – 指标字段格式化的绝对值。
+ `previousTimeValue` – 日期时间维度中的先前值。
  + `value` – 原始值。
  + `formattedValue` – 日期时间字段格式化的值。
+ `currentMetricValue` – 指标维度中的当前值。
  + `value` – 原始值。
  + `formattedValue` – 指标字段格式化的值。
  + `formattedAbsoluteValue` – 指标字段格式化的绝对值。
+ `currentTimeValue` – 日期时间维度中的当前值。
  + `value` – 原始值。
  + `formattedValue` – 日期时间字段格式化的值。
+ `percentDifference` – 指标字段的当前值与先前值之间的百分比差异。
  + `value` – 百分比差异计算的原始值。
  + `formattedValue` – 百分比差异的格式化值（例如，-42%）。
  + `formattedAbsoluteValue` – 百分比差异的格式化绝对值（例如，42%）。
+ `absoluteDifference` – 指标字段的当前值与先前值之间的绝对差异。
  + `value` – 绝对差异计算的原始值。
  + `formattedValue` – 由指标字段的格式首选项中的设置格式化的绝对差异。
  + `formattedAbsoluteValue` – 指标字段格式化的差异的绝对值。

## 示例
<a name="period-over-period-computation-example"></a>

**创建同期增长率计算**

1. 在要更改的分析中，选择**添加洞察**。

1. 对于**计算类型**，选择**同期增长率**，然后选择**选择**。

1. 在您创建的新见解中，添加要比较的时间维度和值维度字段。在下面的屏幕截图中，`Order Date` 和 `Sales (Sum)` 已添加到洞察中。选中这两个字段后，Quick Sight会显示最近一个月的年初至今销售额以及与上个月相比的百分比差异。  
![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/periodOverPeriod1.png)

1. （可选）要进一步自定义洞察，请打开视觉对象菜单并选择**自定义叙述**。在出现的**编辑叙述**窗口中，从**计算**列表中拖放所需的字段，然后选择**保存**。

# 期初至今计算
<a name="period-to-date-function"></a>

期初至今计算评估指定的期初至今的值。例如，您可以创建一个计算来找出您的 year-to-date销售收入。

要使用该函数，您需要在 **Time (时间)** 字段井中具有至少一个维度。

## 参数
<a name="period-to-date-function-parameters"></a>

*name*   
您分配或更改的唯一描述性名称。如果您未创建自己的名称，则会分配一个名称。您可以稍后编辑它。

*日期*   
您要排名的日期维度。

*值*   
计算所基于的聚合度量。

*Time granularity (时间粒度)*   
要用于计算的日期粒度，例如“本年迄今”。

## 计算输出
<a name="period-to-date-computation-outputs"></a>

每个函数都会生成一组输出参数。您可以将这些输出添加到自动叙述以自定义它显示的内容。您也可以添加自己的自定义文本。

要找到输出参数，请打开右侧的 **Computations (计算)** 选项卡并找到您要使用的计算。计算的名称来自您创建见解时提供的名称。请通过只单击一次来选择输出参数。如果您单击两次，您将两次添加相同的输出。以**粗体**显示的项目可用于叙述中。
+ `timeField` – 来自**时间**字段井。
  + `name` – 字段的格式化的显示名称。
  + `timeGranularity` – 时间字段粒度（**DAY**、**YEAR** 等等）。
+ `metricField` – 来自**值**字段井。
  + `name` – 字段的格式化的显示名称。
  + `aggregationFunction` – 用于指标的聚合（**SUM**、**AVG** 等等）。
+ `previousMetricValue` – 指标维度中的先前值。
  + `value` – 原始值。
  + `formattedValue` – 指标字段格式化的值。
  + `formattedAbsoluteValue` – 指标字段格式化的绝对值。
+ `previousTimeValue` – 日期时间维度中的先前值。
  + `value` – 原始值。
  + `formattedValue` – 日期时间字段格式化的值。
+ `currentMetricValue` – 指标维度中的当前值。
  + `value` – 原始值。
  + `formattedValue` – 指标字段格式化的值。
  + `formattedAbsoluteValue` – 指标字段格式化的绝对值。
+ `currentTimeValue` – 日期时间维度中的当前值。
  + `value` – 原始值。
  + `formattedValue` – 日期时间字段格式化的值。
+ `periodGranularity` – 此计算的期间粒度（**MONTH**、**YEAR** 等等）。
+ `percentDifference` – 指标字段的当前值与先前值之间的百分比差异。
  + `value` – 百分比差异计算的原始值。
  + `formattedValue` – 百分比差异的格式化值（例如，-42%）。
  + `formattedAbsoluteValue` – 百分比差异的格式化绝对值（例如，42%）。
+ `absoluteDifference` – 指标字段的当前值与先前值之间的绝对差异。
  + `value` – 绝对差异计算的原始值。
  + `formattedValue` – 由指标字段的格式首选项中的设置格式化的绝对差异。
  + `formattedAbsoluteValue` – 指标字段格式化的差异的绝对值。

## 示例
<a name="period-to-date-computation-example"></a>

**创建期初至今计算**

1. 在要更改的分析中，选择**添加洞察**。

1. 对于**计算类型**，选择**起初至今**，然后选择**选择**。

1. 在您创建的新洞察中，添加要比较的时间维度和值维度字段。在下面的屏幕截图中，`Order Date` 和 `Sales (Sum)` 已添加到洞察中。选中这两个字段后，Quick Sight会显示最近一个月的年初至今销售额以及与上个月相比的百分比差异。  
![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/periodOverPeriod1.png)

1. （可选）要进一步自定义洞察，请打开视觉对象菜单并选择**自定义叙述**。在出现的**编辑叙述**窗口中，从**计算**列表中拖放所需的字段，然后选择**保存**。

# 最大变化者计算
<a name="top-movers-function"></a>

最大变化者计算按日期计算自动叙述的数据集中排名最高的请求类别数。例如，您可以创建一个计算，以按一个时间段内的销售收入查找最热卖产品。

要使用该函数，您需要在 **Time (时间)** 字段井中具有至少一个维度，并在 **Categories (类别)** 字段井中具有至少一个维度。

## 参数
<a name="top-movers-function-parameters"></a>

*name*   
您分配或更改的唯一描述性名称。如果您未创建自己的名称，则会分配一个名称。您可以稍后编辑它。

*类别*   
您要排名的类别维度。

*值*   
计算所基于的聚合度量。

*Number of results*   
要查找的排名最高的项目数。

## 计算输出
<a name="top-movers-computation-outputs"></a>

每个函数都会生成一组输出参数。您可以将这些输出添加到自动叙述以自定义它显示的内容。您也可以添加自己的自定义文本。

要找到输出参数，请打开右侧的 **Computations (计算)** 选项卡并找到您要使用的计算。计算的名称来自您创建见解时提供的名称。请通过只单击一次来选择输出参数。如果您单击两次，您将两次添加相同的输出。以**粗体**显示的项目可用于叙述中。

**注意**  
这些输出参数与最小变化者计算返回的输出参数相同。
+ `timeField` – 来自**时间**字段井。
  + `name` – 字段的格式化的显示名称。
  + `timeGranularity` – 时间字段粒度（**DAY**、**YEAR** 等等）。
+ `categoryField` – 来自**类别**字段井。
  + `name` – 字段的格式化的显示名称。
+ `metricField` – 来自**值**字段井。
  + `name` – 字段的格式化的显示名称。
  + `aggregationFunction` – 用于指标的聚合（**SUM**、**AVG** 等等）。
+ `startTimeValue` – 日期维度中的值。
  + `value` – 原始值。
  + `formattedValue` – 日期时间字段格式化的值。
+ `endTimeValue` – 日期维度中的值。
  + `value` – 原始值。
  + `formattedValue` – 日期时间字段格式化的绝对值。
+ `itemsCount` – 此计算中包含的项目数。
+ `items`: 最大变化的项目。
  + `categoryField` – 类别字段。
    + `value` – 类别字段的值（内容）。
    + `formattedValue` – 类别字段的格式化值（内容）。如果字段为 null，这显示“`NULL`”。如果字段为空，这显示“`(empty)`”。
  + `currentMetricValue` – 指标字段的当前值。
    + `value` – 原始值。
    + `formattedValue` – 指标字段格式化的值。
    + `formattedAbsoluteValue` – 指标字段格式化的绝对值。
  + `previousMetricValue` – 指标字段的先前值。
    + `value` – 原始值。
    + `formattedValue` – 指标字段格式化的值。
    + `formattedAbsoluteValue` – 指标字段格式化的绝对值。
  + `percentDifference` – 指标字段的当前值与先前值之间的百分比差异。
    + `value` – 百分比差异计算的原始值。
    + `formattedValue` – 百分比差异的格式化值（例如，-42%）。
    + `formattedAbsoluteValue` – 百分比差异的格式化绝对值（例如，42%）。
  + `absoluteDifference` – 指标字段的当前值与先前值之间的绝对差异。
    + `value` – 绝对差异计算的原始值。
    + `formattedValue` – 由指标字段的格式首选项中的设置格式化的绝对差异。
    + `formattedAbsoluteValue` – 指标字段格式化的差异的绝对值。

# 排名最高计算
<a name="top-ranked-function"></a>

排名最高计算按值查找排名最高的维度。例如，您可以创建一个计算，查找销售收入最高的三个州。

要使用该函数，您需要在 **Categories (类别)** 字段井中具有至少一个维度。

## 参数
<a name="top-ranked-function-parameters"></a>

*name*   
您分配或更改的唯一描述性名称。如果您未创建自己的名称，则会分配一个名称。您可以稍后编辑它。

*类别*   
您要排名的类别维度。

*值*   
计算所基于的聚合度量。

*Number of results*   
要查找的排名最高的项目数。

## 计算输出
<a name="top-ranked-computation-outputs"></a>

每个函数都会生成一组输出参数。您可以将这些输出添加到自动叙述以自定义它显示的内容。您也可以添加自己的自定义文本。

要找到输出参数，请打开右侧的 **Computations (计算)** 选项卡并找到您要使用的计算。计算的名称来自您创建见解时提供的名称。请通过只单击一次来选择输出参数。如果您单击两次，您将两次添加相同的输出。以**粗体**显示的项目可用于叙述中。

**注意**  
这些输出参数与排名最低计算返回的输出参数相同。
+ `categoryField` – 来自**类别**字段井。
  + `name` – 字段的格式化的显示名称。
+ `metricField` – 来自**值**字段井。
  + `name` – 字段的格式化的显示名称。
  + `aggregationFunction` – 用于指标的聚合（**SUM**、**AVG** 等等）。
+ `itemsCount` – 此计算中包含的项目数。
+ `items`：排名最高的项目。
  + `categoryField` – 类别字段。
    + `value` – 类别字段的值（内容）。
    + `formattedValue` – 类别字段的格式化值（内容）。如果字段为 null，这显示“`NULL`”。如果字段为空，这显示“`(empty)`”。
  + `metricValue` – 指标字段。
    + `value` – 原始值。
    + `formattedValue` – 指标字段格式化的值。
    + `formattedAbsoluteValue` – 指标字段格式化的绝对值。

# 聚合总量计算
<a name="total-aggregation-function"></a>

聚合总量计算创建值的总计。例如，您可以创建一个计算来查找总收入。

要使用该函数，您需要在 **Time (时间)** 字段井中具有至少一个维度，并在 **Values (值)** 字段井中具有至少一个度量。

## 参数
<a name="total-aggregation-function-parameters"></a>

*name*   
您分配或更改的唯一描述性名称。如果您未创建自己的名称，则会分配一个名称。您可以稍后编辑它。

*值*   
计算所基于的聚合度量。

## 计算输出
<a name="total-aggregation-computation-outputs"></a>

每个函数都会生成一组输出参数。您可以将这些输出添加到自动叙述以自定义它显示的内容。您也可以添加自己的自定义文本。

要找到输出参数，请打开右侧的 **Computations (计算)** 选项卡并找到您要使用的计算。计算的名称来自您创建见解时提供的名称。请通过只单击一次来选择输出参数。如果您单击两次，您将两次添加相同的输出。以**粗体**显示的项目可用于叙述中。
+ `categoryField` – 类别字段。
  + `name` – 类别字段的显示名称。
+ `metricField` – 来自**值**字段井。
  + `name` – 字段的格式化的显示名称。
  + `aggregationFunction` – 用于指标的聚合（**SUM**、**AVG** 等等）。
+ `totalAggregate` – 指标聚合的总值。
  + `value` – 原始值。
  + `formattedValue` – 指标字段格式化的值。
  + `formattedAbsoluteValue` – 指标字段格式化的绝对值。

# 唯一值计算
<a name="unique-values-function"></a>

唯一值计算用于统计类别字段中的唯一值。例如，您可以创建一个计算来计算维度中唯一值数量，例如您拥有的客户数

要使用该函数，您需要在 **Categories (类别)** 字段井中具有至少一个维度。

## 参数
<a name="unique-values-function-parameters"></a>

*name*   
您分配或更改的唯一描述性名称。如果您未创建自己的名称，则会分配一个名称。您可以稍后编辑它。

*类别*   
您要排名的类别维度。

## 计算输出
<a name="unique-values-computation-outputs"></a>

每个函数都会生成一组输出参数。您可以将这些输出添加到自动叙述以自定义它显示的内容。您也可以添加自己的自定义文本。

要找到输出参数，请打开右侧的 **Computations (计算)** 选项卡并找到您要使用的计算。计算的名称来自您创建见解时提供的名称。请通过只单击一次来选择输出参数。如果您单击两次，您将两次添加相同的输出。以**粗体**显示的项目可用于叙述中。
+ `categoryField` – 类别字段。
  + `name` – 类别字段的显示名称。
+ `uniqueGroupValuesCount` – 此计算中包含的唯一值的数量。

# 通过 ML 支持的异常检测功能检测异常值
<a name="anomaly-detection"></a>

Amazon Quick Sight 使用久经考验的亚马逊技术，对数百万个指标持续运行 ML 支持的异常检测，以发现数据中隐藏的趋势和异常值。该工具使您能够获得通常埋藏在聚合中，不能通过手动分析扩展得到的深刻洞察。有了 ML 支持的异常检测后，您可以在数据中查找异常值而无需手动分析、自定义开发或机器学习领域的专业知识。

如果Amazon Quick Sight检测到您可以分析异常情况或对数据进行一些预测，它会在您的视觉效果中通知您。

异常检测在 `eu-central-2` 欧洲（苏黎世）区域不可用。

**重要**  
ML 支持的异常检测是一项计算密集型任务。在开始使用它之前，可以通过分析要使用的数据量来了解一下成本。我们提供了基于您每月处理的指标量的阶梯定价模型。

**Topics**
+ [异常或异常值检测的概念](anomaly-detection-outliers-and-key-drivers.md)
+ [针对异常值分析设置 ML 支持的异常检测](anomaly-detection-using.md)
+ [使用 ML 支持的异常检测和贡献分析探索异常值和关键驱动因素](anomaly-exploring.md)

# 异常或异常值检测的概念
<a name="anomaly-detection-outliers-and-key-drivers"></a>

Amazon Quick Sight 使用*异常*一词来描述不属于整体分布模式的数据点。异常是一个科学术语，还可以通过许多其他词汇表示，包括异常值、偏差、奇异值、例外值、不规则值、怪异值等。您使用的术语可以取决于所执行的分析类型，取决于使用的数据类型，甚至仅仅取决于团队的偏好。这些异常数据点代表了在某些方面异常的实体，即人物、地点、事物或时间。

人类很容易识别模式并发现与众不同的东西。我们的感官为我们提供了这些信息。如果模式很简单，并且只有少量数据，则可以轻松绘制图形来突出显示数据中的异常值。以下是一些简单的例子：
+ 几个蓝色气球中的一个红色气球
+ 一匹遥遥领先的赛马
+ 一个在课堂上走神的孩子
+ 在线订单数增加但发运减少的一天
+ 一个身体康复的人，而其他人没有

某些数据点表示重要事件，而其他数据点表示随机发生的事件。分析过程根据哪些驱动因素（关键驱动因素）对事件的发生有贡献，来发现值得调查的数据。问题对于数据分析至关重要。为什么会发生这件事？ 它与什么有关？ 事件只发生一次还是发生了多次？ 可以做些什么来鼓励或阻止与此类似的事件？ 

了解差异存在的方式和原因以及这些差异中是否存在模式，需要进行更多的探究。没有机器学习的帮助，每个人都可能得出不同的结论，因为每个人有不同的经验和信息。因此，每个人可能会做出稍有不同的业务决策。如果需要考虑大量的数据或变量，则所需的分析可能会相当多。

ML 支持的异常检测可识别因果关系和相关性，使您能够制定数据驱动的决策。您仍可以进行控制，定义希望作业如何处理您的数据。您可以指定自己的参数，并选择其他选项，例如在贡献分析中识别关键驱动因素。您也可以使用默认设置。以下部分将引导您完成设置过程，并提供有关可用选项的说明。

# 针对异常值分析设置 ML 支持的异常检测
<a name="anomaly-detection-using"></a>

使用以下各节中的步骤开始检测异常值、检测异常并识别导致异常的关键驱动因素。

**Topics**
+ [查看异常和预测通知](anomaly-detection-adding-from-visuals.md)
+ [添加 ML 洞察以检测异常值和关键驱动因素](anomaly-detection-adding-anomaly-insights.md)
+ [对关键驱动因素使用贡献分析](anomaly-detection-adding-key-drivers.md)

# 查看异常和预测通知
<a name="anomaly-detection-adding-from-visuals"></a>

Amazon Quick Sight 会在视觉上通知您，它会检测到异常情况、关键驱动因素或预测机会。您可以按照提示设置异常检测或基于该视觉对象中的数据进行预测。

1. 在现有折线图中，在视觉对象小组件的菜单中查找洞察通知。

1. 选择灯泡图标以显示通知。

1. 如果您想了解有关 ML 洞察的更多信息，可以按照屏幕提示添加 ML 洞察。

# 添加 ML 洞察以检测异常值和关键驱动因素
<a name="anomaly-detection-adding-anomaly-insights"></a>

您可以添加用于检测*异常*的 ML 洞察，异常是看似显著的异常值。要开始使用，您需要为自己的洞察创建一个小组件，也称为*自动叙述*。配置选项时，可以在屏幕右侧的**预览**窗格中查看洞察的有限屏幕截图。

在您的洞察小组件中，您最多可以添加五个不是计算字段的维度字段。在字段井中，**类别**的值表示 Amazon Quick Sight 用于拆分指标的维度值。例如，假设您正在分析所有产品类别和产品的收入 SKUs。有 10 个产品类别，每个类别有 10 个产品 SKUs。Amazon Quick Sight 按照 100 个唯一组合对指标进行拆分，并对拆分的每个组合进行异常检测。

以下步骤说明了如何执行此操作，以及如何添加贡献分析以检测导致每个异常的关键驱动因素。您可以稍后添加贡献分析，如 [对关键驱动因素使用贡献分析](anomaly-detection-adding-key-drivers.md) 中所述。

**设置异常值分析，包括主要驱动因素**

1. 打开您的分析，在工具栏中选择**见解**，然后选择**添加**。从列表中，选择 **Anomaly detection (异常检测)** 和 **Select (选择)**。

1. 按照新小部件上的屏幕提示操作，它会告诉您如何为见解选择字段。必须添加至少一个日期、一个度量和一个维度。

1. 在小部件上选择 **Get started (开始)**。此时将显示配置屏幕。

1. 在**计算选项**下，为以下选项选择值。

   1. 对于**要分析的组合**，请选择以下选项之一：

      1. **分层**

         如果要按层次分析字段，请选择此选项。例如，如果您选择日期 (T)、度量 (N) 和三个维度类别（C1、C2 和 C3），Quick Sight 会按层次分析字段，如下所示。

         ```
         T-N, T-C1-N, T-C1-C2-N, T-C1-C2-C3-N
         ```

      1. **精确**

         如果您只想分析“类别”字段井中列出的字段的精确组合，请选择此选项。例如，如果您选择日期 (T)、度量 (N) 和三个维度类别（C1、C2 和 C3），Quick Sight 将仅按类别字段的列出顺序分析它们的精确组合，如下所示。

         ```
         T-C1-C2-C3-N
         ```

      1. **全部**

         如果您想分析“类别”字段井中的所有字段组合，请选择此选项。例如，如果您选择日期 (T)、度量 (N) 和三个维度类别（C1、C2 和 C3），Quick Sight 会分析所有字段组合，如下所示。

         ```
         T-N, T-C1-N, T-C1-C2-N, T-C1-C2-C3-N, T-C1-C3-N, T-C2-N, T-C2-C3-N, T-C3-N
         ```

      如果您只选择日期和度量，Quick Sight 会先按日期分析字段，然后按度量分析字段。

      在**要分析的字段**部分中，您可以看到字段井中用于参考的字段列表。

   1. 在**名称**中，输入不含空格的描述性字母数字名称，或者选择默认值。这为计算提供了名称。

      如果您计划编辑自动显示在小部件上的叙述，则可以使用该名称来识别此小部件的计算。如果您计划编辑自动叙述，并且分析中有其他类似的计算时，可自定义名称。

1. 在**显示选项**部分，选择以下选项以自定义洞察小组件中显示的内容。无论显示什么，您仍然可以探索所有结果。

   1. **要显示的最大异常数** – 要在叙述小组件中显示的异常值数量。

   1. **严重性** – 要在洞察小组件中显示的异常的最低严重性级别。

      *严重性级别* 是一个异常分数范围，其特征是该范围中包含的最低实际异常分数。所有分数较高的异常都包含在范围内。如果将严重性设置为**低**，则洞察会显示排名介于低和非常高之间的所有异常。如果将严重性设置为 **Very high (非常高)**，则见解仅显示具有最高异常分数的异常。

      可以使用以下选项：
      + **非常高** 
      + **高及以上** 
      + **中等及以上** 
      + **低及以上** 

   1. **方向** – 要识别为异常的值在 x 轴或 y 轴上的方向。可从以下选项中进行选择：
      + **高于预期**将较高的值识别为异常。
      + **低于预期**将较低的值识别为异常。
      + **[ALL]** 将识别所有异常值，包括高值和低值（默认设置）。

   1. **增量** – 输入用于识别异常的自定义值。任何高于阈值的数量均视为异常。此处的值会更改分析中洞察的工作方式。在此部分，您可以设置以下内容：
      + **绝对值** – 要使用的实际值。例如，假设这个值是 48。然后，当一个值和预期值之间的差大于 48 时，Amazon Quick Sight 会将值识别为异常。
      + **百分比** – 要使用的百分比阈值。例如，假设这个值是 12.5%。然后，当值与预期值之间的差异大于 12.5% 时，Amazon Quick Sight 会将值识别为异常。

   1. **排序依据** – 为结果选择排序方法。有些方法基于 Amazon Quick Sight 生成的异常分数。对于看起来异常的数据点，Amazon Quick Sight 会给出更高的分数。您可以使用以下任意选项：
      + **加权异常分数** – 异常分数乘以实际值和预期值之差的绝对值的对数。此分数始终是正数。
      + **异常分数** – 分配给此数据点的实际异常分数。
      + **与预期值的加权差** – 异常分数乘以实际值和预期值之差（默认）。
      + **与预期值的差** – 实际值与预期值之间的实际差（即，实际值-预期值）。
      + **实际值** – 未应用公式的实际值。

1. 在**计划选项**部分，您可以设置计划以自动运行洞察的重新计算。仅为已发布的控制面板运行计划。在分析中，您可以根据需要手动运行它。计划的安排包括以下设置。
   + **发生率** – 希望重新计算运行的频率：每小时、每天、每周或每个月。
   + **计划开始时间** – 开始运行此计划的日期和时间。
   + **时区** – 在其中运行计划的时区。要查看列表，请删除当前条目。

1. 在 “**最佳贡献者**” 部分，将 Amazon Quick Sight 设置为在检测到异常值（异常）时分析关键驱动因素。

   例如，Amazon Quick Sight可以显示促成美国家居装修产品销售激增的主要客户。您最多可以从数据集中添加四个维度。这些维度包括您未添加到此洞察小组件的字段井中的维度。

   对于可用于贡献分析的维度列表，请选择**选择字段**。

1. 选择**保存**以确认您的选择。选择 **Cancel (取消)** 退出而不保存。

1. 从洞察小组件中，选择**立即运行**以运行异常检测并查看您的洞察。

异常检测完成所需的时间取决于要分析的唯一数据点的数量。此过程可能需要几分钟时间（对于最小点数），也可能需要数小时。

当它在后台运行时，您可以对分析执行别的操作。对于此洞察，确保等待它完成，然后再更改配置、编辑叙述或打开**探索异常**页面。

洞察小组件需要至少运行一次才能看到结果。如果您认为状态可能已过期，可以刷新页面。洞察可能为以下状态之一。


| 页面上显示 | Status | 
| --- | --- | 
| Run now (立即运行) 按钮 | 该作业尚未开始。 | 
| 关于 Analyzing for anomalies (分析异常) 的消息 | 作业当前正在运行。 | 
| 关于检测到的异常（异常值）的叙述  | 作业已成功运行。该消息显示此小部件的计算上次更新时间。 | 
| 带有感叹号的警报图标（\$1）  | 此图标表示上次运行期间出现错误。如果还显示叙述，您仍可以使用 Explore anomalies (探索异常) 来使用上一次成功运行的数据。 | 

# 对关键驱动因素使用贡献分析
<a name="anomaly-detection-adding-key-drivers"></a>

Amazon Quick Sight 可以识别导致两个时间点之间度量（指标）异常值的维度（类别）。导致异常值的关键驱动因素可以帮助您回答这个问题：是什么原因导致了这种异常？ 

如果您已经在不使用贡献分析的情况下使用异常检测，则可以启用现有的 ML 洞察来查找关键驱动因素。使用以下步骤添加贡献分析并识别异常值背后的关键驱动因素。您的异常检测洞察需要包括一个时间字段和至少一个聚合指标（SUM、AVERAGE 或 COUNT）。如果您愿意，可以包含多个类别（维度字段），但也可以在不指定任何类别或维度字段的情况下运行贡献分析。

您还可以使用此过程更改或删除作为异常检测关键驱动因素的字段。

**添加贡献分析以识别关键驱动因素**

1. 打开您的分析并找到用于异常检测的现有 ML 洞察。选择洞察小组件以将其突出显示。

1. 从视觉对象的菜单中选择**菜单选项**（**…**）。

1. 选择**配置异常**以编辑设置。

1. **贡献分析（可选）**设置允许 Amazon Quick Sight 在检测到异常值（异常）时分析关键驱动因素。例如，Amazon Quick Sight可以向您显示促成美国家居装修产品销售激增的主要客户。您可以从数据集中添加最多四个维度，包括未添加到此见解小部件的字段井中的维度。

   要查看可用于贡献分析的维度列表，请选择 **Select fields (选择字段)**。

   如果要更改用作关键驱动因素的字段，请更改此列表中启用的字段。如果您全部禁用，Quick Sight 将不会在此洞察中执行任何贡献分析。

1. 要保存更改，请滚动到配置选项底部，然后选择**保存**。要退出而不保存，请选择**取消**。要完全移除这些设置，请选择**删除**。

# 使用 ML 支持的异常检测和贡献分析探索异常值和关键驱动因素
<a name="anomaly-exploring"></a>

您可以通过交互方式探索分析中的异常（也称为异常值）以及贡献因素（关键驱动因素）。可在 ML 支持的异常检测运行后探索该分析。您在此屏幕中所做的更改，在返回分析时不保存。

首先，在洞察中选择**探索异常**。以下屏幕截图显示了首次打开异常屏幕时显示的画面。在此示例中，设置了贡献者分析，并显示了两个关键驱动因素。

![\[显示了贡献者的异常分析。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/anomaly-exploration-v2.png)


屏幕的各个部分从左上到右下包括以下内容：
+ **贡献者**显示关键驱动因素。要查看此部分，您需要在异常配置中设置贡献者。
+ **控件**包含异常探索的设置。
+ **异常的数量**显示一段时间内检测到的异常值。您可以隐藏或显示此图表部分。
+ 您的类别或维度字段的**字段名称**用作显示每个类别或维度异常的图表的标题。

以下部分提供探索异常的各个方面的详细信息。

**Topics**
+ [探索贡献者（关键驱动因素）](exploring-anomalies-key-drivers.md)
+ [异常检测的设置控件](exploring-anomalies-controls.md)
+ [按日期显示和隐藏异常](exploring-anomalies-by-date.md)
+ [按类别或维度探索异常](exploring-anomalies-per-category-or-dimension.md)

# 探索贡献者（关键驱动因素）
<a name="exploring-anomalies-key-drivers"></a>

如果您的异常洞察设置为检测关键驱动因素，Quick Sight 会运行贡献分析以确定哪些类别（维度）正在影响异常值。**贡献者**部分显示在左侧。

**贡献者**包含以下部分：
+ **叙述** – 左上角有一个摘要，描述了指标的任何变化。
+ **排名靠前的贡献者配置** – 选择**配置**来更改要在此部分中使用的贡献者和日期范围。
+ **排序依据** – 设置应用于下面显示的结果的排序。可从以下选项中进行选择：
  + **Absolute difference (绝对差异)** 
  + **Contribution percentage (贡献百分比)**（默认） 
  + **Deviation from expected (与预期的偏差)** 
  + **Percentage difference (差额百分比)** 
+ **排名靠前的贡献者的结果** – 显示在右侧时间轴上选择的时间点的最高贡献者分析的结果。

  贡献分析可识别某个异常的最多四个主要的贡献因素或关键驱动因素。例如，Amazon Quick Sight 可以向您显示促成美国健康产品销售激增的主要客户。当您配置异常时，只有选择在贡献分析中包括字段时才会显示此面板。

  如果此面板未显示而您希望显示，则可以开启它。为此，请转到分析，从洞察的菜单中选择异常配置，然后最多选择四个字段来分析贡献。如果您在排除贡献驱动因素的工作表控件中进行更改，则**贡献**面板将关闭。

# 异常检测的设置控件
<a name="exploring-anomalies-controls"></a>

您可以在屏幕的**控件**部分找到异常检测的设置。您可以通过单击**控件**一词打开和关闭此部分。

其中包括以下设置：
+ **控件** – 当前设置显示在工作区的顶部。您可以通过选择右侧的双箭头图标展开此部分。以下设置可用于探索由 ML 支持的异常检测生成的异常值：
  + **严重性** – 设置探测器对检测到的异常（异常值）的敏感程度。在将阈值设置为**低及以上**时，将会看到较多的异常；在将阈值设置为**高及以上**时，将会看到较少的异常。这种灵敏度是根据 RCF 算法生成的异常分数的标准偏差确定的。默认设置为**中等及以上**。
  + **方向** – 要识别为异常的值在 x 轴或 y 轴上的方向。默认值为 [ALL]。您可以选择以下选项：
    + 设置为**高于预期**，以将较高的值识别为异常。
    + 设置为**低于预期**，以将较低的值识别为异常。
    + 设置为 **[ALL]**，以识别所有异常值，包括高值和低值。
  + **最小差值 – 绝对值** – 输入一个自定义值，用作识别异常的绝对阈值。任何高于此值的数量均视为异常。
  + **最小差值 – 百分比** – 输入一个自定义值，用作识别异常的百分比阈值。任何高于此值的数量均视为异常。
  + **排序依据** – 选择要用于对异常进行排序的方法。它们在屏幕上按首选顺序列出。查看以下列表，了解每种方法的描述。
    + **加权异常分数** – 异常分数乘以实际值和预期值之差的绝对值的对数。此分数始终是正数。
    + **异常分数** – 分配给此数据点的实际异常分数。
    + **与预期值的加权差** –（默认）异常分数乘以实际值和预期值之差。
    + **与预期值的差** – 实际值与预期值之间的实际差（实际值-预期值）。
    + **实际值** – 未应用公式的实际值。
  + **类别** – 一个或多个设置可以出现在其他设置的末尾。对于您添加到类别字段井的每个类别字段，都有一个对应的设置。您可以使用类别设置限制屏幕中显示的数据。

# 按日期显示和隐藏异常
<a name="exploring-anomalies-by-date"></a>

**异常的数量**图表显示一段时间内检测到的异常值。如果您没有看到此图表，则可以通过选择**按日期显示异常**来显示此图表。

此图表显示了时间序列中最新数据点的异常（异常值）。展开后，它会显示以下组件：
+ **异常** – 屏幕中间显示时间序列中最新数据点的异常。显示一个或多个图形，其中一个图表显示指标随时间的变化。要使用此图形，请选择时间轴上的一个点。当前选择的时间点在图形中突出显示，并包括一个菜单，提供对当前指标的贡献进行分析的选项。您也可以不选择特定点，而是将光标拖到时间轴上，显示该时间点的指标值。
+ **按日期显示异常** – 如果选择**按日期显示异常**，则另一个图形将显示每个时间点有多少显著异常。可以在此图表中查看每个条的上下文菜单的详细信息。
+ **时间轴调整** – 每个图形在日期下都有一个时间轴调整工具，您可以使用该工具压缩、展开或选择要查看的时间段。

# 按类别或维度探索异常
<a name="exploring-anomalies-per-category-or-dimension"></a>

**探索异常**屏幕的主要部分锁定在屏幕的右下角。无论屏幕上有多少其他部分处于打开状态，它都会一直留在此处。如果存在多个异常，则可以向外滚动以突出显示。该图表按颜色范围显示异常，并显示它们在一段时间内的发生位置。

![\[探索异常屏幕。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/anomaly-exploration-1.png)


每个类别或维度都有一个单独的图表，该图表使用字段名称作为图表标题。每个图表都包含以下组件：
+ **配置警报** – 如果您正在从控制面板中探索异常，请选择此按钮订阅警报和贡献分析（如果已配置）。您可以为严重性级别（中、高，等等）设置警报。您可以获得 **Higher than expected (高于预期)**、**Lower than expected (低于预期)** 或“ALL (全部)”的前五个警报。控制面板读取器可以为自己配置警报。如果您已从分析中打开**探索异常**页面，则该页面不会显示此按钮。
**注意**  
配置警报的功能仅在已发布的控制面板中可用。
+ **状态** – 在**异常**标头下方，状态标签显示有关上次运行的信息。例如，您可能会看到“2018 年 11 月 17 日的收入异常”。此标签告诉您有多少指标被处理，在多久前处理的。您可以选择该链接来了解详细信息，例如忽略了多少指标。

# 使用 Amazon Quick Sight 预测和创建假设情景
<a name="forecasts-and-whatifs"></a>

使用机器学习支持的预测，您可以简单地预测关键业务指标。point-and-click 无需机器学习方面的专业知识。Amazon Quick Sight 中的内置机器学习算法旨在处理复杂的现实场景。Amazon Quick Sight 使用机器学习来帮助提供比传统方式更可靠的预测。

例如，假设您是一位业务经理。您要预测销售额，看看到年底能否完成销售目标。或者，假设您预计两周内会有笔大交易，您想知道这将如何影响您的整体预测。

您可以使用多个季节性级别来预测您的业务收入（例如，具有每周和季度趋势的销售额）。Amazon Quick Sight 会自动排除数据中的异常情况（例如，价格下跌或促销导致的销售激增），使其不影响预测。您也不必清理和重新准备缺失值的数据，因为 Amazon Quick Sight 会自动处理这个问题。此外，借助 ML 支持的预测，您可以执行交互式假设分析，以确定满足业务目标所需的增长轨迹。

## 使用预测和假设情景
<a name="using-forecasts"></a>

可以将预测小部件添加到现有分析中，并将其发布为控制面板。要分析假设情景，请使用分析，而不是控制面板。借助 ML 支持的预测，Amazon Quick Sight 使您能够预测复杂的真实场景，例如具有多个季节性的数据。它会自动排除那些标识为和推定为缺失值的异常值。

使用以下过程将图形预测添加到分析中，并探索假设情景。

尽管以下过程用于图形预测，但您也可以在洞察小组件中添加预测作为叙述。要了解更多信息，请参阅[使用 Amazon Quick Sight 创建自动叙事](narratives-creating.md)。

基于机器学习的预测与[小](small-multiples.md)倍数不兼容。为确保准确显示数据和预测，请避免在可视化中使用小倍数。

**向分析中添加图形预测**

1. 创建使用单个日期字段和最多三个指标（度量）的视觉对象。

1. 在视觉对象右上角的菜单上，选择**菜单选项**图标（三个点），然后选择**添加预测**。

   Quick Sight 使用 ML 自动分析历史数据，并显示未来 14 个周期的图形预测。预测属性适用于视觉对象中的所有指标。如果您想对每个指标进行单独的预测，可以考虑为每个指标创建单独的视觉对象，并为每个指标添加预测。  
![\[折线图视觉对象的图像，其中预测了三个指标。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/forecast2.png)

1. 在左侧的**预测属性**面板上，自定义一个或多个以下设置：
   + **预测长度** – 设置**未来的期间**进行预测，设置**过去的期间**查找预测所基于的模式。
   + **预测间隔** – 设置预测的估计范围。这将改变围绕预测线的可能性范围的宽度。
   + **季节性** – 设置可预测的季节性数据模式所涉及的时间段数。范围为 1–180，默认设置为**自动**。
   + **预测边界** – 设置最小和/或最大预测值，以防止预测值高于或低于指定值。例如，如果您的预测预测公司下个月将招聘的新员工人数为负数，则可以将预测边界最小值设置为零。这可以防止预测值降至零以下。

   要保存更改，选择 **Apply (应用)**。

   如果您的预测包含多个指标，则可以通过选择橙色区间内的任意位置来隔离其中一个预测。执行该操作时，其他预测将消失。再次选择隔离的预测区间以使其重新出现。

1. 通过在图表上选择预测的数据点（橙色波段中），然后从上下文菜单中选择 **What-if analysis (假设分析)** 来分析假设情景。

   **假设分析**面板在左侧打开。设置以下选项：
   + **情景** – 设置日期的目标，或设置时间范围的目标。
   + **日期** – 如果您要为特定日期设置目标，请在此处输入该日期。如果您使用的是时间范围，则设置开始日期和结束日期。
   + **目标** – 为指标设定目标值。

   Amazon Quick Sight 会调整预测以实现目标。
**注意**  
**假设分析**选项不可用于多指标预测。如果您想对预测执行假设情景，则视觉对象应仅包含一个指标。

1. 通过选择 **Apply (应用)** 来保留更改。要放弃更改，请关闭 **What-if analysis (假设分析)** 面板。

   如果保留更改，则您会看到针对目标而调整的新预测和无假设时的原始预测。

   假设分析在视觉对象上表示为指标线上的一个点。您可以将鼠标悬停在预测线的数据点上来查看详细信息。

以下是您可以执行的其他操作：
+ 要与假设分析交互或删除假设分析，请选择指标线上的点。
+ 要创建其他假设情景，请先关闭假设分析，然后在指标线上选择新点。

**注意**  
假设分析只能存在于分析中，不能存在于控制面板中。

# 带快速瞄准功能的生成式商业智能
<a name="quicksight-gen-bi"></a>

**注意**  
 由 Amazon Bedrock 提供支持：Amazon Q in Quick 建立在 Amazon Bedrock 之上，包括在 Amazon Bedrock 中实现的[自动滥用检测](https://docs.aws.amazon.com//bedrock/latest/userguide/abuse-detection.html)，以加强安全、安保和负责任地使用人工智能。

通过 Amazon Quick chat，您可以利用生成式 BI 创作体验，创建数据的执行摘要，提问和回答数据问题，并生成数据故事。

要访问与你的任务相关的所有 Quick Sight Generative BI 功能，请选择任何 Quick 页面右上角的火花图标。在打开的窗格中，聊天会根据您正在执行的任务的上下文显示所有可用的内容。例如，如果您正在进行分析，则可以构建计算、编辑视觉对象、设置问答或询问有关数据的问题。如果您在控制面板中工作，则可以创建数据故事、生成执行摘要或询问有关控制面板的问题。

**注意**  
生成式 BI 功能并非在所有 AWS 地区都可用。要查看生成式 BI 功能可用的区域列表，请参阅 [Quick 中支持 AWS 区域 Amazon Q](regions.md#regions-aqs)

使用以下主题了解有关生成式 BI 的更多信息。

**Topics**
+ [开始使用生成式 BI](generative-bi-get-started.md)
+ [借助 Amazon Q Business 增强亚马逊快速洞察力](generative-bi-q-business.md)
+ [生成式 BI 创作体验](generative-bi-author-experience.md)
+ [创建执行摘要](gen-bi-executive-summaries.md)
+ [创作问答](gen-bi-author-q-and-a.md)
+ [通过 Amazon Quick Sight 中的控制面板管理主题权限](gen-bi-manage-topic-permissions.md)
+ [在 Amazon Quick Sight 中开启控制面板问答体验](dashboard-qa.md)
+ [问答 null 值支持](gen-bi-q-and-a-null-support.md)
+ [通过自定义说明提高问答准确性](gen-bi-improve-qa-accuracy-with-custom-instructions.md)
+ [使用生成式 BI 提问和回答数据问题](gen-bi-data-q-and-a.md)
+ [选择退出生成式 BI](generative-bi-opt-out.md)
+ [使用 Amazon Quick Sight 主题](topics.md)
+ [在 Amazon Quick Sight 中处理数据故事](working-with-stories.md)
+ [在 Amazon Quick Sight 中处理场景](scenarios.md)

# 开始使用生成式 BI
<a name="generative-bi-get-started"></a>

要开始使用 Quick Sight Generative BI 功能，请将账户的用户升级为管理员专业版、Author Pro 或 Reader Pro 角色。Pro 角色授予用户访问与分配给用户的角色相关的所有生成式 BI 功能的权限。专业版用户可以与其他用户共享生成式问答主题。要了解 Quick 中的不同用户角色可以使用哪些生成式 BI 功能，请参阅下表。要了解订阅名称如何映射到用户角色，请参阅[了解 Amazon Quick 订阅和角色](https://docs.aws.amazon.com/quicksight/latest/user/user-types.html#subscription-role-mapping)。

**注意**  
如果作者 Pro 或管理员 Pro 用户与非 Pro 作者和读者共享了生成式问答主题，则非 Pro 作者和读者仍可访问该主题。如果读者 Pro、作者 Pro 或管理员 Pro 与非 Pro 作者和读者共享了数据故事，则非 Pro 作者和读者也可以访问数据故事。


| 特征名称 | 功能描述 | 读者 | 作者 | Admin | 读者 Pro | 作者 Pro | 管理员 Pro | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
|  [使用生成式 BI 创建数据故事](working-with-stories-create.md)  |  构建数据故事，通过视觉对象、见解和想法来解释您的数据，以帮助改善您的业务。  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  | 
|  [在 Amazon Quick Sight 中查看生成的数据故事](working-with-stories-view.md)  |  查看与您共享的叙述性数据故事。  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是\$1  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是\$1  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是\$1  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  | 
|  [创作问答](gen-bi-author-q-and-a.md)  |  使用 Quick Sight 仪表板生成式问答创建和完善主题。  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  | 
|  [使用生成式 BI 提问和回答数据问题](gen-bi-data-q-and-a.md)  |  询问有关数据的问题，以通过多数据对象答案加速数据驱动的决策。  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是\$1  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是\$1  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是\$1  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  | 
|  [创建执行摘要](gen-bi-executive-summaries.md)  |  从 Quick Sight 仪表板中获取关键见解的执行摘要。  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  | 
|  [生成式 BI 创作体验](generative-bi-author-experience.md)  |  创建分析以构建视觉对象、计算并使用自然语言完善现有视觉对象。  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  | 

\$12024 年 4 月 30 日或之后创建的账户中的非 Pro 角色可以访问与他们共享的问答主题。如果您的 Quick 账户是在 2024 年 4 月 30 日之前创建的，并且您想选择使用此新功能，请联系您的 AWS 账户团队。

任何 Quick 管理员都可以按照以下步骤将用户升级为 Pro 角色。

**将用户升级为 Pro 角色**

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

1. 选择右上角的用户图标，然后选择**快速管理**。

1. 选择**管理用户**以打开**管理用户**页面。

1. 要更改现有用户的角色，请在**管理用户**表中找到该用户，然后从**角色**下拉列表中选择要授予他们的角色。

有关管理 Quick 用户的更多信息，请参阅[在 Amazon Quick 中管理用户访问权限](managing-users.md)。

# 借助 Amazon Q Business 增强亚马逊快速洞察力
<a name="generative-bi-q-business"></a>

Amazon Quick 账户管理员可以将他们的 Quick 账户关联到 Amazon Q Business，从而利用非结构化数据源增强见解。[Amazon Q Business](https://aws.amazon.com//q/business/) 是一款生成式人工智能助手，可帮助您的团队更智能地工作。它可以根据企业系统中的信息回答问题、提供摘要、生成内容并安全地完成任务。

将 Quick 账户与 Amazon Q Business 集成后，用户现在可以利用这个庞大的组织知识库以及结构化数据分析。这种集成将来自Quick的定量数据与来自各种业务文档和应用程序的定性信息相结合，从而可以获得更全面、更丰富的情境见解。

有关将您的 Amazon Q Business 账户与 Quick 关联的更多信息，请参阅[创建快速集成的应用程序](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/create-application-quicksight.html)。

使用以下主题在 Quick 中配置 Amazon Q Business 应用程序。

**Topics**
+ [注意事项](#generative-bi-q-business-considerations)
+ [在 Amazon Quick Sight 中配置亚马逊 Q Business 应用程序](generative-bi-q-business-configure.md)
+ [将 Quick 账户关联到现有的亚马逊 Q 企业版应用程序](generative-bi-q-business-link-existing-account.md)
+ [断开亚马逊 Q 企业版应用程序与 Amazon Quick 账户的连接](generative-bi-q-business-delete-connection.md)

## 注意事项
<a name="generative-bi-q-business-considerations"></a>

以下限制适用于 Amazon Q Business 应用程序。
+ Quick 和 Amazon Q Business 必须存在于同一个 AWS 账户中。不支持跨账户调用。
+ Quick 和 Amazon Q Business 账户必须位于同一 AWS 区域。不支持跨区域调用。有关所有支持的 Quick Regions 的列表，请参阅[Quick 中支持 AWS 区域 Amazon Q](regions.md#regions-aqs)。有关所有受支持的 Amazon Q Business 区域的列表，请参阅 [Service quotas for Amazon Q Business](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/quotas-regions.html)。

  如果您的 Quick 账户存在于多个区域，则可以将每个地区的一个 Amazon Q Business 应用程序关联到 Quick 账户。例如，如果您的 Quick 账户位于美国东部（弗吉尼亚北部）和美国西部（俄勒冈），则一个位于美国东部（弗吉尼亚北部）的 Amazon Q Business 应用程序和一个位于美国西部（俄勒冈）的 Amazon Q Business 应用程序可以关联到 Quick 账户。
+ 集成的 Quick 和 Amazon Q Business 账户需要使用相同的身份识别方法。例如，如果 Quick 账户使用 IAM 身份中心进行身份管理，则与之集成的 Amazon Q Business 账户也必须使用 IAM 身份中心进行身份管理。
+ 与 Quick 用户和群组关联的电子邮件地址用于在 Amazon Q Business 中执行授权检查。

# 在 Amazon Quick Sight 中配置亚马逊 Q Business 应用程序
<a name="generative-bi-q-business-configure"></a>

使用以下步骤将 Amazon Quick 账户与 Amazon Q Business 关联起来

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

1. 选择右上角的用户图标，然后选择**快速管理**。

1. 选择 **Security & permissions (安全性和权限)**。

1. 在**快速访问 AWS 服务**页面上，选中 **Amazon Q Business 应用程序**复选框。

1. 在出现的 “**创建与非结构化数据的 Amazon Q Bus** iness 连接” 弹出窗口中，选择您想要连接的快速区域。

1. 选择**完成**。

1. 选择**完成**后，将创建您的 Amazon Q Business 账户并将您重定向到一个新选项卡，其中显示了 Amazon Q Business 控制台的**应用程序**页面。

1. 对于**应用程序**，请选择您在 Quick 中创建的 Amazon Q Business 连接。

1. 您的连接的**应用程序详细信息**页面将打开。选择**索引**选项卡，然后选择**选择索引**。

1. 在出现的弹出窗口中，选择要使用的**索引预置**选项，然后选择**确认**。有关 Amazon Q Business 中的索引的更多信息，请参阅 [Creating a retriever for an Amazon Q Business application](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/select-retriever.html)。

1. 选择索引后，设置数据来源连接。要设置数据来源连接，请选择左侧窗格中**增强功能**菜单的**数据来源**部分。

1. 选择**添加数据来源**。

1. 选择要添加的数据来源。您选择的数据来源决定了配置数据来源连接所需的步骤。有关向 Amazon Q Business 账户添加数据来源的更多信息，请参阅 [Connecting Amazon Q Business data sources](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/supported-connectors.html)。完成设置数据来源配置后，选择**添加数据来源**。

在您为 Amazon Q Business 账户选择索引、检索器和数据源后，您与 Amazon Q Business 的连接即告完成，您可以返回 Quick 控制台。

# 将 Quick 账户关联到现有的亚马逊 Q 企业版应用程序
<a name="generative-bi-q-business-link-existing-account"></a>

如果您已经有一个使用相同身份管理的亚马逊 Q Business 应用程序，并且与您的 Quick 账户位于同一区域，请使用以下步骤将现有的 Amazon Q Business 账户关联到 Quick。

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

1. 选择右上角的用户图标，然后选择**快速管理**。

1. 选择 **Security & permissions (安全性和权限)**。

1. 在**快速访问 AWS 服务**页面上，选中 **Amazon Q Business 应用程序**复选框。

1. 在出现的 “**创建与非结构化数据的 Amazon Q Bus** iness 连接” 弹出窗口中，选择您想要连接的快速区域。

1. 从下拉列表中选择现有 Amazon Q Business 应用程序。
**注意**  
如果您的 Amazon Q Business 应用程序位于与您的 Quick 账户不同的区域，或者该应用程序使用的身份管理选项与您的 Quick 账户不同，则该应用程序不会出现。

从下拉列表中选择 Amazon Q Business 应用程序后，Quick 和 Amazon Q Business 之间的连接就配置好了。

# 断开亚马逊 Q 企业版应用程序与 Amazon Quick 账户的连接
<a name="generative-bi-q-business-delete-connection"></a>

Quick 账户管理员可以使用以下步骤断开 Amazon Q Business 应用程序与 Quick 账户的连接。

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

1. 选择右上角的用户图标，然后选择**快速管理**。

1. 选择 **Security & permissions (安全性和权限)**。

1. 在**快速访问 AWS 服务**页面上，选择**选择应用程序**。

1. 执行以下选项之一：

   1. 要断开单个 Amazon Q Business 应用程序与 Quick 账户的连接，请导航到要删除的应用程序，打开下拉列表，然后选择 “**无**”。

   1. 要断开所有 Amazon Q Business 应用程序与 Quick 账户的连接，请取消选中 **Amazon Q Business 应用程序**复选框。

当您断开亚马逊 Q Business 应用程序与 Quick 账户的连接时，您为 Quick 创建的 Amazon Q Business 应用程序不会被删除。您配置的应用程序、索引、检索器和任何非结构化数据来源连接仍保留在您的 Amazon Q Business 账户中。

# 生成式 BI 创作体验
<a name="generative-bi-author-experience"></a>

通过快速聊天，作者可以使用新的生成式商业智能功能来构建计算字段以及构建和完善视觉效果。使用以下主题来了解有关生成式 BI 创作体验的更多信息。

**Topics**
+ [使用生成式 BI 构建视觉对象](generative-bi-build-visuals.md)
+ [使用生成式 BI 构建计算](generative-bi-build-calculations.md)
+ [使用生成式 BI 优化视觉对象](generative-bi-refine-visual.md)

# 使用生成式 BI 构建视觉对象
<a name="generative-bi-build-visuals"></a>

快速创作者可以使用 “**构建视觉效果**” 按钮来构建根据作者输入生成的自定义视觉对象。作者输入使用自然语言描述新视觉对象的预期结果。您可以输入自定义描述，也可以从 Amazon Q 为分析随附主题生成的建议列表中进行选择。下图显示了通过**构建视觉对象**菜单创建的自定义视觉对象。

**使用生成式 BI 构建视觉对象**

1. 导航到要使用的分析，然后选择 “**提问” 以生成视觉对象**。

1. 在出现的**构建视觉对象**面板中，执行以下步骤。

   1. 描述要可视化的数据。您可以输入自定义描述，也可以从根据分析数据生成的**建议**问题中进行选择。

      在描述要可视化的数据时，您可以将其表述为问题，也可以使用会话短语或筛选条件。例如，您可以输入“上个月有多少人注册了免费试用？” 或“每月免费试用注册人数”。这两个语句都会生成显示每月免费试用注册人数的视觉对象。您还可以收到对模糊语言或关键字样式请求的回复。

      建议的问题可以包括人工智能（AI）生成的问题和人工验证的问题。人工验证的问题会在建议旁边显示复选标记。

   1. 选择**构建**。

   1. 查看生成的视觉效果。要完善视觉对象中显示的数据，请在**构建**栏中输入新的描述，然后选择**构建**。使用向前和向后箭头查看对视觉对象所作的更改，任何进度均不受影响。

   1. 如果对视觉对象满意，请选择**添加到分析**。

# 使用生成式 BI 构建计算
<a name="generative-bi-build-calculations"></a>

使用生成式商业智能，您可以使用自然语言提示在 Amazon Quick Sight 中创建计算字段，如下图所示。有关分析中的计算字段的更多信息，请参阅[添加计算字段](adding-a-calculated-field-analysis.md)。

![\[使用构建工具添加计算字段。\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/gen-bi-build-calculation-1.png)


**使用生成式 BI 构建计算字段**

1. 导航到要使用的分析，然后从页面顶部的工具栏中选择**数据**。然后选择**添加计算字段**。

1. 在出现的计算编辑器中，选择**构建**。

1. 描述您想要实现的计算结果。例如“日销售额的同比变化百分比”。

1. 选择**构建**。

1. 查看返回的表达式，然后选择**插入**将其添加到表达式编辑器。您也可以选择**复制**图标将表达式复制到剪贴板。要删除表达式并重新开始，请选择表达式旁的**删除**图标。

1. 完成后关闭该编辑器。

将计算添加到表达式编辑器后，您必须先为该计算命名，然后才能进行保存。

# 使用生成式 BI 优化视觉对象
<a name="generative-bi-refine-visual"></a>

快速创作者还可以使用自然语言提示在分析中编辑视觉对象，如下图所示。作者可以使用此功能编辑视觉效果，而无需在 Quick UI 中执行手动任务。作者只能使用生成式 BI 来执行 Quick 目前支持的格式化任务。

支持以下类型的编辑：
+ 更改视觉对象类型。
+ 显示或隐藏轴标题、轴标签或数据标签。
+ 显示、隐藏或更改图表的标题。
+ 更改轴和表列名称。
+ 向视觉对象添加字段或字段井。
+ 从视觉对象中移除字段。
+ 更改轴的聚合。
+ 显示或隐藏图例和网格线。
+ 显示或隐藏数据缩放。
+ 向视觉对象添加字段或字段井。
+ 更改或移除视觉对象的排序控件。
+ 更新视觉对象的颜色、颜色渐变、背景颜色或文本颜色的条件格式设置。
+ 更改视觉对象的时间粒度。
+ 调整轴的缩放比例和范围以及最大值和最小值。
+ 更改标题和副标题的字体大小。
+ 显示、隐藏和调整数据标签。
+ 调整列格式（在数字、百分比、日期和货币之间更改）。

**使用生成式 BI 编辑视觉对象**

1. 导航到要编辑的视觉对象，然后选择**使用 Q 编辑**。

1. 描述要执行的任务，然后选择**应用**。

1. 查看视觉对象更改。如果对生成的更改感到满意，请关闭**编辑视觉对象**模式。要撤消更改，请选择**撤消**并输入新提示。

# 创建执行摘要
<a name="gen-bi-executive-summaries"></a>

借助快速聊天，您可以利用大型语言模型 (LLMs) 生成仪表板的执行摘要。执行摘要基于 Quick Sight 对仪表板的建议见解。执行摘要可帮助读者一目了然地找到关键见解，而无需从控制面板的视觉对象精确定位特定数据。

要启用控制面板的执行摘要，请在**发布控制面板**模式中启用**允许执行摘要**。

有关读者如何与执行摘要交互的更多信息，请参阅 [生成 Amazon Quick Sight 控制面板的执行摘要](use-executive-summaries.md)。

当分析包含多个建议见解时，执行摘要效果最好。要查看分析的所有建议见解的列表，请导航到要使用的分析，然后打开**见解**窗格。

# 创作问答
<a name="gen-bi-author-q-and-a"></a>

## 转换为生成式问答体验
<a name="gen-bi-data-q-and-a-converting-to-beta"></a>

如果您有现有主题，则可以轻松地将其转换以利用我们新的生成功能。导航到一个主题，然后选择主题名称旁边的**转换**。然后，系统将在对话框中提示您**复制并转换主题**。我们会为您复制主题，以便转换到我们的测试版体验不会影响您的最终用户。一旦您对新体验中的主题性能感到满意，就可以取消共享原始主题并共享新主题。

## 命名实体
<a name="gen-bi-data-q-and-a-named-entities"></a>

命名实体是主题策划最重要的组成部分之一。命名实体中包含的信息（特别是字段的顺序及其排名）使得能够在回答模糊的问题时提供上下文、多视觉对象答案。作者可以通过导航到主题，选择**数据**选项卡，然后选择**命名实体**来查找命名实体。从这里，作者可以预览或编辑现有的命名实体，并创建新的命名实体。

作者可以配置命名实体的以下方面：

1. **字段**：选择一个数据集，然后选择要包含该数据集中的哪些字段。这定义使用此命名实体回答最终用户问题时将考虑的数据范围。

1. **字段排名和呈现**：命名实体中维度和度量的相对排名决定了在生成上下文、多视觉对象答案时如何使用这些字段。请注意，在以下演示中，调整**利润**的相对排名以使其高于**销售额**会导致显示不同的数据。默认情况下，表格视觉对象中的字段顺序与字段排名相同。但是，您可以通过关闭**同步表格视图与字段排名**来分别控制这两者。

1. **在呈现中显示/隐藏**：命名实体中包含的字段可以同时从命名实体的表格呈现中隐藏，同时仍在答案的其他组成部分中提供额外上下文。

## 度量聚合
<a name="gen-bi-data-q-and-a-measure-aggregations"></a>

作者可以精细控制主题中的聚合衡量标准。在 Quick Sight 中`SUM`，除非在计算表达式中定义了自定义聚合，否则度量默认为。要更改此设置，请导航到数据字段列表中的度量，然后指定不同的默认聚合。您还可以禁止聚合，这样即使用户特别要求聚合，也无法应用聚合。最后，您可以指定某度量是非加性的。这对于预计算的指标（例如百分比）很有用，这些指标不应以任何方式重新组合。这样做会强制`MEDIAN`或`AVG`取决于你的用例。

# 通过 Amazon Quick Sight 中的控制面板管理主题权限
<a name="gen-bi-manage-topic-permissions"></a>

 Quick 使作者能够从一个位置管理仪表板及其链接主题的权限。在共享启用了问答功能的控制面板时，作者可以直接从控制面板的共享首选项控制主题查看者访问，无需在多个位置管理权限。

**要在带有链接主题的控制面板上启用问答，请执行下面的操作：**

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

1. 打开启用了问答并链接了要发布的主题的控制面板的分析。

1. 选择**发布**。

1. 选中**允许数据问答**复选框。

1. 选择**管理问答**，然后选择**使用链接主题构建视觉对象和问答**。

1. 从下拉菜单中选择所需的链接主题。

1. 选择**应用更改**，然后选择**发布控制面板**。

**要方便地通过控制面板管理主题访问，请执行下面的操作：**

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

1. 打开包含您是共同所有者的链接主题的控制面板。

1. 选择共享图标，然后选择**共享控制面板**。

1. 在所选用户的行中， on/off 将**共享为 “主题查看者”** 开关翻转到 grant/revoke 查看者对链接主题的访问权限。

1. 在所选共享文件夹的行中，将 “**将主题添加到文件夹”** 切换到链接 add/remove 的主题 to/from ，即共享文件夹。 on/off 

**要将控制面板及其链接主题共享给所有用户和组，请执行下面的操作：**

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

1. 打开包含您是共同所有者的链接主题的控制面板。

1. 选择共享图标，然后选择**共享控制面板**。

1. 在面板左下角的**自动共享链接主题**下，打开**所有控制面板用户和组**开关。当共享控制面板时，这将授予查看者访问链接主题的权限。关闭开关即可取消此行为。

共享包含链接主题的控制面板后，用户可以立即询问有关其数据的问题。导航至控制面板顶部的**询问有关 <主题名称> 的问题**以开始提问。

# 在 Amazon Quick Sight 中开启控制面板问答体验
<a name="dashboard-qa"></a>

Quick 允许任何作者一键直接从其仪表板启用问答，而无需在 Quick Sight 中创建主题。为此，请发布您的控制面板，然后选中控制面板发布菜单中的**允许数据问答**复选框。开启控制面板问答后，您可以选择用于控制面板问答的数据集，以确保最终用户获得所需的答案。

仪表板问答会查询所含数据集中的所有行和列，而不仅仅是仪表板中显示的行和列。要保护敏感或机密数据，请启用[行级安全 (RLS) and/or [列级](restrict-access-to-a-data-set-using-column-level-security.md)安全 (CLS)](row-level-security.md)。

下表比较了控制面板问答和主题问答之间的功能可用性。


| 问答功能 | 控制面板问答 | 主题问答 | 
| --- | --- | --- | 
|  允许所有角色的用户提出和回答数据问题  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  | 
|  允许作者和管理员角色在控制面板上启用数据问答  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg) 否（仅限 Pro 用户）  | 
|  支持 Quick 控制台嵌入  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  | 
|  能够添加已审核的答案  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  | 
|  能够自定义问答特定的元数据  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  | 
|  能够支持数据值自动完成  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/negative_icon.svg)没有  |  ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/success_icon.svg) 是  | 

使用以下步骤在 Quick Sight 仪表板上启用仪表板问答。

**在控制面板上启用控制面板问答**

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

1. 在启用问答的情况下在要发布的控制面板中打开分析。

1. 选择**发布**。

1. 选中**允许数据问答**复选框。

1. （可选）选择**管理问答**，以选择要在控制面板问答体验中包含哪些数据集。默认情况下，包括控制面板使用的所有数据集。

1. 选择**应用更改**，然后选择**发布控制面板**。

在您发布启用了控制面板问答体验的控制面板后，用户可以通过控制面板顶部的**询问有关此控制面板的问题**输入来询问有关其数据的问题。

Quick 允许任何用户在启用仪表板问答功能的仪表板上提问。但是，控制面板问答是一项会产生相关启用费用的功能。Quick 管理员可以随时在账户级别禁用此功能。使用以下步骤在整个 Quick 账户中禁用控制面板问答。

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

1. 选择右上角的用户图标，然后选择**快速管理**。

1. 选择 **Security & permissions (安全性和权限)**。

1. 导航到 Amazon Q 部分，然后选择**管理**。

1. 关闭**管理控制面板问答**。

关闭**管理控制面板问答**后，将从启用了控制面板问答功能的任何控制面板中删除控制面板问答。如果您的 Quick 账户中没有专业用户或话题，则此操作将停止向您的 Quick 账户收取 Amazon Q 启用费。此设置不会影响 Pro 用户或 Quick 中的现有主题。有关选择退出生成式 BI 的更多信息，请参阅[选择退出生成式 BI](generative-bi-opt-out.md)。

# 问答 null 值支持
<a name="gen-bi-q-and-a-null-support"></a>

Amazon Quick Sight Q&A 全面支持空值处理，使用户能够创建更复杂的分析并回答复杂的业务问题。此功能允许精确筛选 null 值、对缺失数据进行直观查询以及动态图表交互。

## 添加筛选条件以包括或排除 null 值
<a name="add-filter-for-null"></a>

**添加筛选条件以包括或排除 null 值**

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

1. 选择**主题**，然后打开要为其添加筛选条件的主题。

1. 选择**数据**选项卡。

1. 在**数据字段**下，选择**添加筛选条件**。

1. 在打开的**筛选条件配置**页面上，执行以下操作：

   1. 对于**名称**，输入筛选条件名称。

   1. 对于**数据集**，选择要应用筛选条件的数据集。

   1. 对于**字段**，选择要筛选的字段。

   1. 对于 **Null 选项**，选择下拉选项之一：
      + **未选择 null 选项** - 未选择任何用于筛选 null 值的选项。
      + **仅包括 null 值** - 仅筛选选定字段上的 null 值。
      + **仅排除 null 值** - 仅筛选选定字段上的非 null 值。

   1. （可选）要指定何时应用筛选条件，请选择**在使用数据集时应用筛选条件**，然后选择以下选项之一：

      1. **始终应用** - 每当指定数据集中的列链接到问题时，就会应用筛选条件。

      1. **始终应用，除非问题导致数据集中的显式筛选条件** - 每当指定数据集中的列链接到问题时，就会应用筛选条件，除非该问题包含针对同一字段的显式筛选条件。

   1. 选择**保存**。

 筛选条件将添加到主题中的字段列表。您可以编辑其描述或调整应用筛选条件的时间。

## 询问有关 null 值的问题
<a name="ask-questions-on-null-values"></a>

您可以使用问答直接询问有关 null 值的问题，例如：
+ 细分市场为 null 的记录的总销售额是多少？
+ 显示未分配代表的账户。
+ 列出没有完成日期的项目。
+ 显示未分配类别的清单项目。
+ 订单总数中有多少百分比的订单在许可证字段中具有非 null 值（按细分市场划分）？
+ 哪些订单没有分配客户？

## 管理可视化效果中的 null 值
<a name="manage-null-values-in-visualizations"></a>

通过问答栏生成可视化效果后，您可以使用各种 null 值操作与图表进行交互，包括仅关注 null 值或排除 null 值。这些图表操作可帮助您根据 null 值的存在动态地分析和筛选数据。

选择**仅关注 null 值**或**排除 null 值**以适当地筛选结果。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/focus-on-null.png)


## 优化 null 值处理的查询解释
<a name="refine-query-interpretations-for-null-value-handling"></a>

根据您的查询生成可视化效果后，您可以调整 null 值的处理方式。

1. 在查询下方找到**解释为**部分。

1. 选择您想要修改的字段。

1. 从下拉菜单中，选择 **Null 选项**以调整 null 值处理。

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/interpreted-as.png)


对于分类字段，空值与 null 值不同。要将空值转换为 null 值，请执行下面的操作：

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

1. 选择**主题**，然后打开要为其添加筛选条件的主题。

1. 选择**数据**选项卡。

1. 选择**添加计算字段**。

1. 对于**添加名称**字段，输入名称。

1. 选择一个分类字段并输入表达式以将空值转换为 null 值：`ifelse({Segment}="",NULL,{Segment})`。

1. 选择**保存**。

# 通过自定义说明提高问答准确性
<a name="gen-bi-improve-qa-accuracy-with-custom-instructions"></a>

自定义说明使作者能够通过添加无法通过主题的元数据设置捕获的特定领域知识（例如同义词或语义类型）来整理 Amazon Q 对问题的回答。通过提供这些元数据描述或自定义说明，作者可以指导 Amazon Q 使其响应与不同的定义、偏好和专家知识保持一致，从而确保获得更准确、更相关、更有针对性的答案，以更好地满足他们的业务需求。

使用下表了解何时以及如何应用不同类型的元数据来提高问答答案的准确性。每种元数据类型在澄清上下文、解决歧义以及确保答案符合业务规则或特定领域术语方面发挥着独特的作用。


| 元数据类型 | 何时使用 | 如何提高答案准确性 | 
| --- | --- | --- | 
|  字段级描述  |  当问答系统需要理解模糊或特定领域的列名时（例如 `DTC Spend`）。  |  阐明字段语义，以便模型可以更精确地回答（例如，解释`DTC Spend`为 Direct-to-Consumer营销费用）。  | 
|  主题级描述  |  当用户可能会提出宽泛或模糊的问题，并且Amazon Q 需要更多有关该主题总体目的的背景信息（例如，销售业绩与临床试验数据）时。  |  帮助消除一般术语的歧义并将答案引向正确的领域（例如，销售与营销）。  | 
|  数据集描述  |  当用户可以访问多个数据集并且问答系统需要确定哪一个最适合该问题时。  |  通过提供有关每个数据集的用途和内容的上下文来启用数据集选择逻辑。  | 
|  主题级自定义说明  |  当主题具有特定的业务规则、时间范围或定义时（例如，会计年度 ≢ 日历年）。  |  应用自定义逻辑或定义（例如，将 Q1 定义为 8 月至 10 月）来适当定制答案。  | 

## 添加字段级描述
<a name="adding-field-level-descriptions"></a>

**要添加字段级描述，请执行下面的操作：**

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

1. 选择**主题**，然后打开要为其添加描述的主题。

1. 在主题详细信息页面中，选择**数据**选项卡，然后选择**数据字段**子选项卡。

1. 添加描述以提高每个包含字段的答案准确性。对于需要理解包含定制企业知识的字段名称，这尤其重要。

 例如，如果您有多个日期字段，清晰的描述可以帮助 Amazon Q 区分它们并根据用户的问题选择最相关的字段。在下面的示例中，作者添加了**解决方案创建**和**主题创建**的描述，这使得 Amazon Q 能够更准确地根据上下文选择适当的日期字段。

![\[解决方案创建描述\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/solution_create.png)


![\[主题创建描述\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/topic_create.png)


## 添加主题级描述
<a name="adding-topic-level-descriptions"></a>

**要添加主题级描述，请执行下面的操作：**

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

1. 选择**主题**，然后打开要为其添加描述的主题。

1. 在主题详细信息页面上，选择**摘要**选项卡。

1. 在**主题详细信息**下，添加描述以提供有关该主题总体目的的更多背景信息。

## 添加数据集描述
<a name="adding-dataset-descriptions"></a>

**要添加数据集描述，请执行下面的操作：**

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

1. 选择**主题**，然后打开要为其添加描述的主题。

1. 在主题详细信息页面中，选择**数据**选项卡，然后选择**数据集**子选项卡。

1. 添加描述以帮助改进数据集选择逻辑。

## 添加主题级自定义说明
<a name="adding-topic-level-custom-instructions"></a>

**要添加自定义说明，请执行下面的操作：**

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

1. 选择**主题**，然后打开要为其添加描述的主题。

1. 在主题详细信息页面上，选择**自定义说明**选项卡。

1. 添加主题级指南，以帮助聊天者更好地了解所选主题的特定上下文、术语或意图。这可以包括消除歧义的提示、字段关系、无法在计算字段或主题筛选条件中捕获的术语的定义，或自定义相对日期范围的说明。

## 编写自定义说明的最佳实践
<a name="best-practices-for-writing-custom-instructions"></a>

**精确匹配单元格值**
+ 使用数据库中的精确单元格值，包括大小写和格式。
+ 如果值不明确，请参考其源列进行澄清。

示例：
+ 而不是：“*AMZ 是 Amazon 客户*”

  使用：“*AMZ 是‘Amazon.com, Inc.’” 客户*”
+ 而不是：“*ETPs 是企业客户*”

  使用：“*ETPs 是来自企业细分市场的客户*”

**具体且量化**

避免使用模糊的措辞 — 明确筛选条件、阈值和源列。

示例：
+ 而不是：“*在谈论销售时筛选大客户*”

  使用：“*在谈论销售时，筛选年收入超过 100 万美元的客户*”

**为了清晰起见，使用格式而不是函数**

间距和换行不会影响模型行为，但可以帮助作者更轻松地阅读和维护说明。

**了解自定义说明不能做什么**

自定义指令可以提高对业务环境的理解，但它们不会增加新功能。这些说明不会：
+ 更改图表类型选择
+ 执行计算或填充 null 值
+ 创建新字段
+ 控制格式、颜色或图例
+ 改变叙事或 number/type 视觉效果

## 在基于控制面板的问答数据准备中添加字段级描述
<a name="adding-field-level-descriptions-for-dashboard-based-qa"></a>

除了基于主题的描述之外，您还可以创建字段级定义来增强[控制面板问答](dashboard-qa.md)功能。在数据准备阶段向各个字段添加特定定义可以提高用户询问有关特定仪表板元素的问题时的答案准确性。

**要为基于控制面板的问答添加字段级描述，请执行下面的操作：**

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

1. 选择**数据**，打开您有权访问的数据集，然后选择**编辑数据集**。

1. 对于每个相关字段，选择三点菜单，然后选择**编辑名称和描述**。

1. 添加描述以增强控制面板相关问题的答案。

1. 选择 **Apply (应用)** 以保存更改。

# 使用生成式 BI 提问和回答数据问题
<a name="gen-bi-data-q-and-a"></a>

**注意**  
要查看多视觉体验，主题作者必须执行以下操作：添加命名实体，将现有主题转换为使用生成功能或创建新的生成主题。有关更多信息，请参阅 [创作问答](gen-bi-author-q-and-a.md)。

通过人性化的问答加快数据驱动的决策，包括：
+ AI 生成的叙述，重点介绍关键见解
+ 多视觉对象答案，不仅为您的问题提供答案，还能通过支持的视觉对象添加有价值的上下文
+ 每个主题的主页，包含 AI 生成的和作者审核的建议问题以及自动数据预览，可查看您可以询问哪些数据

选择右上角的火花图标。打开您的主题后，会出现一个主页，其中列出了建议的问题和**主题内容**，可查看您可以询问哪些数据。

如果有多个日期可用，请选择**更多...** 来查看它们。例如，在这个“学生入学趋势”主题中，有从 2018 年到 2023 年的入学数据，但也有从 1973 年到 2005 年的学生出生日期（DOB）数据。

选择一个建议问题或键入您自己的问题即可开始。通过将鼠标悬停在 AI 生成的叙述中的句子上，您可以清楚地识别源可视化并验证值。每个可视化都是交互式的，可以添加到您的 Pinboard 中。

你可以得到从模糊到精确的各种问题的答案。

如果您心里没有确切问题，则可以问只有一个词或短语的模糊问题，例如*“销售”*或*“优秀学生”*。您可以在这些模糊问题中添加其他筛选条件，例如*“上学期的优秀学生”*。

问题示例包括：
+ 实体名称：*“订单详细信息”*
  + 
**注意**  
您可以从主题主页和列表顶**部的内容*topic*选项卡中**找到实体。
  + 字段名称：“区段”
  + 字段值：“Acme Inc.”、“华盛顿特区”
  + 模糊（或隐含的）筛选条件：“最佳客户经理”、“最差产品”

有关支持的精确问题，请参阅此问题类型表：[Q 支持的问题类型](https://docs.aws.amazon.com/quicksight/latest/user/quicksight-q-ask.html#quicksight-q-ask-types)。 示例包括 “《魔兽世界》增长百分比最大的产品” 或 “按季度预测亚太地区客户的销售额”。它涵盖了一系列过滤器，例如顶部/底部、相对和绝对日期过滤器 period-over-period等等。 period-to-date它还支持分析问题，例如占总额的百分比，或 “为什么 2023 年 10 月的销售额下降了？”

**提示**  
为了帮助您提出问题，请思考*谁*、*什么*、*哪里*、*何时*和*为什么*。

解读您的答案：
+ **解释为：**– 这是 Amazon Q 解释您的问题的方式。它会将你的单词映射到基础数据，这样你就可以验证你的理解是否正确。如果没有，请调整您的问题或给作者留下反馈。
+ **AI 生成的叙述：**– 视觉对象的摘要，重点介绍关键见解。如果您的 Quick 账户已连接到 Amazon Q 应用程序，则您可能会在 **Q Business 的 Insights 下收到来自非结构化数据源的更多见解**。您可以在**来源**折叠部分中看到所使用的非结构化来源。有关将 Quick 账户关联到 Amazon Q Business 应用程序的更多信息，请参阅[借助 Amazon Q Business 增强亚马逊快速洞察力](generative-bi-q-business.md)。
+ **视觉效果：**— 视觉效果包括：直接回答问题的中心视觉效果、右侧提供上下文 KPIs、相关内容的辅助视觉效果以及底部的详细信息表。
**注意**  
如果该字段未包含在命名实体中，则它将显示为单个视觉对象。
+ **你的意思是：**— 当你的问题有多种解释时，它会显示一个备选答案列表，你可以选择这些答案来与你的预期问题保持一致。
  + 在以下示例中，问题“最佳客户”可以用多种方式来解释，包括“总销售额”、“总利润”或“客户数量”。  
![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/top-customers.png)

其他提示
+ 要调整面板大小，请拖动左侧。
+ 在 Pinboard 上添加重要的视觉对象以便快速访问。从 Amazon Q 窗格的顶部查看您的插接板。
+ 为您的主题作者提供反馈，以便查看并进行改进。

# 选择退出生成式 BI
<a name="generative-bi-opt-out"></a>

如果Generative BI在账户中处于活动状态，则会向快速账户收费。如果您的账户使用以下任何功能，则生成式 BI 将被视为已激活：
+ Pro 用户
+ 主题
+ 控制面板和视觉对象索引
+ 控制面板问答

要避免因完全停用生成式商业智能而被收费，请执行以下步骤。

**警告**  
选择退出生成式商业智能将禁用人工智能驱动的功能并停止相关收费。此流程涉及：  
移除 Pro 用户角色或将其更改为标准角色
删除您账户中的所有主题
禁用控制面板索引和问答功能
**继续之前：**仔细检查步骤并确保您了解哪些功能将被禁用。

**选择退出生成式 BI**

1. 通过执行以下步骤，确保账户中没有映射到 Pro 角色的 Pro 用户或用户组：
   + 要更新或移除 Pro 用户，请使用 APIs以下方法：
     + 如果您使用快速身份（无论是否使用 IAM 联合）：

       1. 使用 [ListUsers](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ListUsers.html)API 查找拥有 Pro 角色的用户。

       1. 要么使用 API 更改用户的角色，要么使用 [UpdateUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateUser.html)API 将用户从账户中[DeleteUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DeleteUser.html)移除。
     + 如果使用 IAM Identity Center 或 Microsoft Active Directory：

       1. 使用 [ListRoleMemberships](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ListRoleMemberships.html)API 查找映射到 Pro 角色的用户组。

       1. 使用 [CreateRoleMemberships](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateRoleMemberships.html)API 创建具有相同用户但映射到不同角色的新用户组。

       1. 使用 [DeleteRoleMemberships](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DeleteRoleMemberships.html)API 删除之前映射到 Pro 角色的用户组。
   + 要使用 Quick 控制台更新或移除 Pro 用户，请执行以下操作：

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

     1. 选择个人资料图标，然后选择**快速管理**。

     1. 如有必要，在左侧导航窗格中选择**管理用户**。
        + 如果您使用快速身份（无论是否使用 IAM 联合），请使用或中的步骤更新用户角色[查看 Amazon Quick 账户详情](managing-user-access-qs-iam.md#view-user-accounts)或删除用户[删除 Amazon Quick 用户账户](managing-user-access-qs-iam.md#delete-a-user-account)。
        + 如果使用 IAM Identity Center 或 Microsoft Active Directory，请按照[管理用户访问权限](managing-user-access-idc.md#view-user-accounts-enterprise)中的步骤更新群组和角色映射或删除用户组。

1. 通过执行以下步骤确保账户中没有主题：

   1. 使用 [ListTopics](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ListTopics.html)API 列出账户中每个使用主题的 AWS 区域的所有主题。

   1. 对于每个主题，执行以下操作之一：
      + 如果您是主题的所有者或共同所有者，请使用 [DeleteTopic](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DeleteTopic.html)API 删除主题。
      + 如果您不是主题的所有者或共同所有者：
        + 使用 [DescribeTopicPermissions](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeTopicPermissions.html)API 确定每个主题的所有者，然后要求他们使用 [DeleteTopic](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DeleteTopic.html)API 删除其主题。
        + 使用 API 让自己成为主题的共同所有者，然后使用 [UpdateTopicPermissions](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateTopicPermissions.html)AP [DeleteTopic](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DeleteTopic.html)I 删除主题。

1. 通过执行以下步骤，确保控制面板和视觉对象索引以及控制板问答处于禁用状态：
   + 要禁用仪表板和可视化索引以及控制板问答，请使用 APIs以下方法：

     1. 使用[UpdateQuickSightQSearch配置](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateQuickSightQSearchConfiguration.html) API 禁用仪表板和可视化索引。

     1. 使用 [UpdateDashboardsQAConfiguration](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateDashboardsQAConfiguration.html)API 禁用控制面板问答。
   + 要使用 Quick 控制台禁用仪表板和视觉索引以及仪表板问答，请执行以下操作：

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

     1. 选择个人资料图标，然后选择**快速管理**。

     1. 在 “**账户**” 部分下，选择 **Amazon Q**。

     1. 禁用每个选项。

# 使用 Amazon Quick Sight 主题
<a name="topics"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 管理员和作者  | 

*主题*是一个或多个数据集的集合，这些数据集代表了您的业务用户可以提问的主题领域。

借助 Quick Sight 自动数据准备功能，您可以获得由 ML 支持的帮助，帮助您创建与最终用户相关的主题。第一个过程从自动字段选择和分类开始，如下所示：
+ 默认情况下，自动数据准备会选择少量字段以创建有针对性的数据空间供读者浏览。
+ 自动数据准备会选择您在其他资产（如报告和仪表板）中使用的字段。
+ 自动数据准备还会从启用主题的任何相关分析中导入任何其他字段。
+ 它可以识别日期、维度和度量，以了解如何在答案中使用字段。

这组自动字段可帮助作者快速开始使用自然语言分析。作者可以随时使用**包含**切换按钮根据需要排除字段或包含其他字段。

接下来，通过自动标记字段和识别同义词，继续自动准备数据。自动数据准备会使用常用术语更新带有友好名称和同义词的字段名称。例如，可以将 `SLS_PERSON` 字段重命名为 `Sales person`，并分配同义词，包括:`salesman`、`saleswoman`、代理和 `sales representative`。尽管您可以让自动数据准备完成大部分工作，但还是值得查看字段、名称和同义词，以便为最终用户进一步对其进行自定义。例如，如果用户在随意交谈中将销售人员称为“代表”或“经销商”，则您可以通过在 `SLS_PERSON` 的同义词中添加 `rep` 和 `dealer` 来支持此术语。

最后，自动数据准备通过对每个字段的数据进行采样并检查作者在分析期间应用于该字段的格式，来检测每个字段的语义类型。自动数据准备会自动更新字段配置，为每个字段使用的值设置格式。因此，问题的答案以日期、货币、标识符、布尔值、人员等预期格式提供。

要了解有关使用主题的更多信息，请继续阅读本章的以下部分。

**Topics**
+ [浏览话题](navigating-topics.md)
+ [创建 “快速浏览” 主题](topics-create.md)
+ [主题工作区](topics-interface.md)
+ [在 Quick Sight 主题中使用数据集](topics-data.md)
+ [制作 “快速视觉” 话题 natural-language-friendly](topics-natural-language.md)
+ [分享快速浏览话题](topics-sharing.md)
+ [管理 Amazon Quick Sight 主题权限](topics-sharing-permissions.md)
+ [查看 Quick Sight 主题表现和反馈](topics-performance.md)
+ [刷新快速浏览主题索引](topics-index.md)
+ [使用 Amazon Quick Sight 处理 Quick Sight 主题 APIs](topics-cli.md)

# 浏览话题
<a name="navigating-topics"></a>

在 Quick Sight 中，创建和管理主题的方法不止一种。您可以从 Amazon Quick 主页或 “开始” 页面开始。或者，您可以从分析的内部开始。

**Topics**
+ [来自 Amazon Quick 主页](starting-from-home.md)
+ [来自亚马逊 Quick Sight 的分析](starting-from-sheets.md)
+ [在 Amazon Quick Sight 分析中浏览问题](starting-from-questions-on-sheets.md)

# 来自 Amazon Quick 主页
<a name="starting-from-home"></a>

在快速入门页面上，您可以通过选择左侧导航窗格中的**主题**来创建和管理主题。Quick 提供了用于创建主题的指导式工作流程。您可以退出引导式工作流程并稍后再回来，这不会中断您的工作。

当您创建主题时，您的企业用户可以提出有关该主题的问题。您可以随时打开主题进行更改或审查其效果。

要打开主题，请选择主题名称。

如果您想随时返回到所有主题的列表，请选择主题工作区左侧的**所有主题**。

# 来自亚马逊 Quick Sight 的分析
<a name="starting-from-sheets"></a>

要从 Amazon Quick Sight 分析开始，请打开要用于自动数据准备的分析。

要打开或创建主题，请选择顶部导航栏中的主题图标。

您可以随时打开主题进行更改或审查其效果。

要打开分析中的主题，请在顶部导航栏中选择主题名称（如果尚未显示）。然后在顶部导航栏上选择垂直省略号图标 (` ⋮ `)。

要查看有关该主题的信息，请选择**关于主题**。

要查看主题中包含的数据字段，请在选项卡列表中选择**数据字段**。

# 在 Amazon Quick Sight 分析中浏览问题
<a name="starting-from-questions-on-sheets"></a>

通过浏览分析中主题的问题和答案，您可以了解该主题的使用情况。这些信息可以通知您在必要时进行调整。

从已链接到主题的分析中开始，选择顶部导航栏上的搜索栏，然后输入问题。答案显示在主题屏幕上，该屏幕还显示了在分析中使用该主题的所有可用选项。
+ 要更改答案中显示的视觉对象类型，请选择类型图标（类似于条形图）。
+ 要查看改进建议，请选择对话气泡（如果您有未查看的建议，该对话框会突出显示）。
+ 要查看与问题相关的见解，请选择灯泡图标。
+ 要在插接板上添加或删除问题，请切换**添加到插接板**或**从插接板中删除**图标。您可以通过从顶部导航栏中选择插接板图标来查看插接板。
+ 要查看有关此主题的信息，请选择带圆圈的小写字母 *i* (` ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/status-info.png) `)。
+ 选择省略号菜单 (` … `) 以执行以下操作之一：
  + **导出至 CSV** – 导出所选视觉对象中显示的数据。
  + **复制请求 ID** – 获取此过程的请求 ID 以进行问题排查。Amazon Quick Sight 会生成一个字母数字请求编号来唯一标识每个流程。
  + **共享此视觉对象** – 安全地共享视觉对象中使用的主题的 URL。
  + **答案细分** – 查看答案的详细解释。

在主题屏幕的底部，您可以通过选择**编辑问题变体**来添加或更改问题的变体。同样在底部，您对问题和答案感到满意时，选择**标记为已审查**以将主题标记为已审查。或者，如果您发现之前审查的主题需要进一步审查，请选择**取消标记为已审查**。

您可以随时打开主题进行更改或审查其效果。要直接使用主题的设置（例如包含哪些字段或它们有哪些同义词），请使用**主题**页面。

**打开链接到分析的主题**

1. 在左侧导航窗格中选择****主题****，从快速入门页面打开 Amazon Quick Sight Topics 页面。

   如果您想让分析保持打开状态，可以在新的浏览器选项卡或窗口中打开**主题**页面。

1. 要打开主题，请选择主题名称。如果您最近离开了分析页面，则该名称可能仍会显示在屏幕顶部的搜索栏中。

1. 如果您想随时返回到所有主题的列表，请选择主题工作区左侧的**所有主题**。

# 创建 “快速浏览” 主题
<a name="topics-create"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 管理员和作者  | 

要为数据集开启提问，您必须创建一个主题。Quick Sight 为创建主题提供了指导性工作流程。您可以退出引导式工作流程并稍后再回来，这不会中断您的工作。

可以使用两种方法创建主题：
+ 通过选择数据集来创建主题。在 Quick Sight 中创建主题时，可以向其中添加多个数据集，也可以在分析中启用主题。
+ 使用分析创建主题。当您在分析中创建主题或将现有主题链接到分析时，自动数据准备会从您分析数据的方式中学习，并自动将其应用于您的主题。

在你与 Quick 读者分享你的话题并让他们用它在搜索栏中提问之后，你可以看到该主题的表现摘要。您还可以查看用户询问的所有内容、回复情况以及您已验证的任何答案的列表。查看反馈非常重要，这样您的业务用户才能继续获得正确的可视化效果和问题答案。

## 创建主题
<a name="topics-create-how"></a>

使用以下过程创建主题。

**要创建主题，请执行以下操作**

1. 在快速主页上，选择**主题**。

1. 在打开的**主题**页面上，选择右上角的**创建主题**。

1. 在打开的 “**创建主题**” 页面上，执行以下操作：

   1. 对于**主题名称**，输入主题的描述性名称。

      您的业务用户将使用此名称识别主题并用它来提问。

   1. 对于**描述**，输入主题的描述。

      您的用户可以使用此描述来获取有关该主题的更多详细信息。

   1. 选择**继续**。

1. 在打开的**将数据添加到主题**页面上，选择以下选项之一：
   + 要添加一个或多个您拥有或有权访问的数据集，请选择**数据集**，然后选择要添加的一个或多个数据集。
   + 要从您创建或与您共享的仪表板中添加**数据集，请从仪表板**中选择数据集，然后从列表中选择仪表板。

1. 选择**添加数据**。

   您的主题已创建，将打开该主题的页面。下一步是配置主题元数据以 natural-language-friendly供读者使用。有关更多信息，请参阅 [制作 “快速视觉” 话题 natural-language-friendly](topics-natural-language.md)。或者继续进入下一个主题以探索主题工作区。

# 主题工作区
<a name="topics-interface"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 管理员和作者  | 

创建主题后，或者从**主题**页面的列表中选择现有主题时，该主题将打开到主题的工作区。此处将显示四个选项卡，您可以按照以下部分所述使用。Quick Sight 为主题提供了指导性工作流程。您可以退出引导式工作流程并稍后再回来，这不会中断您的工作。

## Summary
<a name="topics-interface-summary"></a>

**摘要**选项卡有三个重要区域：
+ **建议** — 建议为如何改进主题提供 step-by-step指导。这些步骤可以帮助您了解如何创建效果更好的主题。

  要遵循建议，请在“建议”横幅中选择“操作”按钮，然后按照建议的步骤进行操作。

  目前，有八个预设建议按下表所示的顺序提供。完成建议步骤后，返回到**摘要**选项卡时，系统会提供新的建议。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/topics-interface.html)
+ **关于话题参与度和绩效的指标和关键绩效指标 (KPIs)** — 在本节中，您可以看到读者如何与您的主题互动，以及他们对所提供的答案给出的反馈和评分。您可以查看用户提出的所有问题的参与度，也可以选择特定问题。您也可以将指标的时间跨度从一年更改为一周。

  有关更多信息，请参阅 [查看 Quick Sight 主题表现和反馈](topics-performance.md)。
+ **数据集** – 本节显示用于创建主题的数据集。在本节中，您可以添加其他数据集或从现有控制面板导入数据集。您还可以编辑主题数据集的元数据、设置数据刷新计划、更改数据集的名称等。有关更多信息，请参阅 [在 Quick Sight 主题中使用数据集](topics-data.md)。

## 数据
<a name="topics-interface-data"></a>

**数据**选项卡显示主题中包含的所有字段。在这里，您可以配置主题元数据以创建您的主题 natural-language-friendly并提高主题效果。有关更多信息，请参阅 [制作 “快速视觉” 话题 natural-language-friendly](topics-natural-language.md)。

## 用户活动
<a name="topics-interface-user"></a>

此选项卡显示主题收到的所有问题以及每个问题的总体反馈。您可以大致了解问题的数量，以及其中正面和负面问题的占比。您可以按反馈以及是否有人在反馈中留下评论进行筛选。有关更多信息，请参阅 [查看 Quick Sight 主题表现和反馈](topics-performance.md)。

## 已验证答案
<a name="topics-interface-answers"></a>

*已验证答案*是指已经预先配置了视觉对象的问题。您可以通过在搜索栏中询问问题然后将其标记为已审核来创建经过验证的答案。通过使用**已验证答案**选项卡，您可以审查已验证答案以及用户收到的反馈。

# 在 Quick Sight 主题中使用数据集
<a name="topics-data"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 管理员和作者  | 

创建主题时，您可以添加其他数据集或从现有控制面板导入数据集。您可以随时编辑数据集的元数据并设置数据刷新计划。您还可以通过创建计算字段、筛选条件或命名实体将新字段添加到主题中的数据集。

**Topics**
+ [在 Amazon Quick Sight 中向主题添加数据集](topics-data-add.md)
+ [将具有行级安全 (RLS) 的数据集添加到 Amazon Quick Sight 主题中](topics-data-rls.md)
+ [在 Quick Sight 主题中刷新数据集](topics-data-refresh.md)
+ [从 Amazon Quick Sight 主题中移除数据集](topics-data-remove.md)
+ [向 Amazon Quick Sight 主题数据集添加计算字段](topics-data-calculated-fields.md)
+ [向 Amazon Quick Sight 主题数据集添加筛选条件](topics-data-filters.md)
+ [向 Amazon Quick Sight 主题数据集添加命名实体](topics-data-entities.md)

# 在 Amazon Quick Sight 中向主题添加数据集
<a name="topics-data-add"></a>

您可以随时将数据集添加到主题。要了解操作方法，请按照以下过程操作。

**将数据集添加到主题**

1. 打开要向其添加一个或多个数据集的主题。

1. 在 “**摘要**” 页面上，选择**数据**。然后，在**数据集**下，选择**添加数据集**。

1. 在打开的**数据集**页面上，选择要添加的一个或多个数据集，然后选择**添加数据集**。

   数据集已添加到主题中，并对数据集的唯一字符串值进行索引。您可以立即编辑字段配置。有关更多信息，请参阅 [刷新快速浏览主题索引](topics-index.md)。有关编辑字段配置的更多信息，请参阅[制作 “快速视觉” 话题 natural-language-friendly](topics-natural-language.md)。

# 将具有行级安全 (RLS) 的数据集添加到 Amazon Quick Sight 主题中
<a name="topics-data-rls"></a>

您可以向主题中添加包含行级安全 (RLS) 的数据集。主题中的所有字段都遵循应用于数据集的 RLS 规则。例如，如果用户问 “按地区向我显示销售额”，则返回的数据将基于用户对基础数据的访问权限。因此，如果只允许他们看到东部区域，那么答案中只会显示东部地区的数据。

RLS 规则适用于用户提问时的自动建议。用户输入问题时，只会向他们建议他们有权访问的值。如果用户输入了有关他们无权访问的维度值的问题，则他们不会得到该值的答案。例如，假设同一个用户正在输入问题“向我显示西部区域的销售额。” 在这种情况下，即使他们提问，也得不到建议或答案，因为他们没有该区域的 RLS 访问权限。

默认情况下，Quick Sight 允许用户根据用户在 RLS 中的权限询问有关字段的问题。如果您的字段包含要限制访问的敏感数据，则继续使用此选项。如果您的字段不包含敏感信息，并且您希望所有用户都能在建议中看到这些信息，则可以选择允许对字段中的所有值提问。

**允许对所有字段提问**

1. 从 Quick 主页中，选择**数据**。

1. 在**数据集**选项卡下，选择您添加了 RLS 的数据集，然后选择**编辑数据集**。

   有关将 RLS 添加到数据集的更多信息，请参阅 [在 Amazon Quick 中使用行级安全](row-level-security.md)。

1. 在数据准备页面上，选择要允许的字段的字段菜单（三个点），然后选择**行级别安全性**。

1. 在打开的 “**快速” 页面的 “行级安全性**” 上，选择 “**允许用户就此字段上的所有值提问”**。

1. 选择**应用**。

1. 编辑完数据集后，在右上角的蓝色工具栏中选择**保存和发布**。

1. 将数据集添加到您的主题中。有关更多信息，请参阅之前的部分 [在 Amazon Quick Sight 中向主题添加数据集](topics-data-add.md)。

如果您当前允许用户就所有值提问，但想实施数据集的 RLS 规则来保护敏感信息，请重复步骤 1-4，然后选择**允许用户根据其权限提出有关此字段的问题**。完成后，刷新主题中的数据集。有关更多信息，请参阅 [在 Quick Sight 主题中刷新数据集](topics-data-refresh.md)。

# 在 Quick Sight 主题中刷新数据集
<a name="topics-data-refresh"></a>

将数据集添加到主题时，可以指定希望数据集的刷新频率。刷新主题中的数据集时，将使用任何新的和更新的信息刷新该主题的索引。

当您将数据集添加到主题时，数据集不会被复制。创建了由唯一字符串值组成的索引，并且未对指标进行索引。例如，存储为整数的度量不会被索引。所提问题始终根据数据集中的数据获取最新的销售指标。

有关刷新主题索引的更多信息，请参阅 [刷新快速浏览主题索引](topics-index.md)

您可以为主题中的数据集设置刷新计划，或手动刷新数据集。您还可以查看上次刷新数据的时间。

**为主题数据集设置刷新计划**

1. 打开要更改的主题。

1. 在**摘要**页面上，选择**数据**。然后，在 “**数据集**” 下，展开要为其设置刷新计划的数据集。

1. 选择**添加计划**，然后在打开的**添加刷新计划**页面中执行以下操作之一。
   + 如果数据集是 SPICE 数据集，请选择**将数据集导入 SPICE 时刷新主题**。

     目前，不支持每小时刷新SPICE数据集。 SPICE设置为每小时刷新一次的数据集会自动转换为每日刷新。有关为 SPICE 数据集设置刷新计划的更多信息，请参阅 [刷新 SPICE 数据](refreshing-imported-data.md)。
   + 如果数据集是直接查询数据集，请执行以下操作：

     1. 对于**时区**，请选择时区。

     1. 对于**重复**，请选择您希望刷新的频率。您可以选择每天、每周或每月刷新数据集。

     1. 在**刷新时间**中，输入您希望开始刷新的时间。

     1. 在**首次刷新开始日期**中，选择要开始刷新数据集的日期。

1. 选择**保存**。

**手动刷新数据集**

1. 在主题**摘要**页面上，选择**数据**。然后，在 “**数据集**” 下，选择要刷新的数据集。

1. 选择**立即刷新**。

**查看数据集的刷新历史记录**

1. 在主题**摘要**页面上，选择**数据**。然后，在 “**数据集**” 下，选择要查看其刷新历史记录的数据集。

1. 选择 **View history (查看历史记录)**。

   随即打开**更新历史记录**页面，其中列出了数据集的刷新时间。

# 从 Amazon Quick Sight 主题中移除数据集
<a name="topics-data-remove"></a>

您可以从主题中删除数据集。从主题中移除数据集并不能将其从 Quick Sight 中删除。

使用以下过程从主题中删除数据集。

**从主题中删除数据集**

1. 打开要更改的主题。

1. 在 “**摘要**” 页面上，选择**数据**。然后，在 “**数据集**” 下，选择右侧的数据集菜单（三个点），然后选择**从主题中删除**。

1. 在打开的**是否确定删除？**页面中，选择**删除**从主题中删除数据集。如果您不想从主题中删除数据集，请选择**取消**。

# 向 Amazon Quick Sight 主题数据集添加计算字段
<a name="topics-data-calculated-fields"></a>

您可以通过创建计算字段在主题中创建新字段。*计算字段*是结合使用数据集中一个或两个字段与支持的函数来创建新数据的字段。

例如，如果您的数据集包含销售额和费用列，则可以使用简单函数将它们在计算字段中组合以创建利润列。该函数可能类似于以下内容：`sum({Sales}) - sum({Expenses})`。

**将计算字段添加到主题**

1. 打开要更改的主题。

1. 在主题中，选择**数据**选项卡。

1. 对于**操作**，选择**添加计算字段**。

1. 在打开的计算编辑器中，执行以下操作：

   1. 为计算字段指定一个易记名称。

   1. 对于右侧的**数据集**，选择要用于计算字段的数据集。

   1. 在左侧的计算编辑器中输入计算。

      您可以在右侧的**字段**窗格中看到数据集中字段的列表。您还可以在右侧的**函数**窗格中看到支持的函数列表。

      有关可用于在 Quick Sight 中创建计算的函数和运算符的更多信息，请参阅[Amazon Quick 的计算字段函数和运算符参考函数和运算符](calculated-field-reference.md)。

1. 完成后，选择**保存**。

   计算字段将添加到主题中的字段列表。您可以为其添加描述并为其配置元数据，使其适合自然语言。

# 向 Amazon Quick Sight 主题数据集添加筛选条件
<a name="topics-data-filters"></a>

有时，您的业务用户（读者）可能会提出包含映射到数据中多个值单元格的术语的问题。例如，假设您的一位读者问：“向我展示西方的每周销售趋势。” 在此例中，*West* 同时指 `Region` 字段中的 `Northwest` 和 `Southwest` 值，并要求对数据进行筛选以生成答案。您可以将筛选条件添加到主题以支持此类请求。

**将筛选条件添加到主题**

1. 打开要为其添加筛选条件的主题。

1. 在主题中，选择**数据**选项卡。

1. 对于**操作**，选择**添加筛选条件**。

1. 在打开的**筛选条件配置**页面中，执行以下操作：

   1. 对于**名称**，为筛选条件输入易记名称。

   1. 对于**数据集**，选择要应用筛选条件的数据集。

   1. 对于**字段**，选择要筛选的字段。

      根据您选择的字段类型，将为您提供不同的筛选选项。
      + 如果选择了文本字段（例如 `Region`），则执行以下操作：

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

           有关筛选条件文本字段的更多信息，请参阅 [添加文本筛选条件](add-a-text-filter-data-prep.md)。

        1. 对于**规则**，选择一条规则。

        1. 对于**值**，输入一个或多个值。
      + 如果选择了数据字段（例如 `Date`），则执行以下操作：

        1. 对于**筛选条件类型**，选择所需的筛选条件类型，然后输入要应用筛选条件的一个或多个日期。

           有关筛选日期的更多信息，请参阅 [添加日期筛选条件](add-a-date-filter2.md)。
      + 如果选择了数值字段（例如 `Compensation`），则执行以下操作：

        1. 对于**聚合**，选择要聚合筛选的值的方式。

        1. 对于**规则**中，为筛选条件选择规则，然后为该规则输入一个值。

        有关筛选数值字段的更多信息，请参阅 [添加数字筛选条件](add-a-numeric-filter-data-prep.md)。

   1. （可选）要指定何时应用筛选条件，请选择**在使用数据集时应用筛选条件**，然后选择以下选项之一：
      + **始终应用** – 选择此选项时，您指定的数据集中的任何列链接到问题时，就会应用筛选条件。
      + **始终应用，除非问题导致数据集应用显式筛选条件** – 选择此选项时，您指定的数据集中的任何列链接到问题时，就会应用筛选条件。但是，如果问题提到同一字段上的显式筛选条件，则不会应用该筛选条件。

   1. 完成后，选择**保存**。

      筛选条件将添加到主题中的字段列表。您可以编辑其描述或调整应用筛选条件的时间。

# 向 Amazon Quick Sight 主题数据集添加命名实体
<a name="topics-data-entities"></a>

提出有关主题的问题时，读者可能会引用多列数据，而不会明确说明每列。例如，他们可能会要求提供交易的地址。他们的实际意思是他们想要进行交易的分支机构名称、州和城市。要支持此类请求，您可以创建命名实体。

*命名实体*是在答案中一起显示的字段的集合。例如，使用交易地址示例，您可以创建名为 `Address` 的命名实体。然后，您可以将 `Branch Name`、`State` 和 `City` 列添加到其中，这些列已存在于数据集中。有人提出关于地址的问题时，答案会显示交易发生的分支机构、州和城市。

**将命名实体添加到主题**

1. 打开要更改的主题。

1. 在主题中，选择**数据**选项卡。

1. 对于**操作**，选择**添加命名实体**。

1. 在打开的**命名实体**页面中，执行以下操作：

   1. 对于**数据集**，选择数据集。

   1. 对于**名称**，为命名实体输入易记名称。

   1. 对于**描述**，输入命名实体的描述。

   1. （可选）对于**同义词**，添加您认为读者可能用来指代命名实体或其包含的数据的任何备用名称。

   1. 选择**添加字段**，然后从列表中选择一个字段。

      再次选择**添加字段**以添加其他字段。

      此处列出字段的顺序是它们在答案中出现的顺序。要移动字段，请选择字段名称左侧的六个点，然后按所需顺序拖放字段。

   1. 完成后，选择**保存**。

   命名实体将添加到主题中的字段列表。您可以为其添加或编辑描述并添加同义词，使其适合自然语言。

# 制作 “快速视觉” 话题 natural-language-friendly
<a name="topics-natural-language"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 管理员和作者  | 

创建主题时，Quick Sight 会创建、存储和维护一个索引，其中包含该主题中数据的定义。该索引用于生成正确答案，在有人提问时提供自动完成建议，以及建议术语与列或数据值的映射。这就是如何在读者的提问中解释关键术语并将其映射到您的数据中。

为了帮助解释您的数据并更好地回答读者的问题，请尽可能多地提供有关您的数据集及其相关字段的信息。

使用以下过程来完成此操作，使您的主题更加丰富 natural-language-friendly。

**提示**  
您可以使用批量操作一次编辑多个字段。按照以下步骤批量编辑主题中的字段。

**批量编辑主题中的字段**

1. 打开要更改的主题。

1. 在主题中，选择**数据**选项卡。

1. 在**字段**下，选择要更改的两个或多个字段。

1. 选择列表顶部的**批量操作**。

1. 在打开的**批量操作**页面中，根据需要配置字段，然后选择**应用于**。

   以下步骤描述了配置选项。

## 步骤 1：为数据集提供易记名称和描述
<a name="topics-natural-language-dataset-name"></a>

数据集名称通常基于技术命名约定，读者可能不会自然使用这些约定来引用名称。我们建议您为数据集提供易记名称和描述，以提供有关其所包含数据的更多信息。这些友好的名称和描述用于理解数据集内容并根据读者的问题选择数据集。还会向读者显示数据集名称，以便为答案提供更多背景信息。

例如，如果您的数据集命名为 `D_CUST_DLY_ORD_DTL`，则可以在主题中将其重命名为 `Customer Daily Order Details`。这样，当您的读者看到您的主题的搜索栏中列出的数据时，他们可以快速确定数据是否与他们相关。

**为数据集指定易记名称和描述**

1. 打开要更改的主题。

1. 在**摘要**选项卡上，选择**数据**。然后，在 “**数据集**” 下，选择数据集最右侧的向下箭头将其展开。

1. 选择左侧数据集名称旁边的铅笔图标，然后输入一个易记名称。我们建议使用读者能理解的名称。

1. 对于**描述**，输入数据集的描述，以描述数据集所包含的数据。

## 步骤 2：指导如何在数据集中使用日期字段
<a name="topics-natural-language-dataset-time-basis"></a>

如果您的数据集包含日期和时间信息，我们建议您在回答问题时指导如何使用这些信息。如果主题中有多个日期时间列，则这样做尤其重要。

在某些情况下，主题中有多个有效的日期列，例如订单日期和发货日期。在这些情况下，您可以通过指定用于回答问题的默认日期来帮助读者。如果默认日期无法回答他们的问题，则读者可以选择其他日期。

您还可以通过指定时间基准来判断日期时间列的精细程度。数据集的*时间基准*是数据集中所有度量都支持的最低级时间粒度。此设置有助于聚合数据集中不同时间维度的指标，并且适用于支持单一日期时间粒度的数据集。可以为具有大量指标的非规范化数据集设置此选项。例如，如果一个数据集在每日聚合中支持多个指标，则可以将该数据集的时间基准设置为**每日**。然后使用它来确定如何汇总指标。

**为数据集设置默认日期和时间基准**

1. 打开要更改的主题。

1. 在**摘要**选项卡上，选择**数据**。然后，在 “**数据集**” 下，选择数据集最右侧的向下箭头将其展开。

1. 对于**默认日期**，选择一个日期字段。

1. 对于**时间基准**，选择要将数据集中的指标聚合到的最低粒度级别。您可以按每日、每周、每月、每季度或每年级别聚合主题中的指标。

## 步骤 3：排除未使用的字段
<a name="topics-natural-language-exclude-fields"></a>

将数据集添加到主题时，默认情况下会添加数据集中的所有列（字段）。如果您的数据集包含您或您的读者不使用的字段，或者您不想在答案中包含的字段，则可以将其排除在主题之外。排除这些字段会将其从答案和索引中删除，从而提高读者收到的答案的准确性。

**排除主题中的字段**

1. 打开要更改的主题。

1. 在主题中，选择**数据**选项卡。

1. 在**字段**部分的**包含**下，关闭图标。

## 步骤 4：将字段重命名为 natural-language-friendly
<a name="topics-natural-language-rename-fields"></a>

数据集中的字段通常根据技术命名约定命名。您可以通过重命名字段名称并添加描述，使主题中的字段名称更加便于用户记忆。

字段名称用于理解这些字段，并将它们与读者提问中的术语相关联。当您的字段名称易于使用时，可以更轻松地在数据和读者的问题之间建立联系。这些易记名称也作为问题答案的一部分呈现给读者，以提供更多的上下文信息。

**重命名字段并添加描述**

1. 打开要更改的主题。

1. 在主题中，选择**数据**选项卡。

1. 在**字段**部分中，选择字段最右侧的向下箭头将其展开。

1. 选择左侧字段名称旁边的铅笔图标，然后输入一个易记名称。

1. 对于**描述**，输入字段描述。

## 步骤 5：将同义词添加到字段和字段值
<a name="topics-natural-language-synonyms"></a>

即使您更新字段名称以方便用户记忆并为其提供描述，读者仍可能使用不同的名称来指代它们。例如，在读者的问题中，`Sales` 字段可能称为 `revenue`、`rev` 或 `spending`。

为了帮助理解这些术语并将其映射到正确的字段，您可以在字段中添加一个或多个同义词。这样做可以提高准确性。

与字段名称一样，读者可能会使用不同的名称来指代字段中的特定值。例如，如果您有一个包含值 `NW`、`SE`、`NE` 和 `SW` 的字段，则可以为这些值添加同义词。您可以为 `NW` 添加 `Northwest`，为 `SE` 添加 `Southeast`。

**为字段添加同义词**

1. 打开要更改的主题。

1. 在主题中，选择**数据**选项卡。

1. 在**字段**部分的**同义词**下，请选择字段的铅笔图标，输入单词或短语，然后按键盘上的 Enter。要添加其他同义词，请选择 **\$1** 图标。

**为字段中的值添加同义词**

1. 打开要更改的主题。

1. 在主题中，选择**数据**选项卡。

1. 在**字段**部分中，选择最右侧的向下箭头以展开有关字段的信息。

1. 在右侧的**值预览**下，选择**配置值同义词**。

1. 在打开的**字段值同义词**页面上，选择**添加**，然后执行以下操作：

   1. 对于**值**，选择要为其添加同义词的值。

   1. 对于**同义词**，为该值输入一个或多个同义词。

1. 选择**保存**。

1. 要为其他值添加同义词，请重复步骤 5-6。

1. 完成后，选择**完成**。

## 第 6 步：详细说明您的字段
<a name="topics-natural-language-semantics"></a>

为了帮助解释如何使用您的数据来回答读者的问题，您可以详细解释数据集中的字段。

您可以说出数据集中的字段是维度还是度量，并指定应如何聚合该字段。您还可以阐明应如何格式化字段中的值以及该字段中的数据类型。配置这些附加设置有助于在读者提问时为他们创建准确的答案。

使用以下过程详细说明您的字段。

### 分配字段角色
<a name="topics-natural-language-semantics-role"></a>

数据集中的每个字段要么是维度，要么是度量。*维度*是分类数据，*度量*是量化数据。知道字段是维度还是度量决定了可以对字段执行哪些操作和不能执行哪些操作。

例如，设置字段`Patient ID``Employee ID`、和`Ratings`有助于将这些字段解释为整数。此设置意味着字段在测量时不会被聚合。

**设置字段角色**

1. 打开要更改的主题。

1. 在主题中，选择**数据**选项卡。

1. 在**字段**部分中，选择最右侧的向下箭头以展开有关字段的信息。

1. 对于**角色**，选择一个角色。

   您可以选择度量或维度。

1. （可选）如果您的度量成反比（例如，数字越小越好），请选择**反向度量**。

   这说明了如何解释和显示此字段中的值。

### 设置字段聚合
<a name="topics-natural-language-semantics-aggregation"></a>

设置字段聚合有助于确定在多行中聚合这些字段时应该使用或不应该使用哪个函数。您可以为字段设置默认聚合和不允许的聚合。

*默认聚合*是读者的问题中没有提及或标识明确的聚合函数时应用的聚合。例如，假设您的一位读者问：“昨天售出了多少产品？” 在此例中，Q 使用默认聚合为 `count distinct` 的字段 `Product ID` 来回答问题。这样做会生成一个视觉对象，其中显示产品 ID 的不同数量。

*不允许的聚合*是被排除在外、不用于在字段上回答问题的聚合。即使问题明确要求不允许的聚合，也会将其排除在外。例如，假设您指定 `Product ID` 字段永远不按 `sum` 进行聚合。即使你的一个读者问：“昨天总共售出了多少产品？” `sum` 不是用来回答这个问题的。

如果在字段上错误地应用了聚合函数，我们建议您为该字段设置不允许的聚合。

**设置字段聚合**

1. 打开要更改的主题。

1. 在主题中，选择**数据**选项卡。

1. 在**字段**部分中，选择最右侧的向下箭头以展开有关字段的信息。

1. 对于**默认聚合**，选择要在默认情况下聚合字段的聚合。

   您可以按总和、平均值、最大值和最小值聚合度量。您可以按计数和不同计数来聚合维度。

1. （可选）对于 “**不允许的**聚合”，请选择您不想使用的聚合。

1. （可选）如果您不想在筛选器中聚合该字段，请选择 “**从不在筛选器中聚合**”。

### 指定如何格式化字段值
<a name="topics-natural-language-semantics-values"></a>

如果你想解释如何格式化字段中的值，你可以这样做。例如，假设您有字段 `Order Sales Amount`，其中包含要格式化为美元的值。在这种情况下，您可以解释在答案中使用时如何将字段中的值格式化为美元。

**指定如何格式化字段值**

1. 打开要更改的主题。

1. 在主题中，选择**数据**选项卡。

1. 在**字段**部分中，选择最右侧的向下箭头以展开有关字段的信息。

1. 对于**值格式**，选择格式化字段中值的方式。

### 指定字段语义类型
<a name="topics-natural-language-semantics-types"></a>

字段*语义类型*是字段中数据所表示的信息类型。例如，您可能有一个包含位置数据、货币数据、年龄数据或布尔数据的字段。您可以为字段指定语义类型和其他语义子类型。指定这些内容有助于理解存储在字段中的数据的含义。

使用以下过程指定字段语义类型和子类型。

**指定字段语义类型**

1. 打开要更改的主题。

1. 在主题中，选择**数据**选项卡。

1. 在**字段**部分中，选择最右侧的向下箭头以展开有关字段的信息。

1. 对于**语义类型**，选择数据表示的信息类型。

   对于度量，您可以选择持续时间、日期部分、位置、布尔值、货币、百分比、年龄、距离和标识符类型。对于维度，您可以选择日期部分、位置、布尔值、人员、组织和标识符类型。

1. 对于**语义子类型**，选择选项以进一步指定数据表示的信息类型。

   此处的选项取决于您选择的语义类型以及与该字段关联的角色。有关度量和维度的语义类型及其关联子类型的列表，请参阅下表。


| 语义类型 | 语义子类型 | 适用于以下对象 | 
| --- | --- | --- | 
|  天数  |  | 度量 | 
|  布尔值  |  | 维度和度量 | 
|  货币  |  USD 欧元 GBP  | 度量 | 
|  日期部分  |  天 周 Month Year 季度  | 维度和度量 | 
|  距离  |  公里 计量器 码 英尺  | 度量 | 
|  Duration  |  秒 分钟 小时 天  | 度量 | 
|  标识符  |  | 维度和度量 | 
|  位置  |  邮政编码 Country（国家/地区） 州 City（城市）  | 维度和度量 | 
|  Organization（组织）  |  | Dimensions | 
|  百分比  |  | 度量 | 
|  人员  |  | Dimensions | 

# 分享快速浏览话题
<a name="topics-sharing"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 管理员和作者  | 

创建主题后，您可以与组织中的其他人共享。共享主题允许您的用户选择该主题并在搜索栏中询问相关问题。与用户共享主题后，您可以向他们分配权限，指定谁可以更改该主题。

**共享主题**

1. 在快速入门页面上，选择左侧**的主题**。

1. 在打开的**主题**页面上，打开要共享的主题。

1. 在打开的页面上，选择右上角的**共享**。

1. 在打开的**与用户共享主题**页面上，选择要与之共享主题的一个或多个用户。

   您可以使用搜索栏按电子邮件地址搜索用户。

1. 在**权限**列下选择**查看者**或**共有者**，为用户分配权限。

   有关这些权限的详细信息，请参阅下一节 [管理 Amazon Quick Sight 主题权限](topics-sharing-permissions.md)。

1. 选择完用户后，选择**共享**。

# 管理 Amazon Quick Sight 主题权限
<a name="topics-sharing-permissions"></a>

当你与组织中的其他人共享你的主题时，你可能需要控制谁可以更改它们。为此，请指定哪些用户是查看者，哪些用户是共有者。当@@ *观众*从列表中选择主题时，他们可以在搜索栏中看到该主题，但他们无法更改主题数据。*共同所有者*可以在搜索栏中看到主题，也可以更改主题。

**向用户分配主题权限**

1. 从 “快速入门” 页面中，选择 “**主题**”。

1. 在打开的**主题**页面上，打开要管理权限的主题。

1. 在打开的主题页面上，选择右上角的**共享**。

1. 在打开的**与用户共享主题**页面上，选择**管理主题访问权限**。

1. 在打开的**管理主题权限**页面上，找到要管理其访问权限的用户，然后在**权限**中，选择以下选项之一：
   + 要允许用户查看和更改主题，请选择**共有者**。
   + 要仅允许用户查看主题，请选择**查看者**。

# 查看 Quick Sight 主题表现和反馈
<a name="topics-performance"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 管理员和作者  | 

创建主题并与用户共享后，您可以审查该主题的效果。当有人使用你的话题提问或提供关于回复效果的反馈时，它会记录在主题的 “**摘要**” 和 “**用户活动**” 选项卡上。

在主题的**摘要**选项卡上，您可以查看一段时间内（从七天到一年）提出的问题数量的历史数据。您还可以看到收到正面反馈、负面反馈或未收到反馈的问题以及无法回答的问题的分布情况。

在**用户活动**选项卡上，您可以看到用户提出的问题列表以及他们留下的任何正面或负面反馈以及评论。

审查这些信息可以帮助您确定主题是否满足用户的需求。例如，假设您的主题收到了来自用户的大量负面反馈。当您查看用户活动时，您会注意到有几个用户对一个问题发表了评论，这些评论向他们显示了错误的数据。作为响应，您检查了他们提出的问题，发现他们使用了意料之外的术语。您决定将该术语作为同义词添加到主题的正确字段中。随着时间的推移，您注意到正面反馈有所增加。

## 审查主题效果
<a name="topics-performance-statistics"></a>

使用以下步骤查看主题的效果。

**查看主题的效果**

1. 在快速入门页面上，选择左侧**的主题**。

1. 在打开的**主题**页面上，打开要审查的主题。

   随即将打开主题，**统计数据**部分显示该主题的统计数据。

1. （可选）要更改图表中显示的历史数据数量，请选择以下选项之一：**7 天**、**30 天**、**90 天**、**120 天**或 **12 个月**。

1. （可选）要从数据中删除无法回答的问题，请清除**包括无法回答的数据**。

1. （可选）要从数据中删除未收到反馈的问题，请清除**包括无反馈数据**。

## 审查主题问题和反馈
<a name="topics-performance-user-activity"></a>

使用以下过程审查主题的问题和反馈。

**审查主题问题和反馈**

1. 在快速入门页面上，选择**主题**。

1. 在打开的**主题**页面上，打开要审查其反馈的主题。

1. 在打开的“主题”页面上，选择**用户活动**选项卡。

   将显示该主题的用户活动。在前面部分，您可以看到所提问题的总数以及可以回答和无法回答的问题数量。您还可以查看评为正面和负面的问题所占的百分比。此外，您还可以看到已消除歧义的问题所占的百分比。这意味着有人输入了问题，并将问题中的一个单词映射到主题中的一个字段。

   您可以选择这些统计数据中的任何一个以筛选问题列表。

1. （可选）要查看用户对问题留下的评论，请选择问题右侧的向下箭头。

   评论显示在左侧。

1. （可选）要查看用于回答问题的字段，请选择问题右侧的向下箭头。

   使用的字段显示在右侧。选择字段名称以编辑其元数据。

1. （可选）要查看已消除歧义的问题，请选择问题右侧的向下箭头，其中术语以红色突出显示。

   显示了术语的描述以及用于消除歧义的字段。要为字段添加同义词，请选择**添加同义词**。

1. （可选）要查看问题是如何回答的，请选择列表中问题旁边的**查**看。

1. （可选）要筛选问题列表，请选择右侧的**筛选条件**，然后按以下选项之一筛选。
   + **查看所有问题** – 此选项可删除所有筛选条件并显示主题已收到的所有问题。
   + **可回答** – 此选项将问题列表筛选为可回答的问题。可回答的问题是 Q 能够回答的问题。
   + **无法回答** – 此选项将问题列表筛选为无法回答的问题。无法回答的问题是 Q 无法回答的问题。
   + **消除歧义** – 此选项将问题列表筛选为已消除歧义的问题，即带有用户手动将字段映射到的术语的问题。
   + **无反馈** – 此选项将问题列表筛选为未收到反馈的问题。
   + **负面反馈** – 此选项将问题列表筛选为收到负面反馈的问题。
   + **正面反馈** – 此选项将问题列表筛选为收到正面反馈的问题。
   + **无评论** – 此选项将问题列表筛选为未收到用户评论的问题。
   + **有评论** – 此选项将问题列表筛选为收到用户评论的问题。
   + **用户** – 此选项将问题列表筛选为使用您输入的特定用户名的用户提出的问题。

# 刷新快速浏览主题索引
<a name="topics-index"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 管理员和作者  | 

创建主题时，Quick Sight 会创建、存储和维护一个索引，其中包含该主题中数据的定义。该索引未向 Quick Sight 作者公开。它也不是主题中包含的数据集的副本。指标未编制索引。例如，存储为整数的度量不会被索引。

主题索引是主题中包含的字段唯一字符串值的索引。该索引用于生成正确答案，在有人提问时提供自动完成建议，以及建议术语与列或数据值的映射。

要刷新主题索引，请刷新主题中的数据集。您可以手动刷新主题中的所有数据集或刷新单个数据集。您还可以查看数据集刷新历史记录以监控过去的刷新情况，并为主题中的每个数据集设置定期刷新计划。对于 SPICE 数据集，您可以将主题索引刷新计划与 SPICE 刷新计划同步。有关设置 SPICE 刷新计划的更多信息，请参阅 [按计划刷新数据集](refreshing-imported-data.md#schedule-data-refresh)。

**注意**  
目前，不支持每小时刷新计划。您可以设置刷新计划，以便每天最多刷新主题中的数据集一次。

我们建议您定期更新主题索引，以确保记录最新的定义和值。更新主题索引大约需要 15 到 30 分钟，具体取决于主题中包含的数据集的数量和大小。

**刷新主题索引**

1. 在快速入门页面上，选择**主题**。

1. 在打开的**主题**页面上，打开要刷新的主题。

   主题在**摘要**选项卡打开，该选项卡在页面底部显示主题中包含的数据集。它还会在右上角显示上次刷新主题的时间。

1. 选择右上角的**刷新**以刷新主题索引，然后选择**刷新数据**。手动执行此操作会刷新主题中的所有数据集。

   有关刷新主题中单个数据集的更多信息，请参阅 [在 Quick Sight 主题中刷新数据集](topics-data-refresh.md)。

# 使用 Amazon Quick Sight 处理 Quick Sight 主题 APIs
<a name="topics-cli"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

使用本节学习如何使用 Amazon Quick Sight 命令行界面 (CLI) 处理 Quick Sight 主题。

**先决条件**

在开始之前，请确保您拥有一个 AWS Identity and Access Management (IAM) 角色，该角色可向 CLI 用户授予调用 Quick Sight API 操作的访问权限。下表显示必须向 IAM 策略添加哪些权限才能使用特定 API 操作。要使用所有主题 API 操作，请添加表中列出的所有权限。


| API 操作 | IAM 策略 | 
| --- | --- | 
|  `CreateTopic`  |  `quicksight:CreateTopic` `quicksight:PassDataSet`  | 
|  `ListTopics`  |  `quicksight:ListTopics`  | 
|  `DescribeTopic`  |  `quicksight:DescribeTopic`  | 
|  `DescribeTopicPermissions`  |  `quicksight:DescribeTopicPermissions`  | 
|  `DescribeTopicRefresh`  |  `quicksight:DescribeTopicRefresh`  | 
|  `DeleteTopic`  |  `quicksight:DeleteTopic`  | 
|  `UpdateTopic`  |  `quicksight:UpdateTopic` `quicksight:PassDataSet`  | 
|  `UpdateTopicPermissions`  |  `quicksight:UpdateTopicPermissions`  | 
|  `CreateTopicRefreshSchedule`  |  `quicksight:CreateTopicRefreshSchedule`  | 
|  `ListTopicRefreshSchedules`  |  `quicksight:ListTopicRefreshSchedules`  | 
|  `DescribeTopicRefreshSchedule`  |  `quicksight:DescribeTopicRefreshSchedule`  | 
|  `UpdateTopicRefreshSchedule`  |  `quicksight:UpdateTopicRefreshSchedule`  | 
|  `DeleteTopicRefreshSchedule`  |  `quicksight:DeleteTopicRefreshSchedule`  | 
|  `BatchCreateTopicReviewedAnswer`  |  `quicksight:BatchCreateTopicReviewedAnswer`  | 
|  `BatchDeleteTopicReviewedAnswer`  |  `quicksight:BatchDeleteTopicReviewedAnswer`  | 
|  `ListTopicReviewedAnswers`  |  `quicksight:ListTopicReviewedAnswers`  | 

以下示例演示了允许用户使用 `ListTopics` API 操作的 IAM 策略。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "quicksight:ListTopics"
            ],
            "Resource": "*"
        }
    ]
}
```

------

配置了使用 Quick Sight 创建 Quick Sight 主题的权限后 APIs，请使用以下主题来创建和使用 Quick Sight 主题 APIs。

**Topics**
+ [使用 Quick Sight 处理 Quick Sight 主题 APIs](topic-cli-examples.md)
+ [使用 Quick Sight CLI 配置 Quick Sight 主题刷新计划](topic-refresh-apis.md)
+ [在内部和之间复制和迁移 Quick Sight 主题 AWS 账户](topic-cli-walkthroughs.md)
+ [使用 Quick Sight 在 Quick Sight 主题中创建和修改已审阅的 APIs](topic-reviewed-answer-apis.md)

# 使用 Quick Sight 处理 Quick Sight 主题 APIs
<a name="topic-cli-examples"></a>

以下示例创建了一个新主题。

```
aws quicksight create-topic
--aws-account-id AWSACCOUNTID
--topic-id TOPICID
--topic TOPIC
```

您也可以使用带有以下命令的 CLI 框架文件来创建新主题。有关 CLI 框架文件的更多信息，请参阅 *Amazon Quick Sight 开发人员指南*中的[使用 CLI 框架文件](https://docs.aws.amazon.com/quicksight/latest/developerguide/cli-skeletons.html)。

```
aws quicksight create-topic
--cli-input-json file://createtopic.json
```

创建新主题时，数据集刷新配置不会复制到该主题中。要为新主题设置主题刷新计划，您可以调用 `create-topic-refresh-schedule` API。有关使用 CLI 配置主题刷新计划的更多信息，请参阅 [使用 Quick Sight CLI 配置 Quick Sight 主题刷新计划](topic-refresh-apis.md)。

创建第一个主题后，您可以更新、删除、列出或请求主题摘要。

以下示例更新了主题。

```
aws quicksight update-topic
--aws-account-id AWSACCOUNTID
--topic-id TOPICID
--topic TOPIC
```

您也可以使用带有以下命令的 CLI 框架文件来更新主题。有关 CLI 框架文件的更多信息，请参阅 *Amazon Quick Sight 开发人员指南*中的[使用 CLI 框架文件](https://docs.aws.amazon.com/quicksight/latest/developerguide/cli-skeletons.html)。

```
aws quicksight update-topic
--cli-input-json file://updatetopic.json
```

以下示例提供了 Quick 账户中所有主题的列表。

```
aws quicksight list-topics 
--aws-account-id AWSACCOUNTID
```

以下示例删除了一个主题。

```
aws quicksight delete-topic 
--aws-account-id AWSACCOUNTID 
--topic-id TOPICID
```

以下示例提供了有关如何配置主题的信息。

```
aws quicksight describe-topic 
--aws-account-id AWSACCOUNTID 
--topic-id TOPICID
```

以下命令更新主题的权限。

```
aws quicksight update-topic-permissions
--aws-account-id AWSACCOUNTID
--topic-id TOPICID
--grant-permissions Principal=arn:aws:quicksight:us-east-1:AWSACCOUNTID:user/default/USERNAME,Actions=quicksight:DescribeTopic
--revoke-permissions Principal=arn:aws:quicksight:us-east-1:AWSACCOUNTID:user/default/USERNAME,Actions=quicksight:DescribeTopic
```

使用`grant-permissions`参数向 Quick 账户用户授予读取和作者权限。要向账户用户授予读取权限，请输入以下值：`"quicksight:DescribeTopic"`。要向账户用户授予权限，请输入以下值：
+ `"quicksight:DescribeTopic"`
+ `"quicksight:DescribeTopicRefresh"`
+ `"quicksight:ListTopicRefreshSchedules"`
+ `"quicksight:DescribeTopicRefreshSchedule"`
+ `"quicksight:DeleteTopic"`
+ `"quicksight:UpdateTopic"`
+ `"quicksight:CreateTopicRefreshSchedule"`
+ `"quicksight:DeleteTopicRefreshSchedule"`
+ `"quicksight:UpdateTopicRefreshSchedule"`
+ `"quicksight:DescribeTopicPermissions"`
+ `"quicksight:UpdateTopicPermissions"`

`RevokePermissions` 参数撤销授予账户用户的所有权限。

以下命令描述了来自主题的所有权限。

```
aws quicksight describe-topic-permissions 
--aws-account-id AWSACCOUNTID
--topic-id TOPICID
```

创建 Quick Sight 主题后，您可以使用 Amazon Quick Sight APIs [配置主题刷新计划](https://docs.aws.amazon.com/quicksuite/latest/userguide/topic-refresh-apis)、在账户[内或账户之间迁移 Quick Sight 主题](https://docs.aws.amazon.com/quicksuite/latest/userguide/topic-cli-walkthroughs)以及[创建已审核的答案](https://docs.aws.amazon.com/quicksuite/latest/userguide/topic-reviewed-answer-apis)。

# 使用 Quick Sight CLI 配置 Quick Sight 主题刷新计划
<a name="topic-refresh-apis"></a>

以下命令创建主题的刷新计划。

```
aws quicksight create-topic-refresh-schedule
--aws-account-id AWSACCOUNTID
--topic-id TOPICID
--dataset-arn DATASETARN
--refresh-schedule REFRESHSCHEDULE
```

为主题创建刷新计划后，您可以更新、删除、列出或请求该主题的刷新计划摘要。

以下命令更新主题的刷新计划。

```
aws quicksight update-topic-refresh-schedule 
--aws-account-id AWSACCOUNTID
--topic-id TOPICID
--dataset-id DATASETID
--refresh-schedule REFRESHSCHEDULE
```

以下示例提供了为主题配置的所有刷新计划的列表。

```
aws quicksight list-topic-refresh-schedules
--aws-account-id AWSACCOUNTID
--topic-id TOPICID
```

以下示例删除了主题刷新计划。

```
aws quicksight delete-topic-refresh-schedule 
--aws-account-id AWSACCOUNTID
--topic-id TOPICID
--dataset-id DATASETID
```

以下示例提供了有关如何配置主题刷新计划的信息。

```
aws quicksight describe-topic-refresh-schedule  
--aws-account-id AWSACCOUNTID
--topic-id TOPICID
--dataset-id DATASETID
```

# 在内部和之间复制和迁移 Quick Sight 主题 AWS 账户
<a name="topic-cli-walkthroughs"></a>

您可以使用 Quick Sight 命令行界面 (CLI) 将 Quick Sight 主题从一个账户迁移到另一个账户。您可以使用 Quick Sight CLI 重复重复使用同一个主题，而不必在多个仪表板、命名空间或账户中手动复制同一主题。此功能节省了 Quick Sight 作者的时间，并为跨多个仪表板的仪表板读者创建了标准化的主题体验。

要使用 Quick Sight CLI 迁移主题，请按以下步骤操作

**将主题迁移到其他账户**

1. 首先，确定要迁移的主题。您可以使用 `list-topics` API 命令查看 Quick 账户中每个主题的列表。

   ```
   aws quicksight list-topics --aws-account-id AWSACCOUNTID
   ```

1. 获得主题列表后，找到要迁移的主题并拨`describe-topic`打电话以接收该主题配置的 JSON 结构。

   ```
   aws quicksight describe-topic 
       --aws-account-id AWSACCOUNTID
       --topic-id TOPICID
   ```

   下面是 `describe-topic` API 响应的示例。

   ```
   {
       "Status": 200,
       "TopicId": "TopicExample", 
       "Arn": "string",
       "Topic": [
           {
               "Name": "{}",
               "DataSets": [
               {
               "DataSetArn": "{}",
               "DataSetName": "{}",
               "DataSetDescription": "{}",
               "DataAggregation": "{}",
               "Filters": [],
               "Columns": [],
               "CalculatedFields": [],
               "NamedEntities": []
               }
               ]
           }
       ],
       "RequestId": "requestId"
       }
   ```

1. 使用 JSON 响应创建一个框架文件，您可以将其输入到另一个 Quick 账户中的新`create-topic`呼叫中。在使用骨架文件进行 API 调用之前，请务必更改骨架文件中的 AWS 账户 ID 和数据集 ID，使其与要向其添加新主题的 AWS 账户 ID 和数据集 ID 相匹配。有关 CLI 框架文件的更多信息，请参阅 *Amazon Quick Sight 开发人员指南*中的[使用 CLI 框架文件](https://docs.aws.amazon.com/quicksight/latest/developerguide/cli-skeletons.html)。

   ```
   aws quicksight create-topic --aws-account-id AWSACCOUNTID \
   --cli-input-json file://./create-topic-cli-input.json
   ```

在您`create-topic`调用 Quick Sight API 后，新主题会出现在您的账户中。要确认新主题是否存在，请`list-topics`调用 Quick Sight API。如果复制的源主题包含已验证答案，则答案不会迁移到新主题。要查看配置到源主题的所有已验证答案的列表，请使用 `describe-topic` API 调用。

# 使用 Quick Sight 在 Quick Sight 主题中创建和修改已审阅的 APIs
<a name="topic-reviewed-answer-apis"></a>

创建 Quick Sight 主题后，您可以使用 Quick Sight APIs 创建、列出、更新和删除已审阅的主题答案。

下面的命令批量为 Quick Sight 主题创建多达 100 个经过审查的答案。

```
aws quicksight batch-create-topic-reviewed-answer \
--topic-id TOPICID \
--aws-account-id AWSACCOUNTID \                 
—answers ANSWERS
```

您还可以使用以下命令从 CLI 骨架文件批量创建已审核答案。有关 CLI 框架文件的更多信息，请参阅 *Amazon Quick Sight 开发人员指南*中的[使用 CLI 框架文件](https://docs.aws.amazon.com/quicksight/latest/developerguide/cli-skeletons.html)。

```
aws quicksight batch-create-topic-reviewed-answer \ 
--cli-input-json file://createTopicReviewedAnswer.json
```

以下命令列出了 Quick Sight 主题中所有已审核的答案。

```
aws quicksight list-topic-reviewed-answers \
--aws-account-id AWSACCOUNTID \
--topic-id TOPICID \
```

下面的示例批量删除某个主题的最多 100 个已审核答案。

```
aws quicksight batch-delete-topic-reviewed-answer \
--topic-id TOPICID \
--aws-account-id AWSACCOUNTID \                 
—answer-ids: ["AnswerId1, AnswerId2…"]
```

您还可以使用以下命令从 CLI 骨架文件批量创建主题已审核答案。有关 CLI 框架文件的更多信息，请参阅 *Amazon Quick Sight 开发人员指南*中的[使用 CLI 框架文件](https://docs.aws.amazon.com/quicksight/latest/developerguide/cli-skeletons.html)。

```
aws quicksight batch-delete-topic-reviewed-answer \
--cli-input-json file://deleteTopicReviewedAnswer.json
```

要更新已审核答案，请使用 `batch-delete-topic-reviewed-answer` API 从主题中删除现有答案。然后，使用 `batch-create-topic-reviewed-answer` API 将更新的已审核答案添加到主题。

# 在 Amazon Quick Sight 中处理数据故事
<a name="working-with-stories"></a>

借助带有 Quick Sight 的生成式商业智能，作者和读者可以快速生成其数据故事的初稿。使用提示和视觉效果制作包含您提供的详细信息的草稿。数据故事草稿并非旨在取代您自己的想法或进行分析。相反，数据故事是一个根据需要自定义和扩展的起点。上下文推荐和建议将您的提示与选定的视觉效果相结合，提供针对您的数据故事量身定制的相关详细信息。有关此问题的更多信息，请参阅[带快速瞄准功能的生成式商业智能](quicksight-gen-bi.md)。

使用以下主题创建、修改和共享数据故事。

**Topics**
+ [使用生成式 BI 创建数据故事](working-with-stories-create.md)
+ [在 Amazon Quick Sight 中个性化数据故事](working-with-stories-personalize.md)
+ [在 Amazon Quick Sight 中查看生成的数据故事](working-with-stories-view.md)
+ [在 Amazon Quick Sight 中编辑生成的数据故事](working-with-stories-edit.md)
+ [在 Amazon Quick Sight 中为数据故事添加主题和动画](working-with-stories-themes.md)
+ [在 Amazon Quick Sight 中分享数据故事](working-with-stories-share.md)

# 使用生成式 BI 创建数据故事
<a name="working-with-stories-create"></a>

使用以下步骤使用生成式 BI 创建数据故事。

**创建数据故事**

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

1. 在左边，选择 “**故事**”。

1. 在**数据故事**页面上，选择**新建数据故事**。

1. 在出现的**故事**屏幕中，导航到**构建故事**模式，然后输入要生成的数据故事提示。为了获得最佳结果，请不要像提问一样表达提示。相反，请键入你希望 Quick Sight 构建的数据故事。例如，假设您想创建一个有关各地区最常执行的医疗程序的数据故事。此使用案例的一个很好的提示是“构建一个关于各地区的医生最常执行的程序的数据故事。此外，请显示收治患者最多的专科。按专业建议我们需要在哪里配备更多医生，并至少提供四点支持数据。”

   您可以选择跳过此步骤并手动创建数据故事。如果选择放弃输入提示，则仍需要向数据故事添加视觉对象。

1. 在 **“选择视觉对象”** 下，选择 “**添加**”。

1. 选择包含要使用的视觉对象的控制面板，然后选择所需的视觉对象。最多可以向一个数据故事添加 20 个视觉对象。

   如果未看到要使用的控制面板，请使用模式顶部的**查找您的控制面板**搜索栏。

   您可以从您具有共享权限的任意数量的控制面板中选择视觉效果。显示**受限**徽章的视觉对象具有限制将其添加到数据故事中的权限。视觉对象可能因以下原因之一而受到限制：
   + 数据集连接到使用 Amazon Redshift 可信身份传播的数据来源。
   + 数据集位于受限制的文件夹内。

1. （可选）使用**选择文档**部分上传最多 5 个将在数据故事中使用的文档。每个文档不能超过 10MB。这些文档仅用于生成数据故事，不存储在 Quick Sight 中。下图显示了**构建故事**屏幕的**选择文档**部分。

1. （可选）如果您的 Quick 账户已连接到 Amazon Q Business 应用程序，请选中 “**使用来自亚马逊 Q Business 的见解**” 复选框，使用来自亚马逊 Q Business 的非结构化数据源来丰富您的数据故事。有关将 Quick 账户关联到 Amazon Q Business 应用程序的更多信息，请参阅[借助 Amazon Q Business 增强亚马逊快速洞察力](generative-bi-q-business.md)。

1. 选择**构建**。

生成数据故事后，请查看数据故事并从以下选项中进行选择：
+ **保留** – 将生成的内容保存到画布中。选择此选项后，“**构建故事**” 模式将关闭，您可以开始编辑数据故事。
+ **重试** – 允许用户编辑提示并生成新的数据故事。
+ **丢弃** – 删除生成的数据故事。

# 在 Amazon Quick Sight 中个性化数据故事
<a name="working-with-stories-personalize"></a>

利用您的 IAM Identity Center 实例中的用户位置和与工作相关的信息来生成与作者和读者更相关的个性化数据故事。例如，当美国的作者发出 “撰写以如何增加我所在地收入的计划为重点的商业战略” 的提示时，数据故事的叙述中会自动包含与美国相关的见解。如果作者希望数据故事重点关注另一个国家或地区（例如加拿大），他们可以在提示中指定这一点。

要使个性化发挥作用，您必须为与您的 Quick 账户关联的 IAM Identity Center 实例中的用户添加国家/地区和职称。有关更多信息，请参阅《IAM Identity Center 用户指南》中的 [Add users to your IAM Identity Center directory](https://docs.aws.amazon.com/singlesignon/latest/userguide/addusers.html)。

默认情况下，您的 IAM Identity Center 实例中的用户数据已连接到您的应用程序环境。这意味着所有数据故事默认​​都是个性化的。您可以随时在 QuickSight 管理控制台[的 “帐户设置” 菜单中选择退出个性化](https://docs.aws.amazon.com/quicksuite/latest/userguide/qs-q-manage-personalization)设置。

**注意**  
目前，美国东部（弗吉尼亚北部）和美国西部（俄勒冈） AWS 地区支持数据故事的个性化设置。

# 在 Amazon Quick Sight 中查看生成的数据故事
<a name="working-with-stories-view"></a>

生成并保存数据故事后，您可以从**数据故事**页面访问该数据故事。要查看数据故事，请选择要查看的数据故事以打开故事编辑器。

在创建和修改数据故事时，您可以预览数据故事向读者呈现的外观。要预览生成的数据故事，请选择页面顶部的**预览**图标。要退出预览，请选择**返回编辑器**。

# 在 Amazon Quick Sight 中编辑生成的数据故事
<a name="working-with-stories-edit"></a>

创建并保存数据故事后，您可以修改其内容以更好地满足您的需求。您可以设置数据故事文本的格式、添加图像、编辑视觉对象以及添加新块。

故事由不同的*块*组成，这些块充当您想要包含在数据故事中的文本、视觉对象和图像的容器。每个区块可以独立于数据故事中的其他区块进行格式化，类似于像素完美报告的各个部分。

要设置数据故事的文本的格式，请使用页面顶部的工具栏。工具栏了提供字体设置，以便您可以自定义字体类型、样式、颜色、大小、间距、文本突出显示和对齐方式。您也可以使用工具栏向数据故事块添加列。

使用以下选项之一为数据故事添加视觉对象。
+ 使用**视觉对象**窗格将视觉对象拖放到数据故事中。只有您在生成数据故事时选择的视觉对象才会显示在**视觉对象**窗格中。

  您也可以在**视觉对象**窗格中选择**添加**（\$1）图标来添加可拖放到数据故事中的新视觉对象。每个数据故事最多可以包含 20 个视觉对象。
+ 选择要向其添加图像的数据故事块。当出现光标时，输入正斜杠（`"/"`）以将图像或视觉对象插入该数据故事块中。

要编辑数据故事中的视觉对象，请选择要更改的视觉对象，然后选择**属性**图标。在出现的属性窗格中，您可以执行下面的操作：
+ 更改、隐藏或显示视觉对象的标题。默认情况下，显示视觉对象标题。
+ 更改、隐藏或显示视觉对象的副标题。默认情况下，视觉对象副标题处于隐藏状态。
+ 隐藏或显示数据标签。默认情况下，数据标签处于隐藏状态。
+ 隐藏、显示或更改图例的位置。默认情况下，图例处于隐藏状态。

要向数据故事添加新块，请选择任何现有块底部的加号（\$1）图标。然后选择所需的布局选项。您也可以从每个块顶部的**块选项**（三个点）图标中移动、复制或删除块。

要更改块中项的布局，您可以使用每个项旁边的六点图标将项拖放到任意位置。

# 在 Amazon Quick Sight 中为数据故事添加主题和动画
<a name="working-with-stories-themes"></a>

您可以为您生成的故事添加主题和动画。要向数据故事添加主题或动画，请选择**故事风格**图标。

在出现的**故事风格**窗格中，您可以执行以下操作：
+ 对于**主题**，选择您认为最适合您的数据故事的主题。
+ 对于**动画**，选择动画风格和速度。对于动画类型，可以选择**无**、**淡出**或**幻灯片**。默认动画为**无**。对于**速度**，选择**慢**、**中**或**快**。默认速度为**中**。

# 在 Amazon Quick Sight 中分享数据故事
<a name="working-with-stories-share"></a>

使用以下过程共享数据故事。

**共享数据故事**

1. 在要共享的数据故事的故事编辑器中，选择右上角的**共享**图标。

   或者，您可以选择数据故事预览顶部的**共享**图标。

1. 在出现的**共享数据故事**模式中，输入要与之共享数据故事的用户或组。

1. （可选）要将已发布数据故事的链接保存到剪贴板，请选择**复制链接**。

1. 选择 “**发布并共享**”。

如果您尝试共享故事，但收到一条消息表明无法共享该故事，请联系控制面板的所有者，让他们打开**允许共享数据故事**开关。有关此开关的更多信息，请参阅 [教程：创建 Amazon 快速浏览控制面板](example-create-a-dashboard.md)。

如果您尝试共享数据故事并收到错误消息，请联系控制面板所有者或您的 Quick 账户管理员寻求帮助。

在您共享数据故事后，与您共享故事的用户会收到一封通知电子邮件，其中包含该故事的链接。您可以从他们的 Quick 账户**的数据故事**页面访问数据故事。您还可以与可以访问数据故事的用户共享复制的数据故事链接。

您不能共享包含受限数据的数据故事。如果您尝试共享包含受限数据的故事，则会出现一条错误消息，其中列出了故事中所有受限制的视觉对象。如果需要，请在与用户共享您的数据故事之前从中删除受限制的视觉对象。

编辑已发布的数据故事时，请重新发布数据故事，以便将更改传播给您的最终用户。

# 在 Amazon Quick Sight 中处理场景
<a name="scenarios"></a>

拥有 Admin Pro、Author Pro 或 Reader Pro 角色的快速用户可以使用场景，使用简单的自然语言分析复杂的业务问题。

为了开始使用场景，Quick 用户描述了他们想要解决的问题，并添加了来自 Quick Sight 或计算机的相关数据以用于数据分析。或者，用户可以让 Amazon Q 搜索可用于解决问题的所有相关数据。Amazon Q 会返回一系列分析或提示以深入研究数据。用户还可以输入自己的提示来创建自定义分析。收到新的提示后，Amazon Q 会将分析分解为几个步骤并执行它们。输出包括特定的数据见解、交互式视觉对象以及对调查发现对业务可能意味着什么的分析以及建议的下一步行动。

场景可以帮助 Quick Pro 用户执行以下任务：
+ 自动执行繁琐、容易出错且效率低下的手动数据任务
+ 修改、扩展或重复使用过去的分析以快速适应业务变化
+ 比电子表格更深入地了解数据

使用以下主题在 Amazon Quick Sight 中创建和使用场景。

**Topics**
+ [快速瞄准场景的注意事项](#scenarios-considerations)
+ [创建 Amazon 快速浏览场景](scenarios-create.md)
+ [在 Amazon Quick Sight 场景中处理话题](scenarios-threads.md)
+ [在 Amazon Quick Sight 场景中处理数据](scenarios-data.md)

## 快速瞄准场景的注意事项
<a name="scenarios-considerations"></a>

以下注意事项适用于 Amazon Quick Sight 场景。
+ Amazon Quick Sight 场景适用于在 Amazon Quick 中拥有管理员专业版、作者专业版或 Reader Pro 角色的用户。有关将用户更新为 Quick Pro 角色的信息，请参阅[开始使用生成式 BI](generative-bi-get-started.md)。
+ 在中 AWS 区域 列出的特定场景中可用[Quick 中支持 AWS 区域 Amazon Q](regions.md#regions-aqs)。

在您查看了 Quick Sight 场景的注意事项后，请参阅[创建 Amazon 快速浏览场景](scenarios-create.md)，开始使用 Amazon Quick Sight 中的场景。

# 创建 Amazon 快速浏览场景
<a name="scenarios-create"></a>

Amazon Quick Pro 用户可以从 Quick Sight 仪表板或 Quick Sight 主页的 “**场景**” 部分创建场景。用户可以根据需要创建任意数量的场景。每个用户最多可同时拥有 3 个活动场景。每个 Quick Sight 账户一次最多支持 10 个活动场景。使用以下步骤在 Amazon Quick Sight 中创建场景。

**创建新场景**

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

1. 执行以下操作之一：

   1. 打开任意控制面板，然后查找以下内容之一：
      + 选择控制面板顶部的**在场景中分析此控制面板**（如果有）。
      + 从仪表板上的视觉对象中，打开下拉菜单并选择**浏览场景**。
      + 选择**构建**，然后选择**场景**。

   1. 在快速主页上，选择**场景**。在 “**方案**” 上，选择 “**新建场景**”。

1. 将显示新场景。在文本框中描述您想要解决的问题。此输入是场景中将发生的所有数据透视和操作的起点。您提供的描述可以根据需要任意宽泛或具体，例如 “分析使用趋势” 或 “根据上个月的数据计算 month-over-month和使用量 year-over-year变化”。

1. 添加您想要在场景中使用的数据。您可以从 Quick Sight 仪表板中选择数据，也可以从计算机上传文件。当您从控制面板中选择数据时，将生成所选数据的预览供您查看。有关在 Quick Sight 场景中预览和编辑数据的更多信息，请参阅[在 Amazon Quick Sight 场景中处理数据](scenarios-data.md)。

   下面的限制适用于场景中使用的数据：
   + 您最多可以向一个场景添加 10 个数据来源。
   + 一次最多可以从控制面板中选择 20 个视觉对象。
   + 上传的文件必须为 `.xlsx` 或 `.csv` 格式，且大小不得超过 1 GB。
   + 数据来源最多可包含 200 列。

   如果您不向场景中添加数据，Amazon Q 会自动搜索您的 Quick Sight 控制面板，以查找与上一步中的问题陈述相关的数据。

1. 选择 “**开始分析**”。

当你在 Quick Sight 场景中开始分析时，Quick Sight 会为分析做好数据准备并返回一个新*话题*。该线程包含生成的提示，可用于解决您在场景中描述的问题。线程是一种基于回合的上下文对话，由用户提示和 Amazon Q 响应组成，可用于深入了解特定场景。您可以使用线程来编写提示，假设 Amazon Q 记住了之前在线程中讨论的内容。您可以选择一个提示来继续线程，也可以选择线程上方的加号 (\$1) 来启动新线程。新线程使用的提示与您创建的第一个线程不同。有关使用线程的更多信息，请参阅[在 Amazon Quick Sight 场景中处理话题](scenarios-threads.md)。

# 在 Amazon Quick Sight 场景中处理话题
<a name="scenarios-threads"></a>

在 Quick Sight 中创建场景后，Amazon Q 生成的数据将以*线程*和*块*的形式呈现。线程是提示和响应的垂直链。块是一个提示和响应对。每个线程最多可包含 15 个块，每个场景最多可包含 50 个块，这些块分布在多个线程中。

创建新线程时，Amazon Q 生成的提示列表会显示在新块内。当您选择其中一个提示进行深入分析时，Amazon Q 会分析与所选提示相关的数据，并返回所有数据调查发现、预测以及可从分析中得出的结论的摘要。

要继续该线程并深入研究提示，请选择位于块下方的加号 (**\$1**) 以创建一个新块，其中包含已生成提示的新列表，这些提示会将上一个块的调查发现纳入考量。要启动一个分析数据不同方面的新线程，请选择场景中任意块上方的加号 (**\$1**) 以创建新线程。

只要要更改的块已加载完成，就可以从场景中折叠、复制或删除块。使用以下过程更改场景块。

**折叠、复制或删除块**

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

1. 从选项窗格中选择**场景**，然后选择要更改的场景。

1. 导航到您想要更改的块，然后选择块右上角的省略号 (...)。

1. 执行以下操作之一：
   + 要折叠块，请选择**折叠**。要展开折叠的块，请选择块右上角的省略号，然后选择**展开**。
   + 要复制块，请选择**复制**。该块被复制并放置在原始块旁边的新线程中。
   + 要删除块，请选择**删除**。

您还可以修改块的提示以更好地匹配您的使用案例。使用以下过程修改块提示。

**修改块的提示**

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

1. 从选项窗格中选择**场景**，然后选择要更改的场景。

1. 导航到要更改的块，然后选择**修改块**。

1. 在出现的**修改块**弹出窗口中，输入块的新描述，然后选择**应用**。

修改提示后，Amazon Q 会分析数据并返回新生成的分析，以反映对提示所做的更改。

# 在 Amazon Quick Sight 场景中处理数据
<a name="scenarios-data"></a>

在 Amazon Quick Sight 中创建场景时，您可以预览和修改该场景用于生成摘要的数据。使用以下各节来了解 Quick 用户在场景中与数据交互的方式。

**Topics**
+ [向场景添加更多数据](#scenarios-data-add-data)
+ [编辑预览中的数据](#scenarios-data-edit-preview)
+ [编辑快照中的数据](#scenarios-data-edit-snapshot)

## 向场景添加更多数据
<a name="scenarios-data-add-data"></a>

在 Amazon Quick Sight 中创建场景后，您可以随时向该场景添加更多数据。使用以下过程向 Amazon Quick Sight 场景中添加数据。

**向现有 Amazon Quick Sight 场景中添加数据**

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

1. 从选项窗格中选择**场景**，然后选择要添加更多数据的场景。

1. 在操作栏中选择**数据来源**图标以打开**数据**窗格。

1. 执行以下操作之一：

   1. 要向场景中添加 Quick Sight **数据，请选择 “查找数据**”，然后选择要添加到场景中的数据集或仪表板视觉对象。选择了要添加到场景中的所有 Quick Sight 数据后，选择 “**添加**”。

   1. 要将文件从您的计算机上传到场景，请选择**上传文件**。

   以下限制适用于添加到场景的数据：
   + 您最多可以向一个场景添加 10 个数据来源。
   + 一次最多可以从控制面板中选择 20 个视觉对象。
   + 上传的文件必须为 `.xlsx` 或 `.csv` 格式，且大小不得超过 1 GB。
   + 数据来源最多可包含 200 列。

将新数据添加到场景后，Amazon Q 会将该数据包含在所有新分析中。

## 编辑预览中的数据
<a name="scenarios-data-edit-preview"></a>

当您从 Quick Sight 仪表板中选择要在场景中使用的数据时，系统会生成数据的预览以供查看，然后再将其添加到分析中。如果需要，可以对处于预览状态的控制面板数据进行下面的更改：
+ **筛选条件** - 如果只想分析可用数据的子集，或者需要减少场景中包含的行数，则可以对数据应用筛选条件。
+ **排序** – 如果可用数据超过 100 万行，并且您想要优先保留特定列中的值，则可以对数据进行排序以满足您的需求。

## 编辑快照中的数据
<a name="scenarios-data-edit-snapshot"></a>

向场景中添加仪表板或外部数据时，Quick Sight 会创建要查看的数据源的快照。要查看场景中使用的数据的快照，请选择操作栏中的**数据来源**图标。这将打开**数据**窗格，然后可以选择要查看的数据快照。

您可以对数据快照执行以下操作：
+ 要更新数据快照的标题，请选择标题旁边的铅笔图标，然后输入快照的新标题。
+ 选择**筛选**图标筛选场景中使用的数据。如果希望场景仅使用添加到场景的数据子集，则可以使用此选项。
+ 选择**排序**图标对场景中使用的数据进行排序。如果数据超过 100 万行，则可以使用此选项来优先保留特定列。
+ 选择**字段列表**图标以选择场景中包含哪些字段。此选项可用于控制场景中使用哪些列。

完成更新场景数据后，关闭**数据**窗格。

# 对亚马逊 Quick Sight
<a name="troubleshooting"></a>

 使用这些信息来帮助您诊断和修复在使用 Amazon Quick Sight 时可能遇到的常见问题。

**注意**  
 需要更多帮助？ 您可以访问 Amazon Quick Sight [用户社区](https://answers.quicksight.aws.amazon.com/sn/index.html)或[AWS 论坛](https://forums.aws.amazon.com/)。另请参阅 [Quick Sight 资源库](https://aws.amazon.com/quicksight/resource-library/)。

**Topics**
+ [解决 Amazon Quick Sight 问题和错误消息](#quicksight-errors)
+ [将 Amazon Athena 与 Amazon Quick Sight 配合使用时出现连接问题](troubleshoot-athena.md)
+ [Amazon Quick Sight 的数据源连接问题](troubleshoot-connect-to-datasources.md)
+ [Quick Sight 的登录问题](troubleshoot-login.md)
+ [Quick Sight 的视觉问题](visual-issues.md)

## 解决 Amazon Quick Sight 问题和错误消息
<a name="quicksight-errors"></a>

如果遇到困难或收到错误消息，您可以使用几种方法解决该问题。以下是一些可以提供帮助的资源：
+ 有关数据集摄取（导入数据）期间出现的错误，请参阅 [SPICE 摄取错误代码](errors-spice-ingestion.md)。
+ 有关技术用户问题，请访问[用户社区](https://answers.quicksight.aws.amazon.com/sn/index.html)。
+ 有关管理员问题，请参阅 [AWS 论坛](https://forums.aws.amazon.com/)。
+ 如果您需要更多定制帮助，请联系 Supp AWS ort。要在登录时执行此操作 AWS 账户，请选择右上角的 Su **ppor** t，然后选择 Su **pport Center**。

# 将 Amazon Athena 与 Amazon Quick Sight 配合使用时出现连接问题
<a name="troubleshoot-athena"></a>

接下来，您可以找到有关在使用 Amazon Athena 和 Amazon Quick Sight 时可能遇到的疑难解答信息。

在尝试排查 Athena 的其他问题之前，请确保您可以连接到 Athena。有关排查 Athena 连接问题的更多信息，请参阅 [无法连接到 Amazon Athena](troubleshoot-connect-athena.md)。

如果您可以连接但遇到其他问题，则在将查询添加到 Amazon Quick Sight 之前，先在 Athena 控制台 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)() 中运行查询会很有用。有关其他问题排查的信息，请参阅《Athena 用户指南》**中的[问题排查](https://docs.aws.amazon.com/athena/latest/ug/troubleshooting.html)。

**Topics**
+ [将 Athena 与 Amazon Quick Sight 配合使用时未找到列](troubleshoot-athena-column-not-found.md)
+ [将 Athena 与 Amazon Quick Sight 配合使用时数据无效](troubleshoot-athena-invalid-data.md)
+ [将 Athena 与 Amazon Quick Sight 配合使用时的查询超时时间](troubleshoot-athena-query-timeout.md)
+ [将 Athena 与 Amazon Quick Sight 配合使用时，暂存存储桶已不存在](troubleshoot-athena-missing-bucket.md)
+ [在 Amazon Quick Sight 中 AWS Glue 与 Athena 一起使用时表格不兼容](troubleshoot-athena-glue-table-not-upgraded.md)
+ [将 Athena 与 Amazon Quick Sight 配合使用时未找到表格](troubleshoot-athena-table-not-found.md)
+ [将 Athena 与 Quick Sight 配合使用时出现工作组和输出错误](troubleshoot-athena-workgroup.md)

# 将 Athena 与 Amazon Quick Sight 配合使用时未找到列
<a name="troubleshoot-athena-column-not-found"></a>

如果 Athena 数据来源中缺少分析中的列，您会收到“`column not found`”错误。

在 Amazon Quick Sight 中，打开您的分析。在**可视化**选项卡中，选择**选择数据集**、**编辑分析数据集**。

在**此分析中的数据集**屏幕中，选择您数据集旁边的**编辑**来刷新数据集。Amazon Quick Sight 会将架构缓存两分钟。因此，可能需要等待 2 分钟，之后才会显示最新更改。

要调查该列最初是如何丢失的，你可以前往 Athena 控制台 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)() 并查看查询历史记录以查找编辑该表的查询。

如果您在预览模式下编辑自定义 SQL 查询时出现此错误，请验证查询中的列名称，然后检查是否有其他语法错误。例如，请检查列名称是否未用为字符串保留的单引号括起来。

如果问题仍然存在，请验证表、列和查询是否符合 Athena 要求。有关更多信息，请参阅《Athena 用户指南》**中的[表、数据库和列的名称](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html)和[问题排查](https://docs.aws.amazon.com/athena/latest/ug/troubleshooting.html)。

# 将 Athena 与 Amazon Quick Sight 配合使用时数据无效
<a name="troubleshoot-athena-invalid-data"></a>

在计算字段中使用任何运算符或函数时，会出现无效数据错误。为了解决这一问题，请验证表中的数据是否与您为函数提供的格式一致。

例如，假设要将函数 `parseDate(expression, [‘format’], [‘time_zone’])` 用作 **parseDate(date\$1column, ‘MM/dd/yyyy’)**。在这种情况下，`date_column` 中的所有值都必须符合 `'MM/dd/yyyy'` 格式 (`’05/12/2016’`)。任何未采用此格式 (**‘2016/12/05’**) 的值都会导致错误。

# 将 Athena 与 Amazon Quick Sight 配合使用时的查询超时时间
<a name="troubleshoot-athena-query-timeout"></a>

如果您的查询超时，则可尝试以下选项来解决您的问题。

如果故障是在进行分析时生成的，请记住，生成任何视觉效果的 Amazon Quick Sight 超时时间为两分钟。如果您使用的是自定义 SQL 查询，则可简化查询来优化运行时间。

如果您处于直接查询模式（不使用 SPICE）中，则可尝试将数据导入 SPICE。不过，如果查询超过 Athena 的 30 分钟超时限制，在将数据导入 SPICE 时可能会再次超时。有关 Athena 限制的最新信息，请参阅《AWS 一般参考》**中的 [Amazon Athena Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#amazon-athena-limits)。

# 将 Athena 与 Amazon Quick Sight 配合使用时，暂存存储桶已不存在
<a name="troubleshoot-athena-missing-bucket"></a>

利用此部分的内容帮助解决以下错误：“**The staging bucket for this query result no longer exists in the underlying data source.** (此查询结果的暂存存储桶在基础数据来源中不再存在。)”

 当您使用 Athena 创建数据集时，Amazon Quick Sight 会创建一个 Amazon S3 存储桶。默认情况下，此存储桶的名称类似于“`aws-athena-query-results-<REGION>-<ACCOUNTID>`”。如果您删除此存储桶，则您的下一个 Athena 查询可能会失败，同时返回指示暂存存储桶不再存在的错误。

 要修复此错误，请在正确的 AWS 区域中创建新的同名存储桶。

# 在 Amazon Quick Sight 中 AWS Glue 与 Athena 一起使用时表格不兼容
<a name="troubleshoot-athena-glue-table-not-upgraded"></a>

如果你在 Athena 中使用 Amazon Quick Sight 中的 AWS Glue 表格时遇到错误，那可能是因为你缺少了一些元数据。请按照以下步骤查看您的表格是否没有 Amazon Quick Sight 让 Athena 连接器正常工作所需的`TableType`属性。通常，这些表的元数据不会迁移到 AWS Glue 数据目录中。有关更多信息，请参阅[《 AWS Glue 开发人员指南》 Step-by-Step中的升级到 AWS Glue 数据目录](https://docs.aws.amazon.com/athena/latest/ug/glue-upgrade.html)*。*

如果您此时不想迁移到 AWS Glue 数据目录，则有两种选择。您可以通过 AWS Glue 管理控制台重新创建每 AWS Glue 张表。或者，您可以使用以下过程中列出的 AWS CLI 脚本来识别和更新缺少`TableType`属性的表。

如果您更希望使用 CLI 执行此操作，请使用以下过程以帮助您设计脚本。

**使用 CLI 设计脚本**

1. 使用 CLI 来了解哪些 AWS Glue 表没有`TableType`属性。

   ```
   aws glue get-tables --database-name <your_datebase_name>;
   ```

   例如，可以在 CLI 中运行以下命令。

   ```
   aws glue get-table --database-name "test_database" --name "table_missing_table_type"
   ```

   下面是输出内容的示例。可以看到，表 `"table_missing_table_type"` 未声明 `TableType` 属性。

   ```
   {
   		"TableList": [
   			{
   				"Retention": 0,
   				"UpdateTime": 1522368588.0,
   				"PartitionKeys": [
   					{
   						"Name": "year",
   						"Type": "string"
   					},
   					{
   						"Name": "month",
   						"Type": "string"
   					},
   					{
   						"Name": "day",
   						"Type": "string"
   					}
   				],
   				"LastAccessTime": 1513804142.0,
   				"Owner": "owner",
   				"Name": "table_missing_table_type",
   				"Parameters": {
   					"delimiter": ",",
   					"compressionType": "none",
   					"skip.header.line.count": "1",
   					"sizeKey": "75",
   					"averageRecordSize": "7",
   					"classification": "csv",
   					"objectCount": "1",
   					"typeOfData": "file",
   					"CrawlerSchemaDeserializerVersion": "1.0",
   					"CrawlerSchemaSerializerVersion": "1.0",
   					"UPDATED_BY_CRAWLER": "crawl_date_table",
   					"recordCount": "9",
   					"columnsOrdered": "true"
   				},
   				"StorageDescriptor": {
   					"OutputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
   					"SortColumns": [],
   					"StoredAsSubDirectories": false,
   					"Columns": [
   						{
   							"Name": "col1",
   							"Type": "string"
   						},
   						{
   							"Name": "col2",
   							"Type": "bigint"
   						}
   					],
   					"Location": "s3://myAthenatest/test_dataset/",
   					"NumberOfBuckets": -1,
   					"Parameters": {
   						"delimiter": ",",
   						"compressionType": "none",
   						"skip.header.line.count": "1",
   						"columnsOrdered": "true",
   						"sizeKey": "75",
   						"averageRecordSize": "7",
   						"classification": "csv",
   						"objectCount": "1",
   						"typeOfData": "file",
   						"CrawlerSchemaDeserializerVersion": "1.0",
   						"CrawlerSchemaSerializerVersion": "1.0",
   						"UPDATED_BY_CRAWLER": "crawl_date_table",
   						"recordCount": "9"
   					},
   					"Compressed": false,
   					"BucketColumns": [],
   					"InputFormat": "org.apache.hadoop.mapred.TextInputFormat",
   					"SerdeInfo": {
   						"Parameters": {
   						"field.delim": ","
   						},
   						"SerializationLibrary": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe"
   					}
   				}
   			}
   		]
   	}
   ```

1. 在编辑器中编辑表定义，将 `"TableType": "EXTERNAL_TABLE"` 添加到表定义，如下例所示。

   ```
   {
   	"Table": {
   		"Retention": 0,
   		"TableType": "EXTERNAL_TABLE",
   		"PartitionKeys": [
   			{
   				"Name": "year",
   				"Type": "string"
   			},
   			{
   				"Name": "month",
   				"Type": "string"
   			},
   			{
   				"Name": "day",
   				"Type": "string"
   			}
   		],
   		"UpdateTime": 1522368588.0,
   		"Name": "table_missing_table_type",
   		"StorageDescriptor": {
   			"BucketColumns": [],
   			"SortColumns": [],
   			"StoredAsSubDirectories": false,
   			"OutputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
   			"SerdeInfo": {
   				"SerializationLibrary": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe",
   				"Parameters": {
   					"field.delim": ","
   				}
   			},
   			"Parameters": {
   				"classification": "csv",
   				"CrawlerSchemaSerializerVersion": "1.0",
   				"UPDATED_BY_CRAWLER": "crawl_date_table",
   				"columnsOrdered": "true",
   				"averageRecordSize": "7",
   				"objectCount": "1",
   				"sizeKey": "75",
   				"delimiter": ",",
   				"compressionType": "none",
   				"recordCount": "9",
   				"CrawlerSchemaDeserializerVersion": "1.0",
   				"typeOfData": "file",
   				"skip.header.line.count": "1"
   			},
   			"Columns": [
   				{
   					"Name": "col1",
   					"Type": "string"
   				},
   				{
   					"Name": "col2",
   					"Type": "bigint"
   				}
   			],
   			"Compressed": false,
   			"InputFormat": "org.apache.hadoop.mapred.TextInputFormat",
   			"NumberOfBuckets": -1,
   			"Location": "s3://myAthenatest/test_date_part/"
   		},
   		"Owner": "owner",
   		"Parameters": {
   			"classification": "csv",
   			"CrawlerSchemaSerializerVersion": "1.0",
   			"UPDATED_BY_CRAWLER": "crawl_date_table",
   			"columnsOrdered": "true",
   			"averageRecordSize": "7",
   			"objectCount": "1",
   			"sizeKey": "75",
   			"delimiter": ",",
   			"compressionType": "none",
   			"recordCount": "9",
   			"CrawlerSchemaDeserializerVersion": "1.0",
   			"typeOfData": "file",
   			"skip.header.line.count": "1"
   		},
   		"LastAccessTime": 1513804142.0
   	}
   	}
   ```

1. 您可以改写以下脚本以更新表输入，使其包含 `TableType` 属性。

   ```
   aws glue update-table --database-name <your_datebase_name> --table-input <updated_table_input>
   ```

   下面是一个示例。

   ```
   aws glue update-table --database-name test_database --table-input '
   	{
   			"Retention": 0,
   			"TableType": "EXTERNAL_TABLE",
   			"PartitionKeys": [
   				{
   					"Name": "year",
   					"Type": "string"
   				},
   				{
   					"Name": "month",
   					"Type": "string"
   				},
   				{
   					"Name": "day",
   					"Type": "string"
   				}
   			],
   			"Name": "table_missing_table_type",
   			"StorageDescriptor": {
   				"BucketColumns": [],
   				"SortColumns": [],
   				"StoredAsSubDirectories": false,
   				"OutputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
   				"SerdeInfo": {
   					"SerializationLibrary": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe",
   					"Parameters": {
   						"field.delim": ","
   					}
   				},
   				"Parameters": {
   					"classification": "csv",
   					"CrawlerSchemaSerializerVersion": "1.0",
   					"UPDATED_BY_CRAWLER": "crawl_date_table",
   					"columnsOrdered": "true",
   					"averageRecordSize": "7",
   					"objectCount": "1",
   					"sizeKey": "75",
   					"delimiter": ",",
   					"compressionType": "none",
   					"recordCount": "9",
   					"CrawlerSchemaDeserializerVersion": "1.0",
   					"typeOfData": "file",
   					"skip.header.line.count": "1"
   				},
   				"Columns": [
   					{
   						"Name": "col1",
   						"Type": "string"
   					},
   					{
   						"Name": "col2",
   						"Type": "bigint"
   					}
   				],
   				"Compressed": false,
   				"InputFormat": "org.apache.hadoop.mapred.TextInputFormat",
   				"NumberOfBuckets": -1,
   				"Location": "s3://myAthenatest/test_date_part/"
   			},
   			"Owner": "owner",
   			"Parameters": {
   				"classification": "csv",
   				"CrawlerSchemaSerializerVersion": "1.0",
   				"UPDATED_BY_CRAWLER": "crawl_date_table",
   				"columnsOrdered": "true",
   				"averageRecordSize": "7",
   				"objectCount": "1",
   				"sizeKey": "75",
   				"delimiter": ",",
   				"compressionType": "none",
   				"recordCount": "9",
   				"CrawlerSchemaDeserializerVersion": "1.0",
   				"typeOfData": "file",
   				"skip.header.line.count": "1"
   			},
   			"LastAccessTime": 1513804142.0
   		}'
   ```

# 将 Athena 与 Amazon Quick Sight 配合使用时未找到表格
<a name="troubleshoot-athena-table-not-found"></a>

如果 Athena 数据来源中缺少分析中的表，您会收到“`table not found`”错误。

在 Athena 控制台 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)() 中，在相应架构下检查您的表。您可以在 Athena 中重新创建表，然后在 Amazon Quick Sight 中在该表上创建新的数据集。要调查表最初是如何丢失的，您可以使用 Athena 控制台查看查询历史记录。此举可帮助您找到删除了该表的查询。

如果您在预览模式下编辑自定义 SQL 查询时出现此错误，请验证查询中的表名称，然后检查是否有其他语法错误。Amazon Quick Sight 无法从查询中推断出架构。必须在查询中指定架构。

例如，下面的语句可以运行。

```
select from my_schema.my_table
```

下面的语句将失败，因为它缺少架构。

```
select from my_table
```

如果问题仍然存在，请验证表、列和查询是否符合 Athena 要求。有关更多信息，请参阅《Athena 用户指南》**中的[表、数据库和列的名称](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html)和[问题排查](https://docs.aws.amazon.com/athena/latest/ug/troubleshooting.html)。

# 将 Athena 与 Quick Sight 配合使用时出现工作组和输出错误
<a name="troubleshoot-athena-workgroup"></a>

要验证是否已正确设置工作组，请检查以下设置：
+ **与数据来源关联的 Athena 工作组必须存在。**

  要解决此问题，您可以返回 Athena 数据来源设置并选择其他工作组。有关更多信息，请参阅《Athena 用户指南》**中的[设置工作组](https://docs.aws.amazon.com/athena/latest/ug/workgroups-procedure.html)。

  另一种解决方案是让 AWS 账户 管理员在 Athena 控制台中重新创建工作组。
+ **与数据来源关联的 Athena 工作组必须处于启用状态。**

   AWS 账户 管理员需要在 Athena 控制台中启用工作组。使用此直接链接打开Athena控制台:. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 然后在 **Workgroup (工作组)** 面板中选择适当的工作组并查看其设置。选择**启用工作组**。
+ **您必须有权访问与 Athena 工作组关联的 Amazon S3 输出位置。**

  要授予 Amazon Quick Sight 访问 S3 输出位置的权限，Amazon Quick Sight 管理员可以在 “**管理**” QuickSight 屏幕中编辑 “**安全和权限**”。
+ **Athena 工作组必须具有关联的 S3 输出位置。**

   AWS 账户 管理员需要在 Athena 控制台中将 S3 存储桶与工作组关联。使用此直接链接打开Athena控制台:. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 然后在 **Workgroup (工作组)** 面板中选择适当的工作组并查看其设置。设置**查询结果位置**。

# Amazon Quick Sight 的数据源连接问题
<a name="troubleshoot-connect-to-datasources"></a>

参阅下节内容帮助您排查数据来源连接问题。在继续之前，请确认数据库目前可用。此外，请确认您使用的连接信息正确且凭证有效。

**Topics**
+ [数据来源连接选项看似正常（SSL）却无法连接](troubleshoot-connect-SSL.md)
+ [无法连接到 Amazon Athena](troubleshoot-connect-athena.md)
+ [无法连接到 Amazon S3](troubleshoot-connect-S3.md)
+ [无法根据现有的 Adobe Analytics 数据来源创建或刷新数据集](troubleshoot-connect-adobe-analytics.md)
+ [需要验证与数据来源的连接或更改数据来源设置](troubleshoot-connect-validate.md)
+ [无法连接到 MySQL（SSL 和授权问题）](troubleshoot-connect-mysql.md)
+ [无法连接到 RDS](troubleshoot-connect-RDS.md)

# 数据来源连接选项看似正常（SSL）却无法连接
<a name="troubleshoot-connect-SSL"></a>

安全套接字层 (SSL) 配置不正确时，可能会出现连接问题。可能出现以下症状：
+ 您可以采用其他方式或从其他位置连接到数据库，但以这种方式不行。
+ 您可以连接到类似的数据库，但无法连接此数据库。

在继续之前，请先排除以下情况：
+ 权限问题
+ 可用性问题
+ 证书过期或无效
+ 自签名证书
+ 证书链的顺序错误
+ 端口未启用
+ 防火墙阻止 IP 地址
+ Web 套接字已被阻止
+ 虚拟私有云（VPC）或安全组配置不正确。

为了帮助查找 SSL 的问题，您可以使用一个在线 SSL 检查程序或像 OpenSSL 这样的工具。

 以下步骤演示在疑似 SSL 问题时如何排查连接错误。在本示例中，管理员已安装 OpenSSL。

**Example**  

1. 用户发现连接到数据库时有问题。用户确认自己可以连接其他 AWS 区域中的不同数据库。他们尝试连接同一数据库的其他版本，结果是可以轻松连接。

1. 管理员检查了问题，并决定验证证书是否正常工作。管理员在线搜索关于使用 OpenSSL 的文章来排查或调试 SSL 连接问题。

1. 使用 OpenSSL，管理员验证了终端的 SSL 配置。

   ```
   echo quit
   openssl s_client –connect <host>:port
   ```

   结果显示证书无法正常工作。

   ```
   ...
   ...
   ...
   CONNECTED(00000003)
   012345678901234:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:782:
   ---
   no peer certificate available
   ---
   No client certificate CA names sent
   ---
   SSL handshake has read 7 bytes and written 278 bytes
   ---
   New, (NONE), Cipher is (NONE)
   Secure Renegotiation IS NOT supported
   SSL-Session:
       Protocol  : TLSv1.2
       Cipher    : 0000
       Session-ID:
       Session-ID-ctx:
       Master-Key:
       Key-Arg   : None
       PSK identity: None
       PSK identity hint: None
       Start Time: 1497569068
       Timeout   : 300 (sec)
       Verify return code: 0 (ok)
   ---
   ```

1. 管理员在用户的数据库服务器上安装了 SSL 证书，从而更正了此问题。

有关本示例中解决方案的更多详细信息，请参阅《Amazon RDS 用户指南》**中的[使用 SSL 加密与数据库实例的连接](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)。

# 无法连接到 Amazon Athena
<a name="troubleshoot-connect-athena"></a>


|  | 
| --- |
|    目标受众：Amazon Quick 管理员  | 

要帮助排查与 Athena 连接的问题，请参阅本节内容。

如果无法连接到 Amazon Athena，您可能会在运行查询时遇到权限不足错误，显示权限未配置。要验证您是否可以将 Amazon Quick Sight 连接到 Athena，请检查以下设置：
+ AWS Amazon Quick Sight 内部的资源权限
+ AWS Identity and Access Management (IAM) 策略
+ Amazon S3 位置
+ 查询结果位置
+ AWS KMS 密钥策略（仅适用于加密数据集）

有关详细信息，请参阅以下内容。有关排查 Athena 中其他问题的信息，请参阅 [将 Amazon Athena 与 Amazon Quick Sight 配合使用时出现连接问题](troubleshoot-athena.md)。

## 确保您已授权 Amazon Quick Sight 使用 Athena
<a name="troubleshoot-connect-athena-authorizing"></a>


|  | 
| --- |
|    目标受众：Amazon Quick 管理员  | 

使用以下步骤确保您成功授权 Amazon Quick Sight 使用 Athena。 AWS 资源权限适用于所有 Amazon Quick Sight 用户。

要执行此操作，您必须是 Amazon Quick Sight 管理员。要检查您是否有访问权限，请确认您在右上角的个人资料中打开菜单时看到了 “**管理**” QuickSight 选项。

**授权 Amazon Quick Sight 访问 Athena**

1. 选择自己的个人资料名称（右上角）。选择 “**管理 Quick Sight**”，然后向下滚动到 “**自定义权限**” 部分。

1. 选择**AWS 资源**，然后选择**添加或删除**。

1. 在列表中找到 Athena。清除 Athena 旁边的方框，然后再次选中以启用 Athena。

   然后选择 **Connect both (连接两者)**。

1. 选择您要从 Amazon Quick Sight 访问的存储桶。

   您在此处访问的 S3 存储桶的设置与您通过从列表中选择 Amazon S3 访问的 AWS 服务设置相同。请注意，避免无意中禁用其他人使用的存储桶。

1. 选择**完成**确认自己的选择。您也可以选择**取消**，不保存就退出。

   

1. 选择 “**更新**” 以保存您的新设置以供 Amazon Quick Sight 访问 AWS 服务。您也可以选择**取消**，不进行任何更改就退出。

1. 完成后，请确保您使用的是正确 AWS 区域 的。

   如果您必须在此过程的第一步中进行更改，请将其更改回之前 AWS 区域 使用的版本。 AWS 区域 

## 确保 IAM 策略授予了正确的权限
<a name="troubleshoot-connect-athena-perms"></a>


|  | 
| --- |
|    目标受众：系统管理员  | 

您的 AWS Identity and Access Management (IAM) 策略必须授予特定操作的权限。您的 IAM 用户或角色必须能够读取和写入 Athena 用于查询的 S3 存储桶的输入和输出。

如果数据集已加密，则 IAM 用户必须是指定密钥策略中的 AWS KMS 密钥用户。

**验证 IAM 策略是否有权对查询使用 S3 存储桶**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 找到所使用的 IAM 用户或角色。选择用户或角色名称以查看关联的策略。

1. 验证策略是否具有正确的权限。选择您想要验证的策略，然后选择**编辑策略**。使用可视化编辑器，该编辑器在默认情况下打开。如果您改为打开 JSON 编辑器，请选择**可视化编辑器**选项卡。

1. 在列表中选择 S3 条目以查看其内容。该策略需要授予列出、读取和写入权限。如果 S3 未在列表中，也没有正确的权限，您可以在此处它们。

有关与 Quick Sight 配合使用的 IAM 策略的示例，请参阅[Quick 的 IAM 策略示例](iam-policy-examples.md)。

## 确保 IAM 用户有权 read/write 访问您的 S3 位置
<a name="troubleshoot-connect-athena-read-write-access"></a>


|  | 
| --- |
|    目标受众：Amazon Quick 管理员  | 

**要从 Quick Sight 访问 Athena 数据，请先确保 Athena 及其 S3 位置已在 “管理” 屏幕中获得授权。 QuickSight**有关更多信息，请参阅 [确保您已授权 Amazon Quick Sight 使用 Athena](#troubleshoot-connect-athena-authorizing)。

接下来，验证相关的 IAM 权限。您的 Athena 连接的 IAM 用户 read/write 需要访问结果在 S3 中的存储位置。首先验证 IAM 用户是否有[允许访问 Athena](https://docs.aws.amazon.com/athena/latest/ug/setting-up.html#attach-managed-policies-for-using-ate) 的附加策略，例如 `AmazonAthenaFullAccess`。让 Athena 使用所需的名称创建存储桶，然后将此存储桶添加到可以访问的存储桶列表中。QuickSight 如果您更改结果存储桶的默认位置 (`aws-athena-query-results-*`)，请确保 IAM 用户有权读取和写入新位置。

确认您未在 S3 网址中包含该 AWS 区域 代码。例如，使用 `s3://awsexamplebucket/path` 而不是 `s3://us-east-1.amazonaws.com/awsexamplebucket/path`。使用错误的 S3 URL 会导致 `Access Denied` 错误。

还要验证存储桶策略和对象访问控制列表 (ACLs) 是否[允许 IAM 用户访问存储桶中的对象](https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html)。如果 IAM 用户位于其他用户中 AWS 账户，请参阅 A *mazon Athena 用户指南*中的[跨账户访问](https://docs.aws.amazon.com/athena/latest/ug/cross-account-permissions.html)。

如果数据集已加密，请验证 IAM 用户是否为指定密钥策略中的 AWS KMS 密钥用户。你可以在 AWS KMS 控制台的 [https://console.aws.amazon.com/km](https://console.aws.amazon.com/kms) s 中执行此操作。

**设置 Athena 查询结果位置的权限**

1. 从 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 打开 Athena 控制台。

1. 确认您已选择想要使用的工作组：
   + 检查顶部的**工作组**选项。它的格式为**工作组:*group-name*.** 如果组名称是您想要使用的名称，请跳到下一步。
   + 要选择不同的工作组，请选择顶部的**工作组**。选择想要使用的工作组，然后选择**切换工作组**。

1. 选择右上角的**设置**。

   （不常见）如果出现未找到工作组的错误，请按照以下步骤进行修复：

   1.  暂时忽略错误消息，改为在 **“设置”** 页面*group-name*上找到 **Workgroup:**。工作组的名称是一个超链接。打开该链接。

   1. 在 **Workgroup: *<groupname>*** 页面上，选择左**边的编辑工作组**。现在请关闭错误消息。

   1. 在**查询结果位置**附近，通过选择带有文件夹图标的**选择**按钮打开 S3 位置选择器。

   1. 选择 Athena 的 S3 位置名称末尾的小箭头。名称必须以 `aws-athena-query-results` 开头。

   1. （可选）通过选中**加密存储在 S3 中的结果**复选框来加密查询结果。

   1. 选择**保存**以确认您的选择。

   1. 如果错误没有再次出现，请返回**设置**。

      有时，错误可能会再次出现。如果出现，请按以下步骤操作：

      1. 选择工作组，然后选择**查看详细信息**。

      1. （可选）要保留您的设置，请记下工作组配置或对其截屏。

      1. 选择 **Create workgroup (创建工作组)**。

      1. 将该工作组替换为新工作组。配置正确的 S3 位置和加密选项。记下 S3 位置以供稍后使用。

      1. 选择**保存**以继续。

      1. 如果不再需要原始工作组，请将其禁用。务必仔细阅读出现的警告，因为警告会告知您禁用原始工作组会丢失的内容。

1. 如果您在上一步中未通过问题排查获得此值，请选择右上角的**设置**，并获取显示为**查询结果位置**的 S3 位置值。

1. 如果启用了**加密查询结果**，请检查使用的是 SSE-KMS 还是 CSE-KMS。记下密钥。

1. 在打开 S3 控制台 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)，打开正确的存储桶，然后选择**权限**选项卡。

1. 通过查看**存储桶策略**来检查 IAM 用户是否具有访问权限。

   如果您使用管理访问权限 ACLs，请确保通过查看访问控制列表来设置**访问控制列表** (ACLs)。

1. 如果您的数据集已加**密（在工作组设置中选择 “加密查询结果**”），请确保将 IAM 用户或角色添加为该密钥策略中的 AWS KMS 密钥用户。您可以通过 [https://console.aws.amazon.com/km](https://console.aws.amazon.com/kms) s 访问 AWS KMS 设置。

**授予对 Athena 使用的 S3 存储桶的访问权限**

1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在**查询结果位置**中选择 Athena 使用的 S3 存储桶。

1. 在 **Permissions** (权限) 选项卡中，验证权限。

有关更多信息，请参阅 Supp AWS ort 文章[当我运行 Athena 查询时，我收到 “访问被拒绝](https://aws.amazon.com/premiumsupport/knowledge-center/access-denied-athena/)” 错误。

# 无法连接到 Amazon S3
<a name="troubleshoot-connect-S3"></a>

要成功连接到 Amazon S3，请确保配置身份验证并在尝试访问的存储桶中创建有效的清单文件。您还需要确保清单所描述的文件可用。

要验证身份验证，请确保您已授权 Amazon Quick Sight 访问 S3 账户。只有您自己（即用户）拥有授权是不够的。Amazon Quick Sight 必须单独获得授权。

**授权 Amazon Quick Sight 访问您的 Amazon S3 存储桶**

1. 在右上角的 AWS 区域 列表中，选择美国东部（弗吉尼亚北部）区域。在编辑账户权限时，您可以 AWS 区域 暂时使用此功能。

1. 在 Amazon Quick Sight 中，选择您的个人资料名称（右上角）。选择 “**管理 Quick Sight**”，然后向下滚动到 “**自定义权限**” 部分。

1. 选择**AWS 资源**，然后选择**添加或删除**。

1. 在列表中找到 Amazon S3。选择以下操作之一打开可在其中选择 S3 存储桶的屏幕：
   + 如果清除了该复选框，请选择 Amazon S3 旁边的复选框。
   + 如果已选中该复选框，请选择**详细信息**，然后选取**选择 S3 存储桶**。

1. 选择您要从 Amazon Quick Sight 访问的存储桶。然后选择 **Select**。

1. 选择**更新**。

1. 如果您在此过程的第一步中更改了您的，请将其更改回要使用的。 AWS 区域 AWS 区域 

强烈建议您确保清单文件有效。如果 Amazon Quick Sight 无法解析你的文件，它会给你一条错误消息。可能是“We can't parse the manifest file as valid JSON”或“We can't connect to the S3 bucket”这样的错误消息。

**验证清单文件**

1. 打开您的清单文件。您可以直接从 Amazon S3 控制台执行此操作，网址为[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。转到您的清单文件，然后选择**打开**。

1. 确保清单文件中 URLs 提供的 URI 或表示要连接的一个或多个文件。

1. 如果使用指向清单文件的链接而不是上传清单文件，请确保清单文件格式正确。链接在 `.json` 后不应有任何其他短语。通过在 S3 控制台上的详细信息中查看 S3 文件的 **Link（链接）**值可以获取的正确链接。

1. 使用 JSON 验证程序（例如，[https://jsonlint.com](https://jsonlint.com) 中的验证程序）确保清单文件内容是有效的。

1. 验证您的存储桶或文件的权限。在中 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)，导航到您的 Amazon S3 存储桶，选择**权限**选项卡，然后添加相应的权限。确保权限在适当的级别：在存储桶级别或在文件级别。

1. 如果使用的是 `s3://` 协议，而不是 `https://`，请确保直接引用存储桶。例如，使用 *s3://awsexamplebucket/myfile.csv* 而不是 *s3://s3-us-west-2.amazonaws.com/awsexamplebucket/myfile.csv*。同时使用 `s3://` 和 `s3-us-west-2.amazonaws.com` 双重指定 Amazon S3 会导致错误。

   有关清单文件和连接到 Amazon S3 的更多信息，请参阅 [支持的 Amazon S3 清单文件格式](supported-manifest-file-format.md)。

此外，请确认按照 [使用 Amazon S3 文件创建数据集](create-a-data-set-s3.md) 中的步骤创建了 Amazon S3 数据集。

如果使用 Athena 连接到 Amazon S3，请参阅 [无法连接到 Amazon Athena](troubleshoot-connect-athena.md)。

# 无法根据现有的 Adobe Analytics 数据来源创建或刷新数据集
<a name="troubleshoot-connect-adobe-analytics"></a>

自 2022 年 5 月 1 日起，Quick Sight 不再支持 Adobe Analytics 中的旧版、1.3 版本 OAuth 以及 SOAP API 操作。如果您在尝试根据现有 Adobe Analytics 数据来源创建或刷新数据集时遭遇失败，可能是访问令牌已过期。

**排查根据现有 Adobe Analytics 数据来源创建或刷新数据集时出现的故障**

1. 打开 Quick Sight，然后选择左边**的数据**。

1. 选择**新建**，然后选择**数据集**。

1. 在**创建数据集**页面上，从现有数据源列表中选择要更新的Adobe Analytics数据源。

1. 选择**编辑数据来源**。

1. 在打开的**编辑 Adobe Analytics 数据来源**页面上，选择**更新数据来源**以重新授权 Adobe Analytics 连接。

1. 再次尝试重新创建或刷新数据集。数据集的创建或刷新应该能成功。

# 需要验证与数据来源的连接或更改数据来源设置
<a name="troubleshoot-connect-validate"></a>

在某些情况下，您可能需要更新数据来源，也可能需要在出现连接错误时检查设置。如果需要这样做，请按以下步骤操作。

**验证与数据来源的连接**

1. 从 Quick Sight 主页中，选择左侧**的数据**。

1. 选择**新建**，然后选择**数据集**。

1. 您将看到现有数据源的列表。

1. 选择想要测试或更改的数据来源。

1. 如果系统提供 **Edit/Preview data** 选择，请选择它。

1. 选择 **Validate connection**。

1. 执行所需的更改，然后选择**更新数据来源**。

# 无法连接到 MySQL（SSL 和授权问题）
<a name="troubleshoot-connect-mysql"></a>

要检查 MySQL 中的一些常见连接问题，请使用以下步骤。该过程将帮助您了解是否已启用 SSL 并授予使用权限。

**查找 MySQL 中一些常见连接问题的解决方案**

1. 检查 `/etc/my.cnf` 确保已为 MySQL 启用 SSL。

1. 在 MySQL 中，运行以下命令。

   ```
   show status like 'Ssl%';
   ```

   如果 SSL 正在运行，将看到类似于下面的结果。

   ```
   +--------------------------------+----------------------+
   | Variable_name                  | Value                |
   +--------------------------------+----------------------+
   | Ssl_accept_renegotiates        | 0                    |
   | Ssl_accepts                    | 1                    |
   | Ssl_callback_cache_hits        | 0                    |
   | Ssl_cipher                     |                      |
   | Ssl_cipher_list                |                      |
   | Ssl_client_connects            | 0                    |
   | Ssl_connect_renegotiates       | 0                    |
   | Ssl_ctx_verify_depth           | 18446744073709551615 |
   | Ssl_ctx_verify_mode            | 5                    |
   | Ssl_default_timeout            | 0                    |
   | Ssl_finished_accepts           | 0                    |
   | Ssl_finished_connects          | 0                    |
   | Ssl_session_cache_hits         | 0                    |
   | Ssl_session_cache_misses       | 0                    |
   | Ssl_session_cache_mode         | SERVER               |
   | Ssl_session_cache_overflows    | 0                    |
   | Ssl_session_cache_size         | 128                  |
   | Ssl_session_cache_timeouts     | 0                    |
   | Ssl_sessions_reused            | 0                    |
   | Ssl_used_session_cache_entries | 0                    |
   | Ssl_verify_depth               | 0                    |
   | Ssl_verify_mode                | 0                    |
   | Ssl_version                    |                      |
   +--------------------------------+----------------------+
   ```

   如果 SSL 已禁用，将看到类似于下面的结果。

   ```
   +--------------------------------+-------+
   | Variable_name                  | Value |
   +--------------------------------+-------+
   | Ssl_accept_renegotiates        | 0     |
   | Ssl_accepts                    | 0     |
   | Ssl_callback_cache_hits        | 0     |
   | Ssl_cipher                     |       |
   | Ssl_cipher_list                |       |
   | Ssl_client_connects            | 0     |
   | Ssl_connect_renegotiates       | 0     |
   | Ssl_ctx_verify_depth           | 0     |
   | Ssl_ctx_verify_mode            | 0     |
   | Ssl_default_timeout            | 0     |
   | Ssl_finished_accepts           | 0     |
   | Ssl_finished_connects          | 0     |
   | Ssl_session_cache_hits         | 0     |
   | Ssl_session_cache_misses       | 0     |
   | Ssl_session_cache_mode         | NONE  |
   | Ssl_session_cache_overflows    | 0     |
   | Ssl_session_cache_size         | 0     |
   | Ssl_session_cache_timeouts     | 0     |
   | Ssl_sessions_reused            | 0     |
   | Ssl_used_session_cache_entries | 0     |
   | Ssl_verify_depth               | 0     |
   | Ssl_verify_mode                | 0     |
   | Ssl_version                    |       |
   +--------------------------------+-------+
   ```

1. 确保已在数据库服务器上安装支持的 SSL 证书。

1. 授予特定用户使用 SSL 连接的权限。

   ```
   GRANT USAGE ON *.* TO 'encrypted_user'@'%' REQUIRE SSL;                        
   ```

**注意**  
适用于 MySQL 连接的 TLS 1.2 需要 MySQL 版本 5.7.28 或更高版本。如果您的 MySQL 服务器仅强制执行 TLS 1.2（例如`tls_version = TLSv1.2`），并且服务器版本低于 5.7.28，则 SSL 握手会失败并出现错误。`Communications link failure`要解决这个问题，请将你的 MySQL 或 Aurora MySQL 数据库升级到版本 5.7.28 或更高版本。

有关本例中的解决方案的更多详细信息，请参阅以下内容：
+ 《Amazon RDS 用户指南》**中的 [MySQL 数据库实例的 SSL 支持](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.SSLSupport.html)。
+ 《Amazon RDS 用户指南》**中的[使用 SSL 加密与数据库实例的连接](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)。
+ [MySQL 文档](https://dev.mysql.com/doc/refman/5.6/en/using-encrypted-connections.html)

# 无法连接到 RDS
<a name="troubleshoot-connect-RDS"></a>

有关排查 Amazon RDS 连接问题的更多详细信息，请参阅 [使用数据库创建数据集](create-a-database-data-set.md)。

您也可以参考有关排查连接问题的 Amazon RDS 文档：[无法连接到 Amazon RDS 数据库实例](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Troubleshooting.html#CHAP_Troubleshooting.Connecting)。**

# Quick Sight 的登录问题
<a name="troubleshoot-login"></a>

使用以下部分来帮助您解决 Quick Sight 控制台的登录和访问问题。

**Topics**
+ [将 Athena 与 Amazon Quick Sight 配合使用时权限不足](troubleshoot-athena-insufficient-permissions.md)
+ [Amazon Quick Sight 无法在我的浏览器中运行](troubleshoot-browser.md)
+ [如何删除我的 Amazon Quick Sight 账户？](troubleshoot-delete-quicksight-account.md)
+ [我组织中的个人在尝试访问 Quick Sight 时会收到 “外部登录未授权” 消息](troubleshoot-webidentity-federation.md)
+ [我的电子邮件登录停止工作](troubleshoot-email-login.md)

# 将 Athena 与 Amazon Quick Sight 配合使用时权限不足
<a name="troubleshoot-athena-insufficient-permissions"></a>

如果您收到错误消息提示权限不足，请尝试按照以下步骤来解决问题。

您需要管理员权限才能排查此问题。

**解决权限不足错误**

1. 确保 Amazon Quick Sight 可以访问 Athena 使用的亚马逊 S3 存储桶：

   1. 为此，请选择您的个人资料名称（右上角）。选择 “**管理 Quick Sight**”，然后向下滚动到 “**自定义权限**” 部分。

   1. 选择**AWS 资源**，然后选择**添加或删除**。

   1. 在列表中找到 Athena。清除 Athena 旁边的复选框，然后再次选中以启用 Athena。

      选择**连接两者**。

   1. 选择您要从 Amazon Quick Sight 访问的存储桶。

      您在此处访问的 S3 存储桶的设置与您通过从列表中选择 Amazon S3 访问的 AWS 服务设置相同。请注意，避免无意中禁用其他人使用的存储桶。

   1. 选择 **Select (选择)** 以保存 S3 存储桶。

   1. 选择 “**更新**” 以保存您的新设置以供 Amazon Quick Sight 访问 AWS 服务。您也可以选择**取消**，不进行任何更改就退出。

1. 如果您的数据文件使用 AWS KMS 密钥加密，请向 Amazon Quick Sight IAM 角色授予解密密钥的权限。执行该操作的最简单方法是使用 AWS CLI。

   你可以在中运行 [create-gran](https://docs.aws.amazon.com/cli/latest/reference/kms/create-grant.html) t 命令 AWS CLI 来执行此操作。

   ```
   aws kms create-grant --key-id <AWS KMS key ARN> --grantee-principal <Your Amazon Quick Sight Role ARN> --operations Decrypt
   ```

   Amazon Quick Sight 角色的亚马逊资源名称 (ARN) 的格式为`arn:aws:iam::<account id>:role/service-role/aws-quicksight-service-role-v<version number>`，可以从 IAM 控制台进行访问。要查找您的 AWS KMS 密钥 ARN，请使用 S3 控制台。转到包含数据文件的存储桶，然后选择**概述**选项卡。密钥位于 **KMS 密钥 ID** 旁边。

对于亚马逊 Athena、Amazon S3 和 Athena Query Federation 连接，Quick Sight 默认使用以下 IAM 角色：

```
arn:aws:iam::AWS-ACCOUNT-ID:role/service-role/aws-quicksight-s3-consumers-role-v0
```

如果不存在`aws-quicksight-s3-consumers-role-v0`，则 Quick Sight 会使用：

```
arn:aws:iam::AWS-ACCOUNT-ID:role/service-role/aws-quicksight-service-role-v0
```

# Amazon Quick Sight 无法在我的浏览器中运行
<a name="troubleshoot-browser"></a>

如果您无法在 Google Chrome 浏览器中正确查看 Amazon Quick Sight，请按照以下步骤修复问题。

**在 Chrome 浏览器中查看 Amazon Quick Sight**

1. 打开 Chrome 并转到 `chrome://flags/#touch-events`。

1. 如果此选项设置为**自动**，请将其更改为**禁用**。

1. 关闭并重新打开 Chrome。

# 如何删除我的 Amazon Quick Sight 账户？
<a name="troubleshoot-delete-quicksight-account"></a>

在某些情况下，即使您无法访问 Amazon Quick Sight 取消订阅，也可能需要删除您的 Amazon Quick Sight 账户。如果是这样，请登录 AWS 并使用以下链接打开[取消订阅屏幕](https://us-east-1.quicksight.aws.amazon.com/sn/console/unsubscribe)：`https://us-east-1.quicksight.aws.amazon.com/sn/console/unsubscribe`。无论你使用什么 AWS 区域 ，这种方法都能奏效。它会删除所有数据、分析、Amazon Quick Sight 用户和 Amazon Quick Sight 管理员。如果您有任何其他问题，请联系支持人员。

# 我组织中的个人在尝试访问 Quick Sight 时会收到 “外部登录未授权” 消息
<a name="troubleshoot-webidentity-federation"></a>


|  | 
| --- |
|    目标受众：Amazon Quick 管理员  | 

当组织中的某个人使用联合到 Quick Sight 时 **AssumeRoleWithWebIdentity**，Quick Sight 会将基于角色的单个用户映射到单个外部登录帐户。在某些情况下，该个人可能会通过与原始映射用户不同的外部登录（例如 Amazon Cognito）进行身份验证。如果是这样，他们将无法访问 Quick Sight 并收到以下意外错误消息。

Quick Sight 用户未经授权使用用于联合身份验证的外部登录。

要了解如何排查该问题，请参阅以下各节：
+ [为什么会出现这种情况？](#troubleshoot-webidentity-federation-why)
+ [如何修复此问题？](#troubleshoot-webidentity-federation-how)

## 为什么会出现这种情况？
<a name="troubleshoot-webidentity-federation-why"></a>

### 正在使用简化的 Amazon Cognito 流
<a name="troubleshoot-webidentity-federation-why-Cognito-SSO-1"></a>

如果您使用 Amazon Cognito 联合进入 Quick Sight，则单点登录（IAM 身份中心）设置可能会使用 `CognitoIdentityCredentials` API 操作来担任 Quick Sight 角色。此方法将 Amazon Cognito 身份池中的所有用户映射到单个 Quick Sight 用户，Quick Sight 不支持此方法。

建议您改用指定角色会话名称的 `AssumeRoleWithWebIdentity` API 操作。

### 正在使用未经身份验证的 Amazon Cognito 用户
<a name="troubleshoot-webidentity-federation-why-Cognito-SSO-2"></a>

Amazon Cognito IAM Identity Center 是为 Amazon Cognito 身份池中未经身份验证的用户设置的。Quick Sight 角色信任策略的设置如以下示例所示。

此设置允许临时的 Amazon Cognito 用户代入映射到唯一 Quick Sight 用户的角色会话。由于未经身份验证的身份是临时的，因此 Quick Sight 不支持这些身份。

我们建议您不要使用此设置，因为 Quick Sight 不支持该设置。对于 Quick Sight，请确保 Amazon Cognito IAM 身份中心使用经过身份验证的用户。

### 删除并重新创建了一个具有相同用户名属性的 Amazon Cognito 用户
<a name="troubleshoot-webidentity-federation-why-Cognito-user-delete"></a>

在本例中，映射到 Quick Sight 用户的关联 Amazon Cognito 用户已被删除并重新创建。新创建的 Amazon Cognito 用户具有不同的基础主题。根据角色会话名称与 Quick Sight 用户的映射方式，会话名称可能对应于相同的基于 Quick Sight 角色的用户。

我们建议您使用 `UpdateUser` API 操作将 Quick Sight 用户重新映射到更新后的 Amazon Cognito 用户主题。有关更多信息，请参阅以下 [UpdateUser API 示例](#troubleshoot-webidentity-federation-solutions-updateuser)。

### 你正在使用 Quick Sight AWS 账户 将不同的 Amazon Cognito 用户池映射到一个身份池中
<a name="troubleshoot-webidentity-federation-why-Cognito-multi-pools"></a>

Quick Sight 不支持将多个 Amazon Cognito 用户池映射 AWS 账户 到一个身份池和 Quick Sight 中。

## 如何修复此问题？
<a name="troubleshoot-webidentity-federation-how"></a>

您可以使用 Quick Sight 公共 API 操作来更新用户的外部登录信息。使用以下选项来了解如何操作。

### RegisterUser 用于创建具有外部登录信息的用户
<a name="troubleshoot-webidentity-federation-how-registeruser"></a>

如果外部登录提供程序是 Amazon Cognito，请使用以下 CLI 代码创建用户。

```
aws quicksight register-user --aws-account-id account-id --namespace namespace --email user-email --user-role user-role --identity-type IAM
--iam-arn arn:aws:iam::account-id:role/cognito-associated-iam-role 
--session-name cognito-username --external-login-federation-provider-type COGNITO 
--external-login-id cognito-identity-id --region identity-region
```

`external-login-id` 应该是 Amazon Cognito 用户的身份 ID。如下例所示，格式为 `<identity-region>:<cognito-user-sub>`。

```
aws quicksight register-user --aws-account-id 111222333 --namespace default --email cognito-user@amazon.com --user-role ADMIN --identity-type IAM
--iam-arn arn:aws:iam::111222333:role/CognitoQuickSightRole 
--session-name cognito-user --external-login-federation-provider-type COGNITO 
--external-login-id us-east-1:12345678-1234-1234-abc1-a1b1234567 --region us-east-1
```

如果外部登录提供程序是自定义 OpenID Connect（OIDC）提供程序，请使用以下 CLI 代码创建用户。

```
aws quicksight register-user --aws-account-id account-id --namespace namespace
--email user-email --user-role user-role --identity-type IAM
--iam-arn arn:aws:iam::account-id:role/identity-provider-associated-iam-role 
--session-name identity-username --external-login-federation-provider-type CUSTOM_OIDC 
--custom-federation-provider-url custom-identity-provider-url 
--external-login-id custom-provider-identity-id --region identity-region
```

示例如下：

```
aws quicksight register-user --aws-account-id 111222333 --namespace default 
--email identity-user@amazon.com --user-role ADMIN --identity-type IAM
--iam-arn arn:aws:iam::111222333:role/CustomIdentityQuickSightRole
--session-name identity-user --external-login-federation-provider-type CUSTOM_OIDC 
--custom-federation-provider-url idp.us-east-1.amazonaws.com/us-east-1_ABCDE 
--external-login-id 12345678-1234-1234-abc1-a1b1234567 --region us-east-1
```

要了解有关在 CLI `RegisterUser` 中使用的更多信息，请参阅 *Amazon Quick API 参考[RegisterUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html)*中的。

### DescribeUser 用于检查用户的外部登录信息
<a name="troubleshoot-webidentity-federation-how-describeuser"></a>

如果用户是来自外部登录提供程序的基于角色的联合用户，请使用 `DescribeUser` API 操作查看其外部登录信息，如以下代码所示。

```
aws quicksight describe-user --aws-account-id account-id  --namespace namespace
--user-name identity-provider-associated-iam-role/identity-username 
--region identity-region
```

示例如下：

```
aws quicksight describe-user --aws-account-id 111222333 --namespace default --user-name IdentityQuickSightRole/user --region us-west-2
```

结果包含外部登录信息字段（如果有）。以下为示例。

```
{
    "Status": 200,
    "User": {
        "Arn": "arn:aws:quicksight:us-east-1:111222333:user-default-IdentityQuickSightRole-user",
        "UserName": "IdentityQuickSightRole-user",
        "Email": "user@amazon.com",
        "Role": "ADMIN",
        "IdentityType": "IAM",
        "Active": true,
        "PrincipalId": "federated-iam-AROAAAAAAAAAAAAAA:user",
        "ExternalLoginFederationProviderType": "COGNITO",
        "ExternalLoginFederationProviderUrl": "cognito-identity.amazonaws.com",
        "ExternalLoginId": "us-east-1:123abc-1234-123a-b123-12345678a"
    },
    "RequestId": "12345678-1234-1234-abc1-a1b1234567"
}
```

要了解有关在 CLI `DescribeUser` 中使用的更多信息，请参阅 *Amazon Quick API 参考[DescribeUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html)*中的。

### UpdateUser 用于更新用户的外部登录信息
<a name="troubleshoot-webidentity-federation-solutions-updateuser"></a>

在某些情况下，您可能会发现 `DescribeUser` 结果中为用户保存的外部登录信息不正确或缺少外部登录信息。如果是这样，您可以使用 `UpdateUser` API 操作对其进行更新。使用以下示例。

对于 Amazon Cognito 用户，请使用以下示例。

```
aws quicksight update-user --aws-account-id account-id --namespace namespace 
--user-name cognito-associated-iam-role/cognito-username
 --email user-email --role user-role 
--external-login-federation-provider-type COGNITO 
--external-login-id cognito-identity-id --region identity-region
```

示例如下：

```
aws quicksight update-user --aws-account-id 111222333 --namespace default 
--user-name CognitoQuickSightRole/cognito-user --email cognito-user@amazon.com 
--role ADMIN --external-login-federation-provider-type COGNITO 
--external-login-id us-east-1:12345678-1234-1234-abc1-a1b1234567 --region us-west-2
```

对于自定义 OIDC 提供程序用户，请使用以下示例。

```
aws quicksight update-user --aws-account-id account-id --namespace namespace 
 --user-name identity-provider-associated-iam-role/identity-username 
--email user-email --role user-role 
--external-login-federation-provider-type CUSTOM_OIDC 
--custom-federation-provider-url custom-identity-provider-url 
--external-login-id custom-provider-identity-id --region identity-region
```

示例如下：

```
aws quicksight update-user --aws-account-id 111222333 --namespace default 
--user-name IdentityQuickSightRole/user --email user@amazon.com --role ADMIN 
--external-login-federation-provider-type CUSTOM_OIDC 
--custom-federation-provider-url idp.us-east-1.amazonaws.com/us-east-1_ABCDE 
 --external-login-id 123abc-1234-123a-b123-12345678a --region us-west-2
```

如果要删除用户的外部登录信息，请使用 `NONE` `external login federation provider type`。使用以下 CLI 命令删除外部登录信息。

```
aws quicksight update-user --aws-account-id account-id --namespace namespace 
 --user-name identity-provider-associated-iam-role/identity-username 
--email user-email --role user-role
--external-login-federation-provider-type NONE --region identity-region
```

示例如下：

```
aws quicksight update-user --aws-account-id 111222333 --namespace default 
--user-name CognitoQuickSightRole/cognito-user --email cognito-user@amazon.com --role ADMIN --external-login-federation-provider-type NONE --region us-west-2
```

要了解有关在 CLI `UpdateUser` 中使用的更多信息，请参阅 *Amazon Quick API 参考[UpdateUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateUser.html)*中的。

# 我的电子邮件登录停止工作
<a name="troubleshoot-email-login"></a>

目前，电子邮件区分大小写。如果您的电子邮件不工作，请向您的管理员核实它是否为大小写字母混合。使用您所输入的电子邮件。

# Quick Sight 的视觉问题
<a name="visual-issues"></a>

参阅下节内容帮助您排查视觉对象及其格式设置问题。

**Topics**
+ [无法看到我的视觉对象](troubleshoot-adding-visuals.md)
+ [打印文档上出现反馈栏](troubleshoot-printing-docs.md)
+ [地图不显示位置](troubleshoot-geocoding.md)
+ [数据透视表停止工作](troubleshoot-pivot-tables.md)
+ [我的视觉对象找不到缺失的列](troubleshooting-dataset-changed-columns.md)
+ [我的视觉对象无法找到查询表](troubleshooting-dataset-changed-tables.md)
+ [更改计算字段后视觉对象未更新](troubleshooting-visual-refresh.md)
+ [在 Quick Sight 中，带有科学记数法的 Microsoft Excel 文件中的值格式不正确](troubleshooting-number-formatting.md)

# 无法看到我的视觉对象
<a name="troubleshoot-adding-visuals"></a>

参阅下节内容帮助您排查缺少视觉对象的问题。在继续之前，请检查以确保您仍然可以访问自己的数据来源。如果您无法连接到自己的数据来源，请参阅 [Amazon Quick Sight 的数据源连接问题](troubleshoot-connect-to-datasources.md)。
+ 如果您在向分析中添加视觉对象时遇到问题，请尝试以下方法：
  + 检查您的连接并确认您有权访问 Quick Sight 用于访问的所有域名。要查看所有 URLs Quick Sight 使用情况的列表，请参阅 Qu [ick Sight 访问的域名](https://docs.aws.amazon.com//quicksight/latest/developerguide/vpc-interface-endpoints.html#vpc-interface-endpoints-restrictvpc-interface-endpoints-supported-domains)。
  + 检查您尝试添加的对象是否超过限额允许的数量。Amazon Quick Sight 在一次分析中支持多达 30 个数据集，在单个工作表中支持多达 30 个视觉对象，每次分析最多支持 20 个工作表。
  + 假设您正在编辑选定数据来源的分析，但与该数据来源的连接意外终止。由此产生的错误状态可能会阻止对分析进行进一步更改。这种情况下，将无法在分析中添加更多视觉对象。检查此状态。
+ 如果您的视觉对象无法加载，请尝试以下操作：
  + 如果使用的是企业网络，请向网络管理员寻求帮助，并验证网络的防火墙设置是否允许来自 `*.aws.amazon.com`、`amazonaws.com`、`wss://*.aws.amazon.com`、和 `cloudfront.net` 的流量。
  + 为 `*.aws.amazon.com`、`amazonaws.com`、`wss://*.aws.amazon.com` 和 `cloudfront.net` 向您的广告拦截器添加例外。
  + 如果使用的是代理服务器，请确认 `*.quicksight.aws.amazon.com` 和 `cloudfront.net` 已添加到已批准的域列表（允许列表）中。

# 打印文档上出现反馈栏
<a name="troubleshoot-printing-docs"></a>

浏览器有时会打印页面上的文档反馈栏，遮挡一些打印内容。

为避免此问题，请使用屏幕左下方的旋转向下图标（如下所示）将反馈栏最小化。然后再打印文档。

![\[\]](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/images/printing-docs.png)


# 地图不显示位置
<a name="troubleshoot-geocoding"></a>

要使自动映射（称为地理编码）在地图上起作用，请确保您的数据必须做好了遵循特定规则的准备。如需帮助解决地理空间方面的问题，请参阅[地理空间故障排除](geospatial-troubleshooting.md)。如需准备数据以用于地理空间图表方面的帮助，请参阅[添加地理空间数据](geospatial-data-prep.md)。

# 数据透视表停止工作
<a name="troubleshoot-pivot-tables"></a>

如果数据透视表超出了基础数据库的计算限制，就会发生这种情况，这通常是由字段井中的项目组合引起的。也就是说，是由行、列、指标和表计算的组合引起的。要降低复杂性级别并降低出错的可能性，请简化数据透视表。有关更多信息，请参阅 [数据透视表最佳实践](pivot-table-best-practices.md)。

# 我的视觉对象找不到缺失的列
<a name="troubleshooting-dataset-changed-columns"></a>

我的分析中的视觉对象的效果不符合预期。错误消息提示 `"The column(s) used in this visual do not exist."`

导致此错误的最常见原因是您的数据来源架构已更改。例如，列名可能从 `a_column` 更改为 `b_column`。

根据数据集访问数据来源的方式，选择下列选项之一。
+ 如果数据集基于自定义 SQL，请执行以下一项或多项操作：
  + 编辑数据集。
  + 编辑 SQL 语句。

    例如，如果表名已从 `a_column` 更改为 `b_column`，您可以更新 SQL 语句以创建一个别名：`SELECT b_column as a_column`。通过使用别名在数据集中维护相同的字段名称，您可以避免将列作为新实体添加到视觉对象中。

  完成此操作后，选择**保存并可视化**。
+ 如果数据集不是基于自定义 SQL，请执行以下一项或多项操作：
  + 编辑数据集。
  + 对于现在具有不同名称的字段，请在数据集中重命名它们。您可以使用原始数据集中的字段名称。然后打开分析，将重命名的字段添加到受影响的视觉对象中。

  完成此操作后，选择**保存并可视化**。

# 我的视觉对象无法找到查询表
<a name="troubleshooting-dataset-changed-tables"></a>

在这种情况下，您分析中视觉对象的效果不符合预期。错误消息提示 `"Amazon Quick Sight can’t find the query table."`

导致此错误的最常见原因是您的数据来源架构已更改。例如，表名可能从 `x_table` 更改为 `y_table`。

根据数据集访问数据来源的方式，选择下列选项之一。
+ 如果数据集基于自定义 SQL，请执行以下一项或多项操作：
  + 编辑数据集。
  + 编辑 SQL 语句。

    例如，如果表名已从 `x_table` 更改为 `y_table`，您可以更新 SQL 语句中的 FROM 子句以改为引用新表。

  完成此操作后，选择**保存并可视化**，然后选择每个视觉对象并根据需要重新添加字段。
+ 如果数据集不是基于自定义 SQL，请执行以下操作：

  1. 使用新表（例如 `y_table`）创建新数据集。

  1. 打开您的分析。

  1. 使用新创建的数据集替换原始数据集。如果没有列更改，则在替换数据集后，所有视觉对象都应正常工作。有关更多信息，请参阅 [替换数据集](replacing-data-sets.md)。

# 更改计算字段后视觉对象未更新
<a name="troubleshooting-visual-refresh"></a>

更新许多其他字段所依赖的计算字段时，使用实体可能无法按预期进行更新。例如，当您更新可视化字段使用的计算字段时，视觉对象不会按预期进行更新。

要解决此问题，请刷新您的互联网浏览器。

# 在 Quick Sight 中，带有科学记数法的 Microsoft Excel 文件中的值格式不正确
<a name="troubleshooting-number-formatting"></a>

当你连接到 Microsoft Excel 文件时，该文件中的数字列包含带有科学计数法的值，它们在 Quick Sight 中可能无法正确格式化。例如，在 Quick Sight 中，值 1.59964E\$111（实际上是 159964032802）的格式为 1599640000。这可能会导致分析不正确。

要解决此问题，请按照 Microsoft Excel `Text` 中的格式设置该列的格式，然后将文件上传到 Quick Sight。

# 使用亚马逊 Quick Sight 进行开发
<a name="quicksight_dev"></a>

我们为 Amazon Quick Sight 提供 API 操作，还提供软件开发套件 (SDKs) AWS ，使您可以从首选的编程语言访问 Amazon Quick Sight。目前，您可以管理用户和组。在企业版中，您还可以在网页或应用程序中嵌入控制面板。

要监控您的账户向 Amazon Quick Sight API 发出的调用，包括由 AWS 管理控制台、命令行工具和其他服务进行的调用，请使用 AWS CloudTrail。有关更多信息，请参阅 [AWS CloudTrail 《用户指南》](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。

## 所需知识
<a name="quicksight_dev-required_knowledge"></a>

如果您计划通过 API 访问 Amazon Quick Sight，则应熟悉以下内容：
+ JSON
+ Web 服务
+ HTTP 请求
+ 一种或多种编程语言，例如 Java JavaScript、Python 或 C\$1

我们建议您访问 AWS [入门资源中心](https://aws.amazon.com/getting-started/tools-sdks/)，了解所提供的内容 AWS SDKs 和工具包。

尽管您可以使用终端和最喜欢的文本编辑器，但集成式开发环境（IDE）提供的更具视觉效果的 UI 体验可能会让您受益匪浅。我们 IDEs 在 “*AWS 入门资源中心*” 的 “[IDE 和 IDE 工具包](https://aws.amazon.com/getting-started/tools-sdks/#IDE_and_IDE_Toolkits)” 部分提供了一个列表。该网站提供了可供您下载的首选 IDE 的 AWS 工具包。有些 IDEs 还提供教程，以帮助您更多地了解编程语言。

## Amazon Quick Sight 可用的 API 操作
<a name="quicksight_dev-using_libraries"></a>

AWS 为喜欢使用特定语言的 API 操作而不是通过 HTTPS 提交请求来构建应用程序的软件开发人员提供了库、示例代码、教程和其他资源。这些库文件提供可自动执行任务的基本功能，例如以加密方式对请求签名、重试请求和处理错误响应。这些库有助于您更轻松地入门。

有关下载的更多信息 AWS SDKs，请参阅[AWS SDKs 和工具](https://aws.amazon.com/tools/)。以下链接是特定语言的 API 文档的示例。

**AWS Command Line Interface**
+ [AWS CLI QuickSight Command Reference](https://docs.aws.amazon.com/cli/latest/reference/quicksight/index.html)
+ [AWS CLI 用户指南](https://docs.aws.amazon.com/cli/latest/userguide/)
+ [AWS CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/)

**适用于 .NET 的 AWS SDK**
+ [Amazon.Quicksight](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/index.html?page=QuickSight/NQuickSight.html)
+ [Amazon.Quicksight.Model](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/index.html?page=QuickSight/NQuickSightModel.html)

**适用于 C\$1\$1 的 AWS SDK**
+ [Aws:QuickSight::: QuickSightClient 类参考](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_quick_sight_1_1_quick_sight_client.html)

**适用于 Go 的 AWS SDK**
+ [quicksight](https://docs.aws.amazon.com/sdk-for-go/api/service/quicksight/)

**适用于 Java 的 AWS SDK**
+ [com.amazonaws.services.quicksight](https://docs.aws.amazon.com/sdk-for-java/latest/reference/index.html?com/amazonaws/services/quicksight/package-summary.html)
+ [com.amazonaws.services.quicksight.model](https://docs.aws.amazon.com/sdk-for-java/latest/reference/index.html?com/amazonaws/services/quicksight/model/package-summary.html)

**适用于 JavaScript 的 AWS SDK**
+ [AWS QuickSight](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/QuickSight.html)

**适用于 PHP 的 AWS SDK**
+ [QuickSightClient](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.QuickSight.QuickSightClient.html)

**适用于 Python (Boto3) 的 AWS SDK**
+ [Amazon Quick Sight](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/quicksight.html)

**适用于 Ruby 的 AWS SDK**
+ [Aws:: QuickSight](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/QuickSight.html)

# 术语和概念
<a name="quicksight_dev-terminology"></a>

本节提供了 Amazon Quick Sight 开发术语列表。

**匿名 Amazon Quick Sight 用户：**— 临时的 Amazon Quick Sight 用户身份，实际上属于命名空间，只能通过嵌入使用。您可以使用基于标签的规则为此类用户实现行级别安全性。

**调用方身份：**– 发出 API 请求的 AWS Identity and Access Management 用户的身份。来电者的身份由 Amazon Quick Sight 使用请求所附的签名确定。通过使用我们提供的开发工具包客户端，您无需以手动方式生成签名或将其附加到请求。但是，如果需要的话，您也可以手动完成上述操作。

**调用者身份：**— 除了来电者身份（但不能替代来电者身份）之外，在拨打 Amazon Quick Sight 时，您还可以通过 IAM `AssumeRole` API 假设来电者的身份。 AWS 通过调用者的身份批准来电者。这样做是为了避免必须明确添加属于同一 Amazon Quick Sight 订阅的多个账户。

**命名空间：**– 一种逻辑容器，允许您隔离用户群体以组织客户、子公司、团队等。有关更多信息，请参阅[使用隔离命名空间支持多租户](https://docs.aws.amazon.com/quicksight/latest/user/namespaces.html) 

**QuickSight ARN: —** 亚马逊资源名称 (ARN)。Amazon Quick Sight 资源使用其名称或 ARN 进行标识。例如，以下是针对名ARNs 为的群组`MyGroup1`、名为的用户和 ID 为`User1`的仪表板`1a1ac2b2-3fc3-4b44-5e5d-c6db6778df89`：

```
arn:aws:quicksight:us-east-1:111122223333:group/default/MyGroup1
	arn:aws:quicksight:us-east-1:111122223333:user/default/User1
	arn:aws:quicksight:us-west-2:111122223333:dashboard/1a1ac2b2-3fc3-4b44-5e5d-c6db6778df89
```

以下示例显示了名 ARNs 为的模板`MyTemplate`和名为的仪表板`MyDashboard`。

1. 模板的 ARN 示例

   ```
   arn:aws:quicksight:us-east-1:111122223333:template/MyTemplate
   ```

1. 模板的 ARN 示例，引用模板的特定版本

   ```
   arn:aws:quicksight:us-east-1:111122223333:template/MyTemplate/version/10
   ```

1. 模板别名的 ARN 示例

   ```
   arn:aws:quicksight:us-east-1:111122223333:template/MyTemplate/alias/STAGING
   ```

1. 控制面板的 ARN 示例

   ```
   arn:aws:quicksight:us-east-1:111122223333:dashboard/MyDashboard
   ```

1. 控制面板的 ARN 示例，引用控制面板的特定版本

   ```
   arn:aws:quicksight:us-east-1:111122223333:dashboard/MyDashboard/version/10
   ```

根据具体情况，您可能需要提供实体的名称、ID 或 ARN。如果你有名字，你可以使用一些 Amazon Quick Sight API 操作来检索 ARN。

**Amazon Quick Sight 控制面板：**— 识别根据分析或模板创建的 Amazon Quick Sight 报告的实体。Amazon Quick Sight 控制面板是可共享的。您可以通过相应的权限从中创建计划的电子邮件报告。`CreateDashboard` 和 `DescribeDashboard` API 操作作用于控制面板实体。

**Amazon Quick Sight 模板：**— 封装了创建分析或控制面板所需的元数据的实体。它通过用占位符替换与分析相关的数据集来对其进行抽象。模板可用于创建控制面板，方法是将数据集占位符替换为遵循用于创建源分析和模板的相同架构的数据集。

**Amazon Quick Sight 用户：**— 这是你的 API 调用所依据的 Amazon Quick Sight 用户身份。此用户与来电者身份不同，但可能是 Amazon Quick Sight 中映射到该用户的身份。

# 使用 Amazon Quick Sight API 开发应用程序
<a name="quicksight-sdks"></a>

您可以使用访问针对您正在使用的编程语言或平台量身定制的 API，从而管理部署的大部分方面。 AWS SDKs 有关更多信息，请参阅 [AWS SDKs](https://aws.amazon.com/tools/#SDKs)。

有关 API 操作的更多信息，请参阅 [Amazon Quick Sight API 参考](https://docs.aws.amazon.com/quicksight/index.html?id=docs_gateway)。

在调用 Amazon Quick Sight API 操作之前，您需要在附加到您的 IAM 身份的策略中`quicksight:operation-name`获得许可。例如，要调用 `list-users`，您需要 `quicksight:ListUsers` 权限。该模式适用于所有操作。

如果不确定所需的具体权限，您可以尝试进行调用。客户端会告诉您到底缺少什么权限。您可以在权限策略的“资源”字段中使用星号 (`*`)，而非指定显式资源。不过，建议您尽量对每个权限施加限制。您可以使用用户的 Amazon Quick Sight Amazon 资源名称 (ARN) 标识符在策略中指定或排除资源，从而限制用户访问。

有关更多信息，请参阅下列内容：
+ [亚马逊 Quick Sight 的 IAM 政策示例](https://docs.aws.amazon.com/quicksight/latest/user/iam-policy-examples.html)
+ [操作、资源和条件键](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonquicksight.html)
+ [IAM JSON 策略元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)

要检索用户或组的 ARN，请对相关资源使用 `Describe` 操作。您也可以在 IAM 中添加条件，以进一步限制在某些情况下对 API 的访问。例如，`User1`添加到时，主要资源是 `Group1``Group1`，因此您可以允许或拒绝访问某些群组，但也可以使用 IAM Amazon Quick Sight 密钥添加条件，`quicksight:UserName`以允许或阻止将某些用户添加到该群组。

下面是一个示例策略。这意味着只要添加到组中的用户名不是 `user1`，附加该策略的调用方就能够在任意组上调用 `CreateGroupMembership` 操作。

```
{
    "Effect": "Allow",
    "Action": "quicksight:CreateGroupMembership",
    "Resource": "arn:aws:quicksight:us-east-1:aws-account-id:group/default/*",
    "Condition": {
        "StringNotEquals": {
            "quicksight:UserName": "user1"
        }
    }
}
```

------
#### [ AWS CLI ]

以下过程说明了如何通过 AWS CLI 与 Amazon Quick Sight API 操作进行交互。以下说明已在 Bash 中进行测试，在其他命令行环境中应可取得相同或相似的效果。

1. 在您的环境中安装 AWS SDK。有关如何执行该操作的说明，请参阅 [AWS 命令行界面](https://aws.amazon.com/cli/)。

1. 使用以下命令和后续说明设置您的 AWS CLI 身份和区域。使用具有适当权限的 IAM 身份或角色的凭证。

   ```
   aws configure
   ```

1. 通过发出以下命令来查看 Amazon Quick Sight SDK 的帮助：

   ```
   aws quicksight help
   ```

1. 要获取有关如何使用 API 的详细说明，请输入 API 名称，然后输入 help，如下所示：

   ```
   aws quicksight list-users help
   ```

1. 现在你可以调用 Amazon Quick Sight API 操作了。此示例返回您账户中的 Amazon Quick Sight 用户列表。

   ```
   aws quicksight list-users --aws-account-id aws-account-id --namespace default --region us-east-1
   ```

------
#### [ Java SDK ]

使用以下步骤设置与 Amazon Quick Sight 交互的 Java 应用程序。

1. 首先，在 IDE 中创建一个 Java 项目。

1. 将 Amazon Quick Sight 软件开发工具包导入到您的新项目中，例如：`AWSQuickSightJavaClient-1.11.x.jar`

1. 在你的 IDE 为 Amazon Quick Sight SDK 编制索引后，你应该能够按如下方式添加导入行：

   ```
   import com.amazonaws.services.quicksight.AmazonQuickSight;
   ```

   如果 IDE 未将其识别为有效名称，请确认是否已导入开发工具包。

1. 与其他软件开发工具包一样 AWS SDKs，Amazon Quick Sight SDK 需要外部依赖才能执行其许多功能。您需要将它们下载并导入到同一个项目中。以下依赖项是必需的：
   + `aws-java-sdk-1.11.402.jar`（AWS Java SDK 和凭据设置）— 参见[设置适用于 Java 的 AWS 软件开发工具包](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-install.html) 
   + `commons-logging-1.2.jar`— 见 [https://commons.apache。 org/proper/commons-logging/download](https://commons.apache.org/proper/commons-logging/download_logging.cgi)\$1logging.cgi 
   + `jackson-annotations-2.9.6.jar``jackson-core-2.9.6.jar`、和 `jackson-databind-2.9.6.jar` — 见 [http://repo1.maven。 org/maven2/com/fasterxml/jackson/core](https://repo1.maven.org/maven2/com/fasterxml/jackson/core/)/ 
   + `httpclient-4.5.6.jar`、`httpcore-4.4.10.jar` – 请参阅 [https://hc.apache.org/downloads.cgi](https://hc.apache.org/downloads.cgi) 
   + `joda-time-2.1.jar`— 参见 [ https://mvnrepository.com/artifact/joda-time/joda](https://mvnrepository.com/artifact/joda-time/joda-time/2.1)-time/2.1 

1. 现在，您已准备好创建 Amazon Quick Sight 客户端。您可以使用客户端能够与之通信的默认公有终端节点，也可以显式引用该终端节点。提供 AWS 凭证的方法有多种。在以下示例中，我们提供一种直接、简单的方法。以下客户端方法用于进行下面所有的 API 调用：

   ```
   private static AmazonQuickSight getClient() {
   	final AWSCredentialsProvider credsProvider = new AWSCredentialsProvider() {
   	@Override
   	public AWSCredentials getCredentials() {
   	// provide actual IAM access key and secret key here
   	return new BasicAWSCredentials("access-key", "secret-key");
   	}
   	
   	@Override
   	public void refresh() {}
   	};
   	
   	return AmazonQuickSightClientBuilder
   	.standard()
   	.withRegion(Regions.US_EAST_1.getName())
   	.withCredentials(credsProvider)
   	.build();
   	}
   ```

1. 现在，我们可以使用上述客户端列出我们的 Amazon Quick Sight 账户中的所有用户。
**注意**  
您必须提供订阅 Amazon Quick Sight 时使用的 AWS 账户编号。这必须与来电者身份的 AWS 账户 ID 相匹配。目前，不支持跨账户调用。此外，必需的参数`namespace`应始终设置为*default*。

   ```
   getClient().listUsers(new ListUsersRequest()
           .withAwsAccountId("relevant_AWS_account_ID")
           .withNamespace("default"))
           .getUserList().forEach(user -> {
               System.out.println(user.getArn());
           });
   ```

1. 要查看所有可能的 API 操作及其使用的请求对象的列表，您可以**按住 Ctrl 键单击** IDE 中的客户端对象，以查看 Amazon Quick Sight 界面。或者，也可以在 Amazon Quick Sight JavaClient JAR 文件的`com.amazonaws.services.quicksight`包中找到它。

------
#### [ JavaScript (Node.js) SDK ]

使用以下步骤通过 Node.js 与 Amazon Quick Sight 进行交互。

1. 使用以下命令设置节点环境：
   + `npm install aws-sdk`
   + `npm install aws4 `
   + `npm install request`
   + `npm install url`

1. 有关使用 AWS SDK 配置 Node.js 和设置凭据的信息，请参阅-> S [DK v 适用于 JavaScript 的 AWS SDK 2 开发者指南](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/welcome.html)。

1. 使用下面的代码示例测试设置。必须使用 HTTPS。该示例显示了 Amazon Quick Sight 操作的完整列表及其网址请求参数，然后是您账户中的 Amazon Quick Sight 用户列表。

   ```
   const AWS = require('aws-sdk');
   const https = require('https');
   
   var quicksight = new AWS.Service({
       apiConfig: require('./quicksight-2018-04-01.min.json'),
       region: 'us-east-1',
   });
   
   console.log(quicksight.config.apiConfig.operations);
   
   quicksight.listUsers({
       // Enter your actual AWS account ID
       'AwsAccountId': 'relevant_AWS_account_ID', 
       'Namespace': 'default',
   }, function(err, data) {
       console.log('---');
       console.log('Errors: ');
       console.log(err);
       console.log('---');
       console.log('Response: ');
       console.log(data);
   });
   ```

------
#### [ Python3 SDK ]

使用以下步骤创建定制`botocore`包以与 Amazon Quick Sight 进行交互。

1. 在您的环境 AWS 目录中创建凭证文件。在 a Linux/Mac-based environment, that file is called \$1/.aws/credentials 中看起来像这样：

   ```
   [default]
   aws_access_key_id = Your_IAM_access_key
   aws_secret_access_key = Your_IAM_secret_key
   ```

1. 解压缩文件夹 `botocore-1.12.10`。将目录切换到 `botocore-1.12.10`，然后进入 Python3 解释器环境。

1. 响应以字典对象的形式返回。它们都有一个包含请求 IDs 和响应状态的`ResponseMetadata`条目。其他条目基于您运行的操作类型。

1. 下面是一个示例应用程序，它首先创建、删除和列出组，然后列出 QuickSight 账户中的用户：

   ```
   import botocore.session
   default_namespace = 'default'
   account_id = 'relevant_AWS_Account'
   
   session = botocore.session.get_session()
   client = session.create_client("quicksight", region_name='us-east-1')
   
   print('Creating three groups: ')
   client.create_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup1')
   client.create_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup2')
   client.create_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup3')
   
   print('Retrieving the groups and listing them: ')
   response = client.list_groups(AwsAccountId = account_id, Namespace=default_namespace)
   for group in response['GroupList']:
       print(group)
   
   print('Deleting our groups: ')
   client.delete_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup1')
   client.delete_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup2')
   client.delete_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup3')
   
   response = client.list_users(AwsAccountId = account_id, Namespace=default_namespace)
   for user in response['UserList']:
       print(user)
   ```

------
#### [ .NET/C\$1 SDK ]

使用以下步骤通过 C\$1.NET 与 Amazon Quick Sight 进行交互。该示例在 Microsoft Visual for Mac 上构建；根据您的 IDE 和平台，说明可能略有不同。但是，过程应该是相似的。



1. 将 `nuget.zip` 文件解压缩到名为 `nuget` 的文件夹。

1. 在 Visual Studio 中创建一个新的**控制台应用**。

1. 在解决方案下，找到应用程序 **Dependencies (依赖关系)**，然后打开上下文（右键单击）菜单并选择 **Add Packages (添加包)**）。

1. 在源列表中，选择 **Configure Sources (配置源)**。

1. 选择**添加**，然后将源命名为 `QuickSightSDK`。浏览到 `nuget` 文件夹，然后选择 **Add Source (添加源)**。

1. 选择**确定**。然后，`QuickSightSDK`选择所有三个 Amazon Quick Sight 套餐：
   + `AWSSDK.QuickSight`
   + `AWSSDK.Extensions.NETCore.Setup`
   + `AWSSDK.Extensions.CognitoAuthentication`

1. 请单击**添加包**。

1. 将以下示例应用程序复制并粘贴到您的控制台应用编辑器中。

   ```
   using System;
   using Amazon.QuickSight.Model;
   using Amazon.QuickSight;
   
   namespace DotNetQuickSightSDKTest
   {
       class Program
       {
           private static readonly string AccessKey = "insert_your_access_key";
           private static readonly string SecretAccessKey = "insert_your_secret_key";
           private static readonly string AccountID = "AWS_account_ID";
           private static readonly string Namespace = "default";  // leave this as default
   
           static void Main(string[] args)
           {
               var client = new AmazonQuickSightClient(
                   AccessKey,
                   SecretAccessKey, 
                   Amazon.RegionEndpoint.USEast1);
   
               var listUsersRequest = new ListUsersRequest
               {
                   AwsAccountId = AccountID,
                   Namespace = Namespace
               };
   
               client.ListUsersAsync(listUsersRequest).Result.UserList.ForEach(
                   user => Console.WriteLine(user.Arn)
               );
   
               var listGroupsRequest = new ListGroupsRequest
               {
                   AwsAccountId = AccountID,
                   Namespace = Namespace
               };
   
               client.ListGroupsAsync(listGroupsRequest).Result.GroupList.ForEach(
                   group => Console.WriteLine(group.Arn)
               );
           }
       }
   }
   ```

------

# 亚马逊 Quick Sight 事件集成
<a name="events-integration"></a>

借助亚马逊 EventBridge，您可以自动响应 Amazon Quick Sight 中的事件，例如创建或更新新的控制面板。这些事件几乎是实时传送到 EventBridge 的。作为开发人员，您可以编写简单的规则来指示哪些事件值得关注，以及当事件与规则匹配时要采取什么操作。通过使用事件，您可以完成持续备份和部署等使用场景。

**Topics**
+ [支持的事件](#events-supported)
+ [事件有效载荷示例](#sample-events-payload)
+ [创建规则以将 Amazon Quick Sight 事件发送到亚马逊 CloudWatch](events-send-cloudwatch.md)
+ [创建向其发送 Amazon Quick Sight 事件的规则 AWS Lambda](events-send-lambda.md)

## 支持的事件
<a name="events-supported"></a>

Amazon Quick Sight 目前支持以下事件。


| Asset type | Action | 事件详细信息类型 | 事件详细信息 | 
| --- | --- | --- | --- | 
| 控制面板 | Create | 成功创建亚马逊 Quick Sight 控制面板 | <pre>{<br />    "dashboardId": "6fdbc328-ebbd-457f-aa02-9780173afc83",<br />    "versionNumber": 1<br />}</pre> | 
| 控制面板 | Create | 创建亚马逊 Quick Sight 控制面板失败 | <pre>{<br />    "dashboardId": "6fdbc328-ebbd-457f-aa02-9780173afc83",<br />    "versionNumber": 1,<br />    "errors": [<br />      {<br />        "Type": "PARAMETER_NOT_FOUND",<br />        "Message": "Missing property abc"<br />      },<br />      {<br />        "Type": "DATA_SET_NOT_FOUND",<br />        "Message": "Cannot find dataset with id abc"<br />      }<br />    ]<br />}</pre> | 
| 控制面板 | Create | Amazon Quick Sight 控制面板权限已更新 | <pre>{"dashboardId": "6fdbc328-ebbd-457f-aa02-9780173afc83" }</pre> | 
| 控制面板 | 更新 | 亚马逊 Quick Sight 控制面板更新成功 | <pre>{<br />    "dashboardId": "6fdbc328-ebbd-457f-aa02-9780173afc83",<br />    "versionNumber": 1<br />}</pre> | 
| 控制面板 | 更新 | 亚马逊 Quick Sight 控制面板更新失败 | <pre>{<br />    "dashboardId": "6fdbc328-ebbd-457f-aa02-9780173afc83",<br />    "versionNumber": 1,<br />    "errors": [<br />      {<br />        "Type": "PARAMETER_NOT_FOUND",<br />        "Message": "Missing property abc"<br />      },<br />      {<br />        "Type": "DATA_SET_NOT_FOUND",<br />        "Message": "Cannot find dataset with id abc"<br />      }<br />    ]<br />}</pre> | 
| 控制面板 | 更新 | Amazon Quick Sight 控制面板权限已更新 | <pre>{"dashboardId": "6fdbc328-ebbd-457f-aa02-9780173afc83"}</pre> | 
| 控制面板 | 发布 | 亚马逊 Quick Sight 控制面板发布版本已更新 | <pre>{<br />    "dashboardId": "6fdbc328-ebbd-457f-aa02-9780173afc83",<br />    "versionNumber": 2<br />}</pre> | 
| 控制面板 | 删除 | 亚马逊快速浏览控制面板已删除 | <pre>{<br />    "dashboardId": "6fdbc328-ebbd-457f-aa02-9780173afc83"<br />}</pre> | 
| 分析 | Create | Amazon Quick Sight 分析创建成功 | <pre>{<br />    "analysisId": "e5f37119-e24c-4874-901a-af9032b729b5"<br />}</pre> | 
| 分析 | Create | 创建亚马逊 Quick Sight 分析失败 | <pre>{<br />    "analysisId": "e5f37119-e24c-4874-901a-af9032b729b5",<br />    "errors": [<br />      {<br />        "Type": "PARAMETER_NOT_FOUND",<br />        "Message": "Missing property abc"<br />      },<br />      {<br />        "Type": "DATA_SET_NOT_FOUND",<br />        "Message": "Cannot find dataset with id abc"<br />      }<br />    ]<br />}</pre> | 
| 分析 | Create | Amazon Quick Sight 分析权限已更新 | <pre>{"analysisId": "e5f37119-e24c-4874-901a-af9032b729b5" }</pre> | 
| 分析 | 删除 | 亚马逊 Quick Sight 分析已删除 | <pre>{<br />    "analysisId": "e5f37119-e24c-4874-901a-af9032b729b5"<br />}</pre> | 
| 分析 | 更新 | Amazon Quick Sight 分析更新成功 | <pre>{<br />    "analysisId": "e5f37119-e24c-4874-901a-af9032b729b5"<br />}</pre> | 
| 分析 | 更新 | Amazon 快速观察分析更新失败 | <pre>{<br />    "analysisId": "e5f37119-e24c-4874-901a-af9032b729b5",    <br />    "errors": [        <br />        {            <br />            "Type": "PARAMETER_NOT_FOUND",            <br />            "Message": "Missing property abc"        <br />        },        <br />        {             <br />            "Type": "DATA_SET_NOT_FOUND",            <br />            "Message": "Cannot find dataset with id abc"        <br />        }    <br />    ]<br />}</pre> | 
| 分析 | 更新 | Amazon Quick Sight 分析权限已更新 | <pre>{"analysisId": "e5f37119-e24c-4874-901a-af9032b729b5" }</pre> | 
| VPC 连接 | Create | 成功创建 Amazon Quick Sight VPC 连接 | <pre>{<br />    "vpcConnectionId": "53d34238-57e7-488d-b99a-a0037d275a4e",<br />    "availabilityStatus": "CREATION_SUCCESSFUL"<br />}</pre> | 
| VPC 连接 | Create | Amazon Quick Sight VPC 连接创建失败 | <pre>{<br />    "vpcConnectionId": "53d34238-57e7-488d-b99a-a0037d275a4e",<br />    "availabilityStatus": "CREATION_FAILED"<br />}</pre> | 
| VPC 连接 | 更新 | Amazon Quick Sight VPC 连接更新成功 | <pre>{<br />    "vpcConnectionId": "53d34238-57e7-488d-b99a-a0037d275a4e",<br />    "availabilityStatus": "UPDATE_SUCCESSFUL"<br />}</pre> | 
| VPC 连接 | 更新 | Amazon Quick Sight VPC 连接更新失败 | <pre>{<br />    "vpcConnectionId": "53d34238-57e7-488d-b99a-a0037d275a4e",<br />    "availabilityStatus": "UPDATE_FAILED"<br />}</pre> | 
| VPC 连接 | 删除 | 成功删除 Amazon Quick Sight VPC 连接 | <pre>{<br />    "vpcConnectionId": "53d34238-57e7-488d-b99a-a0037d275a4e",<br />    "availabilityStatus": "DELETED"<br />}</pre> | 
| VPC 连接 | 删除 | Amazon Quick Sight VPC 连接删除失败 | <pre>{<br />    "vpcConnectionId": "53d34238-57e7-488d-b99a-a0037d275a4e",<br />    "availabilityStatus": "DELETION_FAILED"<br />}</pre> | 
| Folder | Create | 已创建 Amazon 快速浏览文件夹 | <pre>{<br />    "folderId": "77e307e8-b41b-472a-90e8-fe3f471537be",<br />    "parentFolderArn": "arn:aws:quicksight:us-east-1:123456789012:folder/098765432134"<br />}</pre> | 
| Folder | Create | 亚马逊 Quick Sight 文件夹权限已更新 | <pre>{"folderId": "77e307e8-b41b-472a-90e8-fe3f471537be" }</pre> | 
| Folder | 更新 | 亚马逊 Quick Sight 文件夹已更新 | <pre>{<br />    "folderId": "77e307e8-b41b-472a-90e8-fe3f471537be"<br />}</pre> | 
| Folder | 更新 | 亚马逊 Quick Sight 文件夹权限已更新 | <pre>{"folderId": "77e307e8-b41b-472a-90e8-fe3f471537be" }</pre> | 
| Folder | 删除 | 亚马逊 Quick Sight 文件夹已删除 | <pre>{<br />    "folderId": "77e307e8-b41b-472a-90e8-fe3f471537be"<br />}</pre> | 
| Folder | 成员资格更新 | 亚马逊 Quick Sight 文件夹成员资格已更新 | <pre>{<br />    "folderId": "77e307e8-b41b-472a-90e8-fe3f471537be",<br />    "membersAdded": ["arn:aws:quicksight:us-east-1:123456789012:analysis/e5f37119-e24c-4874-901a-af9032b729b5"],<br />    "membersRemoved": []<br />}</pre> | 
| 数据集 | Create | 已创建 Amazon 快速视觉数据集 | <pre>{<br />    "datasetId": "a6553a81-f97e-4ffa-a860-baea63196efa"<br />}</pre> | 
| 数据集 | Create | 亚马逊 Quick Sight 数据集权限已更新 | <pre>{"datasetId": "a6553a81-f97e-4ffa-a860-baea63196efa" }</pre> | 
| 数据集 | 更新 | Amazon 快速瞄准数据集已更新 | <pre>{<br />    "datasetId": "a6553a81-f97e-4ffa-a860-baea63196efa"<br />}</pre> | 
| 数据集 | 更新 | 亚马逊 Quick Sight 数据集权限已更新 | <pre>{"datasetId": "a6553a81-f97e-4ffa-a860-baea63196efa" }</pre> | 
| 数据集 | 删除 | Amazon 快速视觉数据集已删除 | <pre>{<br />    "datasetId": "a6553a81-f97e-4ffa-a860-baea63196efa"<br />}</pre> | 
| DataSource | Create | 成功 DataSource 创建亚马逊 Quick Sight | <pre>{<br />    "datasourceId": "230caa6e-dc87-406b-91fb-037f29c32824"<br />}</pre> | 
| DataSource | Create | 亚马逊 Quick Sight DataSource 创建失败 | <pre>{<br />    "datasourceId": "230caa6e-dc87-406b-91fb-037f29c32824",<br />    "error": {<br />        "message": "AMAZON_ELASTICSEARCH engine version 7.4 is lower than minimum supported version 7.7",<br />        "type": "ENGINE_VERSION_NOT_SUPPORTED"<br />    }<br />}</pre> | 
| DataSource | Create | 亚马逊 Quick Sight DataSource 权限已更新 | <pre>{"datasourceId": "230caa6e-dc87-406b-91fb-037f29c32824" }</pre> | 
| DataSource | 更新 | 亚马逊 Quick Sight DataSource 更新成功 | <pre>{<br />    "datasourceId": "230caa6e-dc87-406b-91fb-037f29c32824"<br />}</pre> | 
| DataSource | 更新 | 亚马逊 Quick Sight DataSource 更新失败 | <pre>{<br />    "datasourceId": "230caa6e-dc87-406b-91fb-037f29c32824",<br />    "error": {<br />        "message": "AMAZON_ELASTICSEARCH engine version 7.4 is lower than minimum supported version 7.7",<br />        "type": "ENGINE_VERSION_NOT_SUPPORTED"<br />    }<br />}</pre> | 
| DataSource | 更新 | 亚马逊 Quick Sight DataSource 权限已更新 | <pre>{"datasourceId": "230caa6e-dc87-406b-91fb-037f29c32824" }</pre> | 
| DataSource | 删除 | Amazon Quick Sig DataSource h | <pre>{<br />    "datasourceId": "230caa6e-dc87-406b-91fb-037f29c32824"<br />}</pre> | 
| Theme | Create | Amazon Quick Sight 主题创建成功 | <pre>{<br />    ""themeId": "6fdbc328-ebbd-457f-aa02-9780173afc83", <br />    "versionNumber": 1"<br />}</pre> | 
| Theme | Create | 亚马逊 Quick Sight 主题创建失败 | <pre>{ <br />    "themeId": "6fdbc328-ebbd-457f-aa02-9780173afc83", <br />    "versionNumber": 1<br />}</pre> | 
| Theme | Create | 亚马逊 Quick Sight 主题权限已更新 | <pre>{"themeId": "6fdbc328-ebbd-457f-aa02-9780173afc83" }</pre> | 
| Theme | 更新 | 亚马逊 Quick Sight 主题更新成功 | <pre>{<br />    "themeId": "6fdbc328-ebbd-457f-aa02-9780173afc83",    <br />    "versionNumber": 2<br />}</pre> | 
| Theme | 更新 | 亚马逊 Quick Sight 主题更新失败 | <pre>{<br />    "themeId": "6fdbc328-ebbd-457f-aa02-9780173afc83",    <br />    "versionNumber": 2<br />}</pre> | 
| Theme | 更新 | 亚马逊 Quick Sight 主题权限已更新 | <pre>{"themeId": "6fdbc328-ebbd-457f-aa02-9780173afc83" }</pre> | 
| Theme | 删除 | 亚马逊 Quick Sight 主题已删除 | <pre>{<br />    "themeId": "6fdbc328-ebbd-457f-aa02-9780173afc83"<br />}</pre> | 
| Theme | 别名创建 | 已创建亚马逊 Quick Sight 主题别名 | <pre>{<br />    "themeId": "6fdbc328-ebbd-457f-aa02-9780173afc83",    <br />    "aliasName": "MyThemeAlias"    <br />    "versionNumber": 2<br />}</pre> | 
| Theme | 别名更新 | Amazon 快速浏览别名已更新 | <pre>{<br />    "themeId": "6fdbc328-ebbd-457f-aa02-9780173afc83",    <br />    "aliasName": "MyThemeAlias"    <br />    "versionNumber": 4<br />}</pre> | 
| Theme | 别名删除 | 亚马逊 Quick Sight 主题别名已删除 | <pre>{<br />    "themeId": "6fdbc328-ebbd-457f-aa02-9780173afc83",    <br />    "aliasName": "MyThemeAlias"    <br />    "versionNumber": 2<br />}</pre> | 

## 事件有效载荷示例
<a name="sample-events-payload"></a>

所有事件都遵循标准 EventBridge [对象结构](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events-structure.html)。详细信息字段是一个 JSON 对象，其中包含有关事件的更多信息。

```
{
  "version": "0",
  "id": "3acb26c8-397c-4c89-a80a-ce672a864c55",
  "detail-type": "QuickSight Dashboard Creation Successful",
  "source": "aws.quicksight",
  "account": "123456789012",
  "time": "2023-10-30T22:06:31Z",
  "region": "us-east-1",
  "resources": ["arn:aws:quicksight:us-east-1:123456789012:dashboard/6fdbc328-ebbd-457f-aa02-9780173afc83"],
  "detail": {
    "dashboardId": "6fdbc328-ebbd-457f-aa02-9780173afc83",
    "versionNumber": 1
  }
}
```

# 创建规则以将 Amazon Quick Sight 事件发送到亚马逊 CloudWatch
<a name="events-send-cloudwatch"></a>

您可以编写简单的规则来指明您对哪些 Amazon Quick Sight 事件感兴趣，以及当事件与规则匹配时要执行哪些自动操作。例如，您可以将 Amazon Quick Sight 配置为在文件夹中放置 Amazon Quick Sight 资产 CloudWatch 时向亚马逊发送事件。有关更多信息，请参阅 [Amazon EventBridge 用户指南](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)。

1. 登录 AWS 管理控制台 并打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航窗格中的**事件**下，选择**规则**。

1. 选择**创建规则**。

1. 为规则输入名称和描述。规则名称在此区域中必须是唯一的。例如，输入 `QuickSightAssetChangeRuleCloudWatch`。

1. 选择**默认**事件总线。

1. 选择 **Rule with an event pattern**（具有事件模式的规则），然后选择 **Next**（下一步）。

1. 对于**事件来源**，选择**AWS 事件或 EventBridge合作伙伴事件**。

1. 在**创建方法**部分中，选择**自定义模式（JSON 编辑器）**。

1. 在**事件模式**文本框中，输入以下片段并选择**下一步**。

   ```
   {
     "source": ["aws.quicksight"]
   }
   ```

   或者，您可以在 Amazon Quick Sight 中创建仅订阅事件类型子集的规则。例如，仅当将资产添加到 ID 为 `77e307e8-b41b-472a-90e8-fe3f471537be` 的文件夹或从中删除资产时，才会触发以下规则。

   ```
   {
     "source": ["aws.quicksight"],
     "detail-type": ["QuickSight Folder Membership Updated"],
     "detail": {
       "folderId": "77e307e8-b41b-472a-90e8-fe3f471537be"
     }
   }
   ```

1. 对于**目标**，选择**AWS 服务** > **CloudWatch 日志组。**

1. 从现有日志组中选择，或通过输入新的日志组名称来创建新的日志组。

1. 您可以选择为此规则添加另一个目标。

1. 在 **Configure tags**（配置标签）中，选择 **Next**（下一步）。

1. 选择 **Create rule**（创建规则）。

有关更多信息，请参阅[亚马逊 EventBridge 用户指南中的创建对事件做出反应的亚马逊 EventBridge 规则](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html)。

# 创建向其发送 Amazon Quick Sight 事件的规则 AWS Lambda
<a name="events-send-lambda"></a>

在本教程中，您将创建一个用于在 Amazon Quick Sight 账户中记录资产事件的 AWS Lambda 函数。然后，您将创建一个规则，只要资产发生更爱，便运行该函数。本教程假设你已经注册了 Amazon Quick Sight。

**步骤 1：创建 Lambda 函数**

创建 Lambda 函数以记录状态更改事件。在创建规则时，您可以指定此函数。

1. 登录 AWS 管理控制台 并打开 AWS Lambda 控制台，网址为[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)。

1. 如果您是首次接触 Lambda，您将看到欢迎页面。选择 **Get Started Now (立即开始)**。否则，选择**创建函数**。

1. 选择 **Author from scratch (从头创作)**。

1. 在“创建函数”页面上，输入 Lambda 函数的名称和描述。例如，将函数命名为 `QuickSightAssetChangeFn`。

1. 在**运行时**中，选择 **Node.js 18x**。

1. 对于**架构**，选择 **x86\$164**。

1. 对于**执行角色**，选择**创建具有基本 Lambda 权限的新角色**或**使用现有角色**，然后选择所需的角色。

1. 选择**创建函数**。

1. 在该**QuickSightAssetChange**页面上，选择 **index.js**。

1. 在 **index.js** 窗格中，删除现有代码。

1. 输入以下代码片段。

   ```
   console.log('Loading function');
   exports.handler = async (event, context) => {
     console.log('Received QuickSight event:', JSON.stringify(event));
   };
   ```

1. 选择 **Deploy (部署)**。

**步骤 2：创建规则**

创建一条规则，以便在您拥有 create/update/delete Amazon Quick Sight 资产时运行您的 Lambda 函数。

1. 登录 AWS 管理控制台 并打开亚马逊 EventBridge 控制台，网址为[https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)。

1. 在导航窗格中，选择**规则**。

1. 选择**创建规则**。

1. 为规则输入名称和描述。例如，输入 `QuickSightAssetChangeRule`。

1. 选择**默认**事件总线。

1. 选择 **Rule with an event pattern**（具有事件模式的规则），然后选择 **Next**（下一步）。

1. 对于**事件来源**，选择**AWS 事件或 EventBridge合作伙伴事件**。

1. 在**创建方法**部分中，选择**自定义模式（JSON 编辑器）**。

1. 在**事件模式**文本框中，输入以下片段并选择**下一步**。

   ```
   {
     "source": ["aws.quicksight"]
   }
   ```

   或者，您可以在 Amazon Quick Sight 中创建仅订阅事件类型子集的规则。例如，仅当将资产添加到 ID 为 `77e307e8-b41b-472a-90e8-fe3f471537be` 的文件夹或从中删除资产时，才会触发以下规则。

   ```
   {
     "source": ["aws.quicksight"],
     "detail-type": ["QuickSight Folder Membership Updated"],
     "detail": {
       "folderId": "77e307e8-b41b-472a-90e8-fe3f471537be"
     }
   }
   ```

1. 对于**目标类型**，选择 **AWS 服务**和 **Lambda 函数**。

1. 对于 **Function**（函数），选择您创建的 Lambda 函数。然后选择**下一步**。

1. 在 **Configure tags**（配置标签）中，选择 **Next**（下一步）。

1. 查看您的规则中的步骤。然后，选择 **Create rule**（创建规则）。

**步骤 3：测试规则**

要测试您的规则，请创建一个分析。等待片刻后，验证您的 Lambda 函数是否已调用。

1. 打开 Amazon Quick Sight 控制台，网[https://quicksight.aws.amazon.com址为/](https://quicksight.aws.amazon.com/)。

1. 创建新分析。

1. 在导航窗格中，选择 **Rules (规则)**，再选择所创建规则的名称。

1. 在**规则详细信息**中，选择**监控**。

1. 您将被重定向到 Amazon CloudWatch 控制台。如果您未被重定向，请选择**查看中的指标 CloudWatch**。

1. 在 **All metrics (所有指标)**中，选择所创建规则的名称。该图表表明已调用该规则。

1. 在导航窗格中，选择**日志组**。

1. 选择您的 Lambda 函数的日志组的名称。例如 `/aws/lambda/function-name`。

1. 选择日志流的名称，以查看您启动的实例的函数提供的数据。您应该会看到接收的事件，类似以下内容：

   ```
   {
     "version": "0",
     "id": "3acb26c8-397c-4c89-a80a-ce672a864c55",
     "detail-type": "QuickSight Analysis Creation Successful",
     "source": "aws.quicksight",
     "account": "123456789012",
     "time": "2023-10-30T22:06:31Z",
     "region": "us-east-1",
     "resources": ["arn:aws:quicksight:us-east-1:123456789012:analysis/e5f37119-e24c-4874-901a-af9032b729b5"],
     "detail": {
       "analysisId": "e5f37119-e24c-4874-901a-af9032b729b5"
     }
   }
   ```

有关 JSON 格式的 Amazon Quick Sight 事件[的示例，请参阅 Amazon Quick Sight 事件概述](https://docs.aws.amazon.com/quicksight/latest/developerguide/events.html)。

# 亚马逊 Quick Sight 的嵌入式分析
<a name="embedded-analytics"></a>

**重要**  
Amazon Quick Sight 推出了用于嵌入分析的新 API 操作：`GenerateEmbedUrlForAnonymousUser`和`GenerateEmbedUrlForRegisteredUser`。  
您仍然可以使用`GetDashboardEmbedUrl`和 `GetSessionEmbedUrl` API 操作来嵌入仪表板和 Amazon Quick Sight 控制台，但它们不包含最新的嵌入功能。有关使用旧 API 操作进行嵌入的更多信息，请参阅 [使用 GetDashboardEmbedURL 和 GetSessionEmbedURL API 操作嵌入分析](embedded-analytics-deprecated.md)。


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

借助 Amazon Quick Sight 嵌入式分析，您可以将数据驱动的体验无缝集成到您的软件应用程序中。您可以设计嵌入式组件的样式，让其匹配自己的品牌。此功能将 Amazon Quick Sight 的强大功能带给您的最终用户，他们无需离开应用程序即可分析数据并与之交互。通过降低认知复杂性来改善用户体验，让用户有更好的机会进行深入理解并提高效率。

Amazon Quick Sight 支持嵌入以下元素：
+ Amazon Quick Sight 控制台（为注册用户提供完整的创作体验）
+ Amazon Quick Sight 控制面板和视觉效果（适用于注册用户、匿名用户、公共最终用户）
+ Amazon Quick Sight Q 搜索栏（适用于注册用户和匿名用户）

使用嵌入式 Amazon Quick Sight 控制台，你可以嵌入完整的 Amazon Quick Sight 体验。这样就可以将 Amazon Quick Sight 创作工具用作应用程序的一部分，而不是在 AWS 管理控制台 或独立网站的环境中使用。嵌入式 Amazon Quick Sight 控制台的用户需要在你的 AWS 账户游戏中注册为 Amazon Quick Sight 的作者或管理员。他们还需要使用任何 Amazon Qu AWS 账户 ick Sight 支持的身份验证方法进行身份验证。

借助嵌入式 Amazon Quick Sight 控制面板或视觉效果，读者可以获得与发布的控制面板或视觉效果相同的功能和交互性。要使用嵌入式控制面板或视觉对象，读者（查看者）可以为下列任何身份：
+ Amazon Quick Sight 用户 AWS 账户 通过亚马逊 Quick Sight 支持的任何方法在你的账户中进行身份验证。
+ 未经身份验证的网站或应用程序访问者 – 此选项需要具有容量定价的会话包。有关订阅类型的信息，请参阅[了解 Amazon Quick Sight 订阅和角色](https://docs.aws.amazon.com/quicksight/latest/user/user-types.html#subscription-role-mapping)。
+ 通过编程访问方式在监视器或大屏幕上查看显示内容的多个最终用户。

如果您的应用程序也位于中 AWS，则该应用程序无需与 Amazon Quick Sight 订阅位于同一 AWS 账户 位置。但是，该应用程序需要能够代入您用于 API 调用的 AWS Identity and Access Management (IAM) 角色。

在嵌入内容之前，请确保在计划使用嵌入 AWS 账户 的地方使用了 Amazon Quick Sight Enterprise 版。

所有支持的版本都提供了 Amazon Quick Sight 嵌入 AWS 区域功能。

**Topics**
+ [将 Amazon Quick Sight 分析嵌入您的应用程序中](embedding-overview.md)
+ [将自定义 Amazon Quick Sight 资产嵌入您的应用程序中](customize-and-personalize-embedded-analytics.md)
+ [使用一键嵌入代码嵌入 Amazon Quick Sight 视觉效果和仪表板](1-click-embedding.md)
+ [嵌入 Amazon Quick Sight APIs](embedded-analytics-api.md)

# 将 Amazon Quick Sight 分析嵌入您的应用程序中
<a name="embedding-overview"></a>


|  | 
| --- |
|  适用于：企业版  | 

要嵌入分析，您可以运行 Amazon Quick Sight 嵌入 API 来生成嵌入代码。或者，对于控制面板，您可以在 Amazon Quick Sight 中共享控制面板时复制嵌入代码。每个选项如下所述。

## 注册用户一键式嵌入
<a name="embedding-overview-1-click"></a>

在与账户中的注册用户共享控制面板时，您可以复制控制面板的嵌入代码并将其粘贴到内部应用程序的 HTML 中。

当您想要将 Amazon Quick Sight 控制面板嵌入到用户需要进行身份验证的内部应用程序中时，最好使用一键式企业嵌入。复制嵌入代码时，您会获得一个不变的静态嵌入代码。

有关更多信息，请参阅 [通过一键嵌入代码为注册用户嵌入 Amazon Quick Sight 视觉效果和控制面板](embedded-analytics-1-click.md)。

## 嵌入 Amazon Quick Sight APIs
<a name="embedding-overview-api"></a>

当你想将 Amazon Quick Sight 体验嵌入到用户必须进行身份验证的内部应用程序或任何人都可以访问的外部应用程序中时，最适合嵌入 Amazon Quick Sight API。使用嵌入 API 操作生成嵌入代码时，您会获得一个一次性代码。

有关更多信息，请参阅 [嵌入 Amazon Quick Sight APIs](embedded-analytics-api.md)。

# 将自定义 Amazon Quick Sight 资产嵌入您的应用程序中
<a name="customize-and-personalize-embedded-analytics"></a>

您可以使用 Amazon Quick Sight 嵌入式分析将自定义 Amazon Quick Sight 资产嵌入到您的应用程序中，这些资产专为满足您的业务需求而量身定制。对于嵌入式仪表板和视觉对象，Amazon Quick Sight 作者可以添加筛选器和向下钻取，供读者在浏览仪表板或视觉对象时进行访问。Amazon Quick Sight 开发人员还可以使用 Amazon Quick Sight SDKs 在 SaaS 应用程序和 Amazon Quick Sight 嵌入式资产之间建立更紧密的集成，从而在运行时向仪表板上的视觉对象添加数据点回调操作。

有关 Amazon Quick Sight 的更多信息 SDKs，请参阅 `amazon-quicksight-embedding-sdk` on [GitHub](https://github.com/awslabs/amazon-quicksight-embedding-sdk)或 [NPM](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)。

下面，您可以找到有关如何使用 Amazon Quick Sight SDKs 自定义 Amazon Quick Sight 嵌入式分析的说明。

**Topics**
+ [在 Amazon Quick Sight 中添加运行时嵌入式回调操作](embedding-custom-actions-callback.md)
+ [在 Amazon Quick Sight 嵌入式控制面板和视觉对象的运行时筛选数据](embedding-runtime-filtering.md)
+ [自定义 Amazon Quick Sight 嵌入式仪表板和视觉效果的外观](embedding-runtime-theming.md)
+ [使用 Amazon Quick Sight Embedging SDK 启用指向嵌入式控制面板视图的可共享链接](embedded-view-sharing.md)

# 在 Amazon Quick Sight 中添加运行时嵌入式回调操作
<a name="embedding-custom-actions-callback"></a>

使用嵌入式数据点回调操作在您的软件即服务 (SaaS) 应用程序与 Amazon Quick Sight 嵌入式仪表板和视觉对象之间建立更紧密的集成。开发人员可以使用 Amazon Quick Sight 嵌入式 SDK 注册要回调的数据点。当您为视觉对象注册回调操作时，读者可以在视觉对象上选择一个数据点，用来接收会针对所选数据点提供数据的回调。此信息可用于标记关键记录、编译针对数据点的原始数据、捕获记录以及为后端进程编译数据。

自定义视觉内容、文本框或见解不支持嵌入式回调。

在开始注册回调数据点之前，请将嵌入开发工具包更新到版本 2.3.0。有关使用 Amazon Quick Sight 嵌入软件开发工具包的更多信息，请参阅[amazon-quicksight-embedding-sdk](https://github.com/awslabs/amazon-quicksight-embedding-sdk)上的 GitHub。

数据点回调可以在运行时通过 Amazon Quick Sight SDK 注册到一个或多个视觉对象。您还可以向 [VisualCustomAction](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_VisualCustomAction.html)API 结构支持的任何交互注册数据点回调。当用户在视觉对象上选择数据点或从数据点上下文菜单中选择数据点时，此操作允许启动数据点回调。以下示例注册了一个数据点回调，读者在视觉对象上选择数据点时会启动该回调。

```
/const MY_GET_EMBED_URL_ENDPOINT =
  "https://my.api.endpoint.domain/MyGetEmbedUrlApi"; // Sample URL

// The dashboard id to embed
const MY_DASHBOARD_ID = "my-dashboard"; // Sample ID

// The container element in your page that will have the embedded dashboard
const MY_DASHBOARD_CONTAINER = "#experience-container"; // Sample ID

// SOME HELPERS

const ActionTrigger = {
  DATA_POINT_CLICK: "DATA_POINT_CLICK",
  DATA_POINT_MENU: "DATA_POINT_MENU",
};

const ActionStatus = {
  ENABLED: "ENABLED",
  DISABLED: "DISABLED",
};

// This function makes a request to your endpoint to obtain an embed url for a given dashboard id
// The example implementation below assumes the endpoint takes dashboardId as request data
// and returns an object with EmbedUrl property
const myGetEmbedUrl = async (dashboardId) => {
  const apiOptions = {
    dashboardId,
  };
  const apiUrl = new URL(MY_GET_EMBED_URL_ENDPOINT);
  apiUrl.search = new URLSearchParams(apiOptions).toString();
  const apiResponse = await fetch(apiUrl.toString());
  const apiResponseData = await apiResponse.json();
  return apiResponseData.EmbedUrl;
};

// This function constructs a custom action object
const myConstructCustomActionModel = (
  customActionId,
  actionName,
  actionTrigger,
  actionStatus
) => {
  return {
    Name: actionName,
    CustomActionId: customActionId,
    Status: actionStatus,
    Trigger: actionTrigger,
    ActionOperations: [
      {
        CallbackOperation: {
          EmbeddingMessage: {},
        },
      },
    ],
  };
};

// This function adds a custom action on the first visual of first sheet of the embedded dashboard
const myAddVisualActionOnFirstVisualOfFirstSheet = async (
  embeddedDashboard
) => {
  // 1. List the sheets on the dashboard
  const { SheetId } = (await embeddedDashboard.getSheets())[0];
  // If you'd like to add action on the current sheet instead, you can use getSelectedSheetId method
  // const SheetId = await embeddedDashboard.getSelectedSheetId();

  // 2. List the visuals on the specified sheet
  const { VisualId } = (await embeddedDashboard.getSheetVisuals(SheetId))[0];

  // 3. Add the custom action to the visual
  try {
    const customActionId = "custom_action_id"; // Sample ID
    const actionName = "Flag record"; // Sample name
    const actionTrigger = ActionTrigger.DATA_POINT_CLICK; // or ActionTrigger.DATA_POINT_MENU
    const actionStatus = ActionStatus.ENABLED;
    const myCustomAction = myConstructCustomActionModel(
      customActionId,
      actionName,
      actionTrigger,
      actionStatus
    );
    const response = await embeddedDashboard.addVisualActions(
      SheetId,
      VisualId,
      [myCustomAction]
    );
    if (!response.success) {
      console.log("Adding visual action failed", response.errorCode);
    }
  } catch (error) {
    console.log("Adding visual action failed", error);
  }
};

const parseDatapoint = (visualId, datapoint) => {
  datapoint.Columns.forEach((Column, index) => {
    // FIELD | METRIC
    const columnType = Object.keys(Column)[0];

    // STRING | DATE | INTEGER | DECIMAL
    const valueType = Object.keys(Column[columnType])[0];
    const { Column: columnMetadata } = Column[columnType][valueType];

    const value = datapoint.RawValues[index][valueType];
    const formattedValue = datapoint.FormattedValues[index];

    console.log(
      `Column: ${columnMetadata.ColumnName} has a raw value of ${value}
           and formatted value of ${formattedValue.Value} for visual: ${visualId}`
    );
  });
};

// This function is used to start a custom workflow after the end user selects a datapoint
const myCustomDatapointCallbackWorkflow = (callbackData) => {
  const { VisualId, Datapoints } = callbackData;

  parseDatapoint(VisualId, Datapoints);
};

// EMBEDDING THE DASHBOARD

const main = async () => {
  // 1. Get embed url
  let url;
  try {
    url = await myGetEmbedUrl(MY_DASHBOARD_ID);
  } catch (error) {
    console.log("Obtaining an embed url failed");
  }

  if (!url) {
    return;
  }

  // 2. Create embedding context
  const embeddingContext = await createEmbeddingContext();

  // 3. Embed the dashboard
  const embeddedDashboard = await embeddingContext.embedDashboard(
    {
      url,
      container: MY_DASHBOARD_CONTAINER,
      width: "1200px",
      height: "300px",
      resizeHeightOnSizeChangedEvent: true,
    },
    {
      onMessage: async (messageEvent) => {
        const { eventName, message } = messageEvent;
        switch (eventName) {
          case "CONTENT_LOADED": {
            await myAddVisualActionOnFirstVisualOfFirstSheet(embeddedDashboard);
            break;
          }
          case "CALLBACK_OPERATION_INVOKED": {
            myCustomDatapointCallbackWorkflow(message);
            break;
          }
        }
      },
    }
  );
};

main().catch(console.error);
```

您也可以将前面的示例配置为在用户打开上下文菜单时启动数据点回调。要在前面的示例中执行此操作，请将 `actionTrigger` 的值设置为 `ActionTrigger.DATA_POINT_MENU`。

注册数据点回调后，就会应用到指定视觉对象上的大多数数据点。回调不适用于视觉对象的总计或小计。当读者与数据点交互时，会向 Amazon Quick S `CALLBACK_OPERATION_INVOKED` ight 嵌入式 SDK 发送一条消息。此消息由 `onMessage` 处理程序捕获。此消息包含与所选数据点关联的整行数据的原始值和显示值。其中还包含内含数据点的视觉对象中所有列的列元数据。以下是 `CALLBACK_OPERATION_INVOKED` 消息的示例。

```
{
   CustomActionId: "custom_action_id",
   DashboardId: "dashboard_id",
   SheetId: "sheet_id",
   VisualId: "visual_id",
   DataPoints: [
        {
            RawValues: [
                    {
                        String: "Texas" // 1st raw value in row
                    },
                    {
                        Integer: 1000 // 2nd raw value in row
                    }
            ],
            FormattedValues: [
                    {Value: "Texas"}, // 1st formatted value in row
                    {Value: "1,000"} // 2nd formatted value in row
            ],
            Columns: [
                    { // 1st column metadata
                        Dimension: {
                            String: {
                                Column: {
                                    ColumnName: "State",
                                    DatsetIdentifier: "..."
                                }
                            }
                        }
                    },
                    { // 2nd column metadata
                        Measure: {
                            Integer: {
                                Column: {
                                    ColumnName: "Cancelled",
                                    DatsetIdentifier: "..."
                                },
                                AggregationFunction: {
                                    SimpleNumericalAggregation: "SUM"
                                }
                            }
                        }
                    }
            ]
        }
   ]
}
```

# 在 Amazon Quick Sight 嵌入式控制面板和视觉对象的运行时筛选数据
<a name="embedding-runtime-filtering"></a>

您可以在 Amazon Quick Sight 嵌入软件开发工具包中使用筛选方法，在运行时在软件即服务 (SaaS) 应用程序中利用 Amazon Quick Sight 筛选器的强大功能。运行时筛选器允许企业主将其应用程序与嵌入式 Amazon Quick Sight 仪表板和视觉效果集成。为此，请在应用程序中创建自定义筛选条件控件，并根据应用程序中的数据应用筛选条件预设。然后，开发人员可以在运行时为最终用户个性化筛选条件配置。

开发人员可以使用 Amazon Quick Sight Embedding SDK 在嵌入式控制面板上创建、查询、更新和移除 Amazon Quick Sight 筛选条件，或者从应用程序中移除视觉效果。使用[FilterGroup](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_FilterGroup.html)数据模型在您的应用程序中创建 Amazon Quick Sight 筛选对象，并使用筛选方法将其应用于嵌入式仪表板和视觉对象。有关使用 Amazon Quick Sight 嵌入软件开发工具包的更多信息，请参阅[amazon-quicksight-embedding-sdk](https://github.com/awslabs/amazon-quicksight-embedding-sdk)上的 GitHub。

**先决条件**

在开始之前，请确保您使用的是 Amazon Quick Sight Embedding SDK 版本 2.5.0 或更高版本。

## 术语和概念
<a name="runtime-filtering-terminology"></a>

使用嵌入式运行时筛选时，以下术语可能很有用。
+ *筛选条件组* – 一组单独的筛选条件。位于 `FilterGroup` 内的筛选条件彼此之间进行 OR 运算。中的筛选[FilterGroup](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_FilterGroup.html)器应用于相同的工作表或视觉对象。
+ *筛选条件* - 单个筛选条件。筛选条件可以是类别、数字或日期时间筛选条件类型。有关筛选条件的更多信息，请参阅[筛选条件](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_Filter.html)。

## 设置
<a name="runtime-filtering-setup"></a>

开始之前，请确保您已准备好以下资产和信息。
+ 您想要将 `FilterGroup` 范围限定到的工作表的工作表 ID。这可以通过 Embedding SDK 中的 `getSheets` 方法获取。
+ 您想要筛选的数据集和数据集的列标识符。这可以通过 [DescribeDashboardDefinition](https://docs.aws.amazon.com/APIReference/API_DescribeDashboardDefinition.html)API 操作获得。

  根据您使用的列类型，可以添加到嵌入式资产的筛选条件类型可能会受到限制。有关筛选条件限制的更多信息，请参阅 [Filter](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_Filter.html)。
+ 如果适用，则为要将 `FilterGroup` 范围限定到的视觉对象的视觉对象 ID。这可以使用 Embedding SDK 中的 `getSheetVisuals` 方法获取。

  除了 `getSheetVisuals` 方法之外，您添加的 `FilterGroup` 只能限于当前选定的工作表。

要使用此功能，您必须已经通过 Amazon Quick Sight Embedding SDK 将仪表板或视觉效果嵌入到应用程序中。有关使用 Amazon Quick Sight 嵌入软件开发工具包的更多信息，请参阅[amazon-quicksight-embedding-sdk](https://github.com/awslabs/amazon-quicksight-embedding-sdk)上的 GitHub。

## SDK 方法接口
<a name="runtime-filtering-sdk-interface"></a>

**控制面板嵌入 getter 方法**

下表介绍了开发人员可以使用的不同控制面板嵌入 getter 方法。


| 方法 | 说明 | 
| --- | --- | 
|  `getFilterGroupsForSheet(sheetId: string) `  |  返回当前限 FilterGroups 定为参数中提供的表单的所有内容。  | 
|  `getFilterGroupsForVisual(sheetId: string, visualId: string)`  |  返回范围限定为参数中提供的视觉对象的所有 `FilterGroups`。  | 

如果参数中提供的工作表不是嵌入式控制面板中当前选定的工作表，则上述方法会返回错误。

**视觉对象嵌入 getter 方法**

下表介绍了开发人员可以使用的不同视觉对象嵌入 getter 方法。


| 方法 | 说明 | 
| --- | --- | 
|  `getFilterGroups()`  |  返回范围当前限定为嵌入式视觉对象的所有 `FilterGroups`。  | 

**Setter 方法**

下表介绍了开发人员可用于控制面板或视觉对象嵌入的不同 setter 方法。


| 方法 | 说明 | 
| --- | --- | 
|  `addFilterGroups(filterGroups: FilterGroup[])`  |  将提供的内容添加并应用**FilterGroups**到嵌入式仪表板或视觉对象。返回 `ResponseMessage` 指示添加是否成功。  | 
|  `updateFilterGroups(filterGroups: FilterGroup[])`  |  更新嵌入式体验上与参数中提供的 `FilterGroup` 包含相同 `FilterGroupId` 的 `FilterGroups`。返回 `ResponseMessage` 指示更新是否成功。  | 
|  `removeFilterGroups(filterGroupsOrIds: FilterGroup[] \| string[])`  |   FilterGroups 从仪表板中移除提供的内容，并返回 a，`ResponseMessage`表示删除尝试是否成功。  | 

提供的 `FilterGroup` 的范围必须限定于当前选定的嵌入式工作表或视觉对象。

# 自定义 Amazon Quick Sight 嵌入式仪表板和视觉效果的外观
<a name="embedding-runtime-theming"></a>

您可以使用 Amazon Quick Sight Embedding SDK（版本 2.5.0 及更高版本）在运行时更改嵌入式 Amazon Quick Sight 仪表板和视觉对象的主题。运行时主题可以更轻松地将软件即服务 (SaaS) 应用程序与 Amazon Quick Sight 嵌入式资产集成。运行时主题允许您将嵌入内容的主题与嵌入 Amazon Quick Sight 资产的父应用程序的主题同步。您还可以使用运行时主题为读者添加自定义选项。主题更改可以在初始化时应用于嵌入式资产，也可以在嵌入式控制面板或视觉对象的整个生命周期内应用。

有关主题的更多信息，请参阅 [使用 Amazon Quick Sight 中的主题](themes-in-quicksight.md)。有关使用 Amazon Quick Sight 嵌入软件开发工具包的更多信息，请参阅[amazon-quicksight-embedding-sdk](https://github.com/awslabs/amazon-quicksight-embedding-sdk)上的 GitHub。

**先决条件**

在开始之前，请确保您已满足以下先决条件。
+ 你使用的是 Amazon Quick Sight Embedding SDK 版本 2.5.0 或更高版本
+ 访问您想要使用的主题的权限。要在 Amazon Quick Sight 中授予主题的权限，请调用 `UpdateThemePermissions` API 或使用 Amazon Quick Sight 控制台分析编辑器中主题旁边的**共享**图标。

## 术语和概念
<a name="runtime-theming-terminology"></a>

使用嵌入式运行时主题时，以下术语可能很有用。
+ *主题* – 可应用于多个分析和控制面板的设置集合，可更改内容的显示方式。
+ *ThemeConfiguration*— 包含主题所有显示属性的配置对象。
+ *主题覆盖* - 应用于活动主题的 `ThemeConfiguration` 对象，用于覆盖内容显示方式的部分或全部方面。
+ *主题 ARN* — 标识亚马逊 Quick Sight 主题的亚马逊资源名称 (ARN)。以下是自定义主题 ARN 的示例。

  `arn:aws:quicksight:region:account-id:theme/theme-id`

  Amazon Quick Sight 提供的入门主题在其主题 ARN 中没有区域。以下是入门主题 ARN 的示例。

  `arn:aws:quicksight::aws:theme/CLASSIC`

## 设置
<a name="runtime-theming-setup"></a>

确保您已准备好以下信息，以开始使用运行时主题。
+ 您要使用的主题的主题。 ARNs 您可以选择现有主题，也可以创建一个新主题。要获取您的 Amazon Quick Sight 账户 ARNs 中所有主题和主题的列表，请调用 [ListThemes](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ListThemes.html)API 操作。有关预设 Amazon Quick Sight 主题的信息，请参阅[使用 Amazon Quick 为 Amazon Quick 分析设置默认主题 APIs](customizing-quicksight-default-theme.md)。
+ 如果您使用注册用户嵌入，请确保该用户可以访问您想要使用的主题。

  如果您使用匿名用户嵌入，请将主题 ARNs列表传递给 `GenerateEmbedUrlForAnonymousUser` API 的`AuthorizedResourceArns`参数。匿名用户有权访问 `AuthorizedResourceArns` 参数中列出的任何主题。

## SDK 方法接口
<a name="runtime-theming-sdk-interface"></a>

**Setter 方法**

下表介绍了开发人员可以用于运行时主题的不同 setter 方法。


| 方法 | 说明 | 
| --- | --- | 
|  `setTheme(themeArn: string)`  |  将控制面板或视觉对象的活动主题替换为其他主题。如果应用，则会移除主题覆盖。 如果您无权访问主题或主题不存在，则会返回错误。  | 
|  `setThemeOverride(themeOverride: ThemeConfiguration)`  |  设置动态 `ThemeConfiguration` 以覆盖当前活动主题。这将替换之前设置的主题覆盖。新 `ThemeConfiguration` 中未提供的任何值都将默认为当前活动主题中的值。 如果您提供的 `ThemeConfiguration` 无效，则会返回错误。  | 

## 使用主题初始化嵌入式内容
<a name="runtime-theming-sdk-initialize"></a>

要使用非默认主题初始化嵌入式控制面板或视觉对象，请在 `DashboardContentOptions` 或 `VisualContentOptions` 参数上定义 `themeOptions` 对象，并将 `themeOptions` 中的 `themeArn` 属性设置为所需的主题 ARN。

以下示例使用 `MIDNIGHT` 主题初始化嵌入式控制面板。

```
import { createEmbeddingContext } from 'amazon-quicksight-embedding-sdk';

const embeddingContext = await createEmbeddingContext();

const {
    embedDashboard,
} = embeddingContext;

const frameOptions = {
    url: '<YOUR_EMBED_URL>',
    container: '#experience-container',
};
const contentOptions = {
    themeOptions: {
        themeArn: "arn:aws:quicksight::aws:theme/MIDNIGHT"
    }
};

// Embedding a dashboard experience
const embeddedDashboardExperience = await embedDashboard(frameOptions, contentOptions);
```

## 使用主题覆盖初始化嵌入式内容
<a name="runtime-theming-runtime-initialize-override"></a>

开发人员可以使用主题覆盖在运行时定义嵌入式控制面板或视觉对象的主题。这允许控制面板或视觉对象从第三方应用程序继承主题，而无需在 Amazon Quick Sight 中预先配置主题。要使用主题覆盖初始化嵌入式控制面板或视觉对象，请在 `DashboardContentOptions` 或 `VisualContentOptions` 参数中的 `themeOptions` 中设置 `themeOverride` 属性。以下示例将控制面板主题的字体从默认字体覆盖为 `Amazon Ember`。

```
import { createEmbeddingContext } from 'amazon-quicksight-embedding-sdk';

const embeddingContext = await createEmbeddingContext();

const {
    embedDashboard,
} = embeddingContext;

const frameOptions = {
    url: '<YOUR_EMBED_URL>',
    container: '#experience-container',
};
const contentOptions = {
    themeOptions: {
        "themeOverride":{"Typography":{"FontFamilies":[{"FontFamily":"Comic Neue"}]}}
    }
};

// Embedding a dashboard experience
const embeddedDashboardExperience = await embedDashboard(frameOptions, contentOptions);
```

## 使用预加载的主题初始化嵌入式内容
<a name="runtime-theming-runtime-initialize-preloaded"></a>

开发人员可以配置一组控制面板主题，以便在初始化时预加载。这对于在不同视图（例如深色和浅色模式）之间快速切换最为有利。嵌入式控制面板或视觉对象最多可使用 5 个预加载的主题进行初始化。要使用预加载的主题，请使用最多 5 个 `themeArns` 的数组在 `DashboardContentOptions` 或 `VisualContentOptions` 中设置 `preloadThemes` 属性。以下示例将 `Midnight` 和 `Rainier` 入门主题预加载到控制面板。

```
import { createEmbeddingContext } from 'amazon-quicksight-embedding-sdk';

const embeddingContext = await createEmbeddingContext();

const {
    embedDashboard,
} = embeddingContext;

const frameOptions = {
    url: '<YOUR_EMBED_URL>',
    container: '#experience-container',
};
const contentOptions = {
    themeOptions: {
        "preloadThemes": ["arn:aws:quicksight::aws:theme/RAINIER", "arn:aws:quicksight::aws:theme/MIDNIGHT"]
    }
};

// Embedding a dashboard experience
const embeddedDashboardExperience = await embedDashboard(frameOptions, contentOptions);
```

# 使用 Amazon Quick Sight Embedging SDK 启用指向嵌入式控制面板视图的可共享链接
<a name="embedded-view-sharing"></a>

Amazon Quick Sight 开发人员可以使用 Amazon Quick Sight Embedding SDK（版本 2.8.0 及更高版本），允许嵌入式仪表板的读者接收和分发指向嵌入式仪表板视图的可共享链接。开发人员可以使用仪表板或控制台嵌入来生成指向其应用程序页面的可共享链接，其中包含使用Amazon Quick Sight嵌入软件开发工具包封装的Amazon Quick Sight参考文献。然后，Amazon Quick Sight Readers 可以将此可共享链接发送给同行。当他们的同行访问共享链接时，他们会被带到包含嵌入式 Amazon Quick Sight 控制面板的应用程序页面。开发人员还可以生成和保存控制面板视图的可共享链接，当使用匿名嵌入时，这些链接可用作 Amazon Quick Sight 匿名读者的书签。

**先决条件**

在开始之前，请确保您使用的是 Amazon Quick Sight Embedding SDK 版本 2.8.0 或更高版本

**Topics**
+ [为 Amazon Quick Sight 嵌入式分析启用`SharedView`功能配置](embedded-view-sharing-set-up.md)
+ [使用 Amazon Quick Sight `createSharedView` API 创建共享视图](embedded-view-sharing-sdk-create.md)
+ [使用共享的 Amazon Quick Sight 视图](embedded-view-sharing-sdk-consume.md)

# 为 Amazon Quick Sight 嵌入式分析启用`SharedView`功能配置
<a name="embedded-view-sharing-set-up"></a>

当您使用 Amazon Quick Sight API 创建嵌入式实例时，请将`FeatureConfigurations`有效负载中的值设置为`true`，如下例所示。`SharedView` `SharedView`覆盖访问嵌入式仪表板的注册用户的`StatePersistence`配置。如果控制面板用户已禁用 `StatePersistence` 并启用 `SharedView`，则其状态将保留。

```
const generateNewEmbedUrl = async () => {
    const generateUrlPayload = {
        experienceConfiguration: {
            QuickSightConsole: {
            FeatureConfigurations: {
                "SharedView": { 
                    "Enabled": true
                 },
            },
        },
    }
    const result: GenerateEmbedUrlResult = await generateEmbedUrlForRegisteredUser(generateUrlPayload);
    return result.url;
};
```

# 使用 Amazon Quick Sight `createSharedView` API 创建共享视图
<a name="embedded-view-sharing-sdk-create"></a>

将 Embedding SDK 更新至版本 2.8.0 或更高版本后，请使用 `createSharedView` API 创建新的共享视图。记录操作返回的 `sharedViewId` 和 `dashboardId`。下面的示例创建了一个新的共享视图。

```
const response = await embeddingFrame.createSharedView();
const sharedViewId = response.message.sharedViewId;
const dashboardId = response.message.dashboardId;
```

仅当用户查看控制面板时才能调用 `createSharedView`。对于特定于控制台的共享视图创建，请先确保用户位于控制面板页面上，然后再启用 `createSharedView` 操作。您可以使用 `PAGE_NAVIGATION` 事件执行此操作，如下例所示。

```
const contentOptions = {
    onMessage: async (messageEvent, metadata) => {
    switch (messageEvent.eventName) {
            case 'CONTENT_LOADED': {
                console.log("Do something when the embedded experience is fully loaded.");
                break;
            }
            case 'ERROR_OCCURRED': {
                console.log("Do something when the embedded experience fails loading.");
                break;
            }
            case 'PAGE_NAVIGATION': {
                setPageType(messageEvent.message.pageType); 
                if (messageEvent.message.pageType === 'DASHBOARD') {
                    setShareEnabled(true);
                    } else {
                    setShareEnabled(false);
                }
                break;
            }
        }
    }
};
```

# 使用共享的 Amazon Quick Sight 视图
<a name="embedded-view-sharing-sdk-consume"></a>

创建新的共享视图后，请使用 Embedding SDK 使其他用户可以使用共享视图。以下示例在 Amazon Quick Sight 中为嵌入式控制面板设置了可使用的共享视图。

------
#### [ With an appended URL ]

将 `sharedViewId` 附加到嵌入式 URL（位于 ` /views/{viewId}` 下），并将此 URL 公开给您的用户。用户可以使用此 URL 导航到该共享视图。

```
const response = await dashboardFrame.createSharedView();
const newEmbedUrl = await generateNewEmbedUrl();
const formattedUrl = new URL(newEmbedUrl);
formattedUrl.pathname = formattedUrl.pathname.concat('/views/' + response.message.sharedViewId);
const baseUrl = formattedUrl.href;
alert("Click to view this QuickSight shared view", baseUrl);
```

------
#### [ With the contentOptions SDK ]

将 `viewId` 传递给 `contentOptions` 以打开具有给定 `viewId` 的体验。

```
const contentOptions = {
    toolbarOptions: {
        ...
    },
    viewId: sharedViewId,
};

const embeddedDashboard = await embeddingContext.embedDashboard(
    {container: containerRef.current},
    contentOptions
);
```

------
#### [ With the InitialPath property ]

```
const shareView = async() => {
    const returnValue = await consoleFrame.createSharedView();
    const {dashboardId, sharedViewId} = returnValue.message;
    const newEmbedUrl = await generateNewEmbedUrl(`/dashboards/${dashboardId}/views/${sharedViewId}`);
    setShareUrl(newEmbedUrl);
};

const generateNewEmbedUrl = async (initialPath) => {
    const generateUrlPayload = {
        experienceConfiguration: {
            QuickSightConsole: {
            InitialPath: initialPath,
            FeatureConfigurations: {
                "SharedView": { 
                    "Enabled": true
                 },
            },
        },
    }
    const result: GenerateEmbedUrlResult = await generateEmbedUrlForRegisteredUser(generateUrlPayload);
    return result.url;
};
```

------

# 使用一键嵌入代码嵌入 Amazon Quick Sight 视觉效果和仪表板
<a name="1-click-embedding"></a>

您可以使用嵌入代码在应用程序中嵌入视觉对象或控制面板。当你共享控制面板或从 Amazon Quick Sight 的 “**嵌入” 视觉**菜单中时，你会得到这个代码。

您可以在内部应用程序中为注册用户嵌入视觉对象或控制面板，或者你可以在 Amazon Quick Sight 控制台中开启公共共享。此举可让互联网上的任何人访问嵌入在公共应用程序、wiki 或门户中的共享视觉对象或控制面板。

接下来，您可以了解有关如何使用一键式视觉对象或控制面板嵌入代码嵌入视觉对象和控制面板的说明。

**Topics**
+ [通过一键嵌入代码为注册用户嵌入 Amazon Quick Sight 视觉效果和控制面板](embedded-analytics-1-click.md)
+ [使用一键嵌入代码为匿名用户嵌入 Amazon Quick Sight 视觉效果和控制面板](embedded-analytics-1-click-public.md)

# 通过一键嵌入代码为注册用户嵌入 Amazon Quick Sight 视觉效果和控制面板
<a name="embedded-analytics-1-click"></a>


|  | 
| --- |
|  适用于：企业版  | 

您可以在内部应用程序中嵌入视觉或控制面板，供您的 Amazon Quick Sight 账户的注册用户使用。您可以使用共享控制面板时获得的嵌入代码或从 Amazon Quick Sight 的 “**嵌入” 视觉**菜单中获得的嵌入代码来执行此操作。您无需运行 Amazon Quick Sight 嵌入 API 即可生成嵌入代码。您可以从 Amazon Quick Sight 中复制嵌入代码并将其粘贴到内部应用程序的 HTML 代码中。

当有权访问您要嵌入的控制面板或包含您要嵌入的视觉效果的用户和群组（或您的 Amazon Quick Sight 账户中的所有用户）访问您的内部应用程序时，系统会提示他们使用自己的凭证登录 Amazon Quick Sight 账户。通过身份验证后，他们可以访问各自内部页面上的视觉对象或控制面板。如果启用了单点登录，系统不会提示用户再次登录。

接下来，您可以了解有关如何使用视觉对象或控制面板嵌入代码为注册用户嵌入视觉对象或控制面板的说明。

## 开始之前
<a name="embedded-analytics-1-click-prerequisites"></a>

在开始之前，您应确保满足以下条件：
+ 互联网浏览器设置包含以下某一项，以允许弹出窗口与 iframe 进行通信：
  + Mozilla Broadcast Channel API 的本机支持。有关更多信息，请参阅 Mozilla 文档中的 [Broadcast Channel API](https://developer.mozilla.org/en-US/docs/Web/API/Broadcast_Channel_API)。
  + IndexedDB 支持。
  + LocalStorage 支持。
+ 互联网浏览器的“阻止所有 Cookie”设置已关闭。

## 步骤 1：授予对控制面板的访问权限
<a name="embedded-analystics-1-click-share"></a>

要让用户访问您的嵌入式控制面板，请向其授予查看该控制面板的权限。您可以授予个人用户和用户组对控制面板的访问权限，也可以向账户中的所有人授予访问权限。视觉对象权限在控制面板级别确定。要授予对嵌入式视觉对象的访问权限，请授予对视觉对象所属控制面板的访问权限。有关更多信息，请参阅 [授予对控制面板的访问权限](share-a-dashboard.md)。

## 步骤 2：将要嵌入视觉对象或控制面板的域放入允许列表
<a name="embedded-analytics-1-click-allow-list"></a>

要在内部应用程序中嵌入视觉对象和控制面板，请确保您要嵌入的域名已列入您的 Amazon Quick Sight 账户的允许名单。有关更多信息，请参阅 [允许列出静态域](manage-domains.md#embedding-static)。

## 步骤 3：获取嵌入代码
<a name="embedded-analytics-1-click-code"></a>

要获取视觉对象或控制面板嵌入代码，请按照以下过程操作。

**获取控制面板嵌入代码**

1. 在 Amazon Quick Sight 中打开已发布的控制面板，然后选择右上角的 “**共享**”。再选择**共享控制面板**。

1. 在打开的**共享控制面板**页面中，选择左上角的**复制嵌入代码**。

   嵌入代码已复制到剪贴板，且类似于以下内容。此示例`quicksightdomain`中的是您用来访问您的 Amazon Quick Sight 账户的网址。

   ```
   <iframe
           width="960"
           height="720"
           src="https://quicksightdomain/sn/embed/share/accounts/accountid/dashboards/dashboardid?directory_alias=account_directory_alias">
       </iframe>
   ```

**获取视觉对象嵌入代码**

1. 在 Amazon Quick Sight 中打开已发布的控制面板，然后选择要嵌入的视觉效果。然后打开视觉对象右上角的视觉对象菜单，从中选择**嵌入视觉对象**。

1. 在打开的**嵌入视觉对象**窗格中，选择**复制代码**。

   嵌入代码已复制到剪贴板，且类似于以下内容。此示例`quicksightdomain`中的是您用来访问您的 Amazon Quick Sight 账户的网址。

   ```
   <iframe
           width="600"
           height="400"
           src="https://quicksightdomain/sn/embed/share/accounts/111122223333/dashboards/DASHBOARDID/sheets/SHEETID>/visuals/VISUALID">
       </iframe>
   ```

## 步骤 4：将代码粘贴到内部应用程序的 HTML 页面中
<a name="embedded-analytics-1-click-html"></a>

要将嵌入代码粘贴到内部应用程序的 HTML 页面中，请按照以下过程操作。

**将代码粘贴到内部应用程序的 HTML 页面中**
+ 打开要嵌入控制面板的任何页面的 HTML 代码，然后将嵌入代码粘贴到其中。

  以下示例演示了嵌入式控制面板的大致样式。此示例`quicksightdomain`中的是您用来访问您的 Amazon Quick Sight 账户的网址。

  ```
  <!DOCTYPE html>
      <html>
      <body>
  
      <h2>Example.com - Employee Portal</h2>
      <h3>Current shipment stats</h3>
          <iframe
          width="960"
          height="720"
          src="https://quicksightdomain/sn/embed/share/accounts/accountid/dashboards/dashboardid?directory_alias=account_directory_alias">
      </iframe>
  
      </body>
      </html>
  ```

  以下示例演示了嵌入式视觉对象的大致样式。此示例`quicksightdomain`中的是您用来访问您的 Amazon Quick Sight 账户的网址。

  ```
  <!DOCTYPE html>
      <html>
      <body>
  
      <h2>Example.com - Employee Portal</h2>
      <h3>Current shipment stats</h3>
          <iframe
          width="600"
          height="400"
          src="https://quicksightdomain/sn/embed/share/accounts/111122223333/dashboards/DASHBOARDID/sheets/SHEETID>/visuals/VISUALID?directory_alias=account_directory_alias">
      </iframe>
  
      </body>
      </html>
  ```

例如，假设您希望将视觉对象或控制面板嵌入 Google 协作平台内部页面。您可以在 Google 协作平台上打开该页面，然后将嵌入代码粘贴到嵌入小部件中。

如果要将视觉对象或仪表板嵌入到 Microsoft 内部 SharePoint 网站中，可以创建一个新页面，然后将嵌入代码粘贴到嵌入的 Web 部件中。

# 使用一键嵌入代码为匿名用户嵌入 Amazon Quick Sight 视觉效果和控制面板
<a name="embedded-analytics-1-click-public"></a>


|  | 
| --- |
|  适用于：企业版  | 

您可以使用在 Amazon Quick Sight 中共享视觉对象或控制面板时获得的嵌入代码将视觉对象或控制面板嵌入到公共网站中。您还可以使用 Amazon Quick Sight 控制台开启公开共享，并自动向互联网上的任何人授予访问共享视觉对象或控制面板的权限。

接下来，您可以了解如何为视觉对象或控制面板开启公开共享，以及如何嵌入视觉对象或控制面板供互联网上的任何人查看。在这两种情况下，您都可以使用一键式嵌入代码来完成此操作。

## 开始之前
<a name="embedded-analytics-1-click-prerequisites"></a>

在开始之前，您应确保满足以下条件：
+ 互联网浏览器设置包含以下某一项，以允许弹出窗口与共享使用的 iframe 进行通信：
  + Mozilla Broadcast Channel API 的本机支持。有关更多信息，请参阅 Mozilla 文档中的 [Broadcast Channel API](https://developer.mozilla.org/en-US/docs/Web/API/Broadcast_Channel_API)。
  + IndexedDB 支持。
  + LocalStorage 支持。
+ 互联网浏览器的“阻止所有 Cookie”设置已关闭。

## 步骤 1：开启控制面板的公有访问权限
<a name="embedded-analytics-1-click-step-1"></a>

要让互联网上的任何人都能访问您的嵌入式视觉对象或控制面板，请先开启控制面板的公有访问权限。视觉对象权限在控制面板级别确定。要授予对嵌入式视觉对象的访问权限，请授予对视觉对象所属控制面板的访问权限。有关更多信息，请参阅 [允许互联网上的任何人访问 Amazon Quick Sight 控制面板](share-a-dashboard-grant-access-anyone.md)。

## 步骤 2：将要嵌入视觉对象或控制面板的域放入允许列表
<a name="embedded-analytics-1-click-step-2"></a>

要在公共应用程序、wiki 或门户中嵌入视觉对象和控制面板，请确保您要嵌入的域名位于您的 Amazon Quick Sight 账户的允许列表中。

## 步骤 3：获取嵌入代码
<a name="embedded-analytics-1-click-step-3"></a>

要获取视觉对象或控制面板嵌入代码，请按照以下过程操作。

**获取控制面板嵌入代码**

1. 在 Amazon Quick Sight 中打开已发布的控制面板，然后选择右上角的 “**共享**”。再选择**共享控制面板**。

1. 在打开的**共享控制面板**页面中，选择左上角的**复制嵌入代码**。

   嵌入代码已复制到剪贴板，且类似于以下内容。此示例`quicksightdomain`中的是您用来访问您的 Amazon Quick Sight 账户的网址。

   ```
   <iframe
           width="960"
           height="720"
           src="https://quicksightdomain/sn/
               embed/share/accounts/accountid/dashboards/dashboardid">
       </iframe>
   ```

**获取视觉对象嵌入代码**

1. 在 Amazon Quick Sight 中打开已发布的控制面板，然后选择要嵌入的视觉效果。然后打开视觉对象右上角的视觉对象菜单，从中选择**嵌入视觉对象**。

1. 在打开的**嵌入视觉对象**窗格中，选择**复制代码**。

   嵌入代码已复制到剪贴板，且类似于以下内容。此示例`quicksightdomain`中的是您用来访问您的 Amazon Quick Sight 账户的网址。

   ```
   <iframe
           width="600"
           height="400"
           src="https://quicksightdomain/sn/embed/share/accounts/111122223333/dashboards/DASHBOARDID/sheets/SHEETID>/visuals/VISUALID">
       </iframe>
   ```

## 步骤 4：将嵌入代码粘贴到 HTML 页面、wiki 页面或门户中
<a name="embedded-analytics-1-click-step-4"></a>

要将嵌入代码粘贴到 HTML 页面、wiki 页面或门户中，请按照以下过程操作。

**粘贴嵌入代码**
+ 打开要嵌入视觉对象或控制面板的位置的 HTML 代码，然后将嵌入代码粘贴到其中。

  以下示例演示了嵌入式控制面板的大致样式。此示例`quicksightdomain`中的是您用来访问您的 Amazon Quick Sight 账户的网址。

  ```
  <!DOCTYPE html>
      <html>
      <body>
  
      <h2>Example.com - Employee Portal</h2>
      <h3>Current shipment stats</h3>
          <iframe
          width="960"
          height="720"
          src="https://quicksightdomain/sn/
              embed/share/accounts/accountid/dashboards/dashboardid">
      </iframe>
  
      </body>
      </html>
  ```

  以下示例演示了嵌入式视觉对象的大致样式。此示例`quicksightdomain`中的是您用来访问您的 Amazon Quick Sight 账户的网址。

  ```
  <!DOCTYPE html>
      <html>
      <body>
  
      <h2>Example.com - Employee Portal</h2>
      <h3>Current shipment stats</h3>
          <iframe
          width="600"
          height="400"
          src="https://quicksightdomain/sn/embed/share/accounts/111122223333/dashboards/DASHBOARDID/sheets/SHEETID>/visuals/VISUALID">
      </iframe>
  
      </body>
      </html>
  ```

如果面向公众的应用程序是基于 Google 协作平台构建的，请在 Google 协作平台中打开该页面，然后使用嵌入小部件粘贴嵌入代码。

在 Google 协作平台中嵌入时，请确保 Amazon Quick Sight 中的以下域名在允许列表中：
+ `https://googleusercontent.com`（开启子域）
+ `https://www.gstatic.com`
+ `https://sites.google.com`

将视觉对象或控制面板嵌入应用程序后，能够访问您应用程序的任何人都可以访问嵌入式视觉对象或控制面板。要更新与公众共享的控制面板，请参阅 [更新公开共享的控制面板](share-a-dashboard-grant-access-anyone-update.md)。要关闭公开共享，请参阅 [关闭公开共享设置](share-a-dashboard-grant-access-anyone-no-share.md)。

当您关闭公开共享后，互联网上的任何人都无法访问您嵌入公共应用程序的或通过链接共享的控制面板。下次有人尝试通过互联网查看此类控制面板时，他们会收到一条消息，提示他们无权查看控制面板。

# 嵌入 Amazon Quick Sight APIs
<a name="embedded-analytics-api"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

使用 Amazon Quick Sight 嵌入分析的实际过程只涉及几个步骤 APIs。

开始之前，请确保下列事项已准备就绪：
+ 为将使用 AWS 软件开发工具包进行 API 调用的应用程序使用的来电者身份设置所需的 IAM 权限。例如，授予允许 `quicksight:GenerateEmbedUrlForAnonymousUser` 或 `quicksight:GenerateEmbedUrlForRegisteredUser` 操作的权限。
+ 要为注册用户嵌入，请事先与他们共享 Amazon Quick Sight 资产。对于新的身份验证用户，请知晓如何授予对资产的访问权限。一种方法是将所有资产添加到 Amazon Quick Sight 文件夹。如果您更喜欢使用 Amazon Quick Sight API，请使用`DescribeDashboardPermissions`和 `UpdateDashboardPermissions` API 操作。有关更多信息，请参阅 *Amazon Quick API 参考[UpdateDashboardPermissions](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateDashboardPermissions.html)*中的[DescribeDashboardPermissions](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeDashboardPermissions.html)或。如果您想与命名空间或用户组中的所有用户共享控制面板，则可以与 `namespace` 或 `group` 共享控制面板。
+ 如果您要嵌入控制面板，请确保拥有要嵌入的控制面板 ID。控制面板 ID 是控制面板 URL 中的代码。您也可以从控制面板 URL 中获得该信息。
+ Amazon Quick Sight 管理员必须明确启用您计划在其中嵌入 Amazon Quick Sight 分析的域名。您可以使用个人资料菜单中的 “**管理 Amazon Quick Sight**、**域名和嵌入**” 来执行此操作，也可以使用`GenerateEmbedUrlForAnonymousUser`或 `GenerateEmbedUrlForRegisteredUser` API 调用的`AllowedDomains`参数。

  此选项仅对 Amazon Quick Sight 管理员可见。您也可以将子域添加为域的一部分。有关更多信息，请参阅 [允许在运行时使用 Amazon Quick API 上架域名](manage-domains.md#embedding-run-time)。

  必须显式允许静态允许列表中的所有域（如开发、暂存和生产），并且这些域必须使用 HTTPS。最多可以向允许列表添加 100 个域。您可以在运行时使用 Amazon Quick Sight API 操作添加域名。

在完成所有先决条件后，嵌入 Amazon Quick Sight 涉及以下步骤，稍后将详细介绍这些步骤：

1. 对于身份验证，请使用您的应用程序服务器对用户进行身份验证。在服务器中进行身份验证后，使用所需的 AWS SDK 生成嵌入式控制面板 URL。

1. 在您的门户网站或应用程序中，使用生成的 URL 嵌入 Amazon Quick Sight。为了简化此过程，你可以使用 [NPMJS 上提供的 Amazon Quick Sight Embedding Sight Embeddin](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) g S [GitHub](https://github.com/awslabs/amazon-quicksight-embedding-sdk) 此自定义 JavaScript SDK 旨在帮助您高效地将 Amazon Quick Sight 集成到应用程序页面、设置默认值、连接控件、获取回调和处理错误。

您可以使用 AWS CloudTrail 审计日志来获取有关嵌入式仪表板数量、嵌入式体验的用户和访问率的信息。

**Topics**
+ [将 Amazon Quick Sight 仪表板嵌入亚马逊快速视图 API](embedding-dashboards.md)
+ [将 Amazon Quick Sight 视觉效果嵌入到亚马逊快速瞄准器中 APIs](embedding-visuals.md)
+ [为注册用户嵌入 Amazon Quick Sight 控制台的全部功能](embedded-analytics-full-console-for-authenticated-users.md)
+ [在 Amazon Quick Sight 生成问答体验中嵌入 Amazon Q](embedding-gen-bi.md)
+ [嵌入 Amazon Quick Sight Q 搜索栏（经典版）](embedding-quicksight-q.md)
+ [使用 GetDashboardEmbedURL 和 GetSessionEmbedURL API 操作嵌入分析](embedded-analytics-deprecated.md)

# 将 Amazon Quick Sight 仪表板嵌入亚马逊快速视图 API
<a name="embedding-dashboards"></a>

使用以下主题了解如何使用 Amazon Quick Sight API 嵌入控制面板。

**Topics**
+ [为注册用户嵌入 Amazon 快速浏览控制面板](embedded-analytics-dashboards-for-authenticated-users.md)
+ [为匿名（未注册）用户嵌入 Amazon Quick Sight 控制面板](embedded-analytics-dashboards-for-everyone.md)
+ [在嵌入式控制面板中启用执行摘要](embedded-analytics-genbi-executive-summaries-dashboard.md)

# 为注册用户嵌入 Amazon 快速浏览控制面板
<a name="embedded-analytics-dashboards-for-authenticated-users"></a>

**重要**  
Amazon Quick Sight 推出了用于嵌入分析的新 API 操作：`GenerateEmbedUrlForAnonymousUser`和`GenerateEmbedUrlForRegisteredUser`。  
您仍然可以使用`GetDashboardEmbedUrl`和 `GetSessionEmbedUrl` API 操作来嵌入仪表板和 Amazon Quick Sight 控制台，但它们不包含最新的嵌入功能。有关使用旧 API 操作进行嵌入的更多信息，请参阅[使用GetDashboardEmbedURL和 GetSessionEmbedURL API 操作嵌入分析](https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics-deprecated.html)。


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

在以下各节中，您可以找到有关如何为 Amazon Quick Sight 的注册用户设置嵌入式 Amazon Quick Sight 控制面板的详细信息。

**Topics**
+ [步骤 1：设置权限](#embedded-dashboards-for-authenticated-users-step-1)
+ [步骤 2：生成附带身份验证代码的 URL](#embedded-dashboards-for-authenticated-users-step-2)
+ [步骤 3：嵌入控制面板 URL](#embedded-dashboards-for-authenticated-users-step-3)

## 步骤 1：设置权限
<a name="embedded-dashboards-for-authenticated-users-step-1"></a>

在下节中，您可以了解如何设置后端应用程序或 Web 服务器的权限。该任务需要具有 IAM 的管理访问权限。

每个访问控制面板的用户都扮演一个角色，授予他们 Amazon Quick Sight 访问控制面板的权限和权限。要实现这一点，请在您的中创建一个 IAM 角色 AWS 账户。将一个 IAM 策略与该角色相关联，以便为担任该角色的任何用户提供权限。IAM 角色需要提供权限才能检索特定用户池 URLs 的嵌入内容。借助通配符 *\$1*，您可以授予为特定命名空间中的所有用户部分用户生成 URL 的权限。为此，请添加 `quicksight:GenerateEmbedUrlForRegisteredUser`。

您可以在 IAM 策略中创建一个条件，限制开发人员可以在 `GenerateEmbedUrlForRegisteredUser` API 操作的 `AllowedDomains` 参数中列出的域。`AllowedDomains` 参数是可选参数。作为开发者，它允许您选择覆盖在 “**管理 Amazon Quick Sight**” 菜单中配置的静态域。您最多可以列出三个可以访问生成的 URL 的域或子域。然后，此 URL 将嵌入您创建的网站。只有参数中列出的域才能访问嵌入式视觉对象。如果没有此条件，则可以在 `AllowedDomains` 参数中列出互联网上的任何域。

要限制开发人员可用于此参数的域，请在 IAM 策略中添加一个 `AllowedEmbeddingDomains` 条件。有关该`AllowedDomains`参数的更多信息，请参阅 *Amazon Quick Sight API 参考[GenerateEmbedUrlForRegisteredUser](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)*中的。

**IAM 条件运算符的安全最佳实践**  
配置不当的 IAM 条件运算符可能会允许未经授权地通过 URL 变体访问您的嵌入式 Quick 资源。在您的 IAM 策略中使用`quicksight:AllowedEmbeddingDomains`条件密钥时，请使用条件运算符，允许特定域名或拒绝所有未特别允许的域。有关 IAM 条件运算符的更多信息，请参阅 [IAM 用户指南中的 IAM JSON 策略元素：条件运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)。  
许多不同的网址变体可以指向同一个资源。例如，以下 URLs 所有内容都解析为相同的内容：  
`https://example.com`
`https://example.com/`
`https://Example.com`
如果您的策略使用的运算符不考虑这些 URL 变体，则攻击者可以通过提供等效的 URL 变体来绕过您的限制。  
您必须验证您的 IAM 策略是否使用了适当的条件运算符来防止绕过漏洞，并确保只有您的目标域才能访问您的嵌入式资源。

以下示例策略提供了这些权限。

此外，如果您要创建将成为 Amazon Quick Sight 读者的首次用户，请务必在策略中添加`quicksight:RegisterUser`权限。

以下示例策略为即将成为 Amazon Quick Sight 读者的首次用户提供了检索嵌入网址的权限。

最后，您应用程序的 IAM 身份必须具有关联的信任策略，才允许访问您刚创建的角色。这意味着，当用户访问您的应用程序时，您的应用程序可以代表用户担任该角色并在 Amazon Quick Sight 中配置用户。下面演示了一个示例信任策略。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowLambdaFunctionsToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Sid": "AllowEC2InstancesToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

有关 OpenId Connect 或 SAML 身份验证的信任策略的更多信息，请参阅 *IAM 用户指南* 的以下部分：
+ [创建用于 Web 联合身份验证或 OpenID Connect 联合身份验证的角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html)
+ [创建用于 SAML 2.0 联合身份验证的角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)

## 步骤 2：生成附带身份验证代码的 URL
<a name="embedded-dashboards-for-authenticated-users-step-2"></a>

在下节中，您可以了解如何对用户进行身份验证，并获取应用程序服务器上的可嵌入控制面板 URL。如果您计划为 IAM 或 Amazon Quick Sight 身份类型嵌入控制面板，请与用户共享控制面板。

用户访问您的应用程序时，该应用程序代表用户代入 IAM 角色。然后，它会将该用户添加到 Amazon Quick Sight 中（如果该用户尚不存在）。接下来，其会将标识符作为唯一角色会话 ID 进行传递。

执行这些步骤可确保在 Amazon Quick Sight 中对控制面板的每个查看者进行唯一配置。它还实施每个用户的设置，例如，行级别安全性和参数的动态默认值。

以下示例展示了代表用户执行 IAM 身份验证。此代码在您的应用程序服务器上运行。

### Java
<a name="embedded-dashboards-for-authenticated-users-java"></a>

```
import com.amazonaws.auth.AWSCredentials;
    import com.amazonaws.auth.BasicAWSCredentials;
    import com.amazonaws.auth.AWSCredentialsProvider;
    import com.amazonaws.regions.Regions;
    import com.amazonaws.services.quicksight.AmazonQuickSight;
    import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder;
    import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserRequest;
    import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserResult;
    import com.amazonaws.services.quicksight.model.RegisteredUserEmbeddingExperienceConfiguration;
    import com.amazonaws.services.quicksight.model.RegisteredUserDashboardEmbeddingConfiguration;

    /**
    * Class to call QuickSight AWS SDK to get url for dashboard embedding.
    */
    public class GetQuicksightEmbedUrlRegisteredUserDashboardEmbedding {

        private final AmazonQuickSight quickSightClient;

        public GetQuicksightEmbedUrlRegisteredUserDashboardEmbedding() {
            this.quickSightClient = AmazonQuickSightClientBuilder
                    .standard()
                    .withRegion(Regions.US_EAST_1.getName())
                    .withCredentials(new AWSCredentialsProvider() {
                        @Override
                        public AWSCredentials getCredentials() {
                            // provide actual IAM access key and secret key here
                            return new BasicAWSCredentials("access-key", "secret-key");
                        }

                        @Override
                        public void refresh() {}
                        }
                    )
                    .build();
        }

        public String getQuicksightEmbedUrl(
                final String accountId, // AWS Account ID
                final String dashboardId, // Dashboard ID to embed
                final List<String> allowedDomains, // Runtime allowed domain for embedding
                final String userArn // Registered user arn to use for embedding. Refer to Get Embed Url section in developer portal to find out how to get user arn for a QuickSight user.
        ) throws Exception {
            final RegisteredUserEmbeddingExperienceConfiguration experienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration()
                    .withDashboard(new RegisteredUserDashboardEmbeddingConfiguration().withInitialDashboardId(dashboardId));
            final GenerateEmbedUrlForRegisteredUserRequest generateEmbedUrlForRegisteredUserRequest = new GenerateEmbedUrlForRegisteredUserRequest();
            generateEmbedUrlForRegisteredUserRequest.setAwsAccountId(accountId);
            generateEmbedUrlForRegisteredUserRequest.setUserArn(userArn);
            generateEmbedUrlForRegisteredUserRequest.setAllowedDomains(allowedDomains);
            generateEmbedUrlForRegisteredUserRequest.setExperienceConfiguration(experienceConfiguration);

            final GenerateEmbedUrlForRegisteredUserResult generateEmbedUrlForRegisteredUserResult = quickSightClient.generateEmbedUrlForRegisteredUser(generateEmbedUrlForRegisteredUserRequest);

            return generateEmbedUrlForRegisteredUserResult.getEmbedUrl();
        }
    }
```

### JavaScript
<a name="embedded-dashboards-for-authenticated-users-js"></a>

```
global.fetch = require('node-fetch');
    const AWS = require('aws-sdk');

    function generateEmbedUrlForRegisteredUser(
        accountId,
        dashboardId,
        openIdToken, // Cognito-based token
        userArn, // registered user arn
        roleArn, // IAM user role to use for embedding
        sessionName, // Session name for the roleArn assume role
        allowedDomains, // Runtime allowed domain for embedding
        getEmbedUrlCallback, // GetEmbedUrl success callback method
        errorCallback // GetEmbedUrl error callback method
        ) {
        const stsClient = new AWS.STS();
        let stsParams = {
            RoleSessionName: sessionName,
            WebIdentityToken: openIdToken,
            RoleArn: roleArn
        }

        stsClient.assumeRoleWithWebIdentity(stsParams, function(err, data) {
            if (err) {
                console.log('Error assuming role');
                console.log(err, err.stack);
                errorCallback(err);
            } else {
                const getDashboardParams = {
                    "AwsAccountId": accountId,
                    "ExperienceConfiguration": {
                        "Dashboard": {
                            "InitialDashboardId": dashboardId
                        }
                    },
                    "UserArn": userArn,
                    "AllowedDomains": allowedDomains,
                    "SessionLifetimeInMinutes": 600
                };

                const quicksightClient = new AWS.QuickSight({
                    region: process.env.AWS_REGION,
                    credentials: {
                        accessKeyId: data.Credentials.AccessKeyId,
                        secretAccessKey: data.Credentials.SecretAccessKey,
                        sessionToken: data.Credentials.SessionToken,
                        expiration: data.Credentials.Expiration
                    }
                });

                quicksightClient.generateEmbedUrlForRegisteredUser(getDashboardParams, function(err, data) {
                    if (err) {
                        console.log(err, err.stack);
                        errorCallback(err);
                    } else {
                        const result = {
                            "statusCode": 200,
                            "headers": {
                                "Access-Control-Allow-Origin": "*", // Use your website domain to secure access to GetEmbedUrl API
                                "Access-Control-Allow-Headers": "Content-Type"
                            },
                            "body": JSON.stringify(data),
                            "isBase64Encoded": false
                        }
                        getEmbedUrlCallback(result);
                    }
                });
            }
        });
    }
```

### Python3
<a name="embedded-dashboards-for-authenticated-users-py"></a>

```
import json
import boto3
from botocore.exceptions import ClientError

sts = boto3.client('sts')

# Function to generate embedded URL  
# accountId: AWS account ID
# dashboardId: Dashboard ID to embed
# userArn: arn of registered user
# allowedDomains: Runtime allowed domain for embedding
# roleArn: IAM user role to use for embedding
# sessionName: session name for the roleArn assume role
def getEmbeddingURL(accountId, dashboardId, userArn, allowedDomains, roleArn, sessionName):
    try:
        assumedRole = sts.assume_role(
            RoleArn = roleArn,
            RoleSessionName = sessionName,
        )
    except ClientError as e:
        return "Error assuming role: " + str(e)
    else: 
        assumedRoleSession = boto3.Session(
            aws_access_key_id = assumedRole['Credentials']['AccessKeyId'],
            aws_secret_access_key = assumedRole['Credentials']['SecretAccessKey'],
            aws_session_token = assumedRole['Credentials']['SessionToken'],
        )
        try:
            quicksightClient = assumedRoleSession.client('quicksight', region_name='us-west-2')
            response = quicksightClient.generate_embed_url_for_registered_user(
                AwsAccountId=accountId,
                ExperienceConfiguration = {
                    "Dashboard": {
                        "InitialDashboardId": dashboardId
                    }
                },
                UserArn = userArn,
                AllowedDomains = allowedDomains,
                SessionLifetimeInMinutes = 600
            )
            
            return {
                'statusCode': 200,
                'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"},
                'body': json.dumps(response),
                'isBase64Encoded':  bool('false')
            }
        except ClientError as e:
            return "Error generating embedding url: " + str(e)
```

### Node.js
<a name="embedded-dashboards-for-authenticated-users-node"></a>

以下示例显示了可以在应用服务器上用来生成嵌入式仪表板的 URL 的 JavaScript (Node.js)。您可以在网站或应用程序中使用该 URL 以显示控制面板。

**Example**  

```
const AWS = require('aws-sdk');
    const https = require('https');

    var quicksightClient = new AWS.Service({
        apiConfig: require('./quicksight-2018-04-01.min.json'),
        region: 'us-east-1',
    });

    quicksightClient.generateEmbedUrlForRegisteredUser({
        'AwsAccountId': '111122223333',
        'ExperienceConfiguration': { 
            'Dashboard': {
                'InitialDashboardId': '1c1fe111-e2d2-3b30-44ef-a0e111111cde'
            }
        },
        'UserArn': 'REGISTERED_USER_ARN',
        'AllowedDomains': allowedDomains,
        'SessionLifetimeInMinutes': 100
    }, function(err, data) {
        console.log('Errors: ');
        console.log(err);
        console.log('Response: ');
        console.log(data);
    });
```

**Example**  

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
    //readability and added ellipsis to indicate that it's incomplete.
        { 
            Status: 200,
            EmbedUrl: 'https://quicksightdomain/embed/12345/dashboards/67890...'
            RequestId: '7bee030e-f191-45c4-97fe-d9faf0e03713' 
        }
```

### .NET/C\$1
<a name="embedded-dashboards-for-authenticated-users-cs"></a>

以下示例演示了可以在应用程序服务器上使用以生成嵌入式控制面板 URL 的 .NET/C\$1 代码。您可以在网站或应用程序中使用该 URL 以显示控制面板。

**Example**  

```
using System;
    using Amazon.QuickSight;
    using Amazon.QuickSight.Model;

    namespace GenerateDashboardEmbedUrlForRegisteredUser
    {
        class Program
        {
            static void Main(string[] args)
            {
                var quicksightClient = new AmazonQuickSightClient(
                    AccessKey,
                    SecretAccessKey,
                    SessionToken,
                    Amazon.RegionEndpoint.USEast1);
                try
                {
                    RegisteredUserDashboardEmbeddingConfiguration registeredUserDashboardEmbeddingConfiguration
                        = new RegisteredUserDashboardEmbeddingConfiguration
                        {
                            InitialDashboardId = "dashboardId"
                        };
                    RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration
                        = new RegisteredUserEmbeddingExperienceConfiguration
                        {
                            Dashboard = registeredUserDashboardEmbeddingConfiguration
                        };
                        
                    Console.WriteLine(
                        quicksightClient.GenerateEmbedUrlForRegisteredUserAsync(new GenerateEmbedUrlForRegisteredUserRequest
                        {
                            AwsAccountId = "111122223333",
                            ExperienceConfiguration = registeredUserEmbeddingExperienceConfiguration,
                            UserArn = "REGISTERED_USER_ARN",
                            AllowedDomains = allowedDomains,
                            SessionLifetimeInMinutes = 100
                        }).Result.EmbedUrl
                    );
                } catch (Exception ex) {
                    Console.WriteLine(ex.Message);
                }
            }
        }
    }
```

### AWS CLI
<a name="embedded-dashboards-for-authenticated-users-cli"></a>

要代入该角色，请选择以下 AWS Security Token Service (AWS STS) API 操作之一：
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— 当您使用 IAM 身份代入角色时，请使用此操作。
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— 当您使用 Web 身份提供商对用户进行身份验证时，请使用此操作。
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 当您使用 SAML 对用户进行身份验证时，请使用此操作。

以下示例显示了用于设置 IAM 角色的 CLI 命令。该角色需要为 `quicksight:GenerateEmbedUrlForRegisteredUser` 启用权限。如果您采用一种在用户首次打开仪表板时添加用户的 just-in-time方法，则该角色还需要为其启用权限`quicksight:RegisterUser`。

```
aws sts assume-role \
        --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \
        --role-session-name john.doe@example.com
```

`assume-role` 操作返回三个输出参数：访问密钥、私有密钥和会话令牌。

**注意**  
如果在调用 `AssumeRole` 操作时遇到 `ExpiredToken` 错误，可能是因为之前的 `SESSION TOKEN` 仍在环境变量中。通过设置以下变量可以解决这一问题：  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1访问密钥* 
*AWS\$1SESSION\$1代币* 

以下示例说明了如何在 CLI 中设置这三个参数。如果使用的是 Microsoft Windows 计算机，请使用 `set` 而非 `export`。

```
export AWS_ACCESS_KEY_ID     = "access_key_from_assume_role"
    export AWS_SECRET_ACCESS_KEY = "secret_key_from_assume_role"
    export AWS_SESSION_TOKEN     = "session_token_from_assume_role"
```

如果运行这些命令，则会将访问您的网站的用户的角色会话 ID 设置为 `embedding_quicksight_dashboard_role/john.doe@example.com`。角色会话 ID 由 `role-arn` 中的角色名称和 `role-session-name` 值组成。每个用户使用唯一的角色会话 ID 可以确保为每个用户设置相应的权限。此外，它还能避免任何用户访问限制。*限制*是一项安全功能，可防止同一个用户从多个位置访问 Amazon Quick Sight。

角色会话 ID 也将成为 Amazon Quick Sight 中的用户名。您可以使用此模式提前在 Amazon Quick Sight 中配置用户，或者在他们首次访问控制面板时对其进行配置。

以下示例显示了可用于预置用户的 CLI 命令。有关[RegisterUser[DescribeUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html)](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html)、和其他 Amazon Quick Sight API 操作的更多信息，请参阅[亚马逊 Quick Sight API 参考](https://docs.aws.amazon.com/quicksight/latest/APIReference/Welcome.html)。

```
aws quicksight register-user \
        --aws-account-id 111122223333 \
        --namespace default \
        --identity-type IAM \
        --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \
        --user-role READER \
        --user-name jhnd \
        --session-name "john.doe@example.com" \
        --email john.doe@example.com \
        --region us-east-1 \
        --custom-permissions-name TeamA1
```

如果用户通过 Microsoft AD 进行身份验证，则无需使用 `RegisterUser` 进行设置。相反，他们应该在首次访问 Amazon Quick Sight 时自动订阅。对于 Microsoft AD 用户，您可以使用 `DescribeUser` 获取用户 ARN。

用户首次访问 Amazon Quick Sight 时，您也可以将该用户添加到与之共享控制面板的群组中。以下示例显示了将用户添加到组的 CLI 命令。

```
aws quicksight create-group-membership \
    --aws-account-id=111122223333 \
    --namespace=default \
    --group-name=financeusers \
    --member-name="embedding_quicksight_dashboard_role/john.doe@example.com"
```

现在，您的应用程序的用户也是 Amazon Quick Sight 的用户，并且可以访问控制面板。

最后，要获取控制面板的签名 URL，请从应用程序服务器中调用 `generate-embed-url-for-registered-user`。这会返回可嵌入的控制面板 URL。以下示例说明如何使用服务器端调用为通过身份验证 AWS Managed Microsoft AD 或单点登录（IAM Identity Center）进行身份验证的用户生成嵌入式控制面板的 URL。

```
aws quicksight generate-embed-url-for-registered-user \
        --aws-account-id 111122223333 \
        --session-lifetime-in-minutes 600 \
        --user-arn arn:aws:quicksight:us-east-1:111122223333:user/default/embedding_quicksight_visual_role/embeddingsession \
        --allowed-domains '["domain1","domain2"]' \
        --experience-configuration Dashboard={InitialDashboardId=1a1ac2b2-3fc3-4b44-5e5d-c6db6778df89}
```

有关使用此操作的更多信息，请参阅 [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)。您可以在自己的代码中使用该 API 操作和其他操作。

## 步骤 3：嵌入控制面板 URL
<a name="embedded-dashboards-for-authenticated-users-step-3"></a>

在下一节中，您可以了解如何使用 [Amazon Quick Sight Embedging SDK](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript) 将第 3 步中的控制面板网址嵌入到您的网站或应用程序页面中。通过使用该开发工具包，您可以执行以下操作：
+ 将控制面板放在 HTML 页面上。
+ 将参数传递到控制面板。
+ 使用为应用程序自定义的消息处理错误状态。

调用 `GenerateEmbedUrlForRegisteredUser` API 操作生成可嵌入应用的 URL。该 URL 的有效时间为 5 分钟，生成的会话有效时间为 10 个小时。该 API 操作为 URL 提供 `auth_code` 以启用单点登录会话。

下面显示了 `generate-embed-url-for-registered-user` 的示例响应：

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
//readability and added ellipsis to indicate that it's incomplete.
    {
        "Status": "200",
        "EmbedUrl": "https://quicksightdomain/embed/12345/dashboards/67890..",
        "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
    }
```

使用 [Amazon Quick Sight Embedding SDK 或将此 URL 添加到 iframe 中，将此控制面板嵌](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)入到您的网页中。如果您设置了固定的高度和宽度数字（以像素为单位），Amazon Quick Sight 会使用这些数字，并且不会在窗口大小调整时更改视觉效果。如果您设置相对的百分比高度和宽度，Amazon Quick Sight 会提供响应式布局，该布局会随着窗口大小的变化而进行修改。通过使用 Amazon Quick Sight Embedding SDK，您还可以控制控制面板中的参数并接收有关页面加载完成和错误的回调。

要托管嵌入式控制面板的域必须位于*允许列表*（为您的 Quick 订阅批准的域的列表）中。这一要求可阻止未经批准的域托管嵌入式控制面板，从而保护您的数据。有关为嵌入式控制面板添加域名的更多信息，请参阅[允许使用 Amazon Quick Sight API 在运行时列出域名](https://docs.aws.amazon.com/quicksight/latest/user/embedding-run-time.html)。

以下示例演示了如何使用生成的 URL。此代码在您的应用程序服务器上生成。

### SDK 2.0
<a name="embedded-dashboards-for-authenticated-users-sdkv2"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Dashboard Embedding Example</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.0.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            const embedDashboard = async() => {
                const {
                    createEmbeddingContext,
                } = QuickSightEmbedding;

                const embeddingContext = await createEmbeddingContext({
                    onChange: (changeEvent, metadata) => {
                        console.log('Context received a change', changeEvent, metadata);
                    },
                });

                const frameOptions = {
                    url: '<YOUR_EMBED_URL>',
                    container: '#experience-container',
                    height: "700px",
                    width: "1000px",
                    onChange: (changeEvent, metadata) => {
                        switch (changeEvent.eventName) {
                            case 'FRAME_MOUNTED': {
                                console.log("Do something when the experience frame is mounted.");
                                break;
                            }
                            case 'FRAME_LOADED': {
                                console.log("Do something when the experience frame is loaded.");
                                break;
                            }
                        }
                    },
                };

                const contentOptions = {
                    parameters: [
                        {
                            Name: 'country',
                            Values: [
                                'United States'
                            ],
                        },
                        {
                            Name: 'states',
                            Values: [
                                'California',
                                'Washington'
                            ]
                        }
                    ],
                    locale: "en-US",
                    sheetOptions: {
                        initialSheetId: '<YOUR_SHEETID>',
                        singleSheet: false,                        
                        emitSizeChangedEventOnSheetChange: false,
                    },
                    toolbarOptions: {
                        export: false,
                        undoRedo: false,
                        reset: false
                    },
                    attributionOptions: {
                        overlayContent: false,
                    },
                    onMessage: async (messageEvent, experienceMetadata) => {
                        switch (messageEvent.eventName) {
                            case 'CONTENT_LOADED': {
                                console.log("All visuals are loaded. The title of the document:", messageEvent.message.title);
                                break;
                            }
                            case 'ERROR_OCCURRED': {
                                console.log("Error occurred while rendering the experience. Error code:", messageEvent.message.errorCode);
                                break;
                            }
                            case 'PARAMETERS_CHANGED': {
                                console.log("Parameters changed. Changed parameters:", messageEvent.message.changedParameters);
                                break;
                            }
                            case 'SELECTED_SHEET_CHANGED': {
                                console.log("Selected sheet changed. Selected sheet:", messageEvent.message.selectedSheet);
                                break;
                            }
                            case 'SIZE_CHANGED': {
                                console.log("Size changed. New dimensions:", messageEvent.message);
                                break;
                            }
                            case 'MODAL_OPENED': {
                                window.scrollTo({
                                    top: 0 // iframe top position
                                });
                                break;
                            }
                        }
                    },
                };
                const embeddedDashboardExperience = await embeddingContext.embedDashboard(frameOptions, contentOptions);

                const selectCountryElement = document.getElementById('country');
                selectCountryElement.addEventListener('change', (event) => {
                    embeddedDashboardExperience.setParameters([
                        {
                            Name: 'country',
                            Values: event.target.value
                        }
                    ]);
                });
            };
        </script>
    </head>

    <body onload="embedDashboard()">
        <span>
            <label for="country">Country</label>
            <select id="country" name="country">
                <option value="United States">United States</option>
                <option value="Mexico">Mexico</option>
                <option value="Canada">Canada</option>
            </select>
        </span>
        <div id="experience-container"></div>
    </body>

</html>
```

### SDK 1.0
<a name="embedded-dashboards-for-authenticated-users-sdkv1"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Basic Embed</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@1.0.15/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            var dashboard
            function onDashboardLoad(payload) {
                console.log("Do something when the dashboard is fully loaded.");
            }

            function onError(payload) {
                console.log("Do something when the dashboard fails loading");
            }

            function embedDashboard() {
                var containerDiv = document.getElementById("embeddingContainer");
                var options = {
                    // replace this dummy url with the one generated via embedding API
                    url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode",
                    container: containerDiv,
                    parameters: {
                        country: "United States"
                    },
                    scrolling: "no",
                    height: "700px",
                    width: "1000px",
                    locale: "en-US",
                    footerPaddingEnabled: true
                };
                dashboard = QuickSightEmbedding.embedDashboard(options);
                dashboard.on("error", onError);
                dashboard.on("load", onDashboardLoad);
            }

            function onCountryChange(obj) {
                dashboard.setParameters({country: obj.value});
            }
        </script>
    </head>

    <body onload="embedDashboard()">
        <span>
            <label for="country">Country</label>
            <select id="country" name="country" onchange="onCountryChange(this)">
                <option value="United States">United States</option>
                <option value="Mexico">Mexico</option>
                <option value="Canada">Canada</option>
            </select>
        </span>
        <div id="embeddingContainer"></div>
    </body>

</html>
```

要使此示例起作用，请务必使用 Amazon Quick Sight Embedding SDK 将嵌入式控制面板加载到您的网站上 JavaScript。要获取副本，请执行下列操作之一：
+ 从 GitHub中下载 [Amazon Quick Sight 嵌入软件开发工具包](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) 该存储库由一组 Amazon Quick Sight 开发人员维护。
+ 从下载最新的嵌入式 SDK 版本[https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)。
+ 如果您使用`npm` JavaScript 依赖关系，请通过运行以下命令下载并安装它。

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

# 为匿名（未注册）用户嵌入 Amazon Quick Sight 控制面板
<a name="embedded-analytics-dashboards-for-everyone"></a>

**重要**  
Amazon Quick Sight 推出了用于嵌入分析的新 API 操作：`GenerateEmbedUrlForAnonymousUser`和`GenerateEmbedUrlForRegisteredUser`。  
您仍然可以使用`GetDashboardEmbedUrl`和 `GetSessionEmbedUrl` API 操作来嵌入仪表板和 Amazon Quick Sight 控制台，但它们不包含最新的嵌入功能。有关使用旧 API 操作进行嵌入的更多信息，请参阅[使用GetDashboardEmbedURL和 GetSessionEmbedURL API 操作嵌入分析](https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics-deprecated.html)。


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

在以下各节中，您可以找到有关如何为匿名（未注册）用户设置嵌入式 Amazon Quick Sight 控制面板的详细信息。

**Topics**
+ [步骤 1：设置权限](#embedded-analytics-dashboards-with-anonymous-users-step-1)
+ [步骤 2：生成附带身份验证代码的 URL](#embedded-analytics-dashboards-with-anonymous-users-step-2)
+ [步骤 3：嵌入控制面板 URL](#embedded-analytics-dashboards-with-anonymous-users-step-3)

## 步骤 1：设置权限
<a name="embedded-analytics-dashboards-with-anonymous-users-step-1"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

在下节中，您可以了解如何设置后端应用程序或 Web 服务器的权限。该任务需要具有 IAM 的管理访问权限。

每个访问控制面板的用户都扮演一个角色，授予他们 Amazon Quick Sight 访问控制面板的权限和权限。要实现这一点，请在您的中创建一个 IAM 角色 AWS 账户。将一个 IAM 策略与该角色相关联，以便为担任该角色的任何用户提供权限。

您可以在 IAM 策略中创建一个条件，限制开发人员可以在 `GenerateEmbedUrlForAnonymousUser` API 操作的 `AllowedDomains` 参数中列出的域。`AllowedDomains` 参数是可选参数。作为开发者，它允许您选择覆盖在 “**管理 Amazon Quick Sight**” 菜单中配置的静态域。您最多可以列出三个可以访问生成的 URL 的域或子域。然后，此 URL 将嵌入您创建的网站。只有参数中列出的域才能访问嵌入式控制面板。如果没有此条件，则可以在 `AllowedDomains` 参数中列出互联网上的任何域。

要限制开发人员可用于此参数的域，请在 IAM 策略中添加一个 `AllowedEmbeddingDomains` 条件。有关该`AllowedDomains`参数的更多信息，请参阅 *Amazon Quick Sight API 参考[GenerateEmbedUrlForAnonymousUser](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html)*中的。

**IAM 条件运算符的安全最佳实践**  
配置不当的 IAM 条件运算符可能会允许未经授权地通过 URL 变体访问您的嵌入式 Quick 资源。在您的 IAM 策略中使用`quicksight:AllowedEmbeddingDomains`条件密钥时，请使用条件运算符，允许特定域名或拒绝所有未特别允许的域。有关 IAM 条件运算符的更多信息，请参阅 [IAM 用户指南中的 IAM JSON 策略元素：条件运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)。  
许多不同的网址变体可以指向同一个资源。例如，以下 URLs 所有内容都解析为相同的内容：  
`https://example.com`
`https://example.com/`
`https://Example.com`
如果您的策略使用不考虑这些 URL 变体的运算符，则攻击者可以通过提供等效的 URL 变体来绕过您的限制。  
您必须验证您的 IAM 策略是否使用了适当的条件运算符来防止绕过漏洞，并确保只有您的目标域才能访问您的嵌入式资源。

以下示例策略提供了可用于 `GenerateEmbedUrlForAnonymousUser` 的这些权限。要让这种方法发挥作用，您的 AWS 账户还需要会话包或会话容量定价。否则，当用户尝试访问控制面板时，会返回 `UnsupportedPricingPlanException` 错误。

您应用程序的 IAM 身份必须具有关联的信任策略，才允许访问您刚创建的角色。这意味着，在用户访问您的应用程序时，您的应用程序可以代表用户代入该角色打开控制面板。下面演示了一个示例信任策略。

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [
    {
        "Sid": "AllowLambdaFunctionsToAssumeThisRole",
        "Effect": "Allow",
        "Principal": {
            "Service": "lambda.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
    },
    {
        "Sid": "AllowEC2InstancesToAssumeThisRole",
        "Effect": "Allow",
        "Principal": {
            "Service": "ec2.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
    }
]
}
```

------

有关信任策略的更多信息，请参阅《IAM 用户指南》**中的 [IAM 临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)。

## 步骤 2：生成附带身份验证代码的 URL
<a name="embedded-analytics-dashboards-with-anonymous-users-step-2"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

在下节中，您可以了解如何代表匿名访问者进行身份验证，并获取应用程序服务器上的可嵌入控制面板 URL。

用户访问您的应用程序时，该应用程序代表用户代入 IAM 角色。然后，它会将该用户添加到 Amazon Quick Sight（如果该用户尚不存在）。接下来，其会将标识符作为唯一角色会话 ID 进行传递。

以下示例展示了代表用户执行 IAM 身份验证。将标识符作为唯一角色会话 ID 进行传递。此代码在您的应用程序服务器上运行。

### Java
<a name="embedded-analytics-dashboards-with-anonymous-users-java"></a>

```
import java.util.List;
    import com.amazonaws.auth.AWSCredentials;
    import com.amazonaws.auth.AWSCredentialsProvider;
    import com.amazonaws.auth.BasicAWSCredentials;
    import com.amazonaws.regions.Regions;
    import com.amazonaws.services.quicksight.AmazonQuickSight;
    import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder;
    import com.amazonaws.services.quicksight.model.RegisteredUserDashboardEmbeddingConfiguration;
    import com.amazonaws.services.quicksight.model.AnonymousUserEmbeddingExperienceConfiguration;
    import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserRequest;
    import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserResult;
    import com.amazonaws.services.quicksight.model.SessionTag;


    /**
    * Class to call QuickSight AWS SDK to generate embed url for anonymous user.
    */
    public class GenerateEmbedUrlForAnonymousUserExample {

        private final AmazonQuickSight quickSightClient;

        public GenerateEmbedUrlForAnonymousUserExample() {
            quickSightClient = AmazonQuickSightClientBuilder
                .standard()
                .withRegion(Regions.US_EAST_1.getName())
                .withCredentials(new AWSCredentialsProvider() {
                        @Override
                        public AWSCredentials getCredentials() {
                            // provide actual IAM access key and secret key here
                            return new BasicAWSCredentials("access-key", "secret-key");
                        }

                        @Override
                        public void refresh() {
                        }
                    }
                )
                .build();
        }

        public String GenerateEmbedUrlForAnonymousUser(
            final String accountId, // YOUR AWS ACCOUNT ID
            final String initialDashboardId, // DASHBOARD ID TO WHICH THE CONSTRUCTED URL POINTS.
            final String namespace, // ANONYMOUS EMBEDDING REQUIRES SPECIFYING A VALID NAMESPACE FOR WHICH YOU WANT THE EMBEDDING URL
            final List<String> authorizedResourceArns, // DASHBOARD ARN LIST TO EMBED
            final List<String> allowedDomains, // RUNTIME ALLOWED DOMAINS FOR EMBEDDING
            final List<SessionTag> sessionTags // SESSION TAGS USED FOR ROW-LEVEL SECURITY
        ) throws Exception {
            AnonymousUserEmbeddingExperienceConfiguration experienceConfiguration = new AnonymousUserEmbeddingExperienceConfiguration();
            AnonymousUserDashboardEmbeddingConfiguration dashboardConfiguration = new AnonymousUserDashboardEmbeddingConfiguration();
            dashboardConfiguration.setInitialDashboardId(initialDashboardId);
            experienceConfiguration.setDashboard(dashboardConfiguration);

            GenerateEmbedUrlForAnonymousUserRequest generateEmbedUrlForAnonymousUserRequest = new GenerateEmbedUrlForAnonymousUserRequest()
                .withAwsAccountId(accountId)
                .withNamespace(namespace)
                .withAuthorizedResourceArns(authorizedResourceArns)
                .withExperienceConfiguration(experienceConfiguration)
                .withSessionTags(sessionTags)
                .withSessionLifetimeInMinutes(600L); // OPTIONAL: VALUE CAN BE [15-600]. DEFAULT: 600
                .withAllowedDomains(allowedDomains);

            GenerateEmbedUrlForAnonymousUserResult dashboardEmbedUrl = quickSightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserRequest);

            return dashboardEmbedUrl.getEmbedUrl();
        }

    }
```

### JavaScript
<a name="embedded-analytics-dashboards-with-anonymous-users-js"></a>

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function generateEmbedUrlForAnonymousUser(
accountId, // YOUR AWS ACCOUNT ID
initialDashboardId, // DASHBOARD ID TO WHICH THE CONSTRUCTED URL POINTS
quicksightNamespace, // VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
authorizedResourceArns, // DASHBOARD ARN LIST TO EMBED
allowedDomains, // RUNTIME ALLOWED DOMAINS FOR EMBEDDING
sessionTags, // SESSION TAGS USED FOR ROW-LEVEL SECURITY
generateEmbedUrlForAnonymousUserCallback, // GENERATEEMBEDURLFORANONYMOUSUSER SUCCESS CALLBACK METHOD
errorCallback // GENERATEEMBEDURLFORANONYMOUSUSER ERROR CALLBACK METHOD
) {
const experienceConfiguration = {
    "DashboardVisual": {
        "InitialDashboardVisualId": {
            "DashboardId": "dashboard_id",
            "SheetId": "sheet_id",
            "VisualId": "visual_id"
        }
    }
};

const generateEmbedUrlForAnonymousUserParams = {
    "AwsAccountId": accountId,
    "Namespace": quicksightNamespace,
    "AuthorizedResourceArns": authorizedResourceArns,
    "AllowedDomains": allowedDomains,
    "ExperienceConfiguration": experienceConfiguration,
    "SessionTags": sessionTags,
    "SessionLifetimeInMinutes": 600
};

const quicksightClient = new AWS.QuickSight({
    region: process.env.AWS_REGION,
    credentials: {
        accessKeyId: AccessKeyId,
        secretAccessKey: SecretAccessKey,
        sessionToken: SessionToken,
        expiration: Expiration
    }
});

quicksightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserParams, function(err, data) {
    if (err) {
        console.log(err, err.stack);
        errorCallback(err);
    } else {
        const result = {
            "statusCode": 200,
            "headers": {
                "Access-Control-Allow-Origin": "*", // USE YOUR WEBSITE DOMAIN TO SECURE ACCESS TO THIS API
                "Access-Control-Allow-Headers": "Content-Type"
            },
            "body": JSON.stringify(data),
            "isBase64Encoded": false
        }
        generateEmbedUrlForAnonymousUserCallback(result);
    }
});
}
```

### Python3
<a name="embedded-analytics-dashboards-with-anonymous-users-py"></a>

```
import json
import boto3
from botocore.exceptions import ClientError
import time

# Create QuickSight and STS clients
quicksightClient = boto3.client('quicksight',region_name='us-west-2')
sts = boto3.client('sts')

# Function to generate embedded URL for anonymous user
# accountId: YOUR AWS ACCOUNT ID
# quicksightNamespace: VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
# authorizedResourceArns: DASHBOARD ARN LIST TO EMBED
# allowedDomains: RUNTIME ALLOWED DOMAINS FOR EMBEDDING
# dashboardId: DASHBOARD ID TO WHICH THE CONSTRUCTED URL POINTS
# sessionTags: SESSION TAGS USED FOR ROW-LEVEL SECURITY
def generateEmbedUrlForAnonymousUser(accountId, quicksightNamespace, authorizedResourceArns, allowedDomains, dashboardId, sessionTags):
try:
    response = quicksightClient.generate_embed_url_for_anonymous_user(
        AwsAccountId = accountId,
        Namespace = quicksightNamespace,
        AuthorizedResourceArns = authorizedResourceArns,
        AllowedDomains = allowedDomains,
            ExperienceConfiguration = {
                "Dashboard": {
                    "InitialDashboardId": dashboardId
                }
            },
        SessionTags = sessionTags,
        SessionLifetimeInMinutes = 600
    )
        
    return {
        'statusCode': 200,
        'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"},
        'body': json.dumps(response),
        'isBase64Encoded':  bool('false')
    }
except ClientError as e:
    print(e)
    return "Error generating embeddedURL: " + str(e)
```

### Node.js
<a name="embedded-analytics-dashboards-with-anonymous-users-node"></a>

以下示例显示了可以在应用服务器上用来生成嵌入式仪表板的 URL 的 JavaScript (Node.js)。您可以在网站或应用程序中使用该 URL 以显示控制面板。

**Example**  

```
const AWS = require('aws-sdk');
    const https = require('https');

    var quicksightClient = new AWS.Service({
        apiConfig: require('./quicksight-2018-04-01.min.json'),
        region: 'us-east-1',
    });

    quicksightClient.generateEmbedUrlForAnonymousUser({
        'AwsAccountId': '111122223333',
        'Namespace' : 'default',
        'AuthorizedResourceArns': authorizedResourceArns,
        'AllowedDomains': allowedDomains,
        'ExperienceConfiguration': experienceConfiguration,
        'SessionTags': sessionTags,
        'SessionLifetimeInMinutes': 600

    }, function(err, data) {
        console.log('Errors: ');
        console.log(err);
        console.log('Response: ');
        console.log(data);
    });
```

**Example**  

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
    //readability and added ellipsis to indicate that it's incomplete.
        { 
            Status: 200,
            EmbedUrl: 'https://quicksightdomain/embed/12345/dashboards/67890..',
            RequestId: '7bee030e-f191-45c4-97fe-d9faf0e03713' 
        }
```

### .NET/C\$1
<a name="embedded-analytics-dashboards-with-anonymous-users-cs"></a>

以下示例演示了可以在应用程序服务器上使用以生成嵌入式控制面板 URL 的 .NET/C\$1 代码。您可以在网站或应用程序中使用该 URL 以显示控制面板。

**Example**  

```
using System;
    using Amazon.QuickSight;
    using Amazon.QuickSight.Model;

    var quicksightClient = new AmazonQuickSightClient(
        AccessKey,
        SecretAccessKey,
        sessionToken,
        Amazon.RegionEndpoint.USEast1);
        
    try
    {
        Console.WriteLine(
            quicksightClient.GenerateEmbedUrlForAnonymousUserAsync(new GenerateEmbedUrlForAnonymousUserRequest
            {
                AwsAccountId = "111122223333",
                Namespace = default,
                AuthorizedResourceArns = authorizedResourceArns,
                AllowedDomains = allowedDomains,
                ExperienceConfiguration = experienceConfiguration,
                SessionTags = sessionTags,
                SessionLifetimeInMinutes = 600,
            }).Result.EmbedUrl
        );
    } catch (Exception ex) {
        Console.WriteLine(ex.Message);
    }
```

### AWS CLI
<a name="embedded-analytics-dashboards-with-anonymous-users-cli"></a>

要代入该角色，请选择以下 AWS Security Token Service (AWS STS) API 操作之一：
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— 当您使用 IAM 身份代入角色时，请使用此操作。
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— 当您使用 Web 身份提供商对用户进行身份验证时，请使用此操作。
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 当您使用安全断言标记语言 (SAML) 对用户进行身份验证时，请使用此操作。

以下示例显示了用于设置 IAM 角色的 CLI 命令。该角色需要为 `quicksight:GenerateEmbedUrlForAnonymousUser` 启用权限。

```
aws sts assume-role \
    --role-arn "arn:aws:iam::11112222333:role/QuickSightEmbeddingAnonymousPolicy" \
    --role-session-name anonymous caller
```

`assume-role` 操作返回三个输出参数：访问密钥、私有密钥和会话令牌。

**注意**  
如果在调用 `AssumeRole` 操作时遇到 `ExpiredToken` 错误，可能是因为之前的 `SESSION TOKEN` 仍在环境变量中。通过设置以下变量可以解决这一问题：  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1访问密钥* 
*AWS\$1SESSION\$1代币* 

以下示例说明了如何在 CLI 中设置这三个参数。如果使用的是 Microsoft Windows 计算机，请使用 `set` 而非 `export`。

```
export AWS_ACCESS_KEY_ID     = "access_key_from_assume_role"
    export AWS_SECRET_ACCESS_KEY = "secret_key_from_assume_role"
    export AWS_SESSION_TOKEN     = "session_token_from_assume_role"
```

如果运行这些命令，则会将访问您的网站的用户的角色会话 ID 设置为 `embedding_quicksight_dashboard_role/QuickSightEmbeddingAnonymousPolicy`。角色会话 ID 由 `role-arn` 中的角色名称和 `role-session-name` 值组成。每个用户使用唯一的角色会话 ID 可以确保为每个访问用户设置相应的权限。其还能让每个会话保持独立性和独特性。如果您使用一组 Web 服务器（例如用于负载平衡），并且会话重新连接到其他服务器，则会开始新的会话。

要获取控制面板的签名 URL，请从应用程序服务器中调用 `generate-embed-url-for-anynymous-user`。这会返回可嵌入的控制面板 URL。以下示例演示了如何使用服务器端调用为匿名访问您 Web 门户或应用程序的用户生成嵌入式控制面板的 URL。

```
aws quicksight generate-embed-url-for-anonymous-user \
--aws-account-id 111122223333 \
--namespace default-or-something-else \
--session-lifetime-in-minutes 15 \
--authorized-resource-arns '["dashboard-arn-1","dashboard-arn-2"]' \
--allowed-domains '["domain1","domain2"]' \
--session-tags '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]' \
--experience-configuration 'DashboardVisual={InitialDashboardVisualId={DashboardId=dashboard_id,SheetId=sheet_id,VisualId=visual_id}}'
```

有关使用此操作的更多信息，请参阅 [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html)。您可以在自己的代码中使用该 API 操作和其他操作。

## 步骤 3：嵌入控制面板 URL
<a name="embedded-analytics-dashboards-with-anonymous-users-step-3"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

在下一节中，您可以了解如何使用 [Amazon Quick Sight Embedging SDK](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript) 将第 2 步中的控制面板网址嵌入到您的网站或应用程序页面中。通过使用该开发工具包，您可以执行以下操作：
+ 将控制面板放在 HTML 页面上。
+ 将参数传递到控制面板。
+ 使用为应用程序自定义的消息处理错误状态。

调用 `GenerateEmbedUrlForAnynymousUser` API 操作生成可嵌入应用的 URL。该 URL 的有效期为 5 分钟，生成的会话的有效期为 10 个小时。该 API 操作为 URL 提供 `auth_code` 以启用单点登录会话。

下面显示了 `generate-embed-url-for-anynymous-user` 的示例响应：

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
//readability and added ellipsis to indicate that it's incomplete.
        {
            "Status": "200",
            "EmbedUrl": "https://quicksightdomain/embed/12345/dashboards/67890..",
            "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
        }
```

使用 [Amazon Quick Sight Embedding SDK 或将此 URL 添加到 iframe 中，将此控制面板嵌](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)入到您的网页中。如果您设置了固定的高度和宽度数字（以像素为单位），Amazon Quick Sight 会使用这些数字，并且不会随着窗口大小调整而改变视觉效果。如果您设置相对的百分比高度和宽度，Amazon Quick Sight 会提供响应式布局，该布局会随着窗口大小的变化而进行修改。通过使用 Amazon Quick Sight Embedding SDK，您还可以控制控制面板中的参数并接收有关页面加载完成和错误的回调。

要托管嵌入式控制面板的域必须位于*允许列表*（为您的 Quick 订阅批准的域的列表）中。这一要求可阻止未经批准的域托管嵌入式控制面板，从而保护您的数据。有关为嵌入式控制面板添加域名的更多信息，请参阅[允许使用 Amazon Quick Sight API 在运行时列出域名](https://docs.aws.amazon.com/quicksight/latest/user/embedding-run-time.html)。

以下示例演示了如何使用生成的 URL。此代码位于您的应用程序服务器上。

### SDK 2.0
<a name="embedded-analytics-dashboards-with-anonymous-users-sdkv2"></a>

```
<!DOCTYPE html>
<html>

<head>
    <title>Dashboard Embedding Example</title>
    <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.0.0/dist/quicksight-embedding-js-sdk.min.js"></script>
    <script type="text/javascript">
        const embedDashboard = async() => {
            const {
                createEmbeddingContext,
            } = QuickSightEmbedding;

            const embeddingContext = await createEmbeddingContext({
                onChange: (changeEvent, metadata) => {
                    console.log('Context received a change', changeEvent, metadata);
                },
            });

            const frameOptions = {
                url: '<YOUR_EMBED_URL>',
                container: '#experience-container',
                height: "700px",
                width: "1000px",
                onChange: (changeEvent, metadata) => {
                    switch (changeEvent.eventName) {
                        case 'FRAME_MOUNTED': {
                            console.log("Do something when the experience frame is mounted.");
                            break;
                        }
                        case 'FRAME_LOADED': {
                            console.log("Do something when the experience frame is loaded.");
                            break;
                        }
                    }
                },
            };

            const contentOptions = {
                parameters: [
                    {
                        Name: 'country',
                        Values: [
                            'United States'
                        ],
                    },
                    {
                        Name: 'states',
                        Values: [
                            'California',
                            'Washington'
                        ]
                    }
                ],
                locale: "en-US",
                sheetOptions: {
                    initialSheetId: '<YOUR_SHEETID>',
                    singleSheet: false,                        
                    emitSizeChangedEventOnSheetChange: false,
                },
                toolbarOptions: {
                    export: false,
                    undoRedo: false,
                    reset: false
                },
                attributionOptions: {
                    overlayContent: false,
                },
                onMessage: async (messageEvent, experienceMetadata) => {
                    switch (messageEvent.eventName) {
                        case 'CONTENT_LOADED': {
                            console.log("All visuals are loaded. The title of the document:", messageEvent.message.title);
                            break;
                        }
                        case 'ERROR_OCCURRED': {
                            console.log("Error occurred while rendering the experience. Error code:", messageEvent.message.errorCode);
                            break;
                        }
                        case 'PARAMETERS_CHANGED': {
                            console.log("Parameters changed. Changed parameters:", messageEvent.message.changedParameters);
                            break;
                        }
                        case 'SELECTED_SHEET_CHANGED': {
                            console.log("Selected sheet changed. Selected sheet:", messageEvent.message.selectedSheet);
                            break;
                        }
                        case 'SIZE_CHANGED': {
                            console.log("Size changed. New dimensions:", messageEvent.message);
                            break;
                        }
                        case 'MODAL_OPENED': {
                            window.scrollTo({
                                top: 0 // iframe top position
                            });
                            break;
                        }
                    }
                },
            };
            const embeddedDashboardExperience = await embeddingContext.embedDashboard(frameOptions, contentOptions);

            const selectCountryElement = document.getElementById('country');
            selectCountryElement.addEventListener('change', (event) => {
                embeddedDashboardExperience.setParameters([
                    {
                        Name: 'country',
                        Values: event.target.value
                    }
                ]);
            });
        };
    </script>
</head>

<body onload="embedDashboard()">
    <span>
        <label for="country">Country</label>
        <select id="country" name="country">
            <option value="United States">United States</option>
            <option value="Mexico">Mexico</option>
            <option value="Canada">Canada</option>
        </select>
    </span>
    <div id="experience-container"></div>
</body>

</html>
```

### SDK 1.0
<a name="embedded-analytics-dashboards-with-anonymous-users-sdkv1"></a>

```
<!DOCTYPE html>
<html>

<head>
    <title>Basic Embed</title>
    <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@1.0.15/dist/quicksight-embedding-js-sdk.min.js"></script>
    <script type="text/javascript">
        var dashboard
        function onDashboardLoad(payload) {
            console.log("Do something when the dashboard is fully loaded.");
        }

        function onError(payload) {
            console.log("Do something when the dashboard fails loading");
        }

        function embedDashboard() {
            var containerDiv = document.getElementById("embeddingContainer");
            var options = {
                // replace this dummy url with the one generated via embedding API
                url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode",
                container: containerDiv,
                parameters: {
                    country: "United States"
                },
                scrolling: "no",
                height: "700px",
                width: "1000px",
                locale: "en-US",
                footerPaddingEnabled: true
            };
            dashboard = QuickSightEmbedding.embedDashboard(options);
            dashboard.on("error", onError);
            dashboard.on("load", onDashboardLoad);
        }

        function onCountryChange(obj) {
            dashboard.setParameters({country: obj.value});
        }
    </script>
</head>

<body onload="embedDashboard()">
    <span>
        <label for="country">Country</label>
        <select id="country" name="country" onchange="onCountryChange(this)">
            <option value="United States">United States</option>
            <option value="Mexico">Mexico</option>
            <option value="Canada">Canada</option>
        </select>
    </span>
    <div id="embeddingContainer"></div>
</body>

</html>
```

要使此示例起作用，请务必使用 Amazon Quick Sight Embedding SDK 将嵌入式控制面板加载到您的网站上 JavaScript。要获取副本，请执行下列操作之一：
+ 从 GitHub中下载 [Amazon Quick Sight 嵌入软件开发工具包](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) 该存储库由一组 Amazon Quick Sight 开发人员维护。
+ 从中下载最新的 Amazon Quick Sight Embedgin [https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)g S
+ 如果您使用`npm` JavaScript 依赖关系，请通过运行以下命令下载并安装它。

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

# 在嵌入式控制面板中启用执行摘要
<a name="embedded-analytics-genbi-executive-summaries-dashboard"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

您可以在嵌入式控制面板中启用执行摘要。启用后，注册用户可以生成执行摘要，摘要提供 Amazon Quick Sight 为控制面板生成的所有见解的摘要。执行摘要使读者更容易找到有关控制面板的关键见解和信息。有关用户如何生成控制面板执行摘要的更多信息，请参阅生成 [Amazon Quick Sight 控制面板的执行摘要](https://docs.aws.amazon.com/quicksight/latest/user/use-executive-summaries.html)。

**注意**  
执行摘要仅在注册用户的嵌入式控制面板中可用，并且无法在匿名或未注册用户的嵌入式控制面板中启用。

**为注册用户启用嵌入式控制面板中的执行摘要**
+ 按照[嵌入 Amazon Quick Sight 控制面板中的步骤，注册用户可以](https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics-dashboards-for-authenticated-users.html)嵌入包含以下更改的控制面板：

  1. 在步骤 2 中生成 URL 时，`Enabled: true`请在[GenerateEmbedUrlForRegisteredUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)或的`ExecutiveSummary`参数中进行设置 [GenerateEmbedUrlForRegisteredUserWithIdentity](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUserWithIdentity.html)，如以下示例所示：

     ```
     ExperienceConfiguration: {
             Dashboard: {
                 InitialDashboardId: dashboard_id,
                 FeatureConfigurations: {
                     AmazonQInQuickSight: {
                         ExecutiveSummary: {
                             Enabled: true
                         }
                     }
                 }
             }
         }
     }
     ```

  1. 在步骤 3 中使用 Amazon Quick Sight Embedding SDK 嵌入控制面板 URL 时`contentOptions`，请在中进行设置`executiveSummary: true`，如以下示例所示：

     ```
     const contentOptions = {
         toolbarOptions: {
             executiveSummary: true
         }
     };
     ```

# 将 Amazon Quick Sight 视觉效果嵌入到亚马逊快速瞄准器中 APIs
<a name="embedding-visuals"></a>

您可以使用 Amazon Quick Sight API 将作为已发布控制面板一部分的单个视觉效果嵌入到您的应用程序中。

**Topics**
+ [为注册用户嵌入 Amazon Quick Sight 视觉效果](embedded-analytics-visuals-for-authenticated-users.md)
+ [为匿名（未注册）用户嵌入 Amazon Quick Sight 视觉效果](embedded-analytics-visuals-for-everyone.md)

# 为注册用户嵌入 Amazon Quick Sight 视觉效果
<a name="embedded-analytics-visuals-for-authenticated-users"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

在以下各节中，您可以找到有关如何为 Amazon Quick Sight 的注册用户设置嵌入式 Amazon Quick Sight 视觉效果的详细信息。

**Topics**
+ [步骤 1：设置权限](#embedded-visuals-for-authenticated-users-step-1)
+ [步骤 2：生成附带身份验证代码的 URL](#embedded-visuals-for-authenticated-users-step-2)
+ [步骤 3：嵌入视觉对象 URL](#embedded-visuals-for-authenticated-users-step-3)

## 步骤 1：设置权限
<a name="embedded-visuals-for-authenticated-users-step-1"></a>

在下节中，您可以了解如何设置后端应用程序或 Web 服务器的权限。该任务需要具有 IAM 的管理访问权限。

每个访问视觉对象的用户都扮演一个角色，该角色授予他们 Amazon Quick Sight 访问该视觉对象的权限和权限。要实现这一点，请在您的中创建一个 IAM 角色 AWS 账户。将一个 IAM 策略与该角色相关联，以便为担任该角色的任何用户提供权限。IAM 角色需要提供权限才能检索特定用户池 URLs 的嵌入内容。借助通配符 *\$1*，您可以授予为特定命名空间中的所有用户部分用户生成 URL 的权限。为此，请添加 `quicksight:GenerateEmbedUrlForRegisteredUser`。

您可以在 IAM 策略中创建一个条件，限制开发人员可以在 `GenerateEmbedUrlForAnonymousUser` API 操作的 `AllowedDomains` 参数中列出的域。`AllowedDomains` 参数是可选参数。作为开发者，它允许您选择覆盖在 “**管理 Amazon Quick Sight**” 菜单中配置的静态域。您最多可以列出三个可以访问生成的 URL 的域或子域。然后，此 URL 将嵌入您创建的网站。只有参数中列出的域才能访问嵌入式控制面板。如果没有此条件，则可以在 `AllowedDomains` 参数中列出互联网上的任何域。

要限制开发人员可用于此参数的域，请在 IAM 策略中添加一个 `AllowedEmbeddingDomains` 条件。有关该`AllowedDomains`参数的更多信息，请参阅 *Amazon Quick Sight API 参考[GenerateEmbedUrlForRegisteredUser](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)*中的。

**IAM 条件运算符的安全最佳实践**  
配置不当的 IAM 条件运算符可能会允许未经授权地通过 URL 变体访问您的嵌入式 Quick 资源。在您的 IAM 策略中使用`quicksight:AllowedEmbeddingDomains`条件密钥时，请使用条件运算符，允许特定域名或拒绝所有未特别允许的域。有关 IAM 条件运算符的更多信息，请参阅 [IAM 用户指南中的 IAM JSON 策略元素：条件运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)。  
许多不同的网址变体可以指向同一个资源。例如，以下 URLs 所有内容都解析为相同的内容：  
`https://example.com`
`https://example.com/`
`https://Example.com`
如果您的策略使用的运算符不考虑这些 URL 变体，则攻击者可以通过提供等效的 URL 变体来绕过您的限制。  
您必须验证您的 IAM 策略是否使用了适当的条件运算符来防止绕过漏洞，并确保只有您的目标域才能访问您的嵌入式资源。

以下示例策略提供了这些权限。

此外，如果您要创建将成为 Amazon Quick Sight 读者的首次用户，请务必在策略中添加`quicksight:RegisterUser`权限。

以下示例策略为即将成为 Amazon Quick Sight 读者的首次用户提供了检索嵌入网址的权限。

最后，您应用程序的 IAM 身份必须具有关联的信任策略，才允许访问您刚创建的角色。这意味着，当用户访问您的应用程序时，您的应用程序可以代表用户担任该角色并在 Amazon Quick Sight 中配置用户。下面演示了一个示例信任策略。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowLambdaFunctionsToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Sid": "AllowEC2InstancesToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

有关 OpenId Connect 或 SAML 身份验证的信任策略的更多信息，请参阅 *IAM 用户指南* 的以下部分：
+ [创建用于 Web 联合身份验证或 OpenID Connect 联合身份验证的角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html)
+ [创建用于 SAML 2.0 联合身份验证的角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)

## 步骤 2：生成附带身份验证代码的 URL
<a name="embedded-visuals-for-authenticated-users-step-2"></a>

在下一节中，您可以了解如何对您的 Amazon Quick Sight 用户进行身份验证，并在应用程序服务器上获取可嵌入的可视化 URL。如果您计划为 IAM 或 Amazon Quick Sight 身份类型嵌入视觉效果，请与 Amazon Quick Sight 用户共享视觉效果。

当 Amazon Quick Sight 用户访问您的应用程序时，该应用程序将代表亚马逊 Quick Sight 用户担任 IAM 角色。然后，它会将该用户添加到 Amazon Quick Sight 中，前提是该 Amazon Quick Sight 用户还不存在。接下来，其会将标识符作为唯一角色会话 ID 进行传递。

执行上述步骤可确保视觉对象的每位查看者在 Amazon Quick Sight 中获得唯一配置。它还实施每个用户的设置，例如，行级别安全性和参数的动态默认值。

以下示例代表 Amazon Quick Sight 用户执行 IAM 身份验证。此代码在您的应用程序服务器上运行。

### Java
<a name="embedded-visuals-for-authenticated-users-java"></a>

```
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.quicksight.AmazonQuickSight;
import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder;
import com.amazonaws.services.quicksight.model.DashboardVisualId;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserRequest;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserResult;
import com.amazonaws.services.quicksight.model.RegisteredUserDashboardVisualEmbeddingConfiguration;
import com.amazonaws.services.quicksight.model.RegisteredUserEmbeddingExperienceConfiguration;

import java.util.List;

/**
 * Class to call QuickSight AWS SDK to get url for Visual embedding.
 */
public class GenerateEmbedUrlForRegisteredUserTest {

    private final AmazonQuickSight quickSightClient;

    public GenerateEmbedUrlForRegisteredUserTest() {
        this.quickSightClient = AmazonQuickSightClientBuilder
            .standard()
            .withRegion(Regions.US_EAST_1.getName())
            .withCredentials(new AWSCredentialsProvider() {
                    @Override
                    public AWSCredentials getCredentials() {
                        // provide actual IAM access key and secret key here
                        return new BasicAWSCredentials("access-key", "secret-key");
                    }

                    @Override
                    public void refresh() {                        
                    }
                }
            )
            .build();
    }

    public String getEmbedUrl(
            final String accountId, // AWS Account ID
            final String dashboardId, // Dashboard ID of the dashboard to embed
            final String sheetId, // Sheet ID of the sheet to embed
            final String visualId, // Visual ID of the visual to embed
            final List<String> allowedDomains, // Runtime allowed domains for embedding
            final String userArn // Registered user arn of the user that you want to provide embedded visual. Refer to Get Embed Url section in developer portal to find out how to get user arn for a QuickSight user.
    ) throws Exception {
        final DashboardVisualId dashboardVisual = new DashboardVisualId()
            .withDashboardId(dashboardId)
            .withSheetId(sheetId)
            .withVisualId(visualId);
        final RegisteredUserDashboardVisualEmbeddingConfiguration registeredUserDashboardVisualEmbeddingConfiguration
            = new RegisteredUserDashboardVisualEmbeddingConfiguration()
                .withInitialDashboardVisualId(dashboardVisual);
        final RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration
            = new RegisteredUserEmbeddingExperienceConfiguration()
                .withDashboardVisual(registeredUserDashboardVisualEmbeddingConfiguration);
        final GenerateEmbedUrlForRegisteredUserRequest generateEmbedUrlForRegisteredUserRequest
            = new GenerateEmbedUrlForRegisteredUserRequest()
                .withAwsAccountId(accountId)
                .withUserArn(userArn)
                .withExperienceConfiguration(registeredUserEmbeddingExperienceConfiguration)
                .withAllowedDomains(allowedDomains);

        final GenerateEmbedUrlForRegisteredUserResult generateEmbedUrlForRegisteredUserResult = quickSightClient.generateEmbedUrlForRegisteredUser(generateEmbedUrlForRegisteredUserRequest);

        return generateEmbedUrlForRegisteredUserResult.getEmbedUrl();
    }
}
```

### JavaScript
<a name="embedded-visuals-for-authenticated-users-js"></a>

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function generateEmbedUrlForRegisteredUser(
    accountId, // Your AWS account ID
    dashboardId, // Dashboard ID to which the constructed URL points
    sheetId, // Sheet ID to which the constructed URL points
    visualId, // Visual ID to which the constructed URL points
    openIdToken, // Cognito-based token
    userArn, // registered user arn
    roleArn, // IAM user role to use for embedding
    sessionName, // Session name for the roleArn assume role
    allowedDomains, // Runtime allowed domain for embedding
    getEmbedUrlCallback, // GetEmbedUrl success callback method
    errorCallback // GetEmbedUrl error callback method
    ) {
    const stsClient = new AWS.STS();
    let stsParams = {
        RoleSessionName: sessionName,
        WebIdentityToken: openIdToken,
        RoleArn: roleArn
    }

    stsClient.assumeRoleWithWebIdentity(stsParams, function(err, data) {
        if (err) {
            console.log('Error assuming role');
            console.log(err, err.stack);
            errorCallback(err);
        } else {
            const getDashboardParams = {
                "AwsAccountId": accountId,
                "ExperienceConfiguration": {
                    "DashboardVisual": {
                        "InitialDashboardVisualId": {
                            "DashboardId": dashboardId,
                            "SheetId": sheetId,
                            "VisualId": visualId
                        }
                    }
                },
                "UserArn": userArn,
                "AllowedDomains": allowedDomains,
                "SessionLifetimeInMinutes": 600
            };

            const quicksightGetDashboard = new AWS.QuickSight({
                region: process.env.AWS_REGION,
                credentials: {
                    accessKeyId: data.Credentials.AccessKeyId,
                    secretAccessKey: data.Credentials.SecretAccessKey,
                    sessionToken: data.Credentials.SessionToken,
                    expiration: data.Credentials.Expiration
                }
            });

            quicksightGetDashboard.generateEmbedUrlForRegisteredUser(getDashboardParams, function(err, data) {
                if (err) {
                    console.log(err, err.stack);
                    errorCallback(err);
                } else {
                    const result = {
                        "statusCode": 200,
                        "headers": {
                            "Access-Control-Allow-Origin": "*", // Use your website domain to secure access to GetEmbedUrl API
                            "Access-Control-Allow-Headers": "Content-Type"
                        },
                        "body": JSON.stringify(data),
                        "isBase64Encoded": false
                    }
                    getEmbedUrlCallback(result);
                }
            });
        }
    });
}
```

### Python3
<a name="embedded-visuals-for-authenticated-users-py"></a>

```
import json
import boto3
from botocore.exceptions import ClientError

sts = boto3.client('sts')

# Function to generate embedded URL  
# accountId: AWS account ID
# dashboardId: Dashboard ID to embed
# sheetId: SHEET ID to embed from the dashboard 
# visualId: Id for the Visual you want to embedded from the dashboard sheet. 
# userArn: arn of registered user
# allowedDomains: Runtime allowed domain for embedding
# roleArn: IAM user role to use for embedding
# sessionName: session name for the roleArn assume role
def getEmbeddingURL(accountId, dashboardId, sheetId, visualId, userArn, allowedDomains, roleArn, sessionName):
    try:
        assumedRole = sts.assume_role(
            RoleArn = roleArn,
            RoleSessionName = sessionName,
        )
    except ClientError as e:
        return "Error assuming role: " + str(e)
    else: 
        assumedRoleSession = boto3.Session(
            aws_access_key_id = assumedRole['Credentials']['AccessKeyId'],
            aws_secret_access_key = assumedRole['Credentials']['SecretAccessKey'],
            aws_session_token = assumedRole['Credentials']['SessionToken'],
        )
        try:
            quicksightClient = assumedRoleSession.client('quicksight', region_name='us-west-2')
            response = quicksightClient.generate_embed_url_for_registered_user(
                AwsAccountId=accountId,
                ExperienceConfiguration = {
                    'DashboardVisual': {
                        'InitialDashboardVisualId': {
                            'DashboardId': dashboardId,
                            'SheetId': sheetId,
                            'VisualId': visualId
                        }
                    },
                },
                UserArn = userArn,
                AllowedDomains = allowedDomains,
                SessionLifetimeInMinutes = 600
            )
            
            return {
                'statusCode': 200,
                'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"},
                'body': json.dumps(response),
                'isBase64Encoded':  bool('false')
            }
        except ClientError as e:
            return "Error generating embedding url: " + str(e)
```

### Node.js
<a name="embedded-visuals-for-authenticated-users-node"></a>

以下示例显示了可以在应用服务器上用来生成嵌入式仪表板的 URL 的 JavaScript (Node.js)。您可以在网站或应用程序中使用该 URL 以显示控制面板。

**Example**  

```
const AWS = require('aws-sdk');
const https = require('https');

var quicksightClient = new AWS.Service({
    apiConfig: require('./quicksight-2018-04-01.min.json'),
    region: 'us-east-1',
});

quicksightClient.generateEmbedUrlForRegisteredUser({
    'AwsAccountId': '111122223333',
    'ExperienceConfiguration': { 
        'DashboardVisual': {
            'InitialDashboardVisualId': {
                'DashboardId': 'dashboard_id',
                'SheetId': 'sheet_id',
                'VisualId': 'visual_id'
            }
        }
    },
    'UserArn': 'REGISTERED_USER_ARN',
    'AllowedDomains': allowedDomains,
    'SessionLifetimeInMinutes': 100
}, function(err, data) {
    console.log('Errors: ');
    console.log(err);
    console.log('Response: ');
    console.log(data);
});
```

**Example**  

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
//readability and added ellipsis to indicate that it's incomplete.
    {
        "Status": "200",
        "EmbedUrl": "https://quicksightdomain/embed/12345/dashboards/67890/sheets/12345/visuals/67890...",
        "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
    }
```

### .NET/C\$1
<a name="embedded-visuals-for-authenticated-users-cs"></a>

以下示例演示了可以在应用程序服务器上使用以生成嵌入式控制面板 URL 的 .NET/C\$1 代码。您可以在网站或应用程序中使用该 URL 以显示控制面板。

**Example**  

```
using System;
using Amazon.QuickSight;
using Amazon.QuickSight.Model;

namespace GenerateDashboardEmbedUrlForRegisteredUser
{
    class Program
    {
        static void Main(string[] args)
        {
            var quicksightClient = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                SessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                DashboardVisualId dashboardVisual = new DashboardVisualId
                {
                    DashboardId = "dashboard_id",
                    SheetId = "sheet_id",
                    VisualId = "visual_id"
                };

                RegisteredUserDashboardVisualEmbeddingConfiguration registeredUserDashboardVisualEmbeddingConfiguration
                    = new RegisteredUserDashboardVisualEmbeddingConfiguration
                    {
                        InitialDashboardVisualId = dashboardVisual                        
                    };               
                    
                RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration
                    = new RegisteredUserEmbeddingExperienceConfiguration
                    {
                        DashboardVisual = registeredUserDashboardVisualEmbeddingConfiguration
                    };
                    
                Console.WriteLine(
                    quicksightClient.GenerateEmbedUrlForRegisteredUserAsync(new GenerateEmbedUrlForRegisteredUserRequest
                    {
                        AwsAccountId = "111122223333",
                        ExperienceConfiguration = registeredUserEmbeddingExperienceConfiguration,
                        UserArn = "REGISTERED_USER_ARN",
                        AllowedDomains = allowedDomains,
                        SessionLifetimeInMinutes = 100
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
```

### AWS CLI
<a name="embedded-visuals-for-authenticated-users-cli"></a>

要代入该角色，请选择以下 AWS Security Token Service (AWS STS) API 操作之一：
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— 当您使用 IAM 身份代入角色时，请使用此操作。
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— 当您使用 Web 身份提供商对用户进行身份验证时，请使用此操作。
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 当您使用 SAML 对用户进行身份验证时，请使用此操作。

以下示例显示了用于设置 IAM 角色的 CLI 命令。该角色需要为 `quicksight:GenerateEmbedUrlForRegisteredUser` 启用权限。如果您采用一种在用户首次打开仪表板时添加用户的 just-in-time方法，则该角色还需要为其启用权限`quicksight:RegisterUser`。

```
aws sts assume-role \
    --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_visual_role" \
    --role-session-name john.doe@example.com
```

`assume-role` 操作返回三个输出参数：访问密钥、私有密钥和会话令牌。

**注意**  
如果在调用 `AssumeRole` 操作时遇到 `ExpiredToken` 错误，可能是因为之前的 `SESSION TOKEN` 仍在环境变量中。通过设置以下变量可以解决这一问题：  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1访问密钥* 
*AWS\$1SESSION\$1代币* 

以下示例说明了如何在 CLI 中设置这三个参数。如果使用的是 Microsoft Windows 计算机，请使用 `set` 而非 `export`。

```
export AWS_ACCESS_KEY_ID     = "access_key_from_assume_role"
    export AWS_SECRET_ACCESS_KEY = "secret_key_from_assume_role"
    export AWS_SESSION_TOKEN     = "session_token_from_assume_role"
```

如果运行这些命令，则会将访问您的网站的用户的角色会话 ID 设置为 `embedding_quicksight_visual_role/john.doe@example.com`。角色会话 ID 由 `role-arn` 中的角色名称和 `role-session-name` 值组成。每个用户使用唯一的角色会话 ID 可以确保为每个用户设置相应的权限。此外，它还能避免任何用户访问限制。*限制*是一项安全功能，可防止同一个用户从多个位置访问 Amazon Quick Sight。

角色会话 ID 也将成为 Amazon Quick Sight 中的用户名。您可以使用此模式提前在 Amazon Quick Sight 中配置用户，或者在他们首次访问控制面板时对其进行配置。

以下示例显示了可用于预置用户的 CLI 命令。有关[RegisterUser[DescribeUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html)](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html)、和其他 Amazon Quick Sight API 操作的更多信息，请参阅[亚马逊 Quick Sight API 参考](https://docs.aws.amazon.com/quicksight/latest/APIReference/Welcome.html)。

```
aws quicksight register-user \
    --aws-account-id 111122223333 \
    --namespace default \
    --identity-type IAM \
    --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_visual_role" \
    --user-role READER \
    --user-name jhnd \
    --session-name "john.doe@example.com" \
    --email john.doe@example.com \
    --region us-east-1 \
    --custom-permissions-name TeamA1
```

如果用户通过 Microsoft AD 进行身份验证，则无需使用 `RegisterUser` 进行设置。相反，他们应该在首次访问 Amazon Quick Sight 时自动订阅。对于 Microsoft AD 用户，您可以使用 `DescribeUser` 获取用户 ARN。

用户首次访问 Amazon Quick Sight 时，您也可以将该用户添加到与之共享视觉对象的群组中。以下示例显示了将用户添加到组的 CLI 命令。

```
aws quicksight create-group-membership \
    --aws-account-id=111122223333 \
    --namespace=default \
    --group-name=financeusers \
    --member-name="embedding_quicksight_visual_role/john.doe@example.com"
```

现在，您的应用程序的用户也是 Amazon Quick Sight 的用户，并且可以访问视觉对象。

最后，要获取视觉对象的签名 URL，请从应用服务器中调用 `generate-embed-url-for-registered-user`。这会返回可嵌入视觉对象 URL。以下示例说明如何使用服务器端调用为通过身份验证 AWS Managed Microsoft AD 或单点登录（IAM Identity Center）进行身份验证的用户生成嵌入式视觉对象的 URL。

```
aws quicksight generate-embed-url-for-registered-user \
    --aws-account-id 111122223333 \
    --session-lifetime-in-minutes 600 \
    --user-arn arn:aws:quicksight:us-east-1:111122223333:user/default/embedding_quicksight_visual_role/embeddingsession \
    --allowed-domains '["domain1","domain2"]' \
    --experience-configuration 'DashboardVisual={InitialDashboardVisualId={DashboardId=dashboard_id,SheetId=sheet_id,VisualId=visual_id}}'
```

有关使用此操作的更多信息，请参阅 [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)。您可以在自己的代码中使用该 API 操作和其他操作。

## 步骤 3：嵌入视觉对象 URL
<a name="embedded-visuals-for-authenticated-users-step-3"></a>

在下一节中，您可以了解如何使用 [Amazon Quick Sight Embedging SDK](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript) 将第 3 步中的可视网址嵌入到您的网站或应用程序页面中。通过使用该开发工具包，您可以执行以下操作：
+ 将视觉对象置于 HTML 页面上。
+ 将参数传入视觉对象。
+ 使用为应用程序自定义的消息处理错误状态。

调用 `GenerateEmbedUrlForRegisteredUser` API 操作生成可嵌入应用的 URL。该 URL 的有效时间为 5 分钟，生成的会话有效时间为 10 个小时。该 API 操作为 URL 提供 `auth_code` 以启用单点登录会话。

下面显示了 `generate-embed-url-for-registered-user` 的示例响应：此示例`quicksightdomain`中的是您用来访问您的 Amazon Quick Sight 账户的网址。

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
//readability and added ellipsis to indicate that it's incomplete.
    {
        "Status": "200",
        "EmbedUrl": "https://quicksightdomain/embed/12345/dashboards/67890/sheets/12345/visuals/67890...",
        "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
    }
```

使用 [Amazon Quick Sight Embedding SDK 或将此 URL 添加到 iframe 中，将此视觉效果嵌](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)入到您的网页中。如果您设置了固定的高度和宽度数字（以像素为单位），Amazon Quick Sight 会使用这些数字，并且不会在窗口大小调整时更改视觉效果。如果您设置相对的百分比高度和宽度，Amazon Quick Sight 会提供响应式布局，该布局会随着窗口大小的变化而进行修改。通过使用 Amazon Quick Sight Embedding SDK，您还可以控制视觉对象中的参数并接收有关页面加载完成和错误的回调。

要托管嵌入式视觉对象和仪表板的域名必须位于*允许列表中*，即允许订 Quick 阅的域名列表。这一要求可阻止未经批准的域托管嵌入式视觉对象和控制面板，从而保护您的数据。有关为嵌入式视觉对象和控制面板添加域名的更多信息，请参阅[允许使用 Amazon Quick Sight API 在运行时列出域名](https://docs.aws.amazon.com/quicksight/latest/user/embedding-run-time.html)。

以下示例演示了如何使用生成的 URL。此代码在您的应用程序服务器上生成。

### SDK 2.0
<a name="embedded-visuals-for-authenticated-users-sdkv2"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Visual Embedding Example</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.0.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            const embedVisual = async() => {    
                const {
                    createEmbeddingContext,
                } = QuickSightEmbedding;

                const embeddingContext = await createEmbeddingContext({
                    onChange: (changeEvent, metadata) => {
                        console.log('Context received a change', changeEvent, metadata);
                    },
                });

                const frameOptions = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: '#experience-container',
                    height: "700px",
                    width: "1000px",
                    onChange: (changeEvent, metadata) => {
                        switch (changeEvent.eventName) {
                            case 'FRAME_MOUNTED': {
                                console.log("Do something when the experience frame is mounted.");
                                break;
                            }
                            case 'FRAME_LOADED': {
                                console.log("Do something when the experience frame is loaded.");
                                break;
                            }
                        }
                    },
                };

                const contentOptions = {
                    parameters: [
                        {
                            Name: 'country',
                            Values: ['United States'],
                        },
                        {
                            Name: 'states',
                            Values: [
                                'California',
                                'Washington'
                            ]
                        }
                    ],
                    locale: "en-US",
                    onMessage: async (messageEvent, experienceMetadata) => {
                        switch (messageEvent.eventName) {
                            case 'CONTENT_LOADED': {
                                console.log("All visuals are loaded. The title of the document:", messageEvent.message.title);
                                break;
                            }
                            case 'ERROR_OCCURRED': {
                                console.log("Error occurred while rendering the experience. Error code:", messageEvent.message.errorCode);
                                break;
                            }
                            case 'PARAMETERS_CHANGED': {
                                console.log("Parameters changed. Changed parameters:", messageEvent.message.changedParameters);
                                break;
                            }
                            case 'SIZE_CHANGED': {
                                console.log("Size changed. New dimensions:", messageEvent.message);
                                break;
                            }
                        }
                    },
                };
                const embeddedVisualExperience = await embeddingContext.embedVisual(frameOptions, contentOptions);

                const selectCountryElement = document.getElementById('country');
                selectCountryElement.addEventListener('change', (event) => {
                    embeddedVisualExperience.setParameters([
                        {
                            Name: 'country',
                            Values: event.target.value
                        }
                    ]);
                });
            };
        </script>
    </head>

    <body onload="embedVisual()">
        <span>
            <label for="country">Country</label>
            <select id="country" name="country">
                <option value="United States">United States</option>
                <option value="Mexico">Mexico</option>
                <option value="Canada">Canada</option>
            </select>
        </span>
        <div id="experience-container"></div>
    </body>

</html>
```

### SDK 1.0
<a name="embedded-visuals-for-authenticated-users-sdkv1"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Visual Embedding Example</title>
        <!-- You can download the latest QuickSight embedding SDK version from https://www.npmjs.com/package/amazon-quicksight-embedding-sdk -->
        <!-- Or you can do "npm install amazon-quicksight-embedding-sdk", if you use npm for javascript dependencies -->
        <script src="./quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            let embeddedVisualExperience;
            function onVisualLoad(payload) {
                console.log("Do something when the visual is fully loaded.");
            }

            function onError(payload) {
                console.log("Do something when the visual fails loading");
            }

            function embedVisual() {
                const containerDiv = document.getElementById("embeddingContainer");
                const options = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: containerDiv,
                    parameters: {
                        country: "United States"
                    },
                    height: "700px",
                    width: "1000px",
                    locale: "en-US"
                };
                embeddedVisualExperience = QuickSightEmbedding.embedVisual(options);
                embeddedVisualExperience.on("error", onError);
                embeddedVisualExperience.on("load", onVisualLoad);
            }

            function onCountryChange(obj) {
                embeddedVisualExperience.setParameters({country: obj.value});
            }
        </script>
    </head>

    <body onload="embedVisual()">
        <span>
            <label for="country">Country</label>
            <select id="country" name="country" onchange="onCountryChange(this)">
                <option value="United States">United States</option>
                <option value="Mexico">Mexico</option>
                <option value="Canada">Canada</option>
            </select>
        </span>
        <div id="embeddingContainer"></div>
    </body>

</html>
```

要使此示例起作用，请务必使用 Amazon Quick Sight Embedding SDK 将嵌入式视觉效果加载到您的网站上 JavaScript。要获取副本，请执行下列操作之一：
+ 从 GitHub中下载 [Amazon Quick Sight 嵌入软件开发工具包](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) 该存储库由一组 Amazon Quick Sight 开发人员维护。
+ 从下载最新的嵌入式 SDK 版本[https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)。
+ 如果您使用`npm` JavaScript 依赖关系，请通过运行以下命令下载并安装它。

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

# 为匿名（未注册）用户嵌入 Amazon Quick Sight 视觉效果
<a name="embedded-analytics-visuals-for-everyone"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

在以下各节中，您可以找到有关如何为匿名（未注册）用户设置嵌入式 Amazon Quick Sight 视觉效果的详细信息。

**Topics**
+ [步骤 1：设置权限](#embedded-analytics-visuals-with-anonymous-users-step-1)
+ [步骤 2：生成附带身份验证代码的 URL](#embedded-analytics-visuals-with-anonymous-users-step-2)
+ [步骤 3：嵌入视觉对象 URL](#embedded-analytics-visuals-with-anonymous-users-step-3)

## 步骤 1：设置权限
<a name="embedded-analytics-visuals-with-anonymous-users-step-1"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

在下节中，您可以了解如何设置后端应用程序或 Web 服务器的权限。该任务需要具有 IAM 的管理访问权限。

每个访问视觉对象的用户都扮演一个角色，该角色授予他们 Amazon Quick Sight 访问该视觉对象的权限和权限。要实现这一点，请在您的中创建一个 IAM 角色 AWS 账户。将一个 IAM 策略与该角色相关联，以便为担任该角色的任何用户提供权限。

您可以在 IAM 策略中创建一个条件，限制开发人员可以在 `GenerateEmbedUrlForAnonymousUser` API 操作的 `AllowedDomains` 参数中列出的域。`AllowedDomains` 参数是可选参数。作为开发者，它允许您选择覆盖在 “**管理 Amazon Quick Sight**” 菜单中配置的静态域。您最多可以列出三个可以访问生成的 URL 的域或子域。然后，此 URL 将嵌入您创建的网站。只有参数中列出的域才能访问嵌入式控制面板。如果没有此条件，则可以在 `AllowedDomains` 参数中列出互联网上的任何域。

要限制开发人员可用于此参数的域，请在 IAM 策略中添加一个 `AllowedEmbeddingDomains` 条件。有关该`AllowedDomains`参数的更多信息，请参阅 *Amazon Quick Sight API 参考[GenerateEmbedUrlForAnonymousUser](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html)*中的。

**IAM 条件运算符的安全最佳实践**  
配置不当的 IAM 条件运算符可能会允许未经授权地通过 URL 变体访问您的嵌入式 Quick 资源。在您的 IAM 策略中使用`quicksight:AllowedEmbeddingDomains`条件密钥时，请使用条件运算符，允许特定域名或拒绝所有未特别允许的域。有关 IAM 条件运算符的更多信息，请参阅 [IAM 用户指南中的 IAM JSON 策略元素：条件运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)。  
许多不同的网址变体可以指向同一个资源。例如，以下 URLs 所有内容都解析为相同的内容：  
`https://example.com`
`https://example.com/`
`https://Example.com`
如果您的策略使用的运算符不考虑这些 URL 变体，则攻击者可以通过提供等效的 URL 变体来绕过您的限制。  
您必须验证您的 IAM 策略是否使用了适当的条件运算符来防止绕过漏洞，并确保只有您的目标域才能访问您的嵌入式资源。

您应用程序的 IAM 身份必须具有关联的信任策略，才允许访问您刚创建的角色。这意味着，在用户访问您的应用程序时，您的应用程序可以代表用户代入该角色打开视觉对象。下面演示了一个示例信任策略。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowLambdaFunctionsToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Sid": "AllowEC2InstancesToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

有关信任策略的更多信息，请参阅《IAM 用户指南》**中的 [IAM 临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)。

## 步骤 2：生成附带身份验证代码的 URL
<a name="embedded-analytics-visuals-with-anonymous-users-step-2"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

在下节中，您可以了解如何代表匿名访问者进行身份验证，并获取应用程序服务器上的可嵌入视觉对象 URL。

用户访问您的应用程序时，该应用程序代表用户代入 IAM 角色。然后，它会将该用户添加到 Amazon Quick Sight（如果该用户尚不存在）。接下来，其会将标识符作为唯一角色会话 ID 进行传递。

以下示例展示了代表用户执行 IAM 身份验证。将标识符作为唯一角色会话 ID 进行传递。此代码在您的应用程序服务器上运行。

### Java
<a name="embedded-analytics-visuals-with-anonymous-users-java"></a>

```
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.quicksight.AmazonQuickSight;
import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder;
import com.amazonaws.services.quicksight.model.AnonymousUserDashboardVisualEmbeddingConfiguration;
import com.amazonaws.services.quicksight.model.AnonymousUserEmbeddingExperienceConfiguration;
import com.amazonaws.services.quicksight.model.DashboardVisualId;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserRequest;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserResult;
import com.amazonaws.services.quicksight.model.SessionTag;

import java.util.List;

/**
 * Class to call QuickSight AWS SDK to get url for Visual embedding.
 */
public class GenerateEmbedUrlForAnonymousUserTest {
    private final AmazonQuickSight quickSightClient;

    public GenerateEmbedUrlForAnonymousUserTest() {
        this.quickSightClient = AmazonQuickSightClientBuilder
            .standard()
            .withRegion(Regions.US_EAST_1.getName())
            .withCredentials(new AWSCredentialsProvider() {
                    @Override
                    public AWSCredentials getCredentials() {
                        // provide actual IAM access key and secret key here
                        return new BasicAWSCredentials("access-key", "secret-key");
                    }

                    @Override
                    public void refresh() {                           
                    }
                }
            )
            .build();
    }

    public String getEmbedUrl(
            final String accountId, // AWS Account ID
            final String namespace, // Anonymous embedding required specifying a valid namespace for which you want the enbedding URL
            final List<String> authorizedResourceArns, // Dashboard arn list of dashboard visuals to embed
            final String dashboardId, // Dashboard ID of the dashboard to embed
            final String sheetId, // Sheet ID of the sheet to embed
            final String visualId, // Visual ID of the visual to embed
            final List<String> allowedDomains, // Runtime allowed domains for embedding
            final List<SessionTag> sessionTags // Session tags used for row-level security
    ) throws Exception {
        final DashboardVisualId dashboardVisual = new DashboardVisualId()
            .withDashboardId(dashboardId)
            .withSheetId(sheetId)
            .withVisualId(visualId);
        final AnonymousUserDashboardVisualEmbeddingConfiguration anonymousUserDashboardVisualEmbeddingConfiguration
            = new AnonymousUserDashboardVisualEmbeddingConfiguration()
                .withInitialDashboardVisualId(dashboardVisual);
        final AnonymousUserEmbeddingExperienceConfiguration anonymousUserEmbeddingExperienceConfiguration
            = new AnonymousUserEmbeddingExperienceConfiguration()
                .withDashboardVisual(anonymousUserDashboardVisualEmbeddingConfiguration);
        final GenerateEmbedUrlForAnonymousUserRequest generateEmbedUrlForAnonymousUserRequest
            = new GenerateEmbedUrlForAnonymousUserRequest()
                .withAwsAccountId(accountId)
                .withNamespace(namespace)
                // authorizedResourceArns should contain ARN of dashboard used below in ExperienceConfiguration
                .withAuthorizedResourceArns(authorizedResourceArns)
                .withExperienceConfiguration(anonymousUserEmbeddingExperienceConfiguration)
                .withAllowedDomains(allowedDomains)
                .withSessionTags(sessionTags)
                .withSessionLifetimeInMinutes(600L);

        final GenerateEmbedUrlForAnonymousUserResult generateEmbedUrlForAnonymousUserResult
            = quickSightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserRequest);

        return generateEmbedUrlForAnonymousUserResult.getEmbedUrl();
    }
}
```

### JavaScript
<a name="embedded-analytics-visuals-with-anonymous-users-js"></a>

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function generateEmbedUrlForAnonymousUser(
    accountId, // Your AWS account ID
    dashboardId, // Dashboard ID to which the constructed url points
    sheetId, // Sheet ID to which the constructed url points
    visualId, // Visual ID to which the constructed url points
    quicksightNamespace, // valid namespace where you want to do embedding
    authorizedResourceArns, // dashboard arn list of dashboard visuals to embed
    allowedDomains, // runtime allowed domains for embedding
    sessionTags, // session tags used for row-level security
    generateEmbedUrlForAnonymousUserCallback, // success callback method
    errorCallback // error callback method
    ) {
    const experienceConfiguration = {
        "DashboardVisual": {
            "InitialDashboardVisualId": {
                "DashboardId": dashboardId,
                "SheetId": sheetId,
                "VisualId": visualId
            }
        }
    };
    
    const generateEmbedUrlForAnonymousUserParams = {
        "AwsAccountId": accountId,
        "Namespace": quicksightNamespace,
        // authorizedResourceArns should contain ARN of dashboard used below in ExperienceConfiguration
        "AuthorizedResourceArns": authorizedResourceArns,
        "AllowedDomains": allowedDomains,
        "ExperienceConfiguration": experienceConfiguration,
        "SessionTags": sessionTags,
        "SessionLifetimeInMinutes": 600
    };

    const quicksightClient = new AWS.QuickSight({
        region: process.env.AWS_REGION,
        credentials: {
            accessKeyId: AccessKeyId,
            secretAccessKey: SecretAccessKey,
            sessionToken: SessionToken,
            expiration: Expiration
        }
    });

    quicksightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserParams, function(err, data) {
        if (err) {
            console.log(err, err.stack);
            errorCallback(err);
        } else {
            const result = {
                "statusCode": 200,
                "headers": {
                    "Access-Control-Allow-Origin": "*", // USE YOUR WEBSITE DOMAIN TO SECURE ACCESS TO THIS API
                    "Access-Control-Allow-Headers": "Content-Type"
                },
                "body": JSON.stringify(data),
                "isBase64Encoded": false
            }
            generateEmbedUrlForAnonymousUserCallback(result);
        }
    });
}
```

### Python3
<a name="embedded-analytics-visuals-with-anonymous-users-py"></a>

```
import json
import boto3
from botocore.exceptions import ClientError
import time

# Create QuickSight and STS clients
quicksightClient = boto3.client('quicksight',region_name='us-west-2')
sts = boto3.client('sts')

# Function to generate embedded URL for anonymous user
# accountId: YOUR AWS ACCOUNT ID
# quicksightNamespace: VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
# authorizedResourceArns: DASHBOARD ARN LIST TO EMBED
# allowedDomains: RUNTIME ALLOWED DOMAINS FOR EMBEDDING
# experienceConfiguration: DASHBOARD ID, SHEET ID and VISUAL ID TO WHICH THE CONSTRUCTED URL POINTS
# Example experienceConfig -> 'DashboardVisual': {
#     'InitialDashboardVisualId': {
#         'DashboardId': 'dashboardId',
#         'SheetId': 'sheetId',
#         'VisualId': 'visualId'
#     }
# },
# sessionTags: SESSION TAGS USED FOR ROW-LEVEL SECURITY
def generateEmbedUrlForAnonymousUser(accountId, quicksightNamespace, authorizedResourceArns, allowedDomains, experienceConfiguration, sessionTags):
    try:
        response = quicksightClient.generate_embed_url_for_anonymous_user(
            AwsAccountId = accountId,
            Namespace = quicksightNamespace,
            AuthorizedResourceArns = authorizedResourceArns,
            AllowedDomains = allowedDomains,
            ExperienceConfiguration = experienceConfiguration,
            SessionTags = sessionTags,
            SessionLifetimeInMinutes = 600
        )
            
        return {
            'statusCode': 200,
            'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"},
            'body': json.dumps(response),
            'isBase64Encoded':  bool('false')
        }
    except ClientError as e:
        print(e)
        return "Error generating embeddedURL: " + str(e)
```

### Node.js
<a name="embedded-analytics-visuals-with-anonymous-users-node"></a>

以下示例显示了可以在应用服务器上用来生成嵌入式仪表板的 URL 的 JavaScript (Node.js)。您可以在网站或应用程序中使用该 URL 以显示控制面板。

**Example**  

```
const AWS = require('aws-sdk');
const https = require('https');

var quicksightClient = new AWS.Service({
    apiConfig: require('./quicksight-2018-04-01.min.json'),
    region: 'us-east-1',
});

quicksightClient.generateEmbedUrlForAnonymousUser({
    'AwsAccountId': '111122223333',
    'Namespace' : 'default',
    // authorizedResourceArns should contain ARN of dashboard used below in ExperienceConfiguration
    'AuthorizedResourceArns': authorizedResourceArns,
    'ExperienceConfiguration': { 
        'DashboardVisual': {
            'InitialDashboardVisualId': {
                'DashboardId': 'dashboard_id',
                'SheetId': 'sheet_id',
                'VisualId': 'visual_id'
            }
        }
    },
    'AllowedDomains': allowedDomains,    
    'SessionTags': sessionTags,
    'SessionLifetimeInMinutes': 600

}, function(err, data) {
    console.log('Errors: ');
    console.log(err);
    console.log('Response: ');
    console.log(data);
});
```

**Example**  

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
//readability and added ellipsis to indicate that it's incomplete.
    {
        "Status": "200",
        "EmbedUrl": "https://quicksightdomain/embed/12345/dashboards/67890/sheets/12345/visuals/67890...",
        "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
    }
```

### .NET/C\$1
<a name="embedded-analytics-visuals-with-anonymous-users-cs"></a>

以下示例演示了可以在应用程序服务器上使用以生成嵌入式控制面板 URL 的 .NET/C\$1 代码。您可以在网站或应用程序中使用该 URL 以显示控制面板。

**Example**  

```
using System;
using Amazon.QuickSight;
using Amazon.QuickSight.Model;

namespace GenerateDashboardEmbedUrlForAnonymousUser
{
    class Program
    {
        static void Main(string[] args)
        {
            var quicksightClient = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                SessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                DashboardVisualId dashboardVisual = new DashboardVisualId
                {
                    DashboardId = "dashboard_id",
                    SheetId = "sheet_id",
                    VisualId = "visual_id"
                };

                AnonymousUserDashboardVisualEmbeddingConfiguration anonymousUserDashboardVisualEmbeddingConfiguration
                    = new AnonymousUserDashboardVisualEmbeddingConfiguration
                    {
                        InitialDashboardVisualId = dashboardVisual                        
                    };               
                    
                AnonymousUserEmbeddingExperienceConfiguration anonymousUserEmbeddingExperienceConfiguration
                    = new AnonymousUserEmbeddingExperienceConfiguration
                    {
                        DashboardVisual = anonymousUserDashboardVisualEmbeddingConfiguration
                    }; 
                    
                Console.WriteLine(
                    quicksightClient.GenerateEmbedUrlForAnonymousUserAsync(new GenerateEmbedUrlForAnonymousUserRequest
                    {
                        AwsAccountId = "111222333444",
                        Namespace = default,
                        // authorizedResourceArns should contain ARN of dashboard used below in ExperienceConfiguration
                        AuthorizedResourceArns = { "dashboard_id" },
                        ExperienceConfiguration = anonymousUserEmbeddingExperienceConfiguration,
                        SessionTags = sessionTags,
                        SessionLifetimeInMinutes = 600,
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
```

### AWS CLI
<a name="embedded-analytics-visuals-with-anonymous-users-cli"></a>

要代入该角色，请选择以下 AWS Security Token Service (AWS STS) API 操作之一：
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— 当您使用 IAM 身份代入角色时，请使用此操作。
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— 当您使用 Web 身份提供商对用户进行身份验证时，请使用此操作。
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 当您使用安全断言标记语言 (SAML) 对用户进行身份验证时，请使用此操作。

以下示例显示了用于设置 IAM 角色的 CLI 命令。该角色需要为 `quicksight:GenerateEmbedUrlForAnonymousUser` 启用权限。

```
aws sts assume-role \
    --role-arn "arn:aws:iam::11112222333:role/QuickSightEmbeddingAnonymousPolicy" \
    --role-session-name anonymous caller
```

`assume-role` 操作返回三个输出参数：访问密钥、私有密钥和会话令牌。

**注意**  
如果在调用 `AssumeRole` 操作时遇到 `ExpiredToken` 错误，可能是因为之前的 `SESSION TOKEN` 仍在环境变量中。通过设置以下变量可以解决这一问题：  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1访问密钥* 
*AWS\$1SESSION\$1代币* 

以下示例说明了如何在 CLI 中设置这三个参数。如果使用的是 Microsoft Windows 计算机，请使用 `set` 而非 `export`。

```
export AWS_ACCESS_KEY_ID     = "access_key_from_assume_role"
        export AWS_SECRET_ACCESS_KEY = "secret_key_from_assume_role"
        export AWS_SESSION_TOKEN     = "session_token_from_assume_role"
```

如果运行这些命令，则会将访问您的网站的用户的角色会话 ID 设置为 `embedding_quicksight_visual_role/QuickSightEmbeddingAnonymousPolicy`。角色会话 ID 由 `role-arn` 中的角色名称和 `role-session-name` 值组成。每个用户使用唯一的角色会话 ID 可以确保为每个访问用户设置相应的权限。其还能让每个会话保持独立性和独特性。如果您使用一组 Web 服务器（例如用于负载平衡），并且会话重新连接到其他服务器，则会开始新的会话。

要获取视觉对象的签名 URL，请从应用程序服务器中调用 `generate-embed-url-for-anynymous-user`。这会返回可嵌入视觉对象 URL。以下示例演示了如何使用服务器端调用为匿名访问您 Web 门户或应用的用户生成嵌入式视觉对象的 URL。

```
aws quicksight generate-embed-url-for-anonymous-user \
    --aws-account-id 111122223333 \
    --namespace default-or-something-else \
    --session-lifetime-in-minutes 15 \
    --authorized-resource-arns '["dashboard-arn-1","dashboard-arn-2"]' \
    --allowed-domains '["domain1","domain2"]' \
    --session-tags '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]' \
    --experience-configuration 'DashboardVisual={InitialDashboardVisualId={DashboardId=dashboard_id,SheetId=sheet_id,VisualId=visual_id}}'
```

有关使用此操作的更多信息，请参阅 [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html)。您可以在自己的代码中使用该 API 操作和其他操作。

## 步骤 3：嵌入视觉对象 URL
<a name="embedded-analytics-visuals-with-anonymous-users-step-3"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

在下一节中，您可以了解如何使用 [Amazon Quick Sight Embedging SDK](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript) 将第 2 步中的可视网址嵌入到您的网站或应用程序页面中。通过使用该开发工具包，您可以执行以下操作：
+ 将视觉对象置于 HTML 页面上。
+ 将参数传入视觉对象。
+ 使用为应用程序自定义的消息处理错误状态。

调用 `GenerateEmbedUrlForAnonymousUser` API 操作生成可嵌入应用的 URL。该 URL 的有效期为 5 分钟，生成的会话的有效期为 10 个小时。该 API 操作为 URL 提供授权（auth）代码以启用单点登录会话。

下面显示了 `generate-embed-url-for-anonymous-user` 的示例响应：此示例`quicksightdomain`中的是您用来访问您的 Amazon Quick Sight 账户的网址。

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
//readability and added ellipsis to indicate that it's incomplete.
    {
        "Status": "200",
        "EmbedUrl": "https://quicksightdomain/embed/12345/dashboards/67890/sheets/12345/visuals/67890...",
        "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
    }
```

使用 Amazon Quick Sight Embedding [SDK 或将此 URL 添加到 iframe 中，将此视觉效果嵌](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)入到您的网页中。如果您设置了固定的高度和宽度数字（以像素为单位），Amazon Quick Sight 会使用这些数字，并且不会随着窗口大小调整而改变视觉效果。如果您设置相对的百分比高度和宽度，Amazon Quick Sight 会提供响应式布局，该布局会随着窗口大小的变化而进行修改。通过使用 Amazon Quick Sight Embedding SDK，您还可以控制视觉对象中的参数并接收有关视觉加载完成和错误的回调。

要托管嵌入式视觉对象的域必须位于*允许列表*（为您的 Quick 订阅批准的域的列表）中。这一要求可阻止未经批准的域托管嵌入式视觉对象和控制面板，从而保护您的数据。有关为嵌入式视觉对象和控制面板添加域名的更多信息，请参阅[允许使用 Amazon Quick Sight API 在运行时列出域名](https://docs.aws.amazon.com/quicksight/latest/user/embedding-run-time.html)。

以下示例演示了如何使用生成的 URL。此代码位于您的应用程序服务器上。

### SDK 2.0
<a name="embedded-analytics-visuals-with-anonymous-users-sdkv2"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Visual Embedding Example</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.0.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            const embedVisual = async() => {    
                const {
                    createEmbeddingContext,
                } = QuickSightEmbedding;

                const embeddingContext = await createEmbeddingContext({
                    onChange: (changeEvent, metadata) => {
                        console.log('Context received a change', changeEvent, metadata);
                    },
                });

                const frameOptions = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: '#experience-container',
                    height: "700px",
                    width: "1000px",
                    onChange: (changeEvent, metadata) => {
                        switch (changeEvent.eventName) {
                            case 'FRAME_MOUNTED': {
                                console.log("Do something when the experience frame is mounted.");
                                break;
                            }
                            case 'FRAME_LOADED': {
                                console.log("Do something when the experience frame is loaded.");
                                break;
                            }
                        }
                    },
                };

                const contentOptions = {
                    parameters: [
                        {
                            Name: 'country',
                            Values: ['United States'],
                        },
                        {
                            Name: 'states',
                            Values: [
                                'California',
                                'Washington'
                            ]
                        }
                    ],
                    locale: "en-US",
                    onMessage: async (messageEvent, experienceMetadata) => {
                        switch (messageEvent.eventName) {
                            case 'CONTENT_LOADED': {
                                console.log("All visuals are loaded. The title of the document:", messageEvent.message.title);
                                break;
                            }
                            case 'ERROR_OCCURRED': {
                                console.log("Error occurred while rendering the experience. Error code:", messageEvent.message.errorCode);
                                break;
                            }
                            case 'PARAMETERS_CHANGED': {
                                console.log("Parameters changed. Changed parameters:", messageEvent.message.changedParameters);
                                break;
                            }
                            case 'SIZE_CHANGED': {
                                console.log("Size changed. New dimensions:", messageEvent.message);
                                break;
                            }
                        }
                    },
                };
                const embeddedVisualExperience = await embeddingContext.embedVisual(frameOptions, contentOptions);

                const selectCountryElement = document.getElementById('country');
                selectCountryElement.addEventListener('change', (event) => {
                    embeddedVisualExperience.setParameters([
                        {
                            Name: 'country',
                            Values: event.target.value
                        }
                    ]);
                });
            };
        </script>
    </head>

    <body onload="embedVisual()">
        <span>
            <label for="country">Country</label>
            <select id="country" name="country">
                <option value="United States">United States</option>
                <option value="Mexico">Mexico</option>
                <option value="Canada">Canada</option>
            </select>
        </span>
        <div id="experience-container"></div>
    </body>

</html>
```

### SDK 1.0
<a name="embedded-analytics-visuals-with-anonymous-users-sdkv1"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Visual Embedding Example</title>
        <!-- You can download the latest QuickSight embedding SDK version from https://www.npmjs.com/package/amazon-quicksight-embedding-sdk -->
        <!-- Or you can do "npm install amazon-quicksight-embedding-sdk", if you use npm for javascript dependencies -->
        <script src="./quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            let embeddedVisualExperience;
            function onVisualLoad(payload) {
                console.log("Do something when the visual is fully loaded.");
            }

            function onError(payload) {
                console.log("Do something when the visual fails loading");
            }

            function embedVisual() {
                const containerDiv = document.getElementById("embeddingContainer");
                const options = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: containerDiv,
                    parameters: {
                        country: "United States"
                    },
                    height: "700px",
                    width: "1000px",
                    locale: "en-US"
                };
                embeddedVisualExperience = QuickSightEmbedding.embedVisual(options);
                embeddedVisualExperience.on("error", onError);
                embeddedVisualExperience.on("load", onVisualLoad);
            }

            function onCountryChange(obj) {
                embeddedVisualExperience.setParameters({country: obj.value});
            }
        </script>
    </head>

    <body onload="embedVisual()">
        <span>
            <label for="country">Country</label>
            <select id="country" name="country" onchange="onCountryChange(this)">
                <option value="United States">United States</option>
                <option value="Mexico">Mexico</option>
                <option value="Canada">Canada</option>
            </select>
        </span>
        <div id="embeddingContainer"></div>
    </body>

</html>
```

要使此示例起作用，请务必使用 Amazon Quick Sight Embedding SDK 将嵌入式视觉效果加载到您的网站上 JavaScript。要获取副本，请执行下列操作之一：
+ 从 GitHub中下载 [Amazon Quick Sight 嵌入软件开发工具包](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) 该存储库由一组 Amazon Quick Sight 开发人员维护。
+ 从下载最新的 QuickSight 嵌入式 SDK 版本[https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)。
+ 如果您使用`npm` JavaScript 依赖关系，请通过运行以下命令下载并安装它。

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

# 为注册用户嵌入 Amazon Quick Sight 控制台的全部功能
<a name="embedded-analytics-full-console-for-authenticated-users"></a>

**重要**  
Amazon Quick Sight 推出了用于嵌入分析的新 API 操作：`GenerateEmbedUrlForAnonymousUser`和`GenerateEmbedUrlForRegisteredUser`。  
您仍然可以使用`GetDashboardEmbedUrl`和 `GetSessionEmbedUrl` API 操作来嵌入仪表板和 Amazon Quick Sight 控制台，但它们不包含最新的嵌入功能。有关使用旧 API 操作进行嵌入的更多信息，请参阅[使用GetDashboardEmbedURL和 GetSessionEmbedURL API 操作嵌入分析](https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics-deprecated.html)。


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

使用企业版，除了提供只读控制面板外，您还可以在自定义品牌的创作门户中提供 Amazon Quick Sight 控制台体验。您可以使用这种方法允许用户创建数据来源、数据集和分析。在同一个界面中，用户可以创建、发布和查看控制面板。如果您想限制其中的一些权限，也可以这样做。

通过嵌入式控制台访问 Amazon Quick Sight 的用户需要属于作者或管理员安全群组。无论是嵌入式还是其中的一部分，读者都没有足够的访问权限来使用 Amazon Quick Sight 控制台进行创作。 AWS 管理控制台不过，作者和管理员仍然可以访问嵌入式控制面板。如果您想限制某些创作功能的权限，可以通过 [UpdateUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateUser.html)API 操作向用户添加自定义权限配置文件。使用 [RegisterUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html)API 操作添加附加了自定义权限配置文件的新用户。有关详细信息，请参阅以下章节：
+ 有关通过定义自定义控制台权限来创建自定义角色的信息，请参阅[自定义对 Amazon Quick Sight 控制台的访问](https://docs.aws.amazon.com/quicksight/latest/user/customizing-permissions-to-the-quicksight-console.html)权限。
+ [有关使用命名空间隔离多租户用户、群组和 Amazon Quick Sight 资产的信息，请参阅 Amazon Quick Sight 命名空间。](https://docs.aws.amazon.com/quicksight/latest/APIReference/controlling-access.html#namespaces.html)
+ 有关将自己的品牌添加到嵌入式 Amazon Quick Sight 控制台的信息，请参阅[在 Amazon Quick Sight 中使用QuickSight ](https://docs.aws.amazon.com/quicksight/latest/user/themes-in-quicksight.html)[主题和主题 API 操作](https://docs.aws.amazon.com/quicksight/latest/APIReference/qs-assets.html#themes)。

在以下各节中，您可以找到有关如何为注册用户设置嵌入式 Amazon Quick Sight 控制面板的详细信息。

**Topics**
+ [步骤 1：设置权限](#embedded-analytics-full-console-for-authenticated-users-step-1)
+ [步骤 2：生成附带身份验证代码的 URL](#embedded-analytics-full-console-for-authenticated-users-step-2)
+ [步骤 3：嵌入控制台会话 URL](#embedded-analytics-full-console-for-authenticated-users-step-3)
+ [在嵌入式控制台中为注册用户启用生成式 BI 功能](embedding-consoles-genbi.md)

## 步骤 1：设置权限
<a name="embedded-analytics-full-console-for-authenticated-users-step-1"></a>

在下节中，您可以了解如何设置后端应用程序或 Web 服务器的权限。该任务需要具有 IAM 的管理访问权限。

每个访问 Amazon Quick Sight 的用户都扮演一个角色，该角色授予他们 Amazon Quick Sight 访问权限和控制台会话权限。为此，请在您的 AWS 账户中创建一个 IAM 角色。将一个 IAM 策略与该角色相关联，以便为担任该角色的任何用户提供权限。添加`quicksight:RegisterUser`权限以确保读者能够以只读方式访问 Amazon Quick Sight，并且无法访问任何其他数据或创建功能。IAM 角色还需要提供检索控制台会话的权限 URLs。为此，请添加 `quicksight:GenerateEmbedUrlForRegisteredUser`。

您可以在 IAM 策略中创建一个条件，限制开发人员可以在 `GenerateEmbedUrlForAnonymousUser` API 操作的 `AllowedDomains` 参数中列出的域。`AllowedDomains` 参数是可选参数。作为开发者，它允许您选择覆盖在 “**管理 Amazon Quick Sight**” 菜单中配置的静态域。您最多可以列出三个可以访问生成的 URL 的域或子域。然后，此 URL 将嵌入您创建的网站。只有参数中列出的域才能访问嵌入式控制面板。如果没有此条件，则可以在 `AllowedDomains` 参数中列出互联网上的任何域。

**IAM 条件运算符的安全最佳实践**  
配置不当的 IAM 条件运算符可能会允许未经授权地通过 URL 变体访问您的嵌入式 Quick 资源。在您的 IAM 策略中使用`quicksight:AllowedEmbeddingDomains`条件密钥时，请使用条件运算符，允许特定域名或拒绝所有未特别允许的域。有关 IAM 条件运算符的更多信息，请参阅 [IAM 用户指南中的 IAM JSON 策略元素：条件运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)。  
许多不同的网址变体可以指向同一个资源。例如，以下 URLs 所有内容都解析为相同的内容：  
`https://example.com`
`https://example.com/`
`https://Example.com`
如果您的策略使用的运算符不考虑这些 URL 变体，则攻击者可以通过提供等效的 URL 变体来绕过您的限制。  
您必须验证您的 IAM 策略是否使用了适当的条件运算符来防止绕过漏洞，并确保只有您的目标域才能访问您的嵌入式资源。

以下示例策略提供了这些权限。

以下示例策略提供了检索控制台会话 URL 的权限。如果您在用户访问嵌入式会话之前创建用户，则可以使用不具有 `quicksight:RegisterUser` 的策略。

最后，您应用程序的 IAM 身份必须具有关联的信任策略，才允许访问您刚创建的角色。这意味着，当用户访问您的应用程序时，您的应用程序可以代表用户担任该角色并在 Amazon Quick Sight 中配置用户。下面演示了一个示例信任策略。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowLambdaFunctionsToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Sid": "AllowEC2InstancesToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

有关 OpenId Connect 或 SAML 身份验证的信任策略的更多信息，请参阅 *IAM 用户指南* 的以下部分：
+ [创建用于 Web 联合身份验证或 OpenID Connect 联合身份验证的角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html)
+ [创建用于 SAML 2.0 联合身份验证的角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)

## 步骤 2：生成附带身份验证代码的 URL
<a name="embedded-analytics-full-console-for-authenticated-users-step-2"></a>

在下节中，您可以了解如何对用户进行身份验证，并获取应用程序服务器上的可嵌入控制台会话 URL。

用户访问您的应用程序时，该应用程序代表用户代入 IAM 角色。然后，它会将该用户添加到 Amazon Quick Sight 中（如果该用户尚不存在）。接下来，其会将标识符作为唯一角色会话 ID 进行传递。

执行上述步骤可确保在 Amazon Quick Sight 中对控制台会话的每个查看者进行唯一的配置。它还实施每个用户的设置，例如，行级别安全性和参数的动态默认值。

以下示例展示了代表用户执行 IAM 身份验证。此代码在您的应用程序服务器上运行。

### Java
<a name="embedded-analytics-full-console-for-authenticated-users-java"></a>

```
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.quicksight.AmazonQuickSight;
import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserRequest;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserResult;
import com.amazonaws.services.quicksight.model.RegisteredUserEmbeddingExperienceConfiguration;
import com.amazonaws.services.quicksight.model.RegisteredUserQuickSightConsoleEmbeddingConfiguration;

/**
 * Class to call QuickSight AWS SDK to get url for QuickSight console embedding.
 */
public class GetQuicksightEmbedUrlRegisteredUserQSConsoleEmbedding {

    private final AmazonQuickSight quickSightClient;

    public GetQuicksightEmbedUrlRegisteredUserQSConsoleEmbedding() {
        this.quickSightClient = AmazonQuickSightClientBuilder
                .standard()
                .withRegion(Regions.US_EAST_1.getName())
                .withCredentials(new AWSCredentialsProvider() {
                        @Override
                        public AWSCredentials getCredentials() {
                            // provide actual IAM access key and secret key here
                            return new BasicAWSCredentials("access-key", "secret-key");
                        }

                         @Override
                        public void refresh() {                           
                        }
                    }
                )
                .build();
    }

    public String getQuicksightEmbedUrl(
            final String accountId,
            final String userArn, // Registered user arn to use for embedding. Refer to Get Embed Url section in developer portal to find out how to get user arn for a QuickSight user.
            final List<String> allowedDomains, // Runtime allowed domain for embedding
            final String initialPath
    ) throws Exception {
        final RegisteredUserEmbeddingExperienceConfiguration experienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration()
                .withQuickSightConsole(new RegisteredUserQuickSightConsoleEmbeddingConfiguration().withInitialPath(initialPath));
        final GenerateEmbedUrlForRegisteredUserRequest generateEmbedUrlForRegisteredUserRequest = new GenerateEmbedUrlForRegisteredUserRequest();
        generateEmbedUrlForRegisteredUserRequest.setAwsAccountId(accountId);
        generateEmbedUrlForRegisteredUserRequest.setUserArn(userArn);
        generateEmbedUrlForRegisteredUserRequest.setAllowedDomains(allowedDomains);
        generateEmbedUrlForRegisteredUserRequest.setExperienceConfiguration(experienceConfiguration);

        final GenerateEmbedUrlForRegisteredUserResult generateEmbedUrlForRegisteredUserResult = quickSightClient.generateEmbedUrlForRegisteredUser(generateEmbedUrlForRegisteredUserRequest);

        return generateEmbedUrlForRegisteredUserResult.getEmbedUrl();
    }
}
```

### JavaScript
<a name="embedded-analytics-full-console-for-authenticated-users-js"></a>

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function generateEmbedUrlForRegisteredUser(
    accountId,
    dashboardId,
    openIdToken, // Cognito-based token
    userArn, // registered user arn
    roleArn, // IAM user role to use for embedding
    sessionName, // Session name for the roleArn assume role
    allowedDomains, // Runtime allowed domain for embedding
    getEmbedUrlCallback, // GetEmbedUrl success callback method
    errorCallback // GetEmbedUrl error callback method
    ) {
    const stsClient = new AWS.STS();
    let stsParams = {
        RoleSessionName: sessionName,
        WebIdentityToken: openIdToken,
        RoleArn: roleArn
    }

    stsClient.assumeRoleWithWebIdentity(stsParams, function(err, data) {
        if (err) {
            console.log('Error assuming role');
            console.log(err, err.stack);
            errorCallback(err);
        } else {
            const getDashboardParams = {
                "AwsAccountId": accountId,
                "ExperienceConfiguration": {
                    "QuickSightConsole": {
                        "InitialPath": '/start'
                    }
                },
                "UserArn": userArn,
                "AllowedDomains": allowedDomains,
                "SessionLifetimeInMinutes": 600
            };

            const quicksightGetDashboard = new AWS.QuickSight({
                region: process.env.AWS_REGION,
                credentials: {
                    accessKeyId: data.Credentials.AccessKeyId,
                    secretAccessKey: data.Credentials.SecretAccessKey,
                    sessionToken: data.Credentials.SessionToken,
                    expiration: data.Credentials.Expiration
                }
            });

            quicksightGetDashboard.generateEmbedUrlForRegisteredUser(getDashboardParams, function(err, data) {
                if (err) {
                    console.log(err, err.stack);
                    errorCallback(err);
                } else {
                    const result = {
                        "statusCode": 200,
                        "headers": {
                            "Access-Control-Allow-Origin": "*", // Use your website domain to secure access to GetEmbedUrl API
                            "Access-Control-Allow-Headers": "Content-Type"
                        },
                        "body": JSON.stringify(data),
                        "isBase64Encoded": false
                    }
                    getEmbedUrlCallback(result);
                }
            });
        }
    });
}
```

### Python3
<a name="embedded-analytics-full-console-for-authenticated-users-py"></a>

```
import json
import boto3
from botocore.exceptions import ClientError

# Create QuickSight and STS clients
qs = boto3.client('quicksight', region_name='us-east-1')
sts = boto3.client('sts')

# Function to generate embedded URL  
# accountId: AWS account ID
# userArn: arn of registered user
# allowedDomains: Runtime allowed domain for embedding
# roleArn: IAM user role to use for embedding
# sessionName: session name for the roleArn assume role
def generateEmbeddingURL(accountId, userArn, allowedDomains, roleArn, sessionName):
    try:
        assumedRole = sts.assume_role(
            RoleArn = roleArn,
            RoleSessionName = sessionName,
        )
    except ClientError as e:
        return "Error assuming role: " + str(e)
    else: 
        assumedRoleSession = boto3.Session(
            aws_access_key_id = assumedRole['Credentials']['AccessKeyId'],
            aws_secret_access_key = assumedRole['Credentials']['SecretAccessKey'],
            aws_session_token = assumedRole['Credentials']['SessionToken'],
        )
        try:
            quickSightClient = assumedRoleSession.client('quicksight', region_name='us-east-1')
            
            experienceConfiguration = {
                "QuickSightConsole": {
                    "InitialPath": "/start"
                }
            }
            response = quickSightClient.generate_embed_url_for_registered_user(
                 AwsAccountId = accountId,
                 ExperienceConfiguration = experienceConfiguration,
                 UserArn = userArn,
                 AllowedDomains = allowedDomains,
                 SessionLifetimeInMinutes = 600
            )
            
            return {
                'statusCode': 200,
                'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"},
                'body': json.dumps(response),
                'isBase64Encoded':  bool('false')
            }
        except ClientError as e:
            return "Error generating embedding url: " + str(e)
```

### Node.js
<a name="embedded-analytics-full-console-for-authenticated-users-node"></a>

以下示例显示了可以在应用服务器上使用的 JavaScript (Node.js) 来生成嵌入式控制台会话的 URL。您可以在网站或应用程序中使用该 URL 来显示控制台会话。

**Example**  

```
const AWS = require('aws-sdk');
const https = require('https');

var quicksightClient = new AWS.Service({
    apiConfig: require('./quicksight-2018-04-01.min.json'),
    region: 'us-east-1',
});

quicksightClient.generateEmbedUrlForRegisteredUser({
    'AwsAccountId': '111122223333',
    'ExperienceConfiguration': {
        'QuickSightConsole': {
            'InitialPath': '/start'
        }
    },
    'UserArn': 'REGISTERED_USER_ARN',
    'AllowedDomains': allowedDomains,
    'SessionLifetimeInMinutes': 100
}, function(err, data) {
    console.log('Errors: ');
    console.log(err);
    console.log('Response: ');
    console.log(data);
});
```

**Example**  

```
// The URL returned is over 900 characters. For this example, we've shortened the string for
// readability and added ellipsis to indicate that it's incomplete.
    {
        Status: 200,
        EmbedUrl: 'https://quicksightdomain/embed/12345/dashboards/67890..,
        RequestId: '7bee030e-f191-45c4-97fe-d9faf0e03713'
    }
```

### .NET/C\$1
<a name="embedded-analytics-full-console-for-authenticated-users-cs"></a>

以下示例演示了可以在应用服务器上使用以生成嵌入式控制台会话 URL 的 .NET/C\$1 代码。您可以在网站或应用程序中使用该 URL 来显示控制台。

**Example**  

```
using System;
using Amazon.QuickSight;
using Amazon.QuickSight.Model;

namespace GenerateDashboardEmbedUrlForRegisteredUser
{
    class Program
    {
        static void Main(string[] args)
        {
            var quicksightClient = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                SessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                RegisteredUserQuickSightConsoleEmbeddingConfiguration registeredUserQuickSightConsoleEmbeddingConfiguration
                    = new RegisteredUserQuickSightConsoleEmbeddingConfiguration
                    {
                        InitialPath = "/start"
                    };
                RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration
                    = new RegisteredUserEmbeddingExperienceConfiguration
                    {
                        QuickSightConsole = registeredUserQuickSightConsoleEmbeddingConfiguration
                    };
                
                Console.WriteLine(
                    quicksightClient.GenerateEmbedUrlForRegisteredUserAsync(new GenerateEmbedUrlForRegisteredUserRequest
                    {
                        AwsAccountId = "111122223333",
                        ExperienceConfiguration = registeredUserEmbeddingExperienceConfiguration,
                        UserArn = "REGISTERED_USER_ARN",
                        AllowedDomains = allowedDomains,
                        SessionLifetimeInMinutes = 100
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
```

### AWS CLI
<a name="embedded-analytics-full-console-for-authenticated-users-cli"></a>

要代入该角色，请选择以下 AWS Security Token Service (AWS STS) API 操作之一：
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— 当您使用 IAM 身份代入角色时，请使用此操作。
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— 当您使用 Web 身份提供商对用户进行身份验证时，请使用此操作。
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 当您使用 SAML 对用户进行身份验证时，请使用此操作。

以下示例显示了用于设置 IAM 角色的 CLI 命令。该角色需要为 `quicksight:GenerateEmbedUrlForRegisteredUser` 启用权限。如果您在用户首次打开 Amazon Quick Sight 时采用添加他们的 just-in-time方法，则还需要为该角色启用权限`quicksight:RegisterUser`。

```
aws sts assume-role \
     --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \
     --role-session-name john.doe@example.com
```

`assume-role` 操作返回三个输出参数：访问密钥、私有密钥和会话令牌。

**注意**  
如果在调用 `AssumeRole` 操作时遇到 `ExpiredToken` 错误，可能是因为之前的 `SESSION TOKEN` 仍在环境变量中。通过设置以下变量可以解决这一问题：  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1访问密钥* 
*AWS\$1SESSION\$1代币* 

以下示例说明了如何在 CLI 中设置这三个参数。如果使用的是 Microsoft Windows 计算机，请使用 `set` 而非 `export`。

```
export AWS_ACCESS_KEY_ID     = "access_key_from_assume_role"
export AWS_SECRET_ACCESS_KEY = "secret_key_from_assume_role"
export AWS_SESSION_TOKEN     = "session_token_from_assume_role"
```

如果运行这些命令，则会将访问您的网站的用户的角色会话 ID 设置为 `embedding_quicksight_console_session_role/john.doe@example.com`。角色会话 ID 由 `role-arn` 中的角色名称和 `role-session-name` 值组成。每个用户使用唯一的角色会话 ID 可以确保为每个用户设置相应的权限。此外，它还能避免任何用户访问限制。限制是一项安全功能，可防止同一个用户从多个位置访问 Amazon Quick Sight。

角色会话 ID 也将成为 Amazon Quick Sight 中的用户名。您可以使用此模式提前在 Amazon Quick Sight 中配置用户，或者在他们首次访问控制台会话时对其进行配置。

以下示例显示了可用于预置用户的 CLI 命令。有关[RegisterUser[DescribeUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html)](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html)、和其他 Amazon Quick Sight API 操作的更多信息，请参阅[亚马逊 Quick Sight API 参考](https://docs.aws.amazon.com/quicksight/latest/APIReference/Welcome.html)。

```
aws quicksight register-user \
     --aws-account-id 111122223333 \
     --namespace default \
     --identity-type IAM \
     --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \
     --user-role READER \
     --user-name jhnd \
     --session-name "john.doe@example.com" \
     --email john.doe@example.com \
     --region us-east-1 \
     --custom-permissions-name TeamA1
```

如果用户通过 Microsoft AD 进行身份验证，则无需使用 `RegisterUser` 进行设置。相反，他们应该在首次访问 Amazon Quick Sight 时自动订阅。对于 Microsoft AD 用户，您可以使用 `DescribeUser` 获取用户 ARN。

当用户首次访问 Amazon Quick Sight 时，您也可以将该用户添加到相应的群组中。以下示例显示了将用户添加到组的 CLI 命令。

```
aws quicksight create-group-membership \
     --aws-account-id=111122223333 \
     --namespace=default \
     --group-name=financeusers \
     --member-name="embedding_quicksight_dashboard_role/john.doe@example.com"
```

现在，您的应用程序的用户也是 Amazon Quick Sight 的用户，并且可以访问 Amazon Quick Sight 控制台会话。

最后，要获取控制台会话的签名 URL，请从应用程序服务器中调用 `generate-embed-url-for-registered-user`。此操作会返回可嵌入控制台会话 URL。以下示例说明如何使用服务器端调用为通过身份验证 AWS Managed Microsoft AD 或单点登录（IAM Identity Center）进行身份验证的用户生成嵌入式控制台会话的 URL。

```
aws quicksight generate-embed-url-for-registered-user \
    --aws-account-id 111122223333 \
    --entry-point the-url-for--the-console-session \
    --session-lifetime-in-minutes 600 \
    --user-arn arn:aws:quicksight:us-east-1:111122223333:user/default/embedding_quicksight_dashboard_role/embeddingsession
	--allowed-domains '["domain1","domain2"]' \
    --experience-configuration QuickSightConsole={InitialPath="/start"}
```

有关使用此操作的更多信息，请参阅 [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)。您可以在自己的代码中使用该 API 操作和其他操作。

## 步骤 3：嵌入控制台会话 URL
<a name="embedded-analytics-full-console-for-authenticated-users-step-3"></a>

在下一节中，您可以了解如何使用 [Amazon Quick Sight Embedding SDK](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript) 将第 3 步中的控制台会话 URL 嵌入到您的网站或应用程序页面中。通过使用该开发工具包，您可以执行以下操作：
+ 将控制台会话置于 HTML 页面上。
+ 将参数传入控制台会话。
+ 使用为应用程序自定义的消息处理错误状态。

调用 `GenerateEmbedUrlForRegisteredUser` API 操作生成可嵌入应用的 URL。该 URL 的有效时间为 5 分钟，生成的会话有效时间为 10 个小时。该 API 操作为 URL 提供 `auth_code` 以启用单点登录会话。

下面显示了 `generate-embed-url-for-registered-user` 的示例响应：

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
//readability and added ellipsis to indicate that it's incomplete.
{
     "Status": "200",
     "EmbedUrl": "https://quicksightdomain/embedding/12345/start...",
     "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
}
```

使用 Amazon Quick Sight Embedding [SDK 或将此 URL 添加到 iframe 中，将此控制台会话嵌](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)入到您的网页中。如果您设置了固定的高度和宽度数字（以像素为单位），Amazon Quick Sight 会使用这些数字，并且不会在窗口大小调整时更改视觉效果。如果您设置相对的百分比高度和宽度，Amazon Quick Sight 会提供响应式布局，该布局会随着窗口大小的变化而进行修改。通过使用 Amazon Quick Sight Embedding SDK，您还可以控制控制台会话中的参数，并接收有关页面加载完成和错误的回调。

要托管嵌入式仪表板的域名必须位于*允许列表中*，即订 Quick 阅的已批准域名列表。这一要求可阻止未经批准的域托管嵌入式控制面板，从而保护您的数据。有关为嵌入式控制台添加域名的更多信息，请参阅[允许在运行时使用 Amazon Quick Sight API 列出域名](https://docs.aws.amazon.com/quicksight/latest/user/embedding-run-time.html)。

以下示例演示了如何使用生成的 URL。此代码在您的应用程序服务器上生成。

### SDK 2.0
<a name="embedded-analytics-full-console-for-authenticated-users-sdkv2"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Console Embedding Example</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.0.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            const embedSession = async() => {    
                const {
                    createEmbeddingContext,
                } = QuickSightEmbedding;

                const embeddingContext = await createEmbeddingContext({
                    onChange: (changeEvent, metadata) => {
                        console.log('Context received a change', changeEvent, metadata);
                    },
                });

                const frameOptions = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: '#experience-container',
                    height: "700px",
                    width: "1000px",
                    onChange: (changeEvent, metadata) => {
                        switch (changeEvent.eventName) {
                            case 'FRAME_MOUNTED': {
                                console.log("Do something when the experience frame is mounted.");
                                break;
                            }
                            case 'FRAME_LOADED': {
                                console.log("Do something when the experience frame is loaded.");
                                break;
                            }
                        }
                    },
                };

                const contentOptions = {
                    onMessage: async (messageEvent, experienceMetadata) => {
                        switch (messageEvent.eventName) {
                            case 'ERROR_OCCURRED': {
                                console.log("Do something when the embedded experience fails loading.");
                                break;
                            }
                        }
                    }
                };
                const embeddedConsoleExperience = await embeddingContext.embedConsole(frameOptions, contentOptions);
            };
        </script>
    </head>

    <body onload="embedSession()">
        <div id="experience-container"></div>
    </body>

</html>
```

### SDK 1.0
<a name="embedded-analytics-full-console-for-authenticated-users-sdkv1"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>QuickSight Console Embedding</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@1.0.15/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            var session

            function onError(payload) {
                console.log("Do something when the session fails loading");
            }

            function embedSession() {
                var containerDiv = document.getElementById("embeddingContainer");
                var options = {
                    // replace this dummy url with the one generated via embedding API
                    url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode", // replace this dummy url with the one generated via embedding API
                    container: containerDiv,
                    parameters: {
                        country: "United States"
                    },
                    scrolling: "no",
                    height: "700px",
                    width: "1000px",
                    locale: "en-US",
                    footerPaddingEnabled: true,
                    defaultEmbeddingVisualType: "TABLE", // this option only applies to QuickSight console embedding and is not used for dashboard embedding
                };
                session = QuickSightEmbedding.embedSession(options);
                session.on("error", onError);
            }

            function onCountryChange(obj) {
                session.setParameters({country: obj.value});
            }
        </script>
    </head>

    <body onload="embedSession()">
        <span>
            <label for="country">Country</label>
            <select id="country" name="country" onchange="onCountryChange(this)">
                <option value="United States">United States</option>
                <option value="Mexico">Mexico</option>
                <option value="Canada">Canada</option>
            </select>
        </span>
        <div id="embeddingContainer"></div>
    </body>

</html>
```

要使此示例起作用，请务必使用 Amazon Quick Sight Embedding SDK 将嵌入式控制台会话加载到您的网站上 JavaScript。要获取副本，请执行下列操作之一：
+ 从 GitHub中下载 [Amazon Quick Sight 嵌入软件开发工具包](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) 该存储库由一组 Amazon Quick Sight 开发人员维护。
+ 从下载最新的嵌入式 SDK 版本[https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)。
+ 如果您使用`npm` JavaScript 依赖关系，请通过运行以下命令下载并安装它。

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

# 在嵌入式控制台中为注册用户启用生成式 BI 功能
<a name="embedding-consoles-genbi"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

您可以在嵌入式控制台中启用下列生成式 BI 功能：
+ 执行摘要：启用后，注册的 Author Pro 和 Reader Pro 用户可以生成执行摘要，摘要提供 Amazon Quick Sight 为控制面板生成的所有见解，以便轻松发现关键见解。
+ 创作：启用后，作者 Pro 用户可以使用生成式 BI 来构建计算字段以及构建和优化视觉对象。
+ 问答：启用后，作者 Pro 和读者 Pro 用户可以使用 AI 驱动的问答来建议和回答与其数据相关的问题。
+ 数据故事：启用后，作者 Pro 和读者 Pro 用户可以提供详细信息以快速生成其数据故事的初稿。

**在嵌入式控制台中为注册用户启用生成式 BI 功能**
+ 按照[嵌入 Amazon Quick Sight 控制台的全部功能中的步骤进行操作，以便注册用户](https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics-full-console-for-authenticated-users.html)嵌入包含以下更改的主机：

  1. 在步骤 2 中生成 URL 时，请在要`Enabled: true`在[GenerateEmbedUrlForRegisteredUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)或中启用的每个功能的`FeatureConfigurations`参数中进行设置 [GenerateEmbedUrlForRegisteredUserWithIdentity](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUserWithIdentity.html) APIs，如以下示例所示。如果没有提供配置，则默认禁用功能。

     ```
     ExperienceConfiguration: {
             QuickSightConsole: {
                 InitialPath: "initial_path",
                 AmazonQInQuickSight: {
                     FeatureConfigurations: { 
                         COMMENT: Enable executive summaries
                         ExecutiveSummary: {
                             Enabled: true
                         },
                         COMMENT: Enable Generative BI authoring
                         GenerativeAuthoring: {
                             Enabled: true
                         },
                         COMMENT: Enable Q&A
                         DataQnA: {
                             Enabled: true
                         },
                         COMMENT: Enable data stories
                         DataStories: {
                             Enabled: true
                         }       
                     }
                 }
             }
         }
     }
     ```

  1. 在步骤 3 中使用 Amazon Quick Sight Embedding SDK 嵌入控制台 URL 时，请根据需要设置以下示例中的值。如果没有提供配置，则默认禁用功能。
**注意**  
没有用于启用数据故事的 SDK 选项。如果按照上一步所示通过 API 启用数据故事，则注册用户将可以使用它们。

     ```
     const contentOptions = {
         toolbarOptions: {
             executiveSummary: true, // Enable executive summaries
             buildVisual: true, // Enable Generative BI authoring
             dataQnA: true // Enable Q&A
         }
     };
     ```

# 在 Amazon Quick Sight 生成问答体验中嵌入 Amazon Q
<a name="embedding-gen-bi"></a>


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

在以下各节中，您可以找到有关如何设置嵌入式生成问答体验的详细信息，该体验使用由提供的增强的 NLQ 功能。 LLMs生成式问答体验是嵌入式 Q 搜索栏的推荐替代品，并为用户提供更新的 BI 体验。

**Topics**
+ [将 Amazon Q 嵌入注册用户的 Amazon Quick Sight 生成问答体验中](#embedded-analytics-gen-bi-authenticated-users)
+ [将 Amazon Q 嵌入匿名（未注册）用户的快速生成问答体验中](#embedded-analytics-gen-bi-anonymous-users)

## 将 Amazon Q 嵌入注册用户的 Amazon Quick Sight 生成问答体验中
<a name="embedded-analytics-gen-bi-authenticated-users"></a>

在以下各节中，您可以找到有关如何为 Amazon Quick Sight 的注册用户设置嵌入式生成问答体验的详细信息。

**Topics**
+ [步骤 1：设置权限](#embedded-analytics-gen-bi-authenticated-users-step-1)
+ [步骤 2：生成附带身份验证代码的 URL](#embedded-analytics-gen-bi-authenticated-users-step-2)
+ [步骤 3：嵌入生成式问答体验 URL](#embedded-analytics-gen-bi-authenticated-users-step-3)
+ [可选的嵌入生成式问答体验功能](#embedded-analytics-gen-bi-authenticated-users-step-4)

### 步骤 1：设置权限
<a name="embedded-analytics-gen-bi-authenticated-users-step-1"></a>

在以下部分中，您可以了解如何设置后端应用程序或 Web 服务器的权限来嵌入生成式问答体验。此任务需要对 AWS Identity and Access Management (IAM) 的管理权限。

每位访问生成式问答体验的用户都扮演一个角色，为他们授予 Amazon Quick Sight 访问权限和权限。要实现该目的，请在您的 AWS 账户中创建一个 IAM 角色。将一个 IAM 策略与该角色相关联，以便为担任该角色的任何用户提供权限。IAM 角色需要提供权限才能检索特定用户池 URLs 的嵌入内容。

借助通配符 *\$1*，您可以授予为特定命名空间中的所有用户生成 URL 的权限。您也可以授予为特定命名空间中的一部分用户生成 URL 的权限。为此，请添加 `quicksight:GenerateEmbedUrlForRegisteredUser`。

您可以在 IAM 策略中创建一个条件，限制开发人员可以在 `GenerateEmbedUrlForRegisteredUser` API 操作的 `AllowedDomains` 参数中列出的域。`AllowedDomains` 参数是可选参数。它允许开发者选择覆盖在 “**管理 Amazon Quick Sight**” 菜单中配置的静态域，而是列出最多三个可以访问生成的 URL 的域名或子域名。然后，此 URL 会嵌入开发人员的网站。只有参数中列出的域才能访问嵌入生成式问答体验。如果没有此条件，开发人员可以在 `AllowedDomains` 参数中列出互联网上的任何域。

要限制开发人员可用于此参数的域，请在 IAM 策略中添加一个 `AllowedEmbeddingDomains` 条件。有关该`AllowedDomains`参数的更多信息，请参阅 *Amazon Quick Sight API 参考[GenerateEmbedUrlForRegisteredUser](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)*中的。

**IAM 条件运算符的安全最佳实践**  
配置不当的 IAM 条件运算符可能会允许未经授权地通过 URL 变体访问您的嵌入式 Quick 资源。在您的 IAM 策略中使用`quicksight:AllowedEmbeddingDomains`条件密钥时，请使用条件运算符，允许特定域名或拒绝所有未特别允许的域。有关 IAM 条件运算符的更多信息，请参阅 [IAM 用户指南中的 IAM JSON 策略元素：条件运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)。  
许多不同的网址变体可以指向同一个资源。例如，以下 URLs 所有内容都解析为相同的内容：  
`https://example.com`
`https://example.com/`
`https://Example.com`
如果您的策略使用的运算符不考虑这些 URL 变体，则攻击者可以通过提供等效的 URL 变体来绕过您的限制。  
您必须验证您的 IAM 策略是否使用了适当的条件运算符来防止绕过漏洞，并确保只有您的目标域才能访问您的嵌入式资源。

以下示例策略提供了这些权限。

此外，如果您要创建将成为 Amazon Quick Sight 读者的首次用户，请务必在策略中添加`quicksight:RegisterUser`权限。

以下示例策略为即将成为 Amazon Quick Sight 读者的首次用户提供了检索嵌入网址的权限。

最后，您应用程序的 IAM 身份必须具有关联的信任策略，才允许访问您刚创建的角色。这意味着，当用户访问您的应用程序时，您的应用程序可以代表用户担任该角色并在 Amazon Quick Sight 中配置用户。

下面演示了一个示例信任策略。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
    "Sid": "AllowLambdaFunctionsToAssumeThisRole",
                "Effect": "Allow",
                "Principal": {
    "Service": "lambda.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            },
            {
    "Sid": "AllowEC2InstancesToAssumeThisRole",
                "Effect": "Allow",
                "Principal": {
    "Service": "ec2.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
```

------

有关 OpenID Connect 或安全断言标记语言（SAML）身份验证的信任策略的更多信息，请参阅《IAM 用户指南**》的以下章节：
+ [创建用于 Web 联合身份验证或 OpenID Connect 联合身份验证的角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html)
+ [创建用于 SAML 2.0 联合身份验证的角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)

### 步骤 2：生成附带身份验证代码的 URL
<a name="embedded-analytics-gen-bi-authenticated-users-step-2"></a>

在下节中，您可以了解如何对用户进行身份验证，并获取应用程序服务器上的可嵌入 Q 主题 URL。如果您计划为 IAM 或 Amazon Quick Sight 身份类型嵌入生成式问答体验，请与用户分享 Q 主题。

用户访问您的应用程序时，该应用程序代表用户代入 IAM 角色。然后，如果该用户尚不存在，则该应用程序会将该用户添加到 Amazon Quick Sight。接下来，其会将标识符作为唯一角色会话 ID 进行传递。

执行上述步骤可确保在 Amazon Quick Sight 中对 Q 主题的每个查看者进行唯一配置。它还实施每个用户的设置，例如，行级别安全性和参数的动态默认值。基于标签的行级别安全性可用于匿名用户嵌入 Q 栏。

以下示例展示了代表用户执行 IAM 身份验证。此代码在您的应用程序服务器上运行。

#### Java
<a name="embedded-analytics-gen-bi-authenticated-users-java"></a>

```
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.quicksight.AmazonQuickSight;
import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserRequest;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserResult;
import com.amazonaws.services.quicksight.model.RegisteredUserEmbeddingExperienceConfiguration;
import com.amazonaws.services.quicksight.model.RegisteredUserGenerativeQnAEmbeddingConfiguration;

/**
 * Class to call QuickSight AWS SDK to get url for embedding Generative Q&A experience.
 */
public class RegisteredUserGenerativeQnAEmbeddingSample {

    private final AmazonQuickSight quickSightClient;

    public RegisteredUserGenerativeQnAEmbeddingSample() {
        this.quickSightClient = AmazonQuickSightClientBuilder
                    .standard()
                    .withRegion(Regions.US_EAST_1.getName())
                    .withCredentials(new AWS CredentialsProvider() {
                            @Override
                            public AWSCredentials getCredentials() {
                                // provide actual IAM access key and secret key here
                                return new BasicAWSCredentials("access-key", "secret-key");
                            }

                            @Override
                            public void refresh() {
                            }
                        }
                    )
                    .build();
            }

    public String getQuicksightEmbedUrl(
            final String accountId, // AWS Account ID
            final String topicId, // Topic ID to embed
            final List<String> allowedDomains, // Runtime allowed domain for embedding
            final String userArn // Registered user arn to use for embedding. Refer to Get Embed Url section in developer portal to find how to get user arn for a QuickSight user.
            ) throws Exception {

        final RegisteredUserEmbeddingExperienceConfiguration experienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration()
                .withGenerativeQnA(new RegisteredUserGenerativeQnAEmbeddingConfiguration().withInitialTopicId(topicId));
        final GenerateEmbedUrlForRegisteredUserRequest generateEmbedUrlForRegisteredUserRequest = new GenerateEmbedUrlForRegisteredUserRequest();
        generateEmbedUrlForRegisteredUserRequest.setAwsAccountId(accountId);
        generateEmbedUrlForRegisteredUserRequest.setUserArn(userArn);
        generateEmbedUrlForRegisteredUserRequest.setAllowedDomains(allowedDomains);
        generateEmbedUrlForRegisteredUserRequest.setExperienceConfiguration(experienceConfiguration);

        final GenerateEmbedUrlForRegisteredUserResult generateEmbedUrlForRegisteredUserResult = quickSightClient.generateEmbedUrlForRegisteredUser(generateEmbedUrlForRegisteredUserRequest);

        return generateEmbedUrlForRegisteredUserResult.getEmbedUrl();
    }
}
```

#### JavaScript
<a name="embedded-analytics-gen-bi-authenticated-users-js"></a>

**注意**  
 APIs 不能直接从浏览器调用嵌入网址生成。请改为参考 Node.JS 示例。

#### Python3
<a name="embedded-analytics-gen-bi-authenticated-users-py"></a>

```
import json
import boto3
from botocore.exceptions import ClientError

sts = boto3.client('sts')

# Function to generate embedded URL  
# accountId: AWS account ID
# topicId: Topic ID to embed
# userArn: arn of registered user
# allowedDomains: Runtime allowed domain for embedding
# roleArn: IAM user role to use for embedding
# sessionName: session name for the roleArn assume role
def getEmbeddingURL(accountId, topicId, userArn, allowedDomains, roleArn, sessionName):
    try:
        assumedRole = sts.assume_role(
            RoleArn = roleArn,
            RoleSessionName = sessionName,
        )
    except ClientError as e:
        return "Error assuming role: " + str(e)
    else: 
        assumedRoleSession = boto3.Session(
            aws_access_key_id = assumedRole['Credentials']['AccessKeyId'],
            aws_secret_access_key = assumedRole['Credentials']['SecretAccessKey'],
            aws_session_token = assumedRole['Credentials']['SessionToken'],
        )
        try:
            quicksightClient = assumedRoleSession.client('quicksight', region_name='us-west-2')
            response = quicksightClient.generate_embed_url_for_registered_user(
                AwsAccountId=accountId,
                ExperienceConfiguration = {
                    'GenerativeQnA': {
                        'InitialTopicId': topicId
                    }
                },
                UserArn = userArn,
                AllowedDomains = allowedDomains,
                SessionLifetimeInMinutes = 600
            )
            
            return {
                'statusCode': 200,
                'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"},
                'body': json.dumps(response),
                'isBase64Encoded':  bool('false')
            }
        except ClientError as e:
            return "Error generating embedding url: " + str(e)
```

#### Node.js
<a name="embedded-analytics-gen-bi-authenticated-users-node"></a>

以下示例显示了可以在应用服务器上用来生成嵌入式仪表板的 URL 的 JavaScript (Node.js)。您可以在网站或应用程序中使用该 URL 以显示控制面板。

**Example**  

```
const AWS = require('aws-sdk');
const https = require('https');

var quicksightClient = new AWS.Service({
    region: 'us-east-1'
});

quicksightClient.generateEmbedUrlForRegisteredUser({
    'AwsAccountId': '111122223333',
    'ExperienceConfiguration': { 
        'GenerativeQnA': {
            'InitialTopicId': 'U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f'
        }
    },
    'UserArn': 'REGISTERED_USER_ARN',
    'AllowedDomains': allowedDomains,
    'SessionLifetimeInMinutes': 100
}, function(err, data) {
    console.log('Errors: ');
    console.log(err);
    console.log('Response: ');
    console.log(data);
});
```

#### .NET/C\$1
<a name="embedded-analytics-gen-bi-authenticated-users-cs"></a>

以下示例演示了可以在应用程序服务器上使用以生成嵌入式 Q 搜索栏 URL 的 .NET/C\$1 代码。您可以在网站或应用程序中使用此 URL 以显示 Q 搜索栏。

**Example**  

```
using System;
using Amazon.QuickSight;
using Amazon.QuickSight.Model;

namespace GenerateGenerativeQnAEmbedUrlForRegisteredUser
{
    class Program
    {
        static void Main(string[] args)
        {
            var quicksightClient = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                SessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                RegisteredUserGenerativeQnAEmbeddingConfiguration registeredUserGenerativeQnAEmbeddingConfiguration
                    = new RegisteredUserGenerativeQnAEmbeddingConfiguration
                    {
                        InitialTopicId = "U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f"
                    };
                RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration
                    = new RegisteredUserEmbeddingExperienceConfiguration
                    {
                        GenerativeQnA = registeredUserGenerativeQnAEmbeddingConfiguration
                    }; 
                
                Console.WriteLine(
                    quicksightClient.GenerateEmbedUrlForRegisteredUserAsync(new GenerateEmbedUrlForRegisteredUserRequest
                    {
                        AwsAccountId = "111122223333",
                        ExperienceConfiguration = registeredUserEmbeddingExperienceConfiguration,
                        UserArn = "REGISTERED_USER_ARN",
                        AllowedDomains = allowedDomains,
                        SessionLifetimeInMinutes = 100
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
```

#### AWS CLI
<a name="embedded-analytics-gen-bi-authenticated-users-cli"></a>

要代入该角色，请选择以下 AWS Security Token Service (AWS STS) API 操作之一：
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— 当您使用 IAM 身份代入角色时，请使用此操作。
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— 当您使用 Web 身份提供商对用户进行身份验证时，请使用此操作。
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 当您使用 SAML 对用户进行身份验证时，请使用此操作。

以下示例显示了用于设置 IAM 角色的 CLI 命令。该角色需要为 `quicksight:GenerateEmbedUrlForRegisteredUser` 启用权限。如果您要在用户使用 Q 搜索栏中的主题时添加用户，则还需要为该角色启用权限`quicksight:RegisterUser`。 just-in-time

```
aws sts assume-role \
     --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_q_generative_qna_role" \
     --role-session-name john.doe@example.com
```

`assume-role` 操作返回三个输出参数：访问密钥、私有密钥和会话令牌。

**注意**  
如果在调用 `AssumeRole` 操作时遇到 `ExpiredToken` 错误，可能是因为之前的 `SESSION TOKEN` 仍在环境变量中。通过设置以下变量可以解决这一问题：  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1访问密钥* 
*AWS\$1SESSION\$1代币* 

以下示例说明了如何在 CLI 中设置这三个参数。对于 Microsoft Windows 计算机，请使用 `set` 而不是 `export`。

```
export AWS_ACCESS_KEY_ID     = "access_key_from_assume_role"
export AWS_SECRET_ACCESS_KEY = "secret_key_from_assume_role"
export AWS_SESSION_TOKEN     = "session_token_from_assume_role"
```

如果运行这些命令，则会将访问您的网站的用户的角色会话 ID 设置为 `embedding_quicksight_q_search_bar_role/john.doe@example.com`。角色会话 ID 由 `role-arn` 中的角色名称和 `role-session-name` 值组成。每个用户使用唯一的角色会话 ID 可以确保为每个用户设置相应的权限。此外，它还能避免任何用户访问限制。*限制*是一项安全功能，可防止同一个用户从多个位置访问 Amazon Quick Sight。

角色会话 ID 也成为 Amazon Quick Sight 中的用户名。您可以使用此模式提前在 Amazon Quick Sight 中配置用户，或者在他们首次访问生成问答体验时为他们进行配置。

以下示例显示了可用于预置用户的 CLI 命令。有关[RegisterUser[DescribeUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html)](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html)、和其他 Amazon Quick Sight API 操作的更多信息，请参阅 [Amazon Quick Sight API 参考](https://docs.aws.amazon.com/quicksight/latest/APIReference/Welcome.html)。

```
aws quicksight register-user \
    --aws-account-id 111122223333 \
    --namespace default \
    --identity-type IAM\
    --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_q_generative_qna_role" \
    --user-role READER \
    --user-name jhnd \
    --session-name "john.doe@example.com" \
    --email john.doe@example.com \
    --region us-east-1 \
    --custom-permissions-name TeamA1
```

如果用户通过 Microsoft AD 进行身份验证，则无需使用 `RegisterUser` 进行设置。相反，他们应该在首次访问 Amazon Quick Sight 时自动订阅。对于 Microsoft AD 用户，您可以使用 `DescribeUser` 获取用户 Amazon 资源名称（ARN）。

用户首次访问 Amazon Quick Sight 时，您也可以将该用户添加到共享控制面板的群组中。以下示例显示了将用户添加到组的 CLI 命令。

```
aws quicksight create-group-membership \
    --aws-account-id 111122223333 \
    --namespace default \
    --group-name financeusers \
    --member-name "embedding_quicksight_q_generative_qna_role/john.doe@example.com"
```

现在，您的应用程序的用户也是 Amazon Quick Sight 的用户，并且可以访问控制面板。

最后，要获取控制面板的签名 URL，请从应用程序服务器中调用 `generate-embed-url-for-registered-user`。这会返回可嵌入的控制面板 URL。以下示例说明如何使用服务器端调用为通过身份验证 AWS Managed Microsoft AD 或单点登录（IAM Identity Center）进行身份验证的用户生成嵌入式控制面板的 URL。

```
aws quicksight generate-embed-url-for-anonymous-user \
--aws-account-id 111122223333 \
--namespace default-or-something-else \
--authorized-resource-arns '["topic-arn-topicId1","topic-arn-topicId2"]' \
--allowed-domains '["domain1","domain2"]' \
--experience-configuration 'GenerativeQnA={InitialTopicId="topicId1"}' \
--session-tags '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]' \
--session-lifetime-in-minutes 15
```

有关使用此操作的更多信息，请参阅 [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)。您可以在自己的代码中使用该 API 操作和其他操作。

### 步骤 3：嵌入生成式问答体验 URL
<a name="embedded-analytics-gen-bi-authenticated-users-step-3"></a>

在以下部分中，您可以了解如何将生成式问答体验嵌入网站或应用程序页面。你可以使用 [Amazon Quick Sight 嵌入式 SDK](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript) 来做到这一点。通过使用该开发工具包，您可以执行以下操作：
+ 将生成式问答体验放置到 HTML 页面上。
+ 自定义嵌入式体验的布局和外观以满足您的应用程序需求。
+ 使用为应用程序自定义的消息处理错误状态。

要生成可嵌入应用程序的 URL，请调用 `GenerateEmbedUrlForRegisteredUser` API 操作。该 URL 的有效时间为 5 分钟，生成的会话有效时间为 10 个小时。该 API 操作为 URL 提供 `auth_code` 值以启用单点登录会话。

下面显示了 `generate-embed-url-for-registered-user` 的示例响应：

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
//readability and added ellipsis to indicate that it's incomplete. 
{
 "Status": "200",
"EmbedUrl": "https://quicksightdomain/embedding/12345/q/search...",
"RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
}
```

使用 [Amazon Quick Sight 嵌入式 SDK 或将此 URL 添加到 iframe 中，将生成式问答体验嵌](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)入到您的网页中。如果您设置了固定的高度和宽度数字（以像素为单位），Amazon Quick Sight 会使用这些数字，并且不会在窗口大小调整时更改视觉效果。如果您设置相对的百分比高度和宽度，Amazon Quick Sight 会提供响应式布局，该布局会随着窗口大小的变化而进行修改。

确保用于托管嵌入式生成问答体验的域名位于*允许列表中*，这是您订阅 Amazon Quick Sight 的已批准域名列表。这一要求可阻止未经批准的域托管嵌入式控制面板，从而保护您的数据。有关为嵌入生成式问答体验添加域的更多信息，请参阅 [管理域名](manage-domains.md)。

您可以使用 Amazon Quick Sight Embedding SDK 自定义嵌入式生成问答体验的布局和外观，以适应您的应用程序。使用 `panelType` 属性配置生成式问答体验在您的应用程序中呈现时的着陆状态。将 `panelType` 属性设置为 `'FULL'` 以呈现完整的生成式问答体验面板。此面板类似于 Amazon Quick Sight 用户在 Amazon Quick Sight 控制台中的体验。面板的框架高度不会根据用户交互进行更改，并且会遵循您在 `frameOptions.height` 属性中设置的值。下图显示了当您将 `panelType` 值设置为 `'FULL'` 时呈现的生成式问答体验面板。

将 `panelType` 属性设置为 `'SEARCH_BAR'`，以将生成式问答体验呈现为搜索栏。该搜索栏类似于 Q 搜索栏嵌入到应用程序中时的呈现方式。生成式问答搜索栏扩展到更大的面板，其显示主题选择选项、问题建议列表、答案面板或 Pinboard。

当嵌入资产加载时，会呈现生成式问答搜索栏的默认最小高度。建议您将 `frameOptions.height` 值设置为 `"38px"`，以优化搜索栏体验。使用 `focusedHeight` 属性设置主题选择下拉列表和问题建议列表的最佳大小。使用 `expandedHeight` 属性设置答案面板和 Pinboard 的最佳大小。如果选择 `'SEARCH_BAR'` 选项，则建议您使用 position;absolute 设置父容器的样式，以避免应用程序中出现不必要的内容移动。下图显示了当您将 `panelType` 值设置为 `'SEARCH_BAR'` 时呈现的生成式问答体验搜索栏。

配置`panelType`属性后，使用 Amazon Quick Sight 嵌入式 SDK 自定义生成问答体验的以下属性。
+ 生成式问答面板的标题（仅适用于 `panelType: FULL` 选项）。
+ 搜索栏的占位符文本。
+ 是否允许选择主题。
+ 主题名称是显示还是隐藏。
+ Amazon Q 图标是显示还是隐藏（仅适用于 `panelType: FULL` 选项）。
+ Pinboard 是显示还是隐藏。
+ 用户是否可以将生成式问答面板最大化为全屏显示。
+ 生成式问答面板的主题。可以在 SDK 中传递自定义主题 ARN 来更改框架内容的外观。嵌入式生成式 BI 面板不支持 Amazon Quick Sight 入门主题。要使用 Amazon Quick Sight 入门主题，请将其另存为亚马逊 Quick Sight 中的自定义主题。

当您使用 Amazon Quick Sight Embedging SDK 时，页面上的生成式问答体验会根据状态动态调整大小。通过使用 Amazon Quick Sight Embedding SDK，您还可以控制生成问答体验中的参数，并接收有关页面加载完成、状态更改和错误的回调。

以下示例演示了如何使用生成的 URL。此代码在您的应用程序服务器上生成。

#### SDK 2.0
<a name="collapsible-gen-bi-embedding-example"></a>

```
<!DOCTYPE html>
<html>
    <head>
        <title>Generative Q&A Embedding Example</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.7.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            const embedGenerativeQnA = async() => {    
                const {createEmbeddingContext} = QuickSightEmbedding;

                const embeddingContext = await createEmbeddingContext({
                    onChange: (changeEvent, metadata) => {
                        console.log('Context received a change', changeEvent, metadata);
                    },
                });

                const frameOptions = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: '#experience-container',
                    height: "700px",
                    width: "1000px",
                    onChange: (changeEvent, metadata) => {
                        switch (changeEvent.eventName) {
                            case 'FRAME_MOUNTED': {
                                console.log("Do something when the experience frame is mounted.");
                                break;
                            }
                            case 'FRAME_LOADED': {
                                console.log("Do something when the experience frame is loaded.");
                                break;
                            }
                        }
                    },
                };

                const contentOptions = {
                    // Optional panel settings. Default behavior is equivalent to {panelType: 'FULL'}
                    panelOptions: {
                        panelType: 'FULL',
                        title: 'custom title', // Optional
                        showQIcon: false, // Optional, Default: true
                    },
                    // Use SEARCH_BAR panel type for the landing state to be similar to embedQSearchBar
                    // with generative capability enabled topics
                    /*
                    panelOptions: {
                        panelType: 'SEARCH_BAR',
                        focusedHeight: '250px',
                        expandedHeight: '500px',
                    },
                    */
                    showTopicName: false, // Optional, Default: true
                    showPinboard: false, // Optional, Default: true
                    allowTopicSelection: false, // Optional, Default: true
                    allowFullscreen: false, // Optional, Default: true
                    searchPlaceholderText: "custom search placeholder", // Optional
                    themeOptions: { // Optional
                        themeArn: 'arn:aws:quicksight:<Region>:<AWS-Account-ID>:theme/<Theme-ID>'
                    }
                    onMessage: async (messageEvent, experienceMetadata) => {
                        switch (messageEvent.eventName) {
                            case 'Q_SEARCH_OPENED': {
                                // called when pinboard is shown / visuals are rendered
                                console.log("Do something when SEARCH_BAR type panel is expanded");
                                break;
                            }
                            case 'Q_SEARCH_FOCUSED': {
                                // called when question suggestions or topic selection dropdown are shown
                                console.log("Do something when SEARCH_BAR type panel is focused");
                                break;
                            }
                            case 'Q_SEARCH_CLOSED': {
                                // called when shrinked to initial bar height
                                console.log("Do something when SEARCH_BAR type panel is collapsed");
                                break;
                            }
                            case 'Q_PANEL_ENTERED_FULLSCREEN': {
                                console.log("Do something when panel enters full screen mode");
                                break;
                            }
                            case 'Q_PANEL_EXITED_FULLSCREEN': {
                                console.log("Do something when panel exits full screen mode");
                                break;
                            }
                            case 'CONTENT_LOADED': {
                                console.log("Do something after experience is loaded");
                                break;
                            }
                            case 'ERROR_OCCURRED': {
                                console.log("Do something when experience fails to load");
                                break;
                            }
                        }
                    }
                };
                const embeddedGenerativeQnExperience = await embeddingContext.embedGenerativeQnA(frameOptions, contentOptions);
            };
        </script>
    </head>

    <body onload="embedGenerativeQnA()">
        <div id="experience-container"></div>
    </body>

</html>
```

要使此示例起作用，请务必使用 Amazon Quick Sight Embedding SDK 在您的网站上加载嵌入式生成问答体验 JavaScript。要获取副本，请执行下列操作之一：
+ 从中下载 [Amazon Quick Sight 嵌入 SDK](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) GitHub。该存储库由一组 Amazon Quick Sight 开发人员维护。
+ 从下载最新的嵌入式 SDK 版本[https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)。
+ 如果您使用`npm` JavaScript 依赖关系，请通过运行以下命令下载并安装它。

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

### 可选的嵌入生成式问答体验功能
<a name="embedded-analytics-gen-bi-authenticated-users-step-4"></a>

以下可选功能可用于使用 Embedding SDK 的嵌入生成式问答体验。

#### 调用生成式问答搜索栏操作
<a name="w2aac35c27c21c43c29b9c21b5"></a>
+ 设置问题 — 此功能将问题发送到生成式问答体验并立即查询问题。

  ```
  embeddedGenerativeQnExperience.setQuestion('show me monthly revenue');
  ```
+ 关闭答案面板（适用于生成式问答搜索栏选项）— 此功能将关闭答案面板并将 iframe 返回到原始搜索栏状态。

  ```
  embeddedGenerativeQnExperience.close();
  ```

有关更多信息，请参阅 [Amazon Quick Sight 嵌入软件开发工具包](https://github.com/awslabs/amazon-quicksight-embedding-sdk)。

## 将 Amazon Q 嵌入匿名（未注册）用户的快速生成问答体验中
<a name="embedded-analytics-gen-bi-anonymous-users"></a>


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

在以下部分中，您可以了解有关如何为匿名（未注册）用户设置嵌入生成式问答体验的详细信息。

**Topics**
+ [步骤 1：设置权限](#embedded-analytics-gen-bi-anonymous-users-step-1)
+ [步骤 2：生成附带身份验证代码的 URL](#embedded-analytics-gen-bi-anonymous-users-step-2)
+ [步骤 3：嵌入生成式问答体验 URL](#embedded-analytics-gen-bi-anonymous-users-step-3)
+ [可选的嵌入生成式问答体验功能](#embedded-analytics-gen-bi-anonymous-users-step-4)

### 步骤 1：设置权限
<a name="embedded-analytics-gen-bi-anonymous-users-step-1"></a>

在以下部分中，您可以了解如何设置后端应用程序或 Web 服务器的权限来嵌入生成式问答体验。此任务需要对 AWS Identity and Access Management (IAM) 的管理权限。

每位访问生成式问答体验的用户都扮演一个角色，为他们授予 Amazon Quick Sight 访问权限和权限。要实现该目的，请在您的 AWS 账户中创建一个 IAM 角色。将一个 IAM 策略与该角色相关联，以便为担任该角色的任何用户提供权限。IAM 角色需要提供权限才能检索特定用户池 URLs 的嵌入内容。

借助通配符 *\$1*，您可以授予为特定命名空间中的所有用户生成 URL 的权限。您也可以授予为特定命名空间中的一部分用户生成 URL 的权限。为此，请添加 `quicksight:GenerateEmbedUrlForAnonymousUser`。

您可以在 IAM 策略中创建一个条件，限制开发人员可以在 `GenerateEmbedUrlForAnonymousUser` API 操作的 `AllowedDomains` 参数中列出的域。`AllowedDomains` 参数是可选参数。它允许开发者选择覆盖在 “**管理 Amazon Quick Sight**” 菜单中配置的静态域，而是列出最多三个可以访问生成的 URL 的域名或子域名。然后，此 URL 会嵌入开发人员的网站。只有参数中列出的域才能访问嵌入式 Q 搜索栏。如果没有此条件，开发人员可以在 `AllowedDomains` 参数中列出互联网上的任何域。

要限制开发人员可用于此参数的域，请在 IAM 策略中添加一个 `AllowedEmbeddingDomains` 条件。有关该`AllowedDomains`参数的更多信息，请参阅 *Amazon Quick Sight API 参考[GenerateEmbedUrlForAnonymousUser](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html)*中的。

**IAM 条件运算符的安全最佳实践**  
配置不当的 IAM 条件运算符可能会允许未经授权地通过 URL 变体访问您的嵌入式 Quick 资源。在您的 IAM 策略中使用`quicksight:AllowedEmbeddingDomains`条件密钥时，请使用条件运算符，允许特定域名或拒绝所有未特别允许的域。有关 IAM 条件运算符的更多信息，请参阅 [IAM 用户指南中的 IAM JSON 策略元素：条件运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)。  
许多不同的网址变体可以指向同一个资源。例如，以下 URLs 所有内容都解析为相同的内容：  
`https://example.com`
`https://example.com/`
`https://Example.com`
如果您的策略使用的运算符不考虑这些 URL 变体，则攻击者可以通过提供等效的 URL 变体来绕过您的限制。  
您必须验证您的 IAM 策略是否使用了适当的条件运算符来防止绕过漏洞，并确保只有您的目标域才能访问您的嵌入式资源。

您应用程序的 IAM 身份必须具有关联的信任策略，才允许访问您刚创建的角色。这意味着，在用户访问您的应用程序时，您的应用程序可以代表用户代入该角色，以加载生成式问答体验。下面演示了一个示例信任策略。

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
"Sid": "AllowLambdaFunctionsToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
"Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
"Sid": "AllowEC2InstancesToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
"Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

有关信任策略的更多信息，请参阅《IAM 用户指南》**中的 [IAM 临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)

### 步骤 2：生成附带身份验证代码的 URL
<a name="embedded-analytics-gen-bi-anonymous-users-step-2"></a>

在下节中，您可以了解如何对用户进行身份验证，并获取应用程序服务器上的可嵌入 Q 主题 URL。

用户访问您的应用程序时，该应用程序代表用户代入 IAM 角色。然后，如果该用户尚不存在，则该应用程序会将该用户添加到 Amazon Quick Sight。接下来，其会将标识符作为唯一角色会话 ID 进行传递。

#### Java
<a name="embedded-analytics-gen-bi-anonymous-users-java"></a>

```
import java.util.List;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.quicksight.AmazonQuickSight;
import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder;
import com.amazonaws.services.quicksight.model.AnonymousUserGenerativeQnAEmbeddingConfiguration;
import com.amazonaws.services.quicksight.model.AnonymousUserEmbeddingExperienceConfiguration;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserRequest;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserResult;
import com.amazonaws.services.quicksight.model.SessionTag;

/**
* Class to call QuickSight AWS SDK to generate embed url for anonymous user.
*/
public class GenerateEmbedUrlForAnonymousUserExample {

    private final AmazonQuickSight quickSightClient;

    public GenerateEmbedUrlForAnonymousUserExample() {
        quickSightClient = AmazonQuickSightClientBuilder
            .standard()
            .withRegion(Regions.US_EAST_1.getName())
            .withCredentials(new AWSCredentialsProvider() {
                    @Override
                    public AWSCredentials getCredentials() {
                        // provide actual IAM access key and secret key here
                        return new BasicAWSCredentials("access-key", "secret-key");
                    }

                    @Override
                    public void refresh() {
                    }
                }
            )
            .build();
    }

    public String GenerateEmbedUrlForAnonymousUser(
        final String accountId, // YOUR AWS ACCOUNT ID
        final String initialTopicId, // Q TOPIC ID TO WHICH THE CONSTRUCTED URL POINTS AND EXPERIENCE PREPOPULATES INITIALLY
        final String namespace, // ANONYMOUS EMBEDDING REQUIRES SPECIFYING A VALID NAMESPACE FOR WHICH YOU WANT THE EMBEDDING URL
        final List<String> authorizedResourceArns, // Q TOPIC ARN LIST TO EMBED
        final List<String> allowedDomains, // RUNTIME ALLOWED DOMAINS FOR EMBEDDING
        final List<SessionTag> sessionTags // SESSION TAGS USED FOR ROW-LEVEL SECURITY
    ) throws Exception {
        AnonymousUserEmbeddingExperienceConfiguration experienceConfiguration = new AnonymousUserEmbeddingExperienceConfiguration();
        AnonymousUserGenerativeQnAEmbeddingConfiguration generativeQnAConfiguration = new AnonymousUserGenerativeQnAEmbeddingConfiguration();
        generativeQnAConfiguration.setInitialTopicId(initialTopicId);
        experienceConfiguration.setGenerativeQnA(generativeQnAConfiguration);

        GenerateEmbedUrlForAnonymousUserRequest generateEmbedUrlForAnonymousUserRequest = new GenerateEmbedUrlForAnonymousUserRequest()
            .withAwsAccountId(accountId)
            .withNamespace(namespace)
            .withAuthorizedResourceArns(authorizedResourceArns)
            .withExperienceConfiguration(experienceConfiguration)
            .withSessionTags(sessionTags)
            .withSessionLifetimeInMinutes(600L); // OPTIONAL: VALUE CAN BE [15-600]. DEFAULT: 600
            .withAllowedDomains(allowedDomains);

        GenerateEmbedUrlForAnonymousUserResult result = quickSightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserRequest);

        return result.getEmbedUrl();
    }

}
```

#### JavaScript
<a name="embedded-analytics-gen-bi-anonymous-users-js"></a>

**注意**  
 APIs 不能直接从浏览器调用嵌入网址生成。请改为参考 Node.JS 示例。

#### Python3
<a name="embedded-analytics-gen-bi-anonymous-users-py"></a>

```
import json
import boto3
from botocore.exceptions import ClientError
import time

# Create QuickSight and STS clients
quicksightClient = boto3.client('quicksight',region_name='us-west-2')
sts = boto3.client('sts')

# Function to generate embedded URL for anonymous user
# accountId: YOUR AWS ACCOUNT ID
# topicId: Topic ID to embed
# quicksightNamespace: VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
# authorizedResourceArns: TOPIC ARN LIST TO EMBED
# allowedDomains: RUNTIME ALLOWED DOMAINS FOR EMBEDDING
# sessionTags: SESSION TAGS USED FOR ROW-LEVEL SECURITY
def generateEmbedUrlForAnonymousUser(accountId, quicksightNamespace, authorizedResourceArns, allowedDomains, sessionTags):
    try:
        response = quicksightClient.generate_embed_url_for_anonymous_user(
            AwsAccountId = accountId,
            Namespace = quicksightNamespace,
            AuthorizedResourceArns = authorizedResourceArns,
            AllowedDomains = allowedDomains,
            ExperienceConfiguration = {
                'GenerativeQnA': {
                        'InitialTopicId': topicId
                    }
            },
            SessionTags = sessionTags,
            SessionLifetimeInMinutes = 600
        )
            
        return {
            'statusCode': 200,
            'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"},
            'body': json.dumps(response),
            'isBase64Encoded':  bool('false')
        }
    except ClientError as e:
        print(e)
        return "Error generating embeddedURL: " + str(e)
```

#### Node.js
<a name="embedded-analytics-gen-bi-anonymous-users-node"></a>

以下示例显示了可以在应用服务器上用来生成嵌入式仪表板的 URL 的 JavaScript (Node.js)。您可以在网站或应用程序中使用该 URL 以显示控制面板。

**Example**  

```
const AWS = require('aws-sdk');
const https = require('https');

var quicksightClient = new AWS.Service({
    region: 'us-east-1',
});

quicksightClient.generateEmbedUrlForAnonymousUser({
    'AwsAccountId': '111122223333',
    'Namespace': 'DEFAULT'
    'AuthorizedResourceArns': '["topic-arn-topicId1","topic-arn-topicId2"]',
    'AllowedDomains': allowedDomains,
    'ExperienceConfiguration': { 
        'GenerativeQnA': {
            'InitialTopicId': 'U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f'
        }
    },
    'SessionTags': '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]',
    'SessionLifetimeInMinutes': 15
}, function(err, data) {
    console.log('Errors: ');
    console.log(err);
    console.log('Response: ');
    console.log(data);
});
```

#### .NET/C\$1
<a name="embedded-analytics-gen-bi-anonymous-users-cs"></a>

以下示例演示了可以在应用程序服务器上使用以生成嵌入式 Q 搜索栏 URL 的 .NET/C\$1 代码。您可以在网站或应用程序中使用此 URL 以显示 Q 搜索栏。

**Example**  

```
using System;
using Amazon.QuickSight;
using Amazon.QuickSight.Model;

namespace GenerateGenerativeQnAEmbedUrlForAnonymousUser
{
    class Program
    {
        static void Main(string[] args)
        {
            var quicksightClient = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                SessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                AnonymousUserGenerativeQnAEmbeddingConfiguration anonymousUserGenerativeQnAEmbeddingConfiguration
                    = new AnonymousUserGenerativeQnAEmbeddingConfiguration
                    {
                        InitialTopicId = "U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f"
                    };
                AnonymousUserEmbeddingExperienceConfiguration anonymousUserEmbeddingExperienceConfiguration
                    = new AnonymousUserEmbeddingExperienceConfiguration
                    {
                        GenerativeQnA = anonymousUserGenerativeQnAEmbeddingConfiguration
                    }; 
                
                Console.WriteLine(
                    quicksightClient.GenerateEmbedUrlForAnonymousUserAsync(new GenerateEmbedUrlForAnonymousUserRequest
                    {
                        AwsAccountId = "111122223333",
                        Namespace = "DEFAULT",
                        AuthorizedResourceArns '["topic-arn-topicId1","topic-arn-topicId2"]',
                        AllowedDomains = allowedDomains,
                        ExperienceConfiguration = anonymousUserEmbeddingExperienceConfiguration,
                        SessionTags = '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]',
                        SessionLifetimeInMinutes = 15,
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
```

#### AWS CLI
<a name="embedded-analytics-gen-bi-anonymous-users-cli"></a>

要代入该角色，请选择以下 AWS Security Token Service (AWS STS) API 操作之一：
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— 当您使用 IAM 身份代入角色时，请使用此操作。
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— 当您使用 Web 身份提供商对用户进行身份验证时，请使用此操作。
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 当您使用 SAML 对用户进行身份验证时，请使用此操作。

以下示例显示了用于设置 IAM 角色的 CLI 命令。该角色需要为 `quicksight:GenerateEmbedUrlForAnonymousUser` 启用权限。

```
aws sts assume-role \
     --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_generative_qna_role" \
     --role-session-name anonymous caller
```

`assume-role` 操作返回三个输出参数：访问密钥、私有密钥和会话令牌。

**注意**  
如果在调用 `AssumeRole` 操作时遇到 `ExpiredToken` 错误，可能是因为之前的 `SESSION TOKEN` 仍在环境变量中。通过设置以下变量可以解决这一问题：  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1访问密钥* 
*AWS\$1SESSION\$1代币* 

以下示例说明了如何在 CLI 中设置这三个参数。对于 Microsoft Windows 计算机，请使用 `set` 而不是 `export`。

```
export AWS_ACCESS_KEY_ID     = "access_key_from_assume_role"
export AWS_SECRET_ACCESS_KEY = "secret_key_from_assume_role"
export AWS_SESSION_TOKEN     = "session_token_from_assume_role"
```

如果运行这些命令，则会将访问您的网站的用户的角色会话 ID 设置为 `embedding_quicksight_q_search_bar_role/QuickSightEmbeddingAnonymousPolicy`。角色会话 ID 由 `role-arn` 中的角色名称和 `role-session-name` 值组成。每个用户使用唯一的角色会话 ID 可以确保为每个用户设置相应的权限。此外，它还能避免任何用户访问限制。*限制*是一项安全功能，可防止同一个用户从多个位置访问 Amazon Quick Sight。它还能使每个会话保持独立和独特。如果您使用一组 Web 服务器（例如用于负载平衡），并且会话重新连接到其他服务器，则会开始新的会话。

要获取控制面板的签名 URL，请从应用程序服务器中调用 `generate-embed-url-for-anynymous-user`。这会返回可嵌入的控制面板 URL。以下示例演示了如何使用服务器端调用为匿名访问您 Web 门户或应用程序的用户生成嵌入式控制面板的 URL。

```
aws quicksight generate-embed-url-for-anonymous-user \
--aws-account-id 111122223333 \
--namespace default-or-something-else \
--authorized-resource-arns '["topic-arn-topicId","topic-arn-topicId2"]' \
--allowed-domains '["domain1","domain2"]' \
--experience-configuration 'GenerativeQnA={InitialTopicId="topicId1"}' \
--session-tags '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]' \
--session-lifetime-in-minutes 15
```

有关使用此操作的更多信息，请参阅 [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html)。您可以在自己的代码中使用该 API 操作和其他操作。

### 步骤 3：嵌入生成式问答体验 URL
<a name="embedded-analytics-gen-bi-anonymous-users-step-3"></a>

在以下部分中，您可以了解如何将生成式问答体验嵌入网站或应用程序页面。你可以使用 [Amazon Quick Sight 嵌入式 SDK](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript) 来做到这一点。通过使用该开发工具包，您可以执行以下操作：
+ 将生成式问答体验放置到 HTML 页面上。
+ 自定义嵌入式体验的布局和外观以满足您的应用程序需求。
+ 使用为应用程序自定义的消息处理错误状态。

要生成可嵌入应用程序的 URL，请调用 `GenerateEmbedUrlForAnonymousUser` API 操作。该 URL 的有效时间为 5 分钟，生成的会话有效时间为 10 个小时。该 API 操作为 URL 提供 `auth_code` 值以启用单点登录会话。

下面显示了 `generate-embed-url-for-anonymous-user` 的示例响应：

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
//readability and added ellipsis to indicate that it's incomplete.{
     "Status": "200",
     "EmbedUrl": "https://quicksightdomain/embedding/12345/q/search...",
     "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
}
```

使用 [Amazon Quick Sight 嵌入式 SDK](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) 或将此 URL 添加到 iframe 中，将生成式问答体验嵌入到您的网页中。如果您设置了固定的高度和宽度数字（以像素为单位），Amazon Quick Sight 会使用这些数字，并且不会在窗口大小调整时更改视觉效果。如果您设置相对的百分比高度和宽度，Amazon Quick Sight 会提供响应式布局，该布局会随着窗口大小的变化而进行修改。

确保托管生成问答体验的域名位于*允许列表中*，这是您订阅 Amazon Quick Sight 的已批准域名列表。此要求可阻止未经批准的域托管嵌入生成式问答体验，从而保护您的数据。有关为嵌入生成式问答体验添加域的更多信息，请参阅 [管理域名](manage-domains.md)。

您可以使用 Amazon Quick Sight Embedding SDK 自定义嵌入式生成问答体验的布局和外观，以适应您的应用程序。使用 `panelType` 属性配置生成式问答体验在您的应用程序中呈现时的着陆状态。将 `panelType` 属性设置为 `'FULL'` 以呈现完整的生成式问答体验面板。此面板类似于 Amazon Quick Sight 用户在 Amazon Quick Sight 控制台中的体验。面板的框架高度不会根据用户交互进行更改，并且会遵循您在 `frameOptions.height` 属性中设置的值。下图显示了当您将 `panelType` 值设置为 `'FULL'` 时呈现的生成式问答体验面板。

将 `panelType` 属性设置为 `'SEARCH_BAR'`，以将生成式问答体验呈现为搜索栏。该搜索栏类似于 Q 搜索栏嵌入到应用程序中时的呈现方式。生成式问答搜索栏扩展到更大的面板，其显示主题选择选项、问题建议列表、答案面板或 Pinboard。

当嵌入资产加载时，会呈现生成式问答搜索栏的默认最小高度。建议您将 `frameOptions.height` 值设置为 `"38px"`，以优化搜索栏体验。使用 `focusedHeight` 属性设置主题选择下拉列表和问题建议列表的最佳大小。使用 `expandedHeight` 属性设置答案面板和 Pinboard 的最佳大小。如果选择 `'SEARCH_BAR'` 选项，则建议您使用 position;absolute 设置父容器的样式，以避免应用程序中出现不必要的内容移动。下图显示了当您将 `panelType` 值设置为 `'SEARCH_BAR'` 时呈现的生成式问答体验搜索栏。

配置`panelType`属性后，使用 Amazon Quick Sight 嵌入式 SDK 自定义生成问答体验的以下属性。
+ 生成式问答面板的标题（仅适用于 `panelType: FULL` 选项）。
+ 搜索栏的占位符文本。
+ 是否允许选择主题。
+ 主题名称是显示还是隐藏。
+ Amazon Q 图标是显示还是隐藏（仅适用于 `panelType: FULL` 选项）。
+ Pinboard 是显示还是隐藏。
+ 用户是否可以将生成式问答面板最大化为全屏显示。
+ 生成式问答面板的主题。可以在 SDK 中传递自定义主题 ARN 来更改框架内容的外观。嵌入式生成式 BI 面板不支持 Amazon Quick Sight 入门主题。要使用 Amazon Quick Sight 入门主题，请将其另存为亚马逊 Quick Sight 中的自定义主题。

当您使用 Amazon Quick Sight Embedging SDK 时，页面上的生成式问答体验会根据状态动态调整大小。借助 Amazon Quick Sight Embedding SDK，您还可以控制生成问答体验中的参数，并接收有关页面加载完成、状态更改和错误的回调。

以下示例演示了如何使用生成的 URL。此代码在您的应用程序服务器上生成。

#### SDK 2.0
<a name="embedded-analytics-gen-bi-anonymous-users-sdkv2"></a>

```
<!DOCTYPE html>
<html>
    <head>
        <title>Generative Q&A Embedding Example</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.7.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            const embedGenerativeQnA = async() => {    
                const {createEmbeddingContext} = QuickSightEmbedding;

                const embeddingContext = await createEmbeddingContext({
                    onChange: (changeEvent, metadata) => {
                        console.log('Context received a change', changeEvent, metadata);
                    },
                });

                const frameOptions = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: '#experience-container',
                    height: "700px",
                    width: "1000px",
                    onChange: (changeEvent, metadata) => {
                        switch (changeEvent.eventName) {
                            case 'FRAME_MOUNTED': {
                                console.log("Do something when the experience frame is mounted.");
                                break;
                            }
                            case 'FRAME_LOADED': {
                                console.log("Do something when the experience frame is loaded.");
                                break;
                            }
                        }
                    },
                };

                const contentOptions = {
                    // Optional panel settings. Default behavior is equivalent to {panelType: 'FULL'}
                    panelOptions: {
                        panelType: 'FULL',
                        title: 'custom title', // Optional
                        showQIcon: false, // Optional, Default: true
                    },
                    // Use SEARCH_BAR panel type for the landing state to be similar to embedQSearchBar
                    // with generative capability enabled topics
                    /*
                    panelOptions: {
                        panelType: 'SEARCH_BAR',
                        focusedHeight: '250px',
                        expandedHeight: '500px',
                    },
                    */
                    showTopicName: false, // Optional, Default: true
                    showPinboard: false, // Optional, Default: true
                    allowTopicSelection: false, // Optional, Default: true
                    allowFullscreen: false, // Optional, Default: true
                    searchPlaceholderText: "custom search placeholder", // Optional
                    themeOptions: { // Optional
                        themeArn: 'arn:aws:quicksight:<Region>:<AWS-Account-ID>:theme/<Theme-ID>'
                    }
                    onMessage: async (messageEvent, experienceMetadata) => {
                        switch (messageEvent.eventName) {
                            case 'Q_SEARCH_OPENED': {
                                // called when pinboard is shown / visuals are rendered
                                console.log("Do something when SEARCH_BAR type panel is expanded");
                                break;
                            }
                            case 'Q_SEARCH_FOCUSED': {
                                // called when question suggestions or topic selection dropdown are shown
                                console.log("Do something when SEARCH_BAR type panel is focused");
                                break;
                            }
                            case 'Q_SEARCH_CLOSED': {
                                // called when shrinked to initial bar height
                                console.log("Do something when SEARCH_BAR type panel is collapsed");
                                break;
                            }
                            case 'Q_PANEL_ENTERED_FULLSCREEN': {
                                console.log("Do something when panel enters full screen mode");
                                break;
                            }
                            case 'Q_PANEL_EXITED_FULLSCREEN': {
                                console.log("Do something when panel exits full screen mode");
                                break;
                            }
                            case 'CONTENT_LOADED': {
                                console.log("Do something after experience is loaded");
                                break;
                            }
                            case 'ERROR_OCCURRED': {
                                console.log("Do something when experience fails to load");
                                break;
                            }
                        }
                    }
                };
                const embeddedGenerativeQnExperience = await embeddingContext.embedGenerativeQnA(frameOptions, contentOptions);
            };
        </script>
    </head>

    <body onload="embedGenerativeQnA()">
        <div id="experience-container"></div>
    </body>

</html>
```

要使此示例起作用，请务必使用 Amazon Quick Sight Embedding SDK 在您的网站上加载嵌入式生成问答体验 JavaScript。要获取副本，请执行下列操作之一：
+ 从中下载 [Amazon Quick Sight 嵌入 SDK](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) GitHub。该存储库由一组 Amazon Quick Sight 开发人员维护。
+ 从下载最新的嵌入式 SDK 版本[https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)。
+ 如果您使用`npm` JavaScript 依赖关系，请通过运行以下命令下载并安装它。

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

### 可选的嵌入生成式问答体验功能
<a name="embedded-analytics-gen-bi-anonymous-users-step-4"></a>

以下可选功能可用于使用 Embedding SDK 的嵌入生成式问答体验。

#### 调用生成式问答搜索栏操作
<a name="w2aac35c27c21c43c29c13c25b5"></a>
+ 设置问题 — 此功能将问题发送到生成式问答体验并立即查询问题。

  ```
  embeddedGenerativeQnExperience.setQuestion('show me monthly revenue');
  ```
+ 关闭答案面板（适用于生成式问答搜索栏选项）— 此功能将关闭答案面板并将 iframe 返回到原始搜索栏状态。

  ```
  embeddedGenerativeQnExperience.close();
  ```

有关更多信息，请参阅 [Amazon Quick Sight 嵌入软件开发工具包](https://github.com/awslabs/amazon-quicksight-embedding-sdk)。

# 嵌入 Amazon Quick Sight Q 搜索栏（经典版）
<a name="embedding-quicksight-q"></a>


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

**注意**  
嵌入式的 Amazon Quick Sight Q 搜索栏提供经典的 Amazon Quick Sight 问答体验。Amazon Quick Sight 与 Amazon Q Business 集成，推出全新的生成问答体验。建议开发人员使用全新的生成式问答体验。有关嵌入式生成问答体验的更多信息，请参阅在 [Amazon Quick Sight 生成问答体验中嵌入 Amazon Q](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html)。

使用以下主题了解如何将 Amazon Quick Sight Q 搜索栏嵌入 Amazon Quick Sight APIs。

**Topics**
+ [为注册用户嵌入 Amazon Quick Sight Q 搜索栏](embedded-analytics-q-search-bar-for-authenticated-users.md)
+ [为匿名（未注册）用户嵌入 Amazon Quick Sight Q 搜索栏](embedded-analytics-q-search-bar-for-anonymous-users.md)

# 为注册用户嵌入 Amazon Quick Sight Q 搜索栏
<a name="embedded-analytics-q-search-bar-for-authenticated-users"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

**注意**  
嵌入式的 Amazon Quick Sight Q 搜索栏提供经典的 Amazon Quick Sight 问答体验。Amazon Quick Sight 与 Amazon Q Business 集成，推出全新的生成问答体验。建议开发人员使用全新的生成式问答体验。有关嵌入式生成问答体验的更多信息，请参阅在 [Amazon Quick Sight 生成问答体验中嵌入 Amazon Q](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html)。

在以下各节中，您可以找到有关如何为 Amazon Quick Sight 的注册用户设置嵌入式 Amazon Quick Sight Q 搜索栏的详细信息。

**Topics**
+ [步骤 1：设置权限](#embedded-q-bar-for-authenticated-users-step-1)
+ [步骤 2：生成附带身份验证代码的 URL](#embedded-q-bar-for-authenticated-users-step-2)
+ [步骤 3：嵌入 Q 搜索栏 URL](#embedded-q-bar-for-authenticated-users-step-3)
+ [可选的 Amazon Quick Sight Q 搜索栏嵌入功能](#embedded-q-bar-for-authenticated-users-step-4)

## 步骤 1：设置权限
<a name="embedded-q-bar-for-authenticated-users-step-1"></a>

**注意**  
嵌入式的 Amazon Quick Sight Q 搜索栏提供经典的 Amazon Quick Sight 问答体验。Amazon Quick Sight 与 Amazon Q Business 集成，推出全新的生成问答体验。建议开发人员使用全新的生成式问答体验。有关嵌入式生成问答体验的更多信息，请参阅在 [Amazon Quick Sight 生成问答体验中嵌入 Amazon Q](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html)。

在以下部分中，您可以了解如何设置后端应用程序或 Web 服务器的权限来嵌入 Q 搜索栏。此任务需要对 AWS Identity and Access Management (IAM) 的管理权限。

每个访问控制面板的用户都扮演一个角色，授予他们 Amazon Quick Sight 访问控制面板的权限和权限。要实现这一点，请在您的中创建一个 IAM 角色 AWS 账户。将一个 IAM 策略与该角色相关联，以便为担任该角色的任何用户提供权限。IAM 角色需要提供权限才能检索特定用户池 URLs 的嵌入内容。

借助通配符 *\$1*，您可以授予为特定命名空间中的所有用户生成 URL 的权限。您也可以授予为特定命名空间中的一部分用户生成 URL 的权限。为此，请添加 `quicksight:GenerateEmbedUrlForRegisteredUser`。

您可以在 IAM 策略中创建一个条件，限制开发人员可以在 `GenerateEmbedUrlForRegisteredUser` API 操作的 `AllowedDomains` 参数中列出的域。`AllowedDomains` 参数是可选参数。它允许开发者选择覆盖在 “**管理 Amazon Quick Sight**” 菜单中配置的静态域，而是列出最多三个可以访问生成的 URL 的域名或子域名。然后，此 URL 会嵌入开发人员的网站。只有参数中列出的域才能访问嵌入式 Q 搜索栏。如果没有此条件，开发人员可以在 `AllowedDomains` 参数中列出互联网上的任何域。

要限制开发人员可用于此参数的域，请在 IAM 策略中添加一个 `AllowedEmbeddingDomains` 条件。有关该`AllowedDomains`参数的更多信息，请参阅 *Amazon Quick Sight API 参考[GenerateEmbedUrlForRegisteredUser](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)*中的。

**IAM 条件运算符的安全最佳实践**  
配置不当的 IAM 条件运算符可能会允许未经授权地通过 URL 变体访问您的嵌入式 Quick 资源。在您的 IAM 策略中使用`quicksight:AllowedEmbeddingDomains`条件密钥时，请使用条件运算符，允许特定域名或拒绝所有未特别允许的域。有关 IAM 条件运算符的更多信息，请参阅 [IAM 用户指南中的 IAM JSON 策略元素：条件运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)。  
许多不同的网址变体可以指向同一个资源。例如，以下 URLs 所有内容都解析为相同的内容：  
`https://example.com`
`https://example.com/`
`https://Example.com`
如果您的策略使用的运算符不考虑这些 URL 变体，则攻击者可以通过提供等效的 URL 变体来绕过您的限制。  
您必须验证您的 IAM 策略是否使用了适当的条件运算符来防止绕过漏洞，并确保只有您的目标域才能访问您的嵌入式资源。

以下示例策略提供了这些权限。

此外，如果您要创建将成为 Amazon Quick Sight 读者的首次用户，请务必在策略中添加`quicksight:RegisterUser`权限。

以下示例策略为即将成为 Amazon Quick Sight 读者的首次用户提供了检索嵌入网址的权限。

最后，您应用程序的 IAM 身份必须具有关联的信任策略，才允许访问您刚创建的角色。这意味着，当用户访问您的应用程序时，您的应用程序可以代表用户担任该角色并在 Amazon Quick Sight 中配置用户。

下面演示了一个示例信任策略。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowLambdaFunctionsToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Sid": "AllowEC2InstancesToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

有关 OpenID Connect 或安全断言标记语言（SAML）身份验证的信任策略的更多信息，请参阅《IAM 用户指南**》的以下章节：
+ [创建用于 Web 联合身份验证或 OpenID Connect 联合身份验证的角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html)
+ [创建用于 SAML 2.0 联合身份验证的角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)

## 步骤 2：生成附带身份验证代码的 URL
<a name="embedded-q-bar-for-authenticated-users-step-2"></a>

**注意**  
嵌入式的 Amazon Quick Sight Q 搜索栏提供经典的 Amazon Quick Sight 问答体验。Amazon Quick Sight 与 Amazon Q Business 集成，推出全新的生成问答体验。建议开发人员使用全新的生成式问答体验。有关嵌入式生成问答体验的更多信息，请参阅在 [Amazon Quick Sight 生成问答体验中嵌入 Amazon Q](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html)。

在下节中，您可以了解如何对用户进行身份验证，并获取应用程序服务器上的可嵌入 Q 主题 URL。如果您计划为 IAM 或 Amazon Quick Sight 身份类型嵌入 Q 栏，请与用户共享 Q 主题。

用户访问您的应用程序时，该应用程序代表用户代入 IAM 角色。然后，如果该用户尚不存在，则该应用程序会将该用户添加到 Amazon Quick Sight。接下来，其会将标识符作为唯一角色会话 ID 进行传递。

执行上述步骤可确保在 Amazon Quick Sight 中对 Q 主题的每位查看者进行唯一配置。它还实施每个用户的设置，例如，行级别安全性和参数的动态默认值。

以下示例展示了代表用户执行 IAM 身份验证。此代码在您的应用程序服务器上运行。

### Java
<a name="embedded-q-bar-for-embedded-q-bar-for-authenticated-users-java"></a>

```
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
        import com.amazonaws.auth.AWSCredentialsProvider;
        import com.amazonaws.regions.Regions;
        import com.amazonaws.services.quicksight.AmazonQuickSight;
        import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserRequest;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserResult;
import com.amazonaws.services.quicksight.model.RegisteredUserEmbeddingExperienceConfiguration;
import com.amazonaws.services.quicksight.model.RegisteredUserQSearchBarEmbeddingConfiguration;

        /**
 * Class to call QuickSight AWS SDK to get url for embedding the Q search bar.
        */
public class RegisteredUserQSearchBarEmbeddingConfiguration {

            private final AmazonQuickSight quickSightClient;

    public RegisteredUserQSearchBarEmbeddingConfiguration() {
        this.quickSightClient = AmazonQuickSightClientBuilder
                    .standard()
                    .withRegion(Regions.US_EAST_1.getName())
                    .withCredentials(new AWSCredentialsProvider() {
                            @Override
                            public AWSCredentials getCredentials() {
                                // provide actual IAM access key and secret key here
                                return new BasicAWSCredentials("access-key", "secret-key");
                            }

                            @Override
                            public void refresh() {
                            }
                        }
                    )
                    .build();
            }

    public String getQuicksightEmbedUrl(
            final String accountId, // AWS Account ID
            final String topicId, // Topic ID to embed
            final List<String> allowedDomains, // Runtime allowed domain for embedding
            final String userArn // Registered user arn to use for embedding. Refer to Get Embed Url section in developer portal to find how to get user arn for a QuickSight user.
            ) throws Exception {
        final RegisteredUserEmbeddingExperienceConfiguration experienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration()
                .withQSearchBar(new RegisteredUserQSearchBarEmbeddingConfiguration().withInitialTopicId(topicId));
        final GenerateEmbedUrlForRegisteredUserRequest generateEmbedUrlForRegisteredUserRequest = new GenerateEmbedUrlForRegisteredUserRequest();
        generateEmbedUrlForRegisteredUserRequest.setAwsAccountId(accountId);
        generateEmbedUrlForRegisteredUserRequest.setUserArn(userArn);
        generateEmbedUrlForRegisteredUserRequest.setAllowedDomains(allowedDomains);
        generateEmbedUrlForRegisteredUserRequest.setExperienceConfiguration(QSearchBar);

        final GenerateEmbedUrlForRegisteredUserResult generateEmbedUrlForRegisteredUserResult = quickSightClient.generateEmbedUrlForRegisteredUser(generateEmbedUrlForRegisteredUserRequest);

        return generateEmbedUrlForRegisteredUserResult.getEmbedUrl();
            }
        }
```

### JavaScript
<a name="embedded-q-bar-for-embedded-q-bar-for-authenticated-users-js"></a>

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function generateEmbedUrlForRegisteredUser(
    accountId,
    topicId, // Topic ID to embed
    openIdToken, // Cognito-based token
    userArn, // registered user arn
    roleArn, // IAM user role to use for embedding
    sessionName, // Session name for the roleArn assume role
    allowedDomains, // Runtime allowed domain for embedding
    getEmbedUrlCallback, // GetEmbedUrl success callback method
    errorCallback // GetEmbedUrl error callback method
    ) {
    const stsClient = new AWS.STS();
    let stsParams = {
        RoleSessionName: sessionName,
        WebIdentityToken: openIdToken,
        RoleArn: roleArn
        }
    
    stsClient.assumeRoleWithWebIdentity(stsParams, function(err, data) {
        if (err) {
            console.log('Error assuming role');
            console.log(err, err.stack);
            errorCallback(err);
        } else {
            const getQSearchBarParams = {
        "AwsAccountId": accountId,
                "ExperienceConfiguration": {
                    "QSearchBar": {
                        "InitialTopicId": topicId
                    }
                },
                "UserArn": userArn,
        "AllowedDomains": allowedDomains,
        "SessionLifetimeInMinutes": 600
    };

            const quicksightGetQSearchBar = new AWS.QuickSight({
        region: process.env.AWS_REGION,
                credentials: {
                    accessKeyId: data.Credentials.AccessKeyId,
                    secretAccessKey: data.Credentials.SecretAccessKey,
                    sessionToken: data.Credentials.SessionToken,
                    expiration: data.Credentials.Expiration
                }
    });

            quicksightGetQSearchBar.generateEmbedUrlForRegisteredUser(getQSearchBarParams, function(err, data) {
        if (err) {
            console.log(err, err.stack);
            errorCallback(err);
        } else {
            const result = {
                "statusCode": 200,
                "headers": {
                            "Access-Control-Allow-Origin": "*", // Use your website domain to secure access to GetEmbedUrl API
                    "Access-Control-Allow-Headers": "Content-Type"
                },
                "body": JSON.stringify(data),
                "isBase64Encoded": false
            }
                    getEmbedUrlCallback(result);
                }
            });
        }
    });
}
```

### Python3
<a name="embedded-q-bar-for-embedded-q-bar-for-authenticated-users-python"></a>

```
import json
import boto3
from botocore.exceptions import ClientError

sts = boto3.client('sts')

# Function to generate embedded URL  
# accountId: AWS account ID
# topicId: Topic ID to embed
# userArn: arn of registered user
# allowedDomains: Runtime allowed domain for embedding
# roleArn: IAM user role to use for embedding
# sessionName: session name for the roleArn assume role
def getEmbeddingURL(accountId, topicId, userArn, allowedDomains, roleArn, sessionName):
    try:
        assumedRole = sts.assume_role(
            RoleArn = roleArn,
            RoleSessionName = sessionName,
        )
    except ClientError as e:
        return "Error assuming role: " + str(e)
    else: 
        assumedRoleSession = boto3.Session(
            aws_access_key_id = assumedRole['Credentials']['AccessKeyId'],
            aws_secret_access_key = assumedRole['Credentials']['SecretAccessKey'],
            aws_session_token = assumedRole['Credentials']['SessionToken'],
        )
        try:
            quicksightClient = assumedRoleSession.client('quicksight', region_name='us-west-2')
            response = quicksightClient.generate_embed_url_for_registered_user(
                AwsAccountId=accountId,
                ExperienceConfiguration = {
                    "QSearchBar": {
                        "InitialTopicId": topicId
                    }
                },
                UserArn = userArn,
                AllowedDomains = allowedDomains,
                SessionLifetimeInMinutes = 600
            )
            
            return {
                'statusCode': 200,
                'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"},
                'body': json.dumps(response),
                'isBase64Encoded':  bool('false')
            }
        except ClientError as e:
            return "Error generating embedding url: " + str(e)
```

### Node.js
<a name="embedded-q-bar-for-embedded-q-bar-for-authenticated-users-node"></a>

以下示例显示了可以在应用服务器上用来生成嵌入式仪表板的 URL 的 JavaScript (Node.js)。您可以在网站或应用程序中使用该 URL 以显示控制面板。

**Example**  

```
const AWS = require('aws-sdk');
const https = require('https');

var quicksightClient = new AWS.Service({
    apiConfig: require('./quicksight-2018-04-01.min.json'),
    region: 'us-east-1',
});

quicksightClient.generateEmbedUrlForRegisteredUser({
    'AwsAccountId': '111122223333',
    'ExperienceConfiguration': { 
        'QSearchBar': {
            'InitialTopicId': 'U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f'
        }
    },
    'UserArn': 'REGISTERED_USER_ARN',
    'AllowedDomains': allowedDomains,
    'SessionLifetimeInMinutes': 100
}, function(err, data) {
    console.log('Errors: ');
    console.log(err);
    console.log('Response: ');
    console.log(data);
});
```

**Example**  

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
//readability and added ellipsis to indicate that it's incomplete.
    { 
        Status: 200,
        EmbedUrl: "https://quicksightdomain/embed/12345/dashboards/67890/sheets/12345/visuals/67890...",
        RequestId: '7bee030e-f191-45c4-97fe-d9faf0e03713' 
    }
```

### .NET/C\$1
<a name="embedded-q-bar-for-embedded-q-bar-for-authenticated-users-cs"></a>

以下示例演示了可以在应用程序服务器上使用以生成嵌入式 Q 搜索栏 URL 的 .NET/C\$1 代码。您可以在网站或应用程序中使用此 URL 以显示 Q 搜索栏。

**Example**  

```
using System;
using Amazon.QuickSight;
using Amazon.QuickSight.Model;

namespace GenerateDashboardEmbedUrlForRegisteredUser
{
    class Program
    {
        static void Main(string[] args)
        {
            var quicksightClient = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                SessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                RegisteredUserQSearchBarEmbeddingConfiguration registeredUserQSearchBarEmbeddingConfiguration
                    = new RegisteredUserQSearchBarEmbeddingConfiguration
                    {
                        InitialTopicId = "U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f"
                    };
                RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration
                    = new RegisteredUserEmbeddingExperienceConfiguration
                    {
                        QSearchBar = registeredUserQSearchBarEmbeddingConfiguration
                    }; 
                
                Console.WriteLine(
                    quicksightClient.GenerateEmbedUrlForRegisteredUserAsync(new GenerateEmbedUrlForRegisteredUserRequest
                    {
                        AwsAccountId = "111122223333",
                        ExperienceConfiguration = registeredUserEmbeddingExperienceConfiguration,
                        UserArn = "REGISTERED_USER_ARN",
                        AllowedDomains = allowedDomains,
                        SessionLifetimeInMinutes = 100
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
```

### AWS CLI
<a name="embedded-q-bar-for-embedded-q-bar-for-authenticated-users-cli"></a>

要代入该角色，请选择以下 AWS Security Token Service (AWS STS) API 操作之一：
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— 当您使用 IAM 身份代入角色时，请使用此操作。
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— 当您使用 Web 身份提供商对用户进行身份验证时，请使用此操作。
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 当您使用 SAML 对用户进行身份验证时，请使用此操作。

以下示例显示了用于设置 IAM 角色的 CLI 命令。该角色需要为 `quicksight:GenerateEmbedUrlForRegisteredUser` 启用权限。如果您要在用户使用 Q 搜索栏中的主题时添加用户，则还需要为该角色启用权限`quicksight:RegisterUser`。 just-in-time

```
aws sts assume-role \
     --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_q_search_bar_role" \
     --role-session-name john.doe@example.com
```

`assume-role` 操作返回三个输出参数：访问密钥、私有密钥和会话令牌。

**注意**  
如果在调用 `AssumeRole` 操作时遇到 `ExpiredToken` 错误，可能是因为之前的 `SESSION TOKEN` 仍在环境变量中。通过设置以下变量可以解决这一问题：  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1访问密钥* 
*AWS\$1SESSION\$1代币* 

以下示例说明了如何在 CLI 中设置这三个参数。对于 Microsoft Windows 计算机，请使用 `set` 而不是 `export`。

```
export AWS_ACCESS_KEY_ID     = "access_key_from_assume_role"
export AWS_SECRET_ACCESS_KEY = "secret_key_from_assume_role"
export AWS_SESSION_TOKEN     = "session_token_from_assume_role"
```

如果运行这些命令，则会将访问您的网站的用户的角色会话 ID 设置为 `embedding_quicksight_q_search_bar_role/john.doe@example.com`。角色会话 ID 由 `role-arn` 中的角色名称和 `role-session-name` 值组成。每个用户使用唯一的角色会话 ID 可以确保为每个用户设置相应的权限。此外，它还能避免任何用户访问限制。*限制*是一项安全功能，可防止同一个用户从多个位置访问 Amazon Quick Sight。

角色会话 ID 也将成为 Amazon Quick Sight 中的用户名。您可以使用此模式提前在 Amazon Quick Sight 中配置用户，或者在他们首次访问 Q 搜索栏时为他们进行配置。

以下示例显示了可用于预置用户的 CLI 命令。有关[RegisterUser[DescribeUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html)](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html)、和其他 Amazon Quick Sight API 操作的更多信息，请参阅 [Amazon Quick Sight API 参考](https://docs.aws.amazon.com/quicksight/latest/APIReference/Welcome.html)。

```
aws quicksight register-user \
    --aws-account-id 111122223333 \
    --namespace default \
    --identity-type IAM \
    --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_q_search_bar_role" \
    --user-role READER \
    --user-name jhnd \
    --session-name "john.doe@example.com" \
    --email john.doe@example.com \
    --region us-east-1 \
    --custom-permissions-name TeamA1
```

如果用户通过 Microsoft AD 进行身份验证，则无需使用 `RegisterUser` 进行设置。相反，他们应该在首次访问 Amazon Quick Sight 时自动订阅。对于 Microsoft AD 用户，您可以使用 `DescribeUser` 获取用户 Amazon 资源名称（ARN）。

用户首次访问 Amazon Quick Sight 时，您也可以将该用户添加到与之共享控制面板的群组中。以下示例显示了将用户添加到组的 CLI 命令。

```
aws quicksight create-group-membership \
    --aws-account-id=111122223333 \
    --namespace=default \
    --group-name=financeusers \
    --member-name="embedding_quicksight_q_search_bar_role/john.doe@example.com"
```

现在，您的应用程序的用户也是 Amazon Quick Sight 的用户，并且可以访问控制面板。

最后，要获取控制面板的签名 URL，请从应用程序服务器中调用 `generate-embed-url-for-registered-user`。这会返回可嵌入的控制面板 URL。以下示例说明如何使用服务器端调用为通过身份验证 AWS Managed Microsoft AD 或单点登录（IAM Identity Center）进行身份验证的用户生成嵌入式控制面板的 URL。

```
aws quicksight generate-embed-url-for-registered-user \
--aws-account-id 111122223333 \
--session-lifetime-in-minutes 600 \
--user-arn arn:aws:quicksight:us-east-1:111122223333:user/default/embedding_quicksight_q_search_bar_role/embeddingsession
--allowed-domains '["domain1","domain2"]' \
--experience-configuration QSearchBar={InitialTopicId=U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f}
```

有关使用此操作的更多信息，请参阅 [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)。您可以在自己的代码中使用该 API 操作和其他操作。

## 步骤 3：嵌入 Q 搜索栏 URL
<a name="embedded-q-bar-for-authenticated-users-step-3"></a>

**注意**  
嵌入式的 Amazon Quick Sight Q 搜索栏提供经典的 Amazon Quick Sight 问答体验。Amazon Quick Sight 与 Amazon Q Business 集成，推出全新的生成问答体验。建议开发人员使用全新的生成式问答体验。有关嵌入式生成问答体验的更多信息，请参阅在 [Amazon Quick Sight 生成问答体验中嵌入 Amazon Q](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html)。

在以下部分中，您可以了解如何将步骤 3 中的 Q 搜索栏 URL 嵌入网站或应用程序页面。你可以使用 [Amazon Quick Sight 嵌入式 SDK](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript) 来做到这一点。通过使用该开发工具包，您可以执行以下操作：
+ 将 Q 搜索栏放置到 HTML 页面上。
+ 将参数传递到 Q 搜索栏。
+ 使用为应用程序自定义的消息处理错误状态。

要生成可嵌入应用程序的 URL，请调用 `GenerateEmbedUrlForRegisteredUser` API 操作。该 URL 的有效时间为 5 分钟，生成的会话有效时间为 10 个小时。该 API 操作为 URL 提供 `auth_code` 值以启用单点登录会话。

下面显示了 `generate-embed-url-for-registered-user` 的示例响应：

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
//readability and added ellipsis to indicate that it's incomplete.
{
     "Status": "200",
     "EmbedUrl": "https://quicksightdomain/embedding/12345/q/search...",
     "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
}
```

使用 [Amazon Quick Sight 嵌入式 SDK 或将此 URL 添加到 iframe 中，将 Q 搜索栏嵌](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)入到您的网页中。如果您设置了固定的高度和宽度数字（以像素为单位），Amazon Quick Sight 会使用这些数字，并且不会在窗口大小调整时更改视觉效果。如果您设置相对的百分比高度和宽度，Amazon Quick Sight 会提供响应式布局，该布局会随着窗口大小的变化而进行修改。

为此，请确保托管嵌入式 Q 搜索栏的域名位于*允许列表中*，即您的 Amazon Quick Sight 订阅的已批准域名列表。这一要求可阻止未经批准的域托管嵌入式控制面板，从而保护您的数据。有关为嵌入式 Q 搜索栏添加域名的更多信息，请参阅[管理域和嵌入](https://docs.aws.amazon.com/quicksight/latest/user/manage-qs-domains-and-embedding.html)。

当您使用 Amazon Quick Sight Embedding SDK 时，页面上的 Q 搜索栏会根据状态动态调整大小。通过使用 Amazon Quick Sight Embedding SDK，您还可以控制 Q 搜索栏中的参数，并接收有关页面加载完成和错误的回调。

以下示例演示了如何使用生成的 URL。此代码在您的应用程序服务器上生成。

### SDK 2.0
<a name="embedded-q-bar-for-authenticated-users-sdkv2"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Q Search Bar Embedding Example</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.0.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            const embedQSearchBar = async() => {    
                const {
                    createEmbeddingContext,
                } = QuickSightEmbedding;

                const embeddingContext = await createEmbeddingContext({
                    onChange: (changeEvent, metadata) => {
                        console.log('Context received a change', changeEvent, metadata);
                    },
                });

                const frameOptions = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: '#experience-container',
                    height: "700px",
                    width: "1000px",
                    onChange: (changeEvent, metadata) => {
                        switch (changeEvent.eventName) {
                            case 'FRAME_MOUNTED': {
                                console.log("Do something when the experience frame is mounted.");
                                break;
                            }
                            case 'FRAME_LOADED': {
                                console.log("Do something when the experience frame is loaded.");
                                break;
                            }
                        }
                    },
                };

                const contentOptions = {
                    hideTopicName: false, 
                    theme: '<YOUR_THEME_ID>',
                    allowTopicSelection: true,
                    onMessage: async (messageEvent, experienceMetadata) => {
                        switch (messageEvent.eventName) {
                            case 'Q_SEARCH_OPENED': {
                                console.log("Do something when Q Search content expanded");
                                break;
                            }
                            case 'Q_SEARCH_CLOSED': {
                                console.log("Do something when Q Search content collapsed");
                                break;
                            }
                            case 'Q_SEARCH_SIZE_CHANGED': {
                                console.log("Do something when Q Search size changed");
                                break;
                            }
                            case 'CONTENT_LOADED': {
                                console.log("Do something when the Q Search is loaded.");
                                break;
                            }
                            case 'ERROR_OCCURRED': {
                                console.log("Do something when the Q Search fails loading.");
                                break;
                            }
                        }
                    }
                };
                const embeddedDashboardExperience = await embeddingContext.embedQSearchBar(frameOptions, contentOptions);
            };
        </script>
    </head>

    <body onload="embedQSearchBar()">
        <div id="experience-container"></div>
    </body>

</html>
```

### SDK 1.0
<a name="embedded-q-bar-for-authenticated-users-sdkv1"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>QuickSight Q Search Bar Embedding</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@1.18.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            var session

            function onError(payload) {
                console.log("Do something when the session fails loading");
            }

            function onOpen() {
                console.log("Do something when the Q search bar opens");
            }

            function onClose() {
                console.log("Do something when the Q search bar closes");
            }

            function embedQSearchBar() {
                var containerDiv = document.getElementById("embeddingContainer");
                var options = {
                    url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode", // replace this dummy url with the one generated via embedding API
                    container: containerDiv,
                    width: "1000px",
                    locale: "en-US",
                    qSearchBarOptions: {
                        expandCallback: onOpen,
                        collapseCallback: onClose,
                        iconDisabled: false,
                        topicNameDisabled: false, 
                        themeId: 'bdb844d0-0fe9-4d9d-b520-0fe602d93639',
                        allowTopicSelection: true
                    }
                };
                session = QuickSightEmbedding.embedQSearchBar(options);
                session.on("error", onError);
            }

            function onCountryChange(obj) {
                session.setParameters({country: obj.value});
            }
        </script>
    </head>

    <body onload="embedQSearchBar()">
        <div id="embeddingContainer"></div>
    </body>

</html>
```

要使此示例起作用，请务必使用 Amazon Quick Sight Embedding SDK 将嵌入式控制面板加载到您的网站上 JavaScript。要获取副本，请执行下列操作之一：
+ 从中下载 [Amazon Quick Sight 嵌入 SDK](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) GitHub。该存储库由一组 Amazon Quick Sight 开发人员维护。
+ 从下载最新的嵌入式 SDK 版本[https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)。
+ 如果您使用`npm` JavaScript 依赖关系，请通过运行以下命令下载并安装它。

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

## 可选的 Amazon Quick Sight Q 搜索栏嵌入功能
<a name="embedded-q-bar-for-authenticated-users-step-4"></a>

**注意**  
嵌入式的 Amazon Quick Sight Q 搜索栏提供经典的 Amazon Quick Sight 问答体验。Amazon Quick Sight 与 Amazon Q Business 集成，推出全新的生成问答体验。建议开发人员使用全新的生成式问答体验。有关嵌入式生成问答体验的更多信息，请参阅在 [Amazon Quick Sight 生成问答体验中嵌入 Amazon Q](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html)。

以下可选功能可用于使用嵌入开发工具包的嵌入式 Q 搜索栏。

### 调用 Q 搜索栏操作
<a name="w2aac35c27c21c43c31c15c21b7"></a>

以下选项仅支持嵌入 Q 搜索栏。
+ 设置 Q 搜索栏问题 – 此功能将问题发送到 Q 搜索栏并立即查询问题。它还可以自动打开 Q 弹出框。

  ```
  qBar.setQBarQuestion('show me monthly revenue');
  ```
+ 关闭 Q 弹出框 – 此功能将关闭 Q 弹出框并将 iframe 返回到原始 Q 搜索栏大小。

  ```
  qBar.closeQPopover();
  ```

有关更多信息，请参阅 [Amazon Quick Sight 嵌入软件开发工具包](https://github.com/awslabs/amazon-quicksight-embedding-sdk)。

# 为匿名（未注册）用户嵌入 Amazon Quick Sight Q 搜索栏
<a name="embedded-analytics-q-search-bar-for-anonymous-users"></a>


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

**注意**  
嵌入式的 Amazon Quick Sight Q 搜索栏提供经典的 Amazon Quick Sight 问答体验。Amazon Quick Sight 与 Amazon Q Business 集成，推出全新的生成问答体验。建议开发人员使用全新的生成式问答体验。有关嵌入式生成问答体验的更多信息，请参阅在 [Amazon Quick Sight 生成问答体验中嵌入 Amazon Q](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html)。

在以下各节中，您可以找到有关如何为匿名（未注册）用户设置嵌入式 Amazon Quick Sight Q 搜索栏的详细信息。

**Topics**
+ [步骤 1：设置权限](#embedded-q-bar-for-anonymous-users-step-1)
+ [步骤 2：生成附带身份验证代码的 URL](#embedded-q-bar-for-anonymous-users-step-2)
+ [步骤 3：嵌入 Q 搜索栏 URL](#embedded-q-bar-for-anonymous-users-step-3)
+ [可选的 Amazon Quick Sight Q 搜索栏嵌入功能](#embedded-q-bar-for-anonymous-users-step-4)

## 步骤 1：设置权限
<a name="embedded-q-bar-for-anonymous-users-step-1"></a>

**注意**  
嵌入式的 Amazon Quick Sight Q 搜索栏提供经典的 Amazon Quick Sight 问答体验。Amazon Quick Sight 与 Amazon Q Business 集成，推出全新的生成问答体验。建议开发人员使用全新的生成式问答体验。有关嵌入式生成问答体验的更多信息，请参阅在 [Amazon Quick Sight 生成问答体验中嵌入 Amazon Q](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html)。

在以下部分中，您可以了解如何设置后端应用程序或 Web 服务器的权限来嵌入 Q 搜索栏。此任务需要对 AWS Identity and Access Management (IAM) 的管理权限。

每个访问 Q 搜索栏的用户都扮演一个角色，该角色授予他们 Amazon Quick Sight 访问权限和访问 Q 搜索栏的权限。要实现这一点，请在您的中创建一个 IAM 角色 AWS 账户。将一个 IAM 策略与该角色相关联，以便为担任该角色的任何用户提供权限。IAM 角色需要提供权限才能检索特定用户池 URLs 的嵌入内容。

借助通配符 *\$1*，您可以授予为特定命名空间中的所有用户生成 URL 的权限。您也可以授予为特定命名空间中的一部分用户生成 URL 的权限。为此，请添加 `quicksight:GenerateEmbedUrlForAnonymousUser`。

您可以在 IAM 策略中创建一个条件，限制开发人员可以在 `GenerateEmbedUrlForAnonymousUser` API 操作的 `AllowedDomains` 参数中列出的域。`AllowedDomains` 参数是可选参数。它允许开发者选择覆盖在 “**管理 Amazon Quick Sight**” 菜单中配置的静态域，而是列出最多三个可以访问生成的 URL 的域名或子域名。然后，此 URL 会嵌入开发人员的网站。只有参数中列出的域才能访问嵌入式 Q 搜索栏。如果没有此条件，开发人员可以在 `AllowedDomains` 参数中列出互联网上的任何域。

要限制开发人员可用于此参数的域，请在 IAM 策略中添加一个 `AllowedEmbeddingDomains` 条件。有关该`AllowedDomains`参数的更多信息，请参阅《*Amazon Quick Sight API 参考*》[GenerateEmbedUrlForAnonymousUser](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html)中的。

**IAM 条件运算符的安全最佳实践**  
配置不当的 IAM 条件运算符可能会允许未经授权地通过 URL 变体访问您的嵌入式 Quick 资源。在您的 IAM 策略中使用`quicksight:AllowedEmbeddingDomains`条件密钥时，请使用条件运算符，允许特定域名或拒绝所有未特别允许的域。有关 IAM 条件运算符的更多信息，请参阅 [IAM 用户指南中的 IAM JSON 策略元素：条件运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)。  
许多不同的网址变体可以指向同一个资源。例如，以下 URLs 所有内容都解析为相同的内容：  
`https://example.com`
`https://example.com/`
`https://Example.com`
如果您的策略使用不考虑这些 URL 变体的运算符，则攻击者可以通过提供等效的 URL 变体来绕过您的限制。  
您必须验证您的 IAM 策略是否使用了适当的条件运算符来防止绕过漏洞，并确保只有您的目标域才能访问您的嵌入式资源。

您应用程序的 IAM 身份必须具有关联的信任策略，才允许访问您刚创建的角色。这意味着，在用户访问您的应用程序时，您的应用程序可以代表用户代入该角色，以打开 Q 搜索栏。下面演示了一个示例信任策略。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowLambdaFunctionsToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Sid": "AllowEC2InstancesToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

有关信任策略的更多信息，请参阅《IAM 用户指南》**中的 [IAM 临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)

## 步骤 2：生成附带身份验证代码的 URL
<a name="embedded-q-bar-for-anonymous-users-step-2"></a>

**注意**  
嵌入式的 Amazon Quick Sight Q 搜索栏提供经典的 Amazon Quick Sight 问答体验。Amazon Quick Sight 与 Amazon Q Business 集成，推出全新的生成问答体验。建议开发人员使用全新的生成式问答体验。有关嵌入式生成问答体验的更多信息，请参阅在 [Amazon Quick Sight 生成问答体验中嵌入 Amazon Q](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html)。

在下节中，您可以了解如何对用户进行身份验证，并获取应用程序服务器上的可嵌入 Q 主题 URL。

用户访问您的应用程序时，该应用程序代表用户代入 IAM 角色。然后，如果该用户尚不存在，则该应用程序会将该用户添加到 Amazon Quick Sight。接下来，其会将标识符作为唯一角色会话 ID 进行传递。

有关更多信息，请参阅 [https://docs.aws.amazon.com/quicksight/latest/APIReference/AnonymousUserQSearchBarEmbeddingConfiguration.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/AnonymousUserQSearchBarEmbeddingConfiguration.html)。

### Java
<a name="embedded-q-bar-for-anonymous-users-java"></a>

```
        import java.util.List;
        import com.amazonaws.auth.AWSCredentials;
        import com.amazonaws.auth.AWSCredentialsProvider;
        import com.amazonaws.auth.BasicAWSCredentials;
        import com.amazonaws.regions.Regions;
        import com.amazonaws.services.quicksight.AmazonQuickSight;
        import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder;
        import com.amazonaws.services.quicksight.model.AnonymousUserQSearchBarEmbeddingConfiguration;
        import com.amazonaws.services.quicksight.model.AnonymousUserEmbeddingExperienceConfiguration;
        import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserRequest;
        import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserResult;
        import com.amazonaws.services.quicksight.model.SessionTag;


        /**
        * Class to call QuickSight AWS SDK to generate embed url for anonymous user.
        */
        public class GenerateEmbedUrlForAnonymousUserExample {

            private final AmazonQuickSight quickSightClient;

            public GenerateEmbedUrlForAnonymousUserExample() {
                quickSightClient = AmazonQuickSightClientBuilder
                    .standard()
                    .withRegion(Regions.US_EAST_1.getName())
                    .withCredentials(new AWSCredentialsProvider() {
                            @Override
                            public AWSCredentials getCredentials() {
                                // provide actual IAM access key and secret key here
                                return new BasicAWSCredentials("access-key", "secret-key");
                            }

                            @Override
                            public void refresh() {
                            }
                        }
                    )
                    .build();
            }

            public String GenerateEmbedUrlForAnonymousUser(
                final String accountId, // YOUR AWS ACCOUNT ID
                final String initialTopicId, // Q TOPIC ID TO WHICH THE CONSTRUCTED URL POINTS AND SEARCHBAR PREPOPULATES INITIALLY
                final String namespace, // ANONYMOUS EMBEDDING REQUIRES SPECIFYING A VALID NAMESPACE FOR WHICH YOU WANT THE EMBEDDING URL
                final List<String> authorizedResourceArns, // Q SEARCHBAR TOPIC ARN LIST TO EMBED
                final List<String> allowedDomains, // RUNTIME ALLOWED DOMAINS FOR EMBEDDING
                final List<SessionTag> sessionTags // SESSION TAGS USED FOR ROW-LEVEL SECURITY
            ) throws Exception {
                AnonymousUserEmbeddingExperienceConfiguration experienceConfiguration = new AnonymousUserEmbeddingExperienceConfiguration();
                AnonymousUserQSearchBarEmbeddingConfiguration qSearchBarConfiguration = new AnonymousUserQSearchBarEmbeddingConfiguration();
                qSearchBarConfiguration.setInitialTopicId(initialTopicId);
                experienceConfiguration.setQSearchBar(qSearchBarConfiguration);

                GenerateEmbedUrlForAnonymousUserRequest generateEmbedUrlForAnonymousUserRequest = new GenerateEmbedUrlForAnonymousUserRequest()
                    .withAwsAccountId(accountId)
                    .withNamespace(namespace)
                    .withAuthorizedResourceArns(authorizedResourceArns)
                    .withExperienceConfiguration(experienceConfiguration)
                    .withSessionTags(sessionTags)
                    .withSessionLifetimeInMinutes(600L); // OPTIONAL: VALUE CAN BE [15-600]. DEFAULT: 600
                    .withAllowedDomains(allowedDomains);

                GenerateEmbedUrlForAnonymousUserResult qSearchBarEmbedUrl = quickSightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserRequest);

                return qSearchBarEmbedUrl.getEmbedUrl();
            }

        }
```

### JavaScript
<a name="embedded-q-bar-for-anonymous-users-js"></a>

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function generateEmbedUrlForAnonymousUser(
    accountId, // YOUR AWS ACCOUNT ID
    initialTopicId, // Q TOPIC ID TO WHICH THE CONSTRUCTED URL POINTS
    quicksightNamespace, // VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
    authorizedResourceArns, // Q SEARCHBAR TOPIC ARN LIST TO EMBED
    allowedDomains, // RUNTIME ALLOWED DOMAINS FOR EMBEDDING
    sessionTags, // SESSION TAGS USED FOR ROW-LEVEL SECURITY
    generateEmbedUrlForAnonymousUserCallback, // SUCCESS CALLBACK METHOD
    errorCallback // ERROR CALLBACK METHOD
    ) {
    const experienceConfiguration = {
        "QSearchBar": {
            "InitialTopicId": initialTopicId // TOPIC ID CAN BE FOUND IN THE URL ON THE TOPIC AUTHOR PAGE
        }
    };
    
    const generateEmbedUrlForAnonymousUserParams = {
        "AwsAccountId": accountId,
        "Namespace": quicksightNamespace,
        "AuthorizedResourceArns": authorizedResourceArns,
        "AllowedDomains": allowedDomains,
        "ExperienceConfiguration": experienceConfiguration,
        "SessionTags": sessionTags,
        "SessionLifetimeInMinutes": 600
    };

    const quicksightClient = new AWS.QuickSight({
        region: process.env.AWS_REGION,
        credentials: {
            accessKeyId: AccessKeyId,
            secretAccessKey: SecretAccessKey,
            sessionToken: SessionToken,
            expiration: Expiration
        }
    });

    quicksightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserParams, function(err, data) {
        if (err) {
            console.log(err, err.stack);
            errorCallback(err);
        } else {
            const result = {
                "statusCode": 200,
                "headers": {
                    "Access-Control-Allow-Origin": "*", // USE YOUR WEBSITE DOMAIN TO SECURE ACCESS TO THIS API
                    "Access-Control-Allow-Headers": "Content-Type"
                },
                "body": JSON.stringify(data),
                "isBase64Encoded": false
            }
            generateEmbedUrlForAnonymousUserCallback(result);
        }
    });
}
```

### Python3
<a name="embedded-q-bar-for-anonymous-users-py"></a>

```
import json
import boto3
from botocore.exceptions import ClientError
import time

# Create QuickSight and STS clients
quicksightClient = boto3.client('quicksight',region_name='us-west-2')
sts = boto3.client('sts')

# Function to generate embedded URL for anonymous user
# accountId: YOUR AWS ACCOUNT ID
# quicksightNamespace: VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
# authorizedResourceArns: TOPIC ARN LIST TO EMBED
# allowedDomains: RUNTIME ALLOWED DOMAINS FOR EMBEDDING
# experienceConfiguration: configuration which specifies the TOPIC ID to point URL to
# sessionTags: SESSION TAGS USED FOR ROW-LEVEL SECURITY
def generateEmbedUrlForAnonymousUser(accountId, quicksightNamespace, authorizedResourceArns, allowedDomains, experienceConfiguration, sessionTags):
    try:
        response = quicksightClient.generate_embed_url_for_anonymous_user(
            AwsAccountId = accountId,
            Namespace = quicksightNamespace,
            AuthorizedResourceArns = authorizedResourceArns,
            AllowedDomains = allowedDomains,
            ExperienceConfiguration = experienceConfiguration,
            SessionTags = sessionTags,
            SessionLifetimeInMinutes = 600
        )
            
        return {
            'statusCode': 200,
            'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"},
            'body': json.dumps(response),
            'isBase64Encoded':  bool('false')
        }
    except ClientError as e:
        print(e)
        return "Error generating embeddedURL: " + str(e)
```

### Node.js
<a name="embedded-q-bar-for-anonymous-users-nodejs"></a>

以下示例显示了可以在应用服务器上用来生成嵌入式仪表板的 URL 的 JavaScript (Node.js)。您可以在网站或应用程序中使用该 URL 以显示控制面板。

**Example**  

```
const AWS = require('aws-sdk');
const https = require('https');

var quicksightClient = new AWS.Service({
    apiConfig: require('./quicksight-2018-04-01.min.json'),
    region: 'us-east-1',
});

quicksightClient.generateEmbedUrlForAnonymousUser({
    'AwsAccountId': '111122223333',
    'Namespace': 'DEFAULT'
    'AuthorizedResourceArns': '["topic-arn-topicId1","topic-arn-topicId2"]',
    'AllowedDomains': allowedDomains,
    'ExperienceConfiguration': { 
        'QSearchBar': {
            'InitialTopicId': 'U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f'
        }
    },
    'SessionTags': '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]',
    'SessionLifetimeInMinutes': 15
}, function(err, data) {
    console.log('Errors: ');
    console.log(err);
    console.log('Response: ');
    console.log(data);
});
```

**Example**  

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
//readability and added ellipsis to indicate that it's incomplete.
    { 
        Status: 200,
        EmbedUrl : 'https://quicksightdomain/embed/12345/dashboards/67890/sheets/12345/visuals/67890...',
        RequestId: '7bee030e-f191-45c4-97fe-d9faf0e03713' 
    }
```

### .NET/C\$1
<a name="embedded-q-bar-for-anonymous-users-cs"></a>

以下示例演示了可以在应用程序服务器上使用以生成嵌入式 Q 搜索栏 URL 的 .NET/C\$1 代码。您可以在网站或应用程序中使用此 URL 以显示 Q 搜索栏。

**Example**  

```
using System;
using Amazon.QuickSight;
using Amazon.QuickSight.Model;

namespace GenerateQSearchBarEmbedUrlForAnonymousUser
{
    class Program
    {
        static void Main(string[] args)
        {
            var quicksightClient = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                SessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                AnonymousUserQSearchBarEmbeddingConfiguration anonymousUserQSearchBarEmbeddingConfiguration
                    = new AnonymousUserQSearchBarEmbeddingConfiguration
                    {
                        InitialTopicId = "U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f"
                    };
                AnonymousUserEmbeddingExperienceConfiguration anonymousUserEmbeddingExperienceConfiguration
                    = new AnonymousUserEmbeddingExperienceConfiguration
                    {
                        QSearchBar = anonymousUserQSearchBarEmbeddingConfiguration
                    }; 
                
                Console.WriteLine(
                    quicksightClient.GenerateEmbedUrlForAnonymousUserAsync(new GenerateEmbedUrlForAnonymousUserRequest
                    {
                        AwsAccountId = "111122223333",
                        Namespace = "DEFAULT",
                        AuthorizedResourceArns '["topic-arn-topicId1","topic-arn-topicId2"]',
                        AllowedDomains = allowedDomains,
                        ExperienceConfiguration = anonymousUserEmbeddingExperienceConfiguration,
                        SessionTags = '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]',
                        SessionLifetimeInMinutes = 15,
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
```

### AWS CLI
<a name="embedded-q-bar-for-anonymous-users-cli"></a>

要代入该角色，请选择以下 AWS Security Token Service (AWS STS) API 操作之一：
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— 当您使用 IAM 身份代入角色时，请使用此操作。
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— 当您使用 Web 身份提供商对用户进行身份验证时，请使用此操作。
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 当您使用 SAML 对用户进行身份验证时，请使用此操作。

以下示例显示了用于设置 IAM 角色的 CLI 命令。该角色需要为 `quicksight:GenerateEmbedUrlForAnonymousUser` 启用权限。

```
aws sts assume-role \
     --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_q_search_bar_role" \
     --role-session-name anonymous caller
```

`assume-role` 操作返回三个输出参数：访问密钥、私有密钥和会话令牌。

**注意**  
如果在调用 `AssumeRole` 操作时遇到 `ExpiredToken` 错误，可能是因为之前的 `SESSION TOKEN` 仍在环境变量中。通过设置以下变量可以解决这一问题：  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1访问密钥* 
*AWS\$1SESSION\$1代币* 

以下示例说明了如何在 CLI 中设置这三个参数。对于 Microsoft Windows 计算机，请使用 `set` 而不是 `export`。

```
export AWS_ACCESS_KEY_ID     = "access_key_from_assume_role"
export AWS_SECRET_ACCESS_KEY = "secret_key_from_assume_role"
export AWS_SESSION_TOKEN     = "session_token_from_assume_role"
```

如果运行这些命令，则会将访问您的网站的用户的角色会话 ID 设置为 `embedding_quicksight_q_search_bar_role/QuickSightEmbeddingAnonymousPolicy`。角色会话 ID 由 `role-arn` 中的角色名称和 `role-session-name` 值组成。每个用户使用唯一的角色会话 ID 可以确保为每个用户设置相应的权限。此外，它还能避免任何用户访问限制。*限制*是一项安全功能，可防止同一个用户从多个位置访问 Amazon Quick Sight。它还能使每个会话保持独立和独特。如果您使用一组 Web 服务器（例如用于负载平衡），并且会话重新连接到其他服务器，则会开始新的会话。

要获取控制面板的签名 URL，请从应用程序服务器中调用 `generate-embed-url-for-anynymous-user`。这会返回可嵌入的控制面板 URL。以下示例演示了如何使用服务器端调用为匿名访问您 Web 门户或应用程序的用户生成嵌入式控制面板的 URL。

```
aws quicksight generate-embed-url-for-anonymous-user \
--aws-account-id 111122223333 \
--namespace default-or-something-else \
--authorized-resource-arns '["topic-arn-topicId1","topic-arn-topicId2"]' \
--allowed-domains '["domain1","domain2"]' \
--experience-configuration 'QSearchBar={InitialTopicId="topicId1"}' \
--session-tags '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]' \
--session-lifetime-in-minutes 15
```

有关使用此操作的更多信息，请参阅 [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)。您可以在自己的代码中使用该 API 操作和其他操作。

## 步骤 3：嵌入 Q 搜索栏 URL
<a name="embedded-q-bar-for-anonymous-users-step-3"></a>

**注意**  
嵌入式的 Amazon Quick Sight Q 搜索栏提供经典的 Amazon Quick Sight 问答体验。Amazon Quick Sight 与 Amazon Q Business 集成，推出全新的生成问答体验。建议开发人员使用全新的生成式问答体验。有关嵌入式生成问答体验的更多信息，请参阅在 [Amazon Quick Sight 生成问答体验中嵌入 Amazon Q](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html)。

在以下部分中，您可以了解如何将步骤 3 中的 Q 搜索栏 URL 嵌入网站或应用程序页面。你可以使用 [Amazon Quick Sight 嵌入式 SDK](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript) 来做到这一点。通过使用该开发工具包，您可以执行以下操作：
+ 将 Q 搜索栏放置到 HTML 页面上。
+ 将参数传递到 Q 搜索栏。
+ 使用为应用程序自定义的消息处理错误状态。

要生成可嵌入应用程序的 URL，请调用 `GenerateEmbedUrlForAnonymousUser` API 操作。该 URL 的有效时间为 5 分钟，生成的会话有效时间为 10 个小时。该 API 操作为 URL 提供 `auth_code` 值以启用单点登录会话。

下面显示了 `generate-embed-url-for-anonymous-user` 的示例响应：

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
//readability and added ellipsis to indicate that it's incomplete.
{
     "Status": "200",
     "EmbedUrl": "https://quicksightdomain/embedding/12345/q/search...",
     "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
}
```

使用 [Amazon Quick Sight 嵌入式 SDK 或将此 URL 添加到 iframe 中，将 Q 搜索栏嵌](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)入到您的网页中。如果您设置了固定的高度和宽度数字（以像素为单位），Amazon Quick Sight 会使用这些数字，并且不会在窗口大小调整时更改视觉效果。如果您设置相对的百分比高度和宽度，Amazon Quick Sight 会提供响应式布局，该布局会随着窗口大小的变化而进行修改。

为此，请确保托管嵌入式 Q 搜索栏的域名位于*允许列表中*，即您的 Amazon Quick Sight 订阅的已批准域名列表。这一要求可阻止未经批准的域托管嵌入式 Q 搜索栏，从而保护您的数据。有关为嵌入式 Q 搜索栏添加域名的更多信息，请参阅[管理域和嵌入](https://docs.aws.amazon.com/quicksight/latest/user/manage-qs-domains-and-embedding.html)。

当您使用 Amazon Quick Sight Embedding SDK 时，页面上的 Q 搜索栏会根据状态动态调整大小。通过使用 Amazon Quick Sight Embedding SDK，您还可以控制 Q 搜索栏中的参数，并接收有关页面加载完成和错误的回调。

以下示例演示了如何使用生成的 URL。此代码在您的应用程序服务器上生成。

### SDK 2.0
<a name="embedded-q-bar-for-anonymous-users-sdkv2"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Q Search Bar Embedding Example</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.0.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            const embedQSearchBar = async() => {    
                const {
                    createEmbeddingContext,
                } = QuickSightEmbedding;

                const embeddingContext = await createEmbeddingContext({
                    onChange: (changeEvent, metadata) => {
                        console.log('Context received a change', changeEvent, metadata);
                    },
                });

                const frameOptions = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: '#experience-container',
                    height: "700px",
                    width: "1000px",
                    onChange: (changeEvent, metadata) => {
                        switch (changeEvent.eventName) {
                            case 'FRAME_MOUNTED': {
                                console.log("Do something when the experience frame is mounted.");
                                break;
                            }
                            case 'FRAME_LOADED': {
                                console.log("Do something when the experience frame is loaded.");
                                break;
                            }
                        }
                    },
                };

                const contentOptions = {
                    hideTopicName: false, 
                    theme: '<YOUR_THEME_ID>',
                    allowTopicSelection: true,
                    onMessage: async (messageEvent, experienceMetadata) => {
                        switch (messageEvent.eventName) {
                            case 'Q_SEARCH_OPENED': {
                                console.log("Do something when Q Search content expanded");
                                break;
                            }
                            case 'Q_SEARCH_CLOSED': {
                                console.log("Do something when Q Search content collapsed");
                                break;
                            }
                            case 'Q_SEARCH_SIZE_CHANGED': {
                                console.log("Do something when Q Search size changed");
                                break;
                            }
                            case 'CONTENT_LOADED': {
                                console.log("Do something when the Q Search is loaded.");
                                break;
                            }
                            case 'ERROR_OCCURRED': {
                                console.log("Do something when the Q Search fails loading.");
                                break;
                            }
                        }
                    }
                };
                const embeddedDashboardExperience = await embeddingContext.embedQSearchBar(frameOptions, contentOptions);
            };
        </script>
    </head>

    <body onload="embedQSearchBar()">
        <div id="experience-container"></div>
    </body>

</html>
```

### SDK 1.0
<a name="embedded-q-bar-for-anonymous-users-sdkv1"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>QuickSight Q Search Bar Embedding</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@1.18.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            var session

            function onError(payload) {
                console.log("Do something when the session fails loading");
            }

            function onOpen() {
                console.log("Do something when the Q search bar opens");
            }

            function onClose() {
                console.log("Do something when the Q search bar closes");
            }

            function embedQSearchBar() {
                var containerDiv = document.getElementById("embeddingContainer");
                var options = {
                    url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode", // replace this dummy url with the one generated via embedding API
                    container: containerDiv,
                    width: "1000px",
                    locale: "en-US",
                    qSearchBarOptions: {
                        expandCallback: onOpen,
                        collapseCallback: onClose,
                        iconDisabled: false,
                        topicNameDisabled: false, 
                        themeId: 'bdb844d0-0fe9-4d9d-b520-0fe602d93639',
                        allowTopicSelection: true
                    }
                };
                session = QuickSightEmbedding.embedQSearchBar(options);
                session.on("error", onError);
            }

            function onCountryChange(obj) {
                session.setParameters({country: obj.value});
            }
        </script>
    </head>

    <body onload="embedQSearchBar()">
        <div id="embeddingContainer"></div>
    </body>

</html>
```

要使此示例起作用，请务必使用 Amazon Quick Sight Embedding SDK 将嵌入式 Q 搜索栏加载到您的网站上 JavaScript。要获取副本，请执行下列操作之一：
+ 从中下载 [Amazon Quick Sight 嵌入 SDK](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) GitHub。该存储库由一组 Amazon Quick Sight 开发人员维护。
+ 从下载最新的嵌入式 SDK 版本[https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)。
+ 如果您使用`npm` JavaScript 依赖关系，请通过运行以下命令下载并安装它。

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

## 可选的 Amazon Quick Sight Q 搜索栏嵌入功能
<a name="embedded-q-bar-for-anonymous-users-step-4"></a>

**注意**  
嵌入式的 Amazon Quick Sight Q 搜索栏提供经典的 Amazon Quick Sight 问答体验。Amazon Quick Sight 与 Amazon Q Business 集成，推出全新的生成问答体验。建议开发人员使用全新的生成式问答体验。有关嵌入式生成问答体验的更多信息，请参阅在 [Amazon Quick Sight 生成问答体验中嵌入 Amazon Q](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html)。

以下可选功能可用于使用嵌入开发工具包的嵌入式 Q 搜索栏。

### 调用 Q 搜索栏操作
<a name="w2aac35c27c21c43c31c17c21b7"></a>

以下选项仅支持嵌入 Q 搜索栏。
+ 设置 Q 搜索栏问题 – 此功能将问题发送到 Q 搜索栏并立即查询问题。它还可以自动打开 Q 弹出框。

  ```
  qBar.setQBarQuestion('show me monthly revenue');
  ```
+ 关闭 Q 弹出框 – 此功能将关闭 Q 弹出框并将 iframe 返回到原始 Q 搜索栏大小。

  ```
  qBar.closeQPopover();
  ```

有关更多信息，请参阅 [Amazon Quick Sight 嵌入软件开发工具包](https://github.com/awslabs/amazon-quicksight-embedding-sdk)。

# 使用 GetDashboardEmbedURL 和 GetSessionEmbedURL API 操作嵌入分析
<a name="embedded-analytics-deprecated"></a>


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

以下用于嵌入 Amazon Quick Sight 仪表板和 Amazon Quick Sight 控制台的 API 操作已被GenerateEmbedUrlForAnonymousUser和 GenerateEmbedUrlForRegisteredUser API 操作所取代。您仍然可以使用它们在应用程序中嵌入分析，但它们不再受到维护，且不包含最新的嵌入特性或功能。要了解最新的 up-to-date嵌入体验，请参阅将 [Amazon Quick Sight 分析嵌入到您的应用程序](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html)中
+ [GetDashboardEmbedUrl](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html)API 操作嵌入了交互式仪表板。
+ [GetSessionEmbedUrl](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetSessionEmbedUrl.html)API 操作嵌入了 Amazon Quick Sight 控制台。

**Topics**
+ [使用 GetDashboardEmbedURL（旧 API）为所有人嵌入控制面板](embedded-analytics-dashboards-with-anonymous-users-get.md)
+ [使用 GetDashboardEmbedUrl（旧 API）为注册用户嵌入控制面板](embedded-analytics-dashboards-for-authenticated-users-get.md)
+ [使用GetSessionEmbedUrl（旧 API）嵌入 Amazon Quick Sight 控制台](embedded-analytics-full-console-for-authenticated-users-get.md)

# 使用 GetDashboardEmbedURL（旧 API）为所有人嵌入控制面板
<a name="embedded-analytics-dashboards-with-anonymous-users-get"></a>

**重要**  
Amazon Quick Sight 推出了嵌入分析的新 APIs 功能：`GenerateEmbedUrlForAnonymousUser`和`GenerateEmbedUrlForRegisteredUser`。  
您仍然可以使用`GetDashboardEmbedUrl`和`GetSessionEmbedUrl` APIs 来嵌入仪表板和 Amazon Quick Sight 控制台，但它们不包含最新的嵌入功能。有关最新的 up-to-date嵌入体验，请参阅将 [Amazon Quick Sight 分析嵌入到您的应用程序](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html)中。


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

在以下各节中，您可以找到有关如何使用 GetDashboardEmbed URL 为所有人（未经身份验证的用户）设置嵌入式 Amazon Quick Sight 控制面板的详细信息。

**Topics**
+ [步骤 1：设置权限](embedded-analytics-dashboards-with-anonymous-users-get-step-1.md)
+ [步骤 2：获取附带身份验证代码的 URL](embedded-analytics-dashboards-with-anonymous-users-get-step-2.md)
+ [步骤 3：嵌入控制面板 URL](embedded-analytics-dashboards-with-anonymous-users-get-step-3.md)

# 步骤 1：设置权限
<a name="embedded-analytics-dashboards-with-anonymous-users-get-step-1"></a>

**重要**  
Amazon Quick Sight 推出了嵌入分析的新 APIs 功能：`GenerateEmbedUrlForAnonymousUser`和`GenerateEmbedUrlForRegisteredUser`。  
您仍然可以使用`GetDashboardEmbedUrl`和`GetSessionEmbedUrl` APIs 来嵌入仪表板和 Amazon Quick Sight 控制台，但它们不包含最新的嵌入功能。有关最新的 up-to-date嵌入体验，请参阅将 [Amazon Quick Sight 分析嵌入到您的应用程序](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html)中。


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

在下节中，您可以了解如何设置后端应用程序或 Web 服务器的权限。该任务需要具有 IAM 的管理访问权限。

每个访问控制面板的用户都扮演一个角色，授予他们 Amazon Quick Sight 访问控制面板的权限和权限。为此，请在您的 AWS 账户中创建一个 IAM 角色。将一个 IAM policy 与该角色相关联，以便为担任该角色的任何用户提供权限。

以下示例策略提供了可用于 `IdentityType=ANONYMOUS` 的这些权限。要使这种方法发挥作用，您还需要在自己的 AWS 账户中使用会话包或会话容量定价。否则，当用户尝试访问控制面板时，会返回 `UnsupportedPricingPlanException` 错误。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
              "quicksight:GetDashboardEmbedUrl",
              "quickSight:GetAnonymousUserEmbedUrl"
            ],
            "Resource": "*"
        }
    ]
}
```

------

您应用程序的 IAM 身份必须具有关联的信任策略，才允许访问您刚创建的角色。这意味着，在用户访问您的应用程序时，您的应用程序可以代表用户代入该角色打开控制面板。以下示例显示了一个名为 `QuickSightEmbeddingAnonymousPolicy` 的角色，该角色将前面的示例策略作为其资源。

有关信任策略的更多信息，请参阅《IAM 用户指南》**中的 [IAM 临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)。

# 步骤 2：获取附带身份验证代码的 URL
<a name="embedded-analytics-dashboards-with-anonymous-users-get-step-2"></a>

**重要**  
Amazon Quick Sight 推出了嵌入分析的新 APIs 功能：`GenerateEmbedUrlForAnonymousUser`和`GenerateEmbedUrlForRegisteredUser`。  
您仍然可以使用`GetDashboardEmbedUrl`和`GetSessionEmbedUrl` APIs 来嵌入仪表板和 Amazon Quick Sight 控制台，但它们不包含最新的嵌入功能。有关最新的 up-to-date嵌入体验，请参阅将 [Amazon Quick Sight 分析嵌入到您的应用程序](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html)中。


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

在下节中，您可以了解如何代表匿名访问者进行身份验证，并获取应用程序服务器上的可嵌入控制面板 URL。

用户访问您的应用程序时，该应用程序代表用户代入 IAM 角色。然后，它会将该用户添加到 Amazon Quick Sight（如果该用户尚不存在）。接下来，其会将标识符作为唯一角色会话 ID 进行传递。

以下示例展示了代表用户执行 IAM 身份验证。将标识符作为唯一角色会话 ID 进行传递。此代码在您的应用程序服务器上运行。

------
#### [ Java ]

```
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.quicksight.AmazonQuickSight;
import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder;
import com.amazonaws.services.quicksight.model.GetDashboardEmbedUrlRequest;
import com.amazonaws.services.quicksight.model.GetDashboardEmbedUrlResult;

/**
 * Class to call QuickSight AWS SDK to get url for dashboard embedding.
 */
public class GetQuicksightEmbedUrlNoAuth {

    private static String ANONYMOUS = "ANONYMOUS";

    private final AmazonQuickSight quickSightClient;

    public GetQuicksightEmbedUrlNoAuth() {
        this.quickSightClient = AmazonQuickSightClientBuilder
                .standard()
                .withRegion(Regions.US_EAST_1.getName())
                .withCredentials(new AWSCredentialsProvider() {
                                     @Override
                                     public AWSCredentials getCredentials() {
                                         // provide actual IAM access key and secret key here
                                         return new BasicAWSCredentials("access-key", "secret-key");
                                     }

                                     @Override
                                     public void refresh() {}
                                 }
                )
                .build();
    }

    public String getQuicksightEmbedUrl(
            final String accountId, // YOUR AWS ACCOUNT ID
            final String dashboardId, // YOUR DASHBOARD ID TO EMBED
            final String addtionalDashboardIds, // ADDITIONAL DASHBOARD-1 ADDITIONAL DASHBOARD-2
            final boolean resetDisabled, // OPTIONAL PARAMETER TO ENABLE DISABLE RESET BUTTON IN EMBEDDED DASHBAORD
            final boolean undoRedoDisabled // OPTIONAL PARAMETER TO ENABLE DISABLE UNDO REDO BUTTONS IN EMBEDDED DASHBAORD
    ) throws Exception {
        GetDashboardEmbedUrlRequest getDashboardEmbedUrlRequest = new GetDashboardEmbedUrlRequest()
                .withDashboardId(dashboardId)
                .withAdditionalDashboardIds(addtionalDashboardIds)
                .withAwsAccountId(accountId)
                .withNamespace("default") // Anonymous embedding requires specifying a valid namespace for which you want the embedding url
                .withIdentityType(ANONYMOUS)
                .withResetDisabled(resetDisabled)
                .withUndoRedoDisabled(undoRedoDisabled);

        GetDashboardEmbedUrlResult dashboardEmbedUrl = quickSightClient.getDashboardEmbedUrl(getDashboardEmbedUrlRequest);

        return dashboardEmbedUrl.getEmbedUrl();
    }
}
```

------
#### [ JavaScript ]

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function getDashboardEmbedURL(
    accountId, // YOUR AWS ACCOUNT ID
    dashboardId, // YOUR DASHBOARD ID TO EMBED
    additionalDashboardIds, // ADDITIONAL DASHBOARD-1 ADDITIONAL DASHBOARD-2
    quicksightNamespace, // VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
    resetDisabled, // OPTIONAL PARAMETER TO ENABLE DISABLE RESET BUTTON IN EMBEDDED DASHBAORD
    undoRedoDisabled, // OPTIONAL PARAMETER TO ENABLE DISABLE UNDO REDO BUTTONS IN EMBEDDED DASHBAORD
    getEmbedUrlCallback, // GETEMBEDURL SUCCESS CALLBACK METHOD
    errorCallback // GETEMBEDURL ERROR CALLBACK METHOD
    ) {
    const getDashboardParams = {
        AwsAccountId: accountId,
        DashboardId: dashboardId,
        AdditionalDashboardIds: additionalDashboardIds,
        Namespace: quicksightNamespace,
        IdentityType: 'ANONYMOUS',
        ResetDisabled: resetDisabled,
        SessionLifetimeInMinutes: 600,
        UndoRedoDisabled: undoRedoDisabled
    };

    const quicksightGetDashboard = new AWS.QuickSight({
        region: process.env.AWS_REGION,
    });

    quicksightGetDashboard.getDashboardEmbedUrl(getDashboardParams, function(err, data) {
        if (err) {
            console.log(err, err.stack);
            errorCallback(err);
        } else {
            const result = {
                "statusCode": 200,
                "headers": {
                    "Access-Control-Allow-Origin": "*", // USE YOUR WEBSITE DOMAIN TO SECURE ACCESS TO GETEMBEDURL API
                    "Access-Control-Allow-Headers": "Content-Type"
                },
                "body": JSON.stringify(data),
                "isBase64Encoded": false
            }
            getEmbedUrlCallback(result);
        }
    });
}
```

------
#### [ Python3 ]

```
import json
import boto3
from botocore.exceptions import ClientError
import time

# Create QuickSight and STS clients
qs = boto3.client('quicksight',region_name='us-east-1')
sts = boto3.client('sts')

# Function to generate embedded URL
# accountId: YOUR AWS ACCOUNT ID
# dashboardId: YOUR DASHBOARD ID TO EMBED
# additionalDashboardIds: ADDITIONAL DASHBOARD-1 ADDITIONAL DASHBOARD-2 WITHOUT COMMAS
# quicksightNamespace: VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
# resetDisabled: PARAMETER TO ENABLE DISABLE RESET BUTTON IN EMBEDDED DASHBAORD
# undoRedoDisabled: OPTIONAL PARAMETER TO ENABLE DISABLE UNDO REDO BUTTONS IN EMBEDDED DASHBAORD
def getDashboardURL(accountId, dashboardId, quicksightNamespace, resetDisabled, undoRedoDisabled):
    try:
        response = qs.get_dashboard_embed_url(
            AwsAccountId = accountId,
            DashboardId = dashboardId,
            AdditionalDashboardIds = additionalDashboardIds,
            Namespace = quicksightNamespace,
            IdentityType = 'ANONYMOUS',
            SessionLifetimeInMinutes = 600,
            UndoRedoDisabled = undoRedoDisabled,
            ResetDisabled = resetDisabled
        )
            
        return {
            'statusCode': 200,
            'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"},
            'body': json.dumps(response),
            'isBase64Encoded':  bool('false')
        }
    except ClientError as e:
        print(e)
        return "Error generating embeddedURL: " + str(e)
```

------
#### [ Node.js ]

以下示例显示了可以在应用服务器上使用的 JavaScript (Node.js) 来获取嵌入式仪表板的 URL。您可以在网站或应用程序中使用该 URL 以显示控制面板。

**Example**  

```
const AWS = require('aws-sdk');
            const https = require('https');
            
            var quicksight = new AWS.Service({
                apiConfig: require('./quicksight-2018-04-01.min.json'),
                region: 'us-east-1',
            });
            
            quicksight.getDashboardEmbedUrl({
                'AwsAccountId': '111122223333',
                'DashboardId': 'dashboard-id',
                'AdditionalDashboardIds': 'added-dashboard-id-1 added-dashboard-id-2 added-dashboard-id-3'
                'Namespace' : 'default',
                'IdentityType': 'ANONYMOUS',
                'SessionLifetimeInMinutes': 100,
                'UndoRedoDisabled': false,
                'ResetDisabled': true
            
            }, function(err, data) {
                console.log('Errors: ');
                console.log(err);
                console.log('Response: ');
                console.log(data);
            });
```

**Example**  

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
            //readability and added ellipsis to indicate that it's incomplete.
                                { Status: 200,
              EmbedUrl: 'https://dashboards.example.com/embed/620bef10822743fab329fb3751187d2d…
              RequestId: '7bee030e-f191-45c4-97fe-d9faf0e03713' }
```

------
#### [ .NET/C\$1 ]

以下示例显示了可以在应用程序服务器上使用以获取嵌入式控制面板 URL 的 .NET/C\$1 代码。您可以在网站或应用程序中使用该 URL 以显示控制面板。

**Example**  

```
            var client = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                sessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                Console.WriteLine(
                    client.GetDashboardEmbedUrlAsync(new GetDashboardEmbedUrlRequest
                    {
                        AwsAccountId = “111122223333”,
                        DashboardId = "dashboard-id",
                        AdditionalDashboardIds = "added-dashboard-id-1 added-dashboard-id-2 added-dashboard-id-3",
                        Namespace = default,
                        IdentityType = IdentityType.ANONYMOUS,
                        SessionLifetimeInMinutes = 600,
                        UndoRedoDisabled = false,
                        ResetDisabled = true
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
```

------
#### [ AWS CLI ]

要代入该角色，请选择以下 AWS Security Token Service (AWS STS) API 操作之一：
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— 当您使用 IAM 身份代入角色时，请使用此操作。
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— 当您使用 Web 身份提供商对用户进行身份验证时，请使用此操作。
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 当您使用安全断言标记语言 (SAML) 对用户进行身份验证时，请使用此操作。

以下示例显示了用于设置 IAM 角色的 CLI 命令。该角色需要为 `quicksight:GetDashboardEmbedURL` 启用权限。

```
aws sts assume-role \
     --role-arn "arn:aws:iam::11112222333:role/QuickSightEmbeddingAnonymousPolicy" \
     --role-session-name anonymous caller
```

`assume-role` 操作返回三个输出参数：访问密钥、私有密钥和会话令牌。

**注意**  
如果在调用 `AssumeRole` 操作时遇到 `ExpiredToken` 错误，可能是因为之前的 `SESSION TOKEN` 仍在环境变量中。通过设置以下变量可以解决这一问题：  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1访问密钥* 
*AWS\$1SESSION\$1代币* 

以下示例说明了如何在 CLI 中设置这三个参数。如果您使用 Microsoft Windows 计算机，请使用 `set` 而不是 `export`。

```
export AWS_ACCESS_KEY_ID     = "access_key_from_assume_role"
export AWS_SECRET_ACCESS_KEY = "secret_key_from_assume_role"
export AWS_SESSION_TOKEN     = "session_token_from_assume_role"
```

如果运行这些命令，则会将访问您的网站的用户的角色会话 ID 设置为 `embedding_quicksight_dashboard_role/QuickSightEmbeddingAnonymousPolicy`。角色会话 ID 由 `role-arn` 中的角色名称和 `role-session-name` 值组成。每个用户使用唯一的角色会话 ID 可以确保为每个访问用户设置相应的权限。其还能让每个会话保持独立性和独特性。如果您使用一组 Web 服务器（例如用于负载平衡），并且会话重新连接到其他服务器，则会开始新的会话。

要获取控制面板的签名 URL，请从应用程序服务器中调用 `get-dashboard-embed-url`。这会返回可嵌入的控制面板 URL。以下示例演示了如何使用服务器端调用为匿名访问您 Web 门户或应用程序的用户获取嵌入式控制面板的 URL。

```
aws quicksight get-dashboard-embed-url \
     --aws-account-id 111122223333 \
     --dashboard-id dashboard-id \
     --additional-dashboard-ids added-dashboard-id-1 added-dashboard-id-2 added-dashboard-id-3
     --namespace default-or-something-else \
     --identity-type ANONYMOUS \
     --session-lifetime-in-minutes 30 \
     --undo-redo-disabled true \
     --reset-disabled true \
     --user-arn arn:aws:quicksight:us-east-1:111122223333:user/default/QuickSightEmbeddingAnonymousPolicy/embeddingsession
```

有关使用该操作的更多信息，请参阅 [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html)。您可以在自己的代码中使用该 API 操作和其他操作。

------

# 步骤 3：嵌入控制面板 URL
<a name="embedded-analytics-dashboards-with-anonymous-users-get-step-3"></a>

**重要**  
Amazon Quick Sight 推出了嵌入分析的新 APIs 功能：`GenerateEmbedUrlForAnonymousUser`和`GenerateEmbedUrlForRegisteredUser`。  
您仍然可以使用`GetDashboardEmbedUrl`和`GetSessionEmbedUrl` APIs 来嵌入仪表板和 Amazon Quick Sight 控制台，但它们不包含最新的嵌入功能。有关最新的 up-to-date嵌入体验，请参阅将 [Amazon Quick Sight 分析嵌入到您的应用程序](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html)中。


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

在下一节中，您可以了解如何使用 [Amazon Quick Sight 嵌入软件开发工具包](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript) 将第 2 步中的控制面板网址嵌入到您的网站或应用程序页面中。通过使用该开发工具包，您可以执行以下操作：
+ 将控制面板放在 HTML 页面上。
+ 将参数传递到控制面板。
+ 使用为应用程序自定义的消息处理错误状态。

调用 `GetDashboardEmbedUrl` API 操作获取可嵌入应用程序的 URL。该 URL 的有效期为 5 分钟，生成的会话的有效期为 10 个小时。该 API 操作为 URL 提供 `auth_code` 以启用单点登录会话。

下面显示了 `get-dashboard-embed-url` 的示例响应：

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
//readability and added ellipsis to indicate that it's incomplete.
{
     "Status": "200",
     "EmbedUrl": "https: //dashboards.example.com/embed/620bef10822743fab329fb3751187d2d...",
     "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
}
```

使用 Amazon Quick Sight Embedding [SDK 或将此 URL 添加到 iframe 中，将此控制面板嵌](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)入到您的网页中。如果您设置了固定的高度和宽度数字（以像素为单位），Amazon Quick Sight 会使用这些数字，并且不会在窗口大小调整时更改视觉效果。如果您设置相对的百分比高度和宽度，Amazon Quick Sight 会提供响应式布局，该布局会随着窗口大小的变化而进行修改。通过使用 Amazon Quick Sight Embedding SDK，您还可以控制控制面板中的参数并接收有关页面加载完成和错误的回调。

以下示例演示了如何使用生成的 URL。此代码位于您的应用程序服务器上。

```
<!DOCTYPE html>
<html>

<head>
    <title>Basic Embed</title>
    <!-- You can download the latest QuickSight embedding SDK version from https://www.npmjs.com/package/amazon-quicksight-embedding-sdk -->
    <!-- Or you can do "npm install amazon-quicksight-embedding-sdk", if you use npm for javascript dependencies -->
    <script src="./quicksight-embedding-js-sdk.min.js"></script>
    <script type="text/javascript">
        var dashboard;

        function embedDashboard() {
            var containerDiv = document.getElementById("embeddingContainer");
            var options = {
                // replace this dummy url with the one generated via embedding API
                url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode",  
                container: containerDiv,
                scrolling: "no",
                height: "700px",
                width: "1000px",
                footerPaddingEnabled: true
            };
            dashboard = QuickSightEmbedding.embedDashboard(options);
        }
    </script>
</head>

<body onload="embedDashboard()">
    <div id="embeddingContainer"></div>
</body>

</html>
```

要使此示例起作用，请务必使用 Amazon Quick Sight Embedding SDK 将嵌入式控制面板加载到您的网站上 JavaScript。要获取副本，请执行下列操作之一：
+ 从中下载 [Amazon Quick Sight 嵌入 SDK](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) GitHub。该存储库由一组 Amazon Quick Sight 开发人员维护。
+ 从下载最新的 QuickSight 嵌入式 SDK 版本[https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)。
+ 如果您使用`npm` JavaScript 依赖关系，请通过运行以下命令下载并安装它。

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

# 使用 GetDashboardEmbedUrl（旧 API）为注册用户嵌入控制面板
<a name="embedded-analytics-dashboards-for-authenticated-users-get"></a>

**重要**  
Amazon Quick Sight 推出了嵌入分析的新 APIs 功能：`GenerateEmbedUrlForAnonymousUser`和`GenerateEmbedUrlForRegisteredUser`。  
您仍然可以使用`GetDashboardEmbedUrl`和`GetSessionEmbedUrl` APIs 来嵌入仪表板和 Amazon Quick Sight 控制台，但它们不包含最新的嵌入功能。有关最新的 up-to-date嵌入体验，请参阅将 [Amazon Quick Sight 分析嵌入到您的应用程序](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html)中。

在以下各节中，您可以找到有关如何使用为注册用户设置嵌入式 Amazon Quick Sight 控制面板的详细信息`GetDashboardEmbedUrl`。

**Topics**
+ [步骤 1：设置权限](embedded-dashboards-for-authenticated-users-get-step-1.md)
+ [步骤 2：获取附带身份验证代码的 URL](embedded-dashboards-for-authenticated-users-get-step-2.md)
+ [步骤 3：嵌入控制面板 URL](embedded-dashboards-for-authenticated-users-get-step-3.md)

# 步骤 1：设置权限
<a name="embedded-dashboards-for-authenticated-users-get-step-1"></a>

**重要**  
Amazon Quick Sight 推出了嵌入分析的新 APIs 功能：`GenerateEmbedUrlForAnonymousUser`和`GenerateEmbedUrlForRegisteredUser`。  
您仍然可以使用`GetDashboardEmbedUrl`和`GetSessionEmbedUrl` APIs 来嵌入仪表板和 Amazon Quick Sight 控制台，但它们不包含最新的嵌入功能。有关最新的 up-to-date嵌入体验，请参阅将 [Amazon Quick Sight 分析嵌入到您的应用程序](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html)中。

在下节中，您可以了解如何设置后端应用程序或 Web 服务器的权限。该任务需要具有 IAM 的管理访问权限。

每个访问控制面板的用户都扮演一个角色，授予他们 Amazon Quick Sight 访问控制面板的权限和权限。为此，请在您的 AWS 账户中创建一个 IAM 角色。将一个 IAM 策略与该角色相关联，以便为担任该角色的任何用户提供权限。IAM 角色需要提供检索控制面板的权限 URLs。为此，请添加 `quicksight:GetDashboardEmbedUrl`。

以下示例策略提供了可用于 `IdentityType=IAM` 的这些权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "quicksight:GetDashboardEmbedUrl"
            ],
            "Resource": "*"
        }
    ]
}
```

------

以下示例策略提供了检索控制面板 URL 的权限。`quicksight:RegisterUser`如果您要创建的首次用户将成为 Amazon Quick Sight 读者，则可以使用该政策。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": "quicksight:RegisterUser",
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": "quicksight:GetDashboardEmbedUrl",
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}
```

------

如果您使用 `QUICKSIGHT` 作为您的 `identityType`，并提供用户的 Amazon 资源名称（ARN），则还需要在策略中允许 `quicksight:GetAuthCode` 操作。以下示例策略提供了此权限。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "quicksight:GetDashboardEmbedUrl",
        "quicksight:GetAuthCode"
      ],
      "Resource": "*"
    }
  ]
}
```

------

您应用程序的 IAM 身份必须具有关联的信任策略，才允许访问您刚创建的角色。这意味着，当用户访问您的应用程序时，您的应用程序可以代表用户担任该角色并在 Amazon Quick Sight 中配置用户。以下示例显示了一个名为 `embedding_quicksight_dashboard_role` 的角色，该角色将前面的示例策略作为其资源。

有关 OpenId Connect 或 SAML 身份验证的信任策略的更多信息，请参阅 *IAM 用户指南* 的以下部分：
+ [创建用于 Web 联合身份验证或 OpenID Connect 联合身份验证的角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html)
+ [创建用于 SAML 2.0 联合身份验证的角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)

# 步骤 2：获取附带身份验证代码的 URL
<a name="embedded-dashboards-for-authenticated-users-get-step-2"></a>

**重要**  
Amazon Quick Sight 推出了嵌入分析的新 APIs 功能：`GenerateEmbedUrlForAnonymousUser`和`GenerateEmbedUrlForRegisteredUser`。  
您仍然可以使用`GetDashboardEmbedUrl`和`GetSessionEmbedUrl` APIs 来嵌入仪表板和 Amazon Quick Sight 控制台，但它们不包含最新的嵌入功能。有关最新的 up-to-date嵌入体验，请参阅将 [Amazon Quick Sight 分析嵌入到您的应用程序](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html)中。

在下节中，您可以了解如何对用户进行身份验证，并获取应用程序服务器上的可嵌入控制面板 URL。

用户访问您的应用程序时，该应用程序代表用户代入 IAM 角色。然后，它会将该用户添加到 Amazon Quick Sight 中（如果该用户尚不存在）。接下来，其会将标识符作为唯一角色会话 ID 进行传递。

执行上述步骤可确保在 Amazon Quick Sight 中对控制面板的每个查看者进行唯一配置。它还实施每个用户的设置，例如，行级别安全性和参数的动态默认值。

以下示例展示了代表用户执行 IAM 身份验证。此代码在您的应用程序服务器上运行。

------
#### [ Java ]

```
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicSessionCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.quicksight.AmazonQuickSight;
import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder;
import com.amazonaws.services.quicksight.model.GetDashboardEmbedUrlRequest;
import com.amazonaws.services.quicksight.model.GetDashboardEmbedUrlResult;
import com.amazonaws.services.securitytoken.AWSSecurityTokenService;
import com.amazonaws.services.securitytoken.model.AssumeRoleRequest;
import com.amazonaws.services.securitytoken.model.AssumeRoleResult;

/**
 * Class to call QuickSight AWS SDK to get url for dashboard embedding.
 */
public class GetQuicksightEmbedUrlIAMAuth {

    private static String IAM = "IAM";

    private final AmazonQuickSight quickSightClient;

    private final AWSSecurityTokenService awsSecurityTokenService;

    public GetQuicksightEmbedUrlIAMAuth(final AWSSecurityTokenService awsSecurityTokenService) {
        this.quickSightClient = AmazonQuickSightClientBuilder
                .standard()
                .withRegion(Regions.US_EAST_1.getName())
                .withCredentials(new AWSCredentialsProvider() {
                                     @Override
                                     public AWSCredentials getCredentials() {
                                         // provide actual IAM access key and secret key here
                                         return new BasicAWSCredentials("access-key", "secret-key");
                                     }

                                     @Override
                                     public void refresh() {}
                                 }
                )
                .build();
        this.awsSecurityTokenService = awsSecurityTokenService;
    }

    public String getQuicksightEmbedUrl(
            final String accountId, // YOUR AWS ACCOUNT ID
            final String dashboardId, // YOUR DASHBOARD ID TO EMBED
            final String openIdToken, // TOKEN TO ASSUME ROLE WITH ROLEARN
            final String roleArn, // IAM USER ROLE TO USE FOR EMBEDDING
            final String sessionName, // SESSION NAME FOR THE ROLEARN ASSUME ROLE
            final boolean resetDisabled, // OPTIONAL PARAMETER TO ENABLE DISABLE RESET BUTTON IN EMBEDDED DASHBAORD
            final boolean undoRedoDisabled // OPTIONAL PARAMETER TO ENABLE DISABLE UNDO REDO BUTTONS IN EMBEDDED DASHBAORD
    ) throws Exception {
        AssumeRoleRequest request = new AssumeRoleRequest()
                .withRoleArn(roleArn)
                .withRoleSessionName(sessionName)
                .withTokenCode(openIdToken)
                .withDurationSeconds(3600);
        AssumeRoleResult assumeRoleResult = awsSecurityTokenService.assumeRole(request);

        AWSCredentials temporaryCredentials = new BasicSessionCredentials(
                assumeRoleResult.getCredentials().getAccessKeyId(),
                assumeRoleResult.getCredentials().getSecretAccessKey(),
                assumeRoleResult.getCredentials().getSessionToken());
        AWSStaticCredentialsProvider awsStaticCredentialsProvider = new AWSStaticCredentialsProvider(temporaryCredentials);

        GetDashboardEmbedUrlRequest getDashboardEmbedUrlRequest = new GetDashboardEmbedUrlRequest()
                .withDashboardId(dashboardId)
                .withAwsAccountId(accountId)
                .withIdentityType(IAM)
                .withResetDisabled(resetDisabled)
                .withUndoRedoDisabled(undoRedoDisabled)
                .withRequestCredentialsProvider(awsStaticCredentialsProvider);

        GetDashboardEmbedUrlResult dashboardEmbedUrl = quickSightClient.getDashboardEmbedUrl(getDashboardEmbedUrlRequest);

        return dashboardEmbedUrl.getEmbedUrl();
    }
}
```

------
#### [ JavaScript ]

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function getDashboardEmbedURL(
    accountId, // YOUR AWS ACCOUNT ID
    dashboardId, // YOUR DASHBOARD ID TO EMBED
    openIdToken, // TOKEN TO ASSUME ROLE WITH ROLEARN
    roleArn, // IAM USER ROLE TO USE FOR EMBEDDING
    sessionName, // SESSION NAME FOR THE ROLEARN ASSUME ROLE
    resetDisabled, // OPTIONAL PARAMETER TO ENABLE DISABLE RESET BUTTON IN EMBEDDED DASHBAORD
    undoRedoDisabled, // OPTIONAL PARAMETER TO ENABLE DISABLE UNDO REDO BUTTONS IN EMBEDDED DASHBAORD
    getEmbedUrlCallback, // GETEMBEDURL SUCCESS CALLBACK METHOD
    errorCallback // GETEMBEDURL ERROR CALLBACK METHOD
    ) {
    const stsClient = new AWS.STS();
    let stsParams = {
        RoleSessionName: sessionName,
        WebIdentityToken: openIdToken,
        RoleArn: roleArn
    }

    stsClient.assumeRoleWithWebIdentity(stsParams, function(err, data) {
        if (err) {
            console.log('Error assuming role');
            console.log(err, err.stack);
            errorCallback(err);
        } else {
            const getDashboardParams = {
                AwsAccountId: accountId,
                DashboardId: dashboardId,
                IdentityType: 'IAM',
                ResetDisabled: resetDisabled,
                SessionLifetimeInMinutes: 600,
                UndoRedoDisabled: undoRedoDisabled
            };

            const quicksightGetDashboard = new AWS.QuickSight({
                region: process.env.AWS_REGION,
                credentials: {
                    accessKeyId: data.Credentials.AccessKeyId,
                    secretAccessKey: data.Credentials.SecretAccessKey,
                    sessionToken: data.Credentials.SessionToken,
                    expiration: data.Credentials.Expiration
                }
            });

            quicksightGetDashboard.getDashboardEmbedUrl(getDashboardParams, function(err, data) {
                if (err) {
                    console.log(err, err.stack);
                    errorCallback(err);
                } else {
                    const result = {
                        "statusCode": 200,
                        "headers": {
                            "Access-Control-Allow-Origin": "*", // USE YOUR WEBSITE DOMAIN TO SECURE ACCESS TO GETEMBEDURL API
                            "Access-Control-Allow-Headers": "Content-Type"
                        },
                        "body": JSON.stringify(data),
                        "isBase64Encoded": false
                    }
                    getEmbedUrlCallback(result);
                }
            });
        }
    });
}
```

------
#### [ Python3 ]

```
import json
import boto3
from botocore.exceptions import ClientError

# Create QuickSight and STS clients
qs = boto3.client('quicksight',region_name='us-east-1')
sts = boto3.client('sts')

# Function to generate embedded URL  
# accountId: YOUR AWS ACCOUNT ID
# dashboardId: YOUR DASHBOARD ID TO EMBED
# openIdToken: TOKEN TO ASSUME ROLE WITH ROLEARN
# roleArn: IAM USER ROLE TO USE FOR EMBEDDING
# sessionName: SESSION NAME FOR THE ROLEARN ASSUME ROLE
# resetDisabled: PARAMETER TO ENABLE DISABLE RESET BUTTON IN EMBEDDED DASHBAORD
# undoRedoDisabled: PARAMETER TO ENABLE DISABLE UNDO REDO BUTTONS IN EMBEDDED DASHBAORD
def getDashboardURL(accountId, dashboardId, openIdToken, roleArn, sessionName, resetDisabled, undoRedoDisabled):
    try:
        assumedRole = sts.assume_role(
            RoleArn = roleArn,
            RoleSessionName = sessionName,
            WebIdentityToken = openIdToken
        )
    except ClientError as e:
        return "Error assuming role: " + str(e)
    else: 
        assumedRoleSession = boto3.Session(
            aws_access_key_id = assumedRole['Credentials']['AccessKeyId'],
            aws_secret_access_key = assumedRole['Credentials']['SecretAccessKey'],
            aws_session_token = assumedRole['Credentials']['SessionToken'],
        )
        try:
            quickSight = assumedRoleSession.client('quicksight',region_name='us-east-1')
            
            response = quickSight.get_dashboard_embed_url(
                 AwsAccountId = accountId,
                 DashboardId = dashboardId,
                 IdentityType = 'IAM',
                 SessionLifetimeInMinutes = 600,
                 UndoRedoDisabled = undoRedoDisabled,
                 ResetDisabled = resetDisabled
            )
            
            return {
                'statusCode': 200,
                'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"},
                'body': json.dumps(response),
                'isBase64Encoded':  bool('false')
            }
        except ClientError as e:
            return "Error generating embeddedURL: " + str(e)
```

------
#### [ Node.js ]

以下示例显示了可以在应用服务器上使用的 JavaScript (Node.js) 来获取嵌入式仪表板的 URL。您可以在网站或应用程序中使用该 URL 以显示控制面板。

**Example**  

```
const AWS = require('aws-sdk');
            const https = require('https');
            
            var quicksight = new AWS.Service({
                apiConfig: require('./quicksight-2018-04-01.min.json'),
                region: 'us-east-1',
            });
            
            quicksight.getDashboardEmbedUrl({
                'AwsAccountId': '111122223333',
                'DashboardId': '1c1fe111-e2d2-3b30-44ef-a0e111111cde',
                'IdentityType': 'IAM',
                'ResetDisabled': true,
                'SessionLifetimeInMinutes': 100,
                'UndoRedoDisabled': false,
                'StatePersistenceEnabled': true
            
            }, function(err, data) {
                console.log('Errors: ');
                console.log(err);
                console.log('Response: ');
                console.log(data);
            });
```

**Example**  

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
            //readability and added ellipsis to indicate that it's incomplete.
                                { Status: 200,
              EmbedUrl: 'https://dashboards.example.com/embed/620bef10822743fab329fb3751187d2d…
              RequestId: '7bee030e-f191-45c4-97fe-d9faf0e03713' }
```

------
#### [ .NET/C\$1 ]

以下示例显示了可以在应用程序服务器上使用以获取嵌入式控制面板 URL 的 .NET/C\$1 代码。您可以在网站或应用程序中使用该 URL 以显示控制面板。

**Example**  

```
            var client = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                sessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                Console.WriteLine(
                    client.GetDashboardEmbedUrlAsync(new GetDashboardEmbedUrlRequest
                    {
                        AwsAccountId = “111122223333”,
                        DashboardId = "1c1fe111-e2d2-3b30-44ef-a0e111111cde",
                        IdentityType = EmbeddingIdentityType.IAM,
                        ResetDisabled = true,
                        SessionLifetimeInMinutes = 100,
                        UndoRedoDisabled = false,
                        StatePersistenceEnabled = true
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
```

------
#### [ AWS CLI ]

要代入该角色，请选择以下 AWS Security Token Service (AWS STS) API 操作之一：
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— 当您使用 IAM 身份代入角色时，请使用此操作。
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— 当您使用 Web 身份提供商对用户进行身份验证时，请使用此操作。
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 当您使用 SAML 对用户进行身份验证时，请使用此操作。

以下示例显示了用于设置 IAM 角色的 CLI 命令。该角色需要为 `quicksight:GetDashboardEmbedURL` 启用权限。如果您采用一种在用户首次打开仪表板时添加用户的 just-in-time方法，则该角色还需要为其启用权限`quicksight:RegisterUser`。

```
aws sts assume-role \
     --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \
     --role-session-name john.doe@example.com
```

`assume-role` 操作返回三个输出参数：访问密钥、私有密钥和会话令牌。

**注意**  
如果在调用 `AssumeRole` 操作时遇到 `ExpiredToken` 错误，可能是因为之前的 `SESSION TOKEN` 仍在环境变量中。通过设置以下变量可以解决这一问题：  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1访问密钥* 
*AWS\$1SESSION\$1代币* 

以下示例说明了如何在 CLI 中设置这三个参数。如果您使用 Microsoft Windows 计算机，请使用 `set` 而不是 `export`。

```
export AWS_ACCESS_KEY_ID     = "access_key_from_assume_role"
export AWS_SECRET_ACCESS_KEY = "secret_key_from_assume_role"
export AWS_SESSION_TOKEN     = "session_token_from_assume_role"
```

如果运行这些命令，则会将访问您的网站的用户的角色会话 ID 设置为 `embedding_quicksight_dashboard_role/john.doe@example.com`。角色会话 ID 由 `role-arn` 中的角色名称和 `role-session-name` 值组成。每个用户使用唯一的角色会话 ID 可以确保为每个用户设置相应的权限。此外，它还能避免任何用户访问限制。*限制*是一项安全功能，可防止同一个用户从多个位置访问 Amazon Quick Sight。

角色会话 ID 也将成为 Amazon Quick Sight 中的用户名。您可以使用此模式提前在 Amazon Quick Sight 中配置用户，或者在他们首次访问控制面板时对其进行配置。

以下示例显示了可用于预置用户的 CLI 命令。有关[RegisterUser[DescribeUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html)](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html)、和其他 Amazon Quick Sight API 操作的更多信息，请参阅 [Amazon Quick Sight API 参考](https://docs.aws.amazon.com/quicksight/latest/APIReference/Welcome.html)。

```
aws quicksight register-user \
     --aws-account-id 111122223333 \
     --namespace default \
     --identity-type IAM \
     --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \
     --user-role READER \
     --user-name jhnd \
     --session-name "john.doe@example.com" \
     --email john.doe@example.com \
     --region us-east-1 \
     --custom-permissions-name TeamA1
```

如果用户通过 Microsoft AD 进行身份验证，则无需使用 `RegisterUser` 进行设置。相反，他们应该在首次访问 Amazon Quick Sight 时自动订阅。对于 Microsoft AD 用户，您可以使用 `DescribeUser` 获取用户 ARN。

用户首次访问 Amazon Quick Sight 时，您也可以将该用户添加到与之共享控制面板的群组中。以下示例显示了将用户添加到组的 CLI 命令。

```
aws quicksight create-group-membership \
     --aws-account-id=111122223333 \
     --namespace=default \
     --group-name=financeusers \
     --member-name="embedding_quicksight_dashboard_role/john.doe@example.com"
```

现在，您的应用程序的用户也是 Amazon Quick Sight 的用户，并且可以访问控制面板。

最后，要获取控制面板的签名 URL，请从应用程序服务器中调用 `get-dashboard-embed-url`。这会返回可嵌入的控制面板 URL。以下示例说明如何通过 AWS Managed Microsoft AD 或 IAM Identity Center 进行身份验证的用户通过服务器端调用获取嵌入式控制面板的 URL。

```
aws quicksight get-dashboard-embed-url \
     --aws-account-id 111122223333 \
     --dashboard-id 1a1ac2b2-3fc3-4b44-5e5d-c6db6778df89 \
     --identity-type IAM \
     --session-lifetime-in-minutes 30 \
     --undo-redo-disabled true \
     --reset-disabled true \
     --state-persistence-enabled true \
     --user-arn arn:aws:quicksight:us-east-1:111122223333:user/default/embedding_quicksight_dashboard_role/embeddingsession
```

有关使用该操作的更多信息，请参阅 [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html)。您可以在自己的代码中使用该 API 操作和其他操作。

------

# 步骤 3：嵌入控制面板 URL
<a name="embedded-dashboards-for-authenticated-users-get-step-3"></a>

**重要**  
Amazon Quick Sight 推出了嵌入分析的新 APIs 功能：`GenerateEmbedUrlForAnonymousUser`和`GenerateEmbedUrlForRegisteredUser`。  
您仍然可以使用`GetDashboardEmbedUrl`和`GetSessionEmbedUrl` APIs 来嵌入仪表板和 Amazon Quick Sight 控制台，但它们不包含最新的嵌入功能。有关最新的 up-to-date嵌入体验，请参阅将 [Amazon Quick Sight 分析嵌入到您的应用程序](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html)中。

在下一节中，您可以了解如何使用 [Amazon Quick Sight 嵌入软件开发工具包](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript) 将第 3 步中的控制面板网址嵌入到您的网站或应用程序页面中。通过使用该开发工具包，您可以执行以下操作：
+ 将控制面板放在 HTML 页面上。
+ 将参数传递到控制面板。
+ 使用为应用程序自定义的消息处理错误状态。

调用 `GetDashboardEmbedUrl` API 操作获取可嵌入应用程序的 URL。该 URL 的有效期为 5 分钟，生成的会话的有效期为 10 个小时。该 API 操作为 URL 提供 `auth_code` 以启用单点登录会话。

下面显示了 `get-dashboard-embed-url` 的示例响应：

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
//readability and added ellipsis to indicate that it's incomplete.
{
     "Status": "200",
     "EmbedUrl": "https: //dashboards.example.com/embed/620bef10822743fab329fb3751187d2d...",
     "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
}
```

使用 [Amazon Quick Sight 嵌入软件开发工具包](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)或将此 URL 添加到 iframe 中，将此控制面板嵌入到您的网页中。如果您设置了固定的高度和宽度数字（以像素为单位），Amazon Quick Sight 会使用这些数字，并且不会随着窗口大小调整而改变视觉效果。如果您设置相对的百分比高度和宽度，Amazon Quick Sight 会提供响应式布局，该布局会随着窗口大小的变化而进行修改。通过使用 Amazon Quick Sight Embedding SDK，您还可以控制控制面板中的参数并接收有关页面加载完成和错误的回调。

以下示例演示了如何使用生成的 URL。此代码在您的应用程序服务器上生成。

```
<!DOCTYPE html>
<html>

<head>
    <title>Basic Embed</title>

    <script src="./quicksight-embedding-js-sdk.min.js"></script>
    <script type="text/javascript">
        var dashboard;

        function embedDashboard() {
            var containerDiv = document.getElementById("embeddingContainer");
            var options = {
                // replace this dummy url with the one generated via embedding API
                url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode",  
                container: containerDiv,
                scrolling: "no",
                height: "700px",
                width: "1000px",
                footerPaddingEnabled: true
            };
            dashboard = QuickSightEmbedding.embedDashboard(options);
        }
    </script>
</head>

<body onload="embedDashboard()">
    <div id="embeddingContainer"></div>
</body>

</html>
```

要使此示例起作用，请务必使用 Amazon Quick Sight Embedding SDK 将嵌入式控制面板加载到您的网站上 JavaScript。要获取副本，请执行下列操作之一：
+ 从中下载 [Amazon Quick Sight 嵌入 SDK](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) GitHub。该存储库由一组 Amazon Quick Sight 开发人员维护。
+ 从下载最新的嵌入式 SDK 版本[https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)。
+ 如果您使用`npm` JavaScript 依赖关系，请通过运行以下命令下载并安装它。

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

# 使用GetSessionEmbedUrl（旧 API）嵌入 Amazon Quick Sight 控制台
<a name="embedded-analytics-full-console-for-authenticated-users-get"></a>

**重要**  
Amazon Quick Sight 推出了嵌入分析的新 APIs 功能：`GenerateEmbedUrlForAnonymousUser`和`GenerateEmbedUrlForRegisteredUser`。  
您仍然可以使用`GetDashboardEmbedUrl`和`GetSessionEmbedUrl` APIs 来嵌入仪表板和 Amazon Quick Sight 控制台，但它们不包含最新的嵌入功能。有关最新的 up-to-date嵌入体验，请参阅将 [Amazon Quick Sight 分析嵌入到您的应用程序](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html)中。


|  | 
| --- |
|  适用于：企业版  | 


|  | 
| --- |
|    目标受众：Amazon Quick 开发者  | 

在以下各节中，您可以找到有关如何在自定义品牌创作门户中为使用 API 的注册用户提供 Amazon Quick Sight 控制台体验的`GetSessionEmbedUrl`详细信息。

**Topics**
+ [步骤 1：设置权限](embedded-analytics-full-console-for-authenticated-users-get-step-1.md)
+ [步骤 2：获取附带身份验证代码的 URL](embedded-analytics-full-console-for-authenticated-users-get-step-2.md)
+ [步骤 3：嵌入控制台会话 URL](embedded-analytics-full-console-for-authenticated-users-get-step-3.md)

# 步骤 1：设置权限
<a name="embedded-analytics-full-console-for-authenticated-users-get-step-1"></a>

**重要**  
Amazon Quick Sight 推出了嵌入分析的新 APIs 功能：`GenerateEmbedUrlForAnonymousUser`和`GenerateEmbedUrlForRegisteredUser`。  
您仍然可以使用`GetDashboardEmbedUrl`和`GetSessionEmbedUrl` APIs 来嵌入仪表板和 Amazon Quick Sight 控制台，但它们不包含最新的嵌入功能。有关最新的 up-to-date嵌入体验，请参阅将 [Amazon Quick Sight 分析嵌入到您的应用程序](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html)中。

在下节中，您可以了解如何设置后端应用程序或 Web 服务器的权限。该任务需要具有 IAM 的管理访问权限。

每个访问 Amazon Quick Sight 的用户都扮演一个角色，该角色授予他们 Amazon Quick Sight 访问权限和控制台会话权限。为此，请在您的 AWS 账户中创建一个 IAM 角色。将一个 IAM 策略与该角色相关联，以便为担任该角色的任何用户提供权限。添加`quicksight:RegisterUser`权限以确保读者能够以只读方式访问 Amazon Quick Sight，并且无法访问任何其他数据或创建功能。IAM 角色还需要提供检索控制台会话的权限 URLs。为此，请添加 `quicksight:GetSessionEmbedUrl`。

以下示例策略提供了可用于 `IdentityType=IAM` 的这些权限。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": "quicksight:RegisterUser",
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": "quicksight:GetSessionEmbedUrl",
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}
```

------

以下示例策略提供了检索控制台会话 URL 的权限。如果您在用户访问嵌入式会话之前创建用户，则可以使用不具有 `quicksight:RegisterUser` 的策略。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "quicksight:GetSessionEmbedUrl"
            ],
            "Resource": "*"
        }
    ]
}
```

------

如果您使用 `QUICKSIGHT` 作为您的 `identityType`，并提供用户的 Amazon 资源名称（ARN），则还需要在策略中允许 `quicksight:GetAuthCode` 操作。以下示例策略提供了此权限。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "quicksight:GetSessionEmbedUrl",
        "quicksight:GetAuthCode"
      ],
      "Resource": "*"
    }
  ]
}
```

------

您应用程序的 IAM 身份必须具有关联的信任策略，才允许访问您刚创建的角色。这意味着，当用户访问您的应用程序时，您的应用程序可以代表用户担任该角色并在 Amazon Quick Sight 中配置用户。以下示例显示了一个名为 `embedding_quicksight_console_session_role` 的角色，该角色将前面的示例策略作为其资源。

有关 OpenId Connect 或 SAML 身份验证的信任策略的更多信息，请参阅 *IAM 用户指南* 的以下部分：
+ [创建用于 Web 联合身份验证或 OpenID Connect 联合身份验证的角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html)
+ [创建用于 SAML 2.0 联合身份验证的角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)

# 步骤 2：获取附带身份验证代码的 URL
<a name="embedded-analytics-full-console-for-authenticated-users-get-step-2"></a>

**重要**  
Amazon Quick Sight 推出了嵌入分析的新 APIs 功能：`GenerateEmbedUrlForAnonymousUser`和`GenerateEmbedUrlForRegisteredUser`。  
您仍然可以使用`GetDashboardEmbedUrl`和`GetSessionEmbedUrl` APIs 来嵌入仪表板和 Amazon Quick Sight 控制台，但它们不包含最新的嵌入功能。有关最新的 up-to-date嵌入体验，请参阅将 [Amazon Quick Sight 分析嵌入到您的应用程序](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html)中。

在下节中，您可以了解如何对用户进行身份验证，并获取应用程序服务器上的可嵌入控制台会话 URL。

用户访问您的应用程序时，该应用程序代表用户代入 IAM 角色。然后，它会将该用户添加到 Amazon Quick Sight（如果该用户尚不存在）。接下来，其会将标识符作为唯一角色会话 ID 进行传递。

执行上述步骤可确保在 Amazon Quick Sight 中对控制台会话的每个查看者进行唯一的配置。它还实施每个用户的设置，例如，行级别安全性和参数的动态默认值。

以下示例展示了代表用户执行 IAM 身份验证。此代码在您的应用程序服务器上运行。

------
#### [ Java ]

```
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.quicksight.AmazonQuickSight;
import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder;
import com.amazonaws.services.quicksight.model.GetSessionEmbedUrlRequest;
import com.amazonaws.services.quicksight.model.GetSessionEmbedUrlResult;

/**
 * Class to call QuickSight AWS SDK to get url for session embedding.
 */
public class GetSessionEmbedUrlQSAuth {

    private final AmazonQuickSight quickSightClient;

    public GetSessionEmbedUrlQSAuth() {
        this.quickSightClient = AmazonQuickSightClientBuilder
                .standard()
                .withRegion(Regions.US_EAST_1.getName())
                .withCredentials(new AWSCredentialsProvider() {
                                     @Override
                                     public AWSCredentials getCredentials() {
                                         // provide actual IAM access key and secret key here
                                         return new BasicAWSCredentials("access-key", "secret-key");
                                     }

                                     @Override
                                     public void refresh() {}
                                 }
                )
                .build();
    }

    public String getQuicksightEmbedUrl(
            final String accountId, // YOUR AWS ACCOUNT ID
            final String userArn // REGISTERED USER ARN TO USE FOR EMBEDDING. REFER TO GETEMBEDURL SECTION IN DEV PORTAL TO FIND OUT HOW TO GET USER ARN FOR A QUICKSIGHT USER
    ) throws Exception {
        GetSessionEmbedUrlRequest getSessionEmbedUrlRequest = new GetSessionEmbedUrlRequest()
                .withAwsAccountId(accountId)
                .withEntryPoint("/start")
                .withUserArn(userArn);

        GetSessionEmbedUrlResult sessionEmbedUrl = quickSightClient.getSessionEmbedUrl(getSessionEmbedUrlRequest);

        return sessionEmbedUrl.getEmbedUrl();
    }
}
```

------
#### [ JavaScript ]

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function getSessionEmbedURL(
    accountId, // YOUR AWS ACCOUNT ID
    userArn, // REGISTERED USER ARN TO USE FOR EMBEDDING. REFER TO GETEMBEDURL SECTION IN DEV PORTAL TO FIND OUT HOW TO GET USER ARN FOR A QUICKSIGHT USER
    getEmbedUrlCallback, // GETEMBEDURL SUCCESS CALLBACK METHOD
    errorCallback // GETEMBEDURL ERROR CALLBACK METHOD
    ) {
    const getSessionParams = {
        AwsAccountId: accountId,
        EntryPoint: "/start",
        UserArn: userArn,
        SessionLifetimeInMinutes: 600,
    };

    const quicksightGetSession = new AWS.QuickSight({
        region: process.env.AWS_REGION,
    });

    quicksightGetSession.getSessionEmbedUrl(getSessionParams, function(err, data) {
        if (err) {
            console.log(err, err.stack);
            errorCallback(err);
        } else {
            const result = {
                "statusCode": 200,
                "headers": {
                    "Access-Control-Allow-Origin": "*", // USE YOUR WEBSITE DOMAIN TO SECURE ACCESS TO GETEMBEDURL API
                    "Access-Control-Allow-Headers": "Content-Type"
                },
                "body": JSON.stringify(data),
                "isBase64Encoded": false
            }
            getEmbedUrlCallback(result);
        }
    });
}
```

------
#### [ Python3 ]

```
import json
import boto3
from botocore.exceptions import ClientError
import time

# Create QuickSight and STS clients
qs = boto3.client('quicksight',region_name='us-east-1')
sts = boto3.client('sts')

# Function to generate embedded URL
# accountId: YOUR AWS ACCOUNT ID
# userArn: REGISTERED USER ARN TO USE FOR EMBEDDING. REFER TO GETEMBEDURL SECTION IN DEV PORTAL TO FIND OUT HOW TO GET USER ARN FOR A QUICKSIGHT USER
def getSessionEmbedURL(accountId, userArn):
    try:
        response = qs.get_session_embed_url(
            AwsAccountId = accountId,
            EntryPoint = "/start",
            UserArn = userArn,
            SessionLifetimeInMinutes = 600
        )
            
        return {
            'statusCode': 200,
            'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"},
            'body': json.dumps(response),
            'isBase64Encoded':  bool('false')
        }
    except ClientError as e:
        print(e)
        return "Error generating embeddedURL: " + str(e)
```

------
#### [ Node.js ]

以下示例显示了可以在应用服务器上使用的 JavaScript (Node.js) 来获取嵌入式控制台会话的 URL。您可以在网站或应用程序中使用该 URL 来显示控制台会话。

**Example**  

```
const AWS = require('aws-sdk');
            const https = require('https');
            
            var quicksight = new AWS.Service({
                apiConfig: require('./quicksight-2018-04-01.min.json'),
                region: 'us-east-1',
            });
            
            quicksight.GetSessionEmbedUrl({
                'AwsAccountId': '111122223333',
                'EntryPoint': 'https://url-for-console-page-to-open',
                'SessionLifetimeInMinutes': 600,
                'UserArn': 'USER_ARN'
            
            }, function(err, data) {
                console.log('Errors: ');
                console.log(err);
                console.log('Response: ');
                console.log(data);
            });
```

**Example**  

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
            //readability and added ellipsis to indicate that it's incomplete.
                                { Status: 200,
              EmbedUrl: 'https://dashboards.example.com/embed/620bef10822743fab329fb3751187d2d…
              RequestId: '7bee030e-f191-45c4-97fe-d9faf0e03713' }
```

------
#### [ .NET/C\$1 ]

以下示例演示了可以在应用程序服务器上使用以获取嵌入式控制台会话 URL 的 .NET/C\$1 代码。您可以在网站或应用程序中使用该 URL 来显示控制台。

**Example**  

```
            var client = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                sessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                Console.WriteLine(
                    client.GetSessionEmbedUrlAsync(new GetSessionEmbedUrlRequest
                    {
                'AwsAccountId': '111122223333',
                'EntryPoint': 'https://url-for-console-page-to-open',
                'SessionLifetimeInMinutes': 600,
                'UserArn': 'USER_ARN'
                        AwsAccountId = 111122223333,
                        EntryPoint = https://url-for-console-page-to-open,
                        SessionLifetimeInMinutes = 600,
                        UserArn = 'USER_ARN'
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
```

------
#### [ AWS CLI ]

要代入该角色，请选择以下 AWS Security Token Service (AWS STS) API 操作之一：
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— 当您使用 IAM 身份代入角色时，请使用此操作。
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— 当您使用 Web 身份提供商对用户进行身份验证时，请使用此操作。
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 当您使用 SAML 对用户进行身份验证时，请使用此操作。

以下示例显示了用于设置 IAM 角色的 CLI 命令。该角色需要为 `quicksight:GetSessionEmbedUrl` 启用权限。如果您在用户首次打开 Amazon Quick Sight 时采用添加他们的 just-in-time方法，则还需要为该角色启用权限`quicksight:RegisterUser`。

```
aws sts assume-role \
     --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \
     --role-session-name john.doe@example.com
```

`assume-role` 操作返回三个输出参数：访问密钥、私有密钥和会话令牌。

**注意**  
如果在调用 `AssumeRole` 操作时遇到 `ExpiredToken` 错误，可能是因为之前的 `SESSION TOKEN` 仍在环境变量中。通过设置以下变量可以解决这一问题：  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1访问密钥* 
*AWS\$1SESSION\$1代币* 

以下示例说明了如何在 CLI 中设置这三个参数。如果您使用 Microsoft Windows 计算机，请使用 `set` 而不是 `export`。

```
export AWS_ACCESS_KEY_ID     = "access_key_from_assume_role"
export AWS_SECRET_ACCESS_KEY = "secret_key_from_assume_role"
export AWS_SESSION_TOKEN     = "session_token_from_assume_role"
```

如果运行这些命令，则会将访问您的网站的用户的角色会话 ID 设置为 `embedding_quicksight_console_session_role/john.doe@example.com`。角色会话 ID 由 `role-arn` 中的角色名称和 `role-session-name` 值组成。每个用户使用唯一的角色会话 ID 可以确保为每个用户设置相应的权限。此外，它还能避免任何用户访问限制。限制是一项安全功能，可防止同一个用户从多个位置访问 Amazon Quick Sight。

角色会话 ID 也将成为 Amazon Quick Sight 中的用户名。您可以使用此模式提前在 Amazon Quick Sight 中配置用户，或者在他们首次访问控制台会话时对其进行配置。

以下示例显示了可用于预置用户的 CLI 命令。有关[RegisterUser[DescribeUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html)](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html)、和其他 Amazon Quick Sight API 操作的更多信息，请参阅 [Amazon Quick Sight API 参考](https://docs.aws.amazon.com/quicksight/latest/APIReference/Welcome.html)。

```
aws quicksight register-user \
     --aws-account-id 111122223333 \
     --namespace default \
     --identity-type IAM \
     --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \
     --user-role READER \
     --user-name jhnd \
     --session-name "john.doe@example.com" \
     --email john.doe@example.com \
     --region us-east-1 \
     --custom-permissions-name TeamA1
```

如果用户通过 Microsoft AD 进行身份验证，则无需使用 `RegisterUser` 进行设置。相反，他们应该在首次访问 Amazon Quick Sight 时自动订阅。对于 Microsoft AD 用户，您可以使用 `DescribeUser` 获取用户 ARN。

当用户首次访问 Amazon Quick Sight 时，您也可以将该用户添加到相应的群组中。以下示例显示了将用户添加到组的 CLI 命令。

```
aws quicksight create-group-membership \
     --aws-account-id=111122223333 \
     --namespace=default \
     --group-name=financeusers \
     --member-name="embedding_quicksight_dashboard_role/john.doe@example.com"
```

现在，您的应用程序的用户也是 Amazon Quick Sight 的用户，并且可以访问 Amazon Quick Sight 控制台会话。

最后，要获取控制台会话的签名 URL，请从应用程序服务器中调用 `get-session-embed-url`。此操作会返回可嵌入控制台会话 URL。以下示例说明如何通过服务器端调用 AWS Managed Microsoft AD 或单点登录（IAM Identity Center）进行身份验证的用户获取嵌入式控制台会话的网址。

```
aws quicksight get-dashboard-embed-url \
     --aws-account-id 111122223333 \
     --entry-point the-url-for--the-console-session \
     --session-lifetime-in-minutes 600 \
     --user-arn arn:aws:quicksight:us-east-1:111122223333:user/default/embedding_quicksight_dashboard_role/embeddingsession
```

有关使用该操作的更多信息，请参阅 [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetSessionEmbedUrl.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetSessionEmbedUrl.html)。您可以在自己的代码中使用该 API 操作和其他操作。

------

# 步骤 3：嵌入控制台会话 URL
<a name="embedded-analytics-full-console-for-authenticated-users-get-step-3"></a>

**重要**  
Amazon Quick Sight 推出了嵌入分析的新 APIs 功能：`GenerateEmbedUrlForAnonymousUser`和`GenerateEmbedUrlForRegisteredUser`。  
您仍然可以使用`GetDashboardEmbedUrl`和`GetSessionEmbedUrl` APIs 来嵌入仪表板和 Amazon Quick Sight 控制台，但它们不包含最新的嵌入功能。有关最新的 up-to-date嵌入体验，请参阅将 [Amazon Quick Sight 分析嵌入到您的应用程序](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html)中。

在下一节中，您可以了解如何使用 [Amazon Quick Sight 嵌入软件开发工具包](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript) 将第 3 步中的控制台会话 URL 嵌入到您的网站或应用程序页面中。通过使用该开发工具包，您可以执行以下操作：
+ 将控制台会话置于 HTML 页面上。
+ 将参数传入控制台会话。
+ 使用为应用程序自定义的消息处理错误状态。

调用 `GetSessionEmbedUrl` API 操作获取可嵌入应用程序的 URL。该 URL 的有效期为 5 分钟，生成的会话的有效期为 10 个小时。该 API 操作为 URL 提供 `auth_code` 以启用单点登录会话。

下面显示了 `get-dashboard-embed-url` 的示例响应：

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
//readability and added ellipsis to indicate that it's incomplete.
{
     "Status": "200",
     "EmbedUrl": "https: //dashboards.example.com/embed/620bef10822743fab329fb3751187d2d...",
     "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
}
```

使用 Amazon Quick Sight Embedding [SDK 或将此 URL 添加到 iframe 中，将此控制台会话嵌](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)入到您的网页中。如果您设置了固定的高度和宽度数字（以像素为单位），Amazon Quick Sight 会使用这些数字，并且不会随着窗口大小调整而改变视觉效果。如果您设置相对的百分比高度和宽度，Amazon Quick Sight 会提供响应式布局，该布局会随着窗口大小的变化而进行修改。通过使用 Amazon Quick Sight Embedding SDK，您还可以控制控制台会话中的参数，并接收有关页面加载完成和错误的回调。

以下示例演示了如何使用生成的 URL。此代码在您的应用程序服务器上生成。

```
<!DOCTYPE html>
<html>

<head>
    <title>Basic Embed</title>

    <script src="./quicksight-embedding-js-sdk.min.js"></script>
    <script type="text/javascript">
        var dashboard;

        function embedDashboard() {
            var containerDiv = document.getElementById("embeddingContainer");
            var options = {
                // replace this dummy url with the one generated via embedding API
                url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode",  
                container: containerDiv,
                scrolling: "no",
                height: "700px",
                width: "1000px",
                footerPaddingEnabled: true
            };
            dashboard = QuickSightEmbedding.embedDashboard(options);
        }
    </script>
</head>

<body onload="embedDashboard()">
    <div id="embeddingContainer"></div>
</body>

</html>
```

要使此示例起作用，请务必使用 Amazon Quick Sight Embedding SDK 将嵌入式控制台会话加载到您的网站上 JavaScript。要获取副本，请执行下列操作之一：
+ 从中下载 [Amazon Quick Sight 嵌入 SDK](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) GitHub。该存储库由一组 Amazon Quick Sight 开发人员维护。
+ 从下载最新的嵌入式 SDK 版本[https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)。
+ 如果您使用`npm` JavaScript 依赖关系，请通过运行以下命令下载并安装它。

  ```
  npm install amazon-quicksight-embedding-sdk
  ```