

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

# 将 Amazon Athena 与 Amazon Quick Sight 配合使用时出现连接问题
Athena 问题

接下来，您可以找到有关在使用 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.amazonaws.cn/athena/home)() 中运行查询会很有用。有关其他问题排查的信息，请参阅《Athena 用户指南》**中的[问题排查](https://docs.amazonaws.cn/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 中 Amazon 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 配合使用时未找到列
找不到 Athena 列

如果 Athena 数据来源中缺少分析中的列，您会收到“`column not found`”错误。

在 Amazon Quick Sight 中，打开您的分析。在**可视化**选项卡中，选择**选择数据集**、**编辑分析数据集**。

在**此分析中的数据集**屏幕中，选择您数据集旁边的**编辑**来刷新数据集。Amazon Quick Sight 会将架构缓存两分钟。因此，可能需要等待 2 分钟，之后才会显示最新更改。

要调查该列最初是如何丢失的，你可以前往 Athena 控制台 [https://console.aws.amazon.com/athena/](https://console.amazonaws.cn/athena/home)() 并查看查询历史记录以查找编辑该表的查询。

如果您在预览模式下编辑自定义 SQL 查询时出现此错误，请验证查询中的列名称，然后检查是否有其他语法错误。例如，请检查列名称是否未用为字符串保留的单引号括起来。

如果问题仍然存在，请验证表、列和查询是否符合 Athena 要求。有关更多信息，请参阅《Athena 用户指南》**中的[表、数据库和列的名称](https://docs.amazonaws.cn/athena/latest/ug/tables-databases-columns-names.html)和[问题排查](https://docs.amazonaws.cn/athena/latest/ug/troubleshooting.html)。

# 将 Athena 与 Amazon Quick Sight 配合使用时数据无效
Athena 无效数据

在计算字段中使用任何运算符或函数时，会出现无效数据错误。为了解决这一问题，请验证表中的数据是否与您为函数提供的格式一致。

例如，假设要将函数 `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 配合使用时的查询超时时间
Athena 查询超时

如果您的查询超时，则可尝试以下选项来解决您的问题。

如果故障是在进行分析时生成的，请记住，生成任何视觉效果的 Amazon Quick Sight 超时时间为两分钟。如果您使用的是自定义 SQL 查询，则可简化查询来优化运行时间。

如果您处于直接查询模式（不使用 SPICE）中，则可尝试将数据导入 SPICE。不过，如果查询超过 Athena 的 30 分钟超时限制，在将数据导入 SPICE 时可能会再次超时。有关 Athena 限制的最新信息，请参阅《Amazon Web Services 一般参考》**中的 [Amazon Athena Limits](https://docs.amazonaws.cn/general/latest/gr/aws_service_limits.html#amazon-athena-limits)。

# 将 Athena 与 Amazon Quick Sight 配合使用时，暂存存储桶已不存在
Athena 暂存存储桶缺失

利用此部分的内容帮助解决以下错误：“**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 查询可能会失败，同时返回指示暂存存储桶不再存在的错误。

 要修复此错误，请在正确的 Amazon Web Services 区域中创建新的同名存储桶。

# 在 Amazon Quick Sight 中 Amazon Glue 与 Athena 一起使用时表格不兼容
Amazon Glue 桌子与 Athena 不兼容

如果你在 Athena 中使用 Amazon Quick Sight 中的 Amazon Glue 表格时遇到错误，那可能是因为你缺少了一些元数据。请按照以下步骤查看您的表格是否没有 Amazon Quick Sight 让 Athena 连接器正常工作所需的`TableType`属性。通常，这些表的元数据不会迁移到 Amazon Glue 数据目录中。有关更多信息，请参阅[《 Amazon Glue 开发人员指南》 Step-by-Step中的升级到 Amazon Glue 数据目录](https://docs.amazonaws.cn/athena/latest/ug/glue-upgrade.html)*。*

如果您此时不想迁移到 Amazon Glue 数据目录，则有两种选择。您可以通过 Amazon Glue 管理控制台重新创建每 Amazon Glue 张表。或者，您可以使用以下过程中列出的 Amazon CLI 脚本来识别和更新缺少`TableType`属性的表。

如果您更希望使用 CLI 执行此操作，请使用以下过程以帮助您设计脚本。

**使用 CLI 设计脚本**

1. 使用 CLI 来了解哪些 Amazon 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 配合使用时未找到表格
未找到 Athena 表格

如果 Athena 数据来源中缺少分析中的表，您会收到“`table not found`”错误。

在 Athena 控制台 [https://console.aws.amazon.com/athena/](https://console.amazonaws.cn/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.amazonaws.cn/athena/latest/ug/tables-databases-columns-names.html)和[问题排查](https://docs.amazonaws.cn/athena/latest/ug/troubleshooting.html)。

# 将 Athena 与 Quick Sight 配合使用时出现工作组和输出错误


要验证是否已正确设置工作组，请检查以下设置：
+ **与数据来源关联的 Athena 工作组必须存在。**

  要解决此问题，您可以返回 Athena 数据来源设置并选择其他工作组。有关更多信息，请参阅《Athena 用户指南》**中的[设置工作组](https://docs.amazonaws.cn/athena/latest/ug/workgroups-procedure.html)。

  另一种解决方案是让 Amazon Web Services 账户 管理员在 Athena 控制台中重新创建工作组。
+ **与数据来源关联的 Athena 工作组必须处于启用状态。**

   Amazon Web Services 账户 管理员需要在 Athena 控制台中启用工作组。使用此直接链接打开Athena控制台:. [https://console.aws.amazon.com/athena/](https://console.amazonaws.cn/athena/home) 然后在 **Workgroup (工作组)** 面板中选择适当的工作组并查看其设置。选择**启用工作组**。
+ **您必须有权访问与 Athena 工作组关联的 Amazon S3 输出位置。**

  要授予 Amazon Quick Sight 访问 S3 输出位置的权限，Amazon Quick Sight 管理员可以在 “**管理**” QuickSight 屏幕中编辑 “**安全和权限**”。
+ **Athena 工作组必须具有关联的 S3 输出位置。**

   Amazon Web Services 账户 管理员需要在 Athena 控制台中将 S3 存储桶与工作组关联。使用此直接链接打开Athena控制台:. [https://console.aws.amazon.com/athena/](https://console.amazonaws.cn/athena/home) 然后在 **Workgroup (工作组)** 面板中选择适当的工作组并查看其设置。设置**查询结果位置**。