【发布时间】:2021-06-07 03:18:00
【问题描述】:
我有一个管道,AWS Kinesis Firehose 在其中接收数据,根据 Athena 表将其转换为 parquet 格式,然后根据日期分区(date_int:YYYYMMdd)将其存储在 S3 存储桶中。每当将新数据添加到存储桶中时,都会触发 lambda 以检查 Athena 是否已经知道该分区。一切似乎都运行良好;在 Athena 中,我可以运行查询(见下文)并收到最新数据。
雅典娜查询:SELECT * FROM "my_table" WHERE "date_int" >= 20210308
(在屏幕左侧选择了正确的数据源和数据库)
现在我想在 Quicksight 中可视化数据。我可以使用 SPICE 或直接查询,再次,一切似乎都工作正常。但是,我对数据进行了分区,因为我只需要上个月的数据点。在 Quicksight 中,我创建了一个新数据集,选择正确的目录/数据库/表,然后单击“使用自定义 SQL”。然后,当我运行查询时,我总是从 Athena 客户端收到一个错误,说找不到表。当我查看网络选项卡时,我看到执行的查询是:
/* QuickSight */SELECT ds.* FROM ( SELECT * FROM "my_table" ) ds LIMIT 0
然后错误消息说:
Table awsdatacatalog.default.my_table does not exist
奇怪的是,我没有说它应该查看“默认”数据库。我选择“awsdatacatalog”作为数据源,选择“my_database”作为数据库。当我尝试更精确并在 select 语句(“awsdatacatalog.my_database.my_table”)中指定数据源和数据库时,错误消息将显示“awsdatacatalog.default.awsdatacatalog.my_database.my_table”。
其他人有同样的问题吗?这是一个错误,还是我只是错过了什么?
【问题讨论】:
-
您可以尝试在docs.aws.amazon.com/athena/latest/ug/…中为您的工作组选择覆盖客户端设置来尝试
-
感谢您的回复!不幸的是,它没有修复它,仍然是同样的错误。
-
尝试 SELECT * FROM database_name.table_name。没有目录。
-
不幸的是,也不起作用。它始终会添加“awsdatacatalog.default”。目前,我通过使用 athena 聚合并快速阅读单独的表格来解决大部分问题。
标签: sql amazon-web-services amazon-athena amazon-quicksight