Amazon Athena
要添加数据库连接,请点击右上角的齿轮图标,然后导航到管理设置 > 数据库 > 添加数据库。
连接和同步
连接到数据库后,您将看到“连接和同步”部分,其中显示当前的连接状态和管理数据库连接的选项。
您可以在此处同步数据库架构并重新扫描字段值,以及编辑连接详细信息。
编辑连接详细信息
您可以随时编辑这些设置(并记得保存您的更改)。
显示名称
Metabase 界面中数据库的显示名称。
区域
Amazon Athena 数据库托管所在的 AWS 区域。例如,您可以输入 us-east-1
。
工作组
AWS 工作组。例如:primary
。请参阅工作组文档。
S3 暂存目录
此 S3 暂存目录必须与您在上方指定的区域相同。
访问密钥
AWS IAM 凭证的一部分。Metabase 将加密这些凭证。
如果您在 AWS 上运行 Metabase 并希望使用AWS 默认凭证链,请将访问密钥和秘密密钥留空。
另请参阅我们关于连接到 Athena 的注意事项。
秘密密钥
AWS IAM 凭证的一部分。Metabase 将加密这些凭证。
其他 Athena 连接字符串选项
您可以通过字符串指定其他选项,例如 UseResultsetStreaming=0;LogLevel=6
。
在查询中包含用户 ID 和查询哈希
这对于审计和调试很有用,但会阻止数据库缓存结果并可能增加您的成本。如果您需要跟踪哪些用户正在运行特定查询,请启用此功能。
为简单探索重新运行查询
如果用户希望在应用任何汇总或筛选条件之前点击运行(播放按钮),请将此选项设置为关闭。
默认情况下,Metabase 会在您从汇总菜单中选择分组选项或从钻取菜单中选择筛选条件后立即执行查询。如果您的数据库速度较慢,您可能需要禁用重新运行以避免每次点击都加载数据。
选择同步和扫描发生的时间
请参阅同步和扫描。
定期重新指纹识别表
定期重新指纹识别将增加数据库的负载。
将此选项设置为开启,以便 Metabase 每次运行同步时都扫描值的样本。
指纹识别查询会检查每列的前 10,000 行,并使用该数据估算每列有多少个唯一值,数字和时间戳列的最小值和最大值等。如果将此选项设置为关闭,Metabase 将仅在设置期间对您的列进行一次指纹识别。
连接到 Athena 的注意事项
如果您使用其他 AWS 服务,我们建议您创建一个仅拥有运行 Athena 所需权限的特殊 AWS 服务账户,并输入该账户的 IAM 凭证以将 Metabase 连接到 Athena。
请参阅Athena 中的身份和访问管理。
使用 AWS 默认凭证链进行连接
如果您在 AWS 上运行 Metabase 并希望使用AWS 默认凭证链,请将访问密钥和秘密密钥留空。
- 对于 EC2,您可以使用实例配置文件。
- 对于 ECS,您可以使用任务的 IAM 角色
在这两种情况下,Athena 驱动程序都会根据您配置的 IAM 角色自动获取会话凭证。
权限和 IAM 策略
我们发现,在尝试连接到 AWS Athena 时,大多数问题都与权限有关。查询 AWS Athena 需要以下权限:
- AWS Athena。
- AWS Glue。
- 存储 Athena 结果的 S3 存储桶。
- Athena 查询所针对的资源(即 Athena 查询的 S3 存储桶)。
- 如果您使用 AWS Lake Formation,那么您还需要通过 AWS 控制台授予 AWS Lake Formation 权限(AWS Lake Formation > 权限 > 数据湖权限 > 授予数据湖权限;Metabase 使用的角色需要 SELECT 和 DESCRIBE 表权限)。
IAM 策略示例
此策略提供对 S3 中数据的只读权限。您需要指定 Metabase 可以查询的任何 S3 存储桶,以及作为配置一部分提供的用于写入结果的 S3 存储桶。
其他 Athena 功能(如联邦查询)可能需要额外的权限。有关详细信息,请查阅 Athena 文档。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Athena",
"Effect": "Allow",
"Action": [
"athena:BatchGetNamedQuery",
"athena:BatchGetQueryExecution",
"athena:GetNamedQuery",
"athena:GetQueryExecution",
"athena:GetQueryResults",
"athena:GetQueryResultsStream",
"athena:GetWorkGroup",
"athena:ListDatabases",
"athena:ListDataCatalogs",
"athena:ListNamedQueries",
"athena:ListQueryExecutions",
"athena:ListTagsForResource",
"athena:ListWorkGroups",
"athena:ListTableMetadata",
"athena:StartQueryExecution",
"athena:StopQueryExecution",
"athena:CreatePreparedStatement",
"athena:DeletePreparedStatement",
"athena:GetPreparedStatement",
"athena:GetTableMetadata"
],
"Resource": "*"
},
{
"Sid": "Glue",
"Effect": "Allow",
"Action": [
"glue:BatchGetPartition",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:GetPartition",
"glue:GetPartitions",
"glue:GetTable",
"glue:GetTables",
"glue:GetTableVersion",
"glue:GetTableVersions"
],
"Resource": "*"
},
{
"Sid": "S3ReadAccess",
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:ListBucket", "s3:GetBucketLocation"],
"Resource": [
"arn:aws:s3:::bucket1",
"arn:aws:s3:::bucket1/*",
"arn:aws:s3:::bucket2",
"arn:aws:s3:::bucket2/*"
]
},
{
"Sid": "AthenaResultsBucket",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:AbortMultipartUpload",
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": ["arn:aws:s3:::bucket2", "arn:aws:s3:::bucket2/*"]
}
]
}
如果 Metabase 还需要创建表,您将需要额外的 AWS Glue 权限。 "Resource": "*"
键值对授予账户对任何表的删除和更新权限。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"glue:BatchCreatePartition",
"glue:UpdateDatabase",
"glue:DeleteDatabase",
"glue:CreateTable",
"glue:CreateDatabase",
"glue:UpdateTable",
"glue:BatchDeletePartition",
"glue:BatchDeleteTable",
"glue:DeleteTable",
"glue:CreatePartition",
"glue:DeletePartition",
"glue:UpdatePartition",
"glue:GetCatalogImportStatus"
],
"Resource": "*"
}
]
}
模型功能
Athena 暂无可用模型功能。
数据库路由
请参阅数据库路由。
危险区域
请参阅危险区域。
延伸阅读
阅读其他Metabase 版本的文档。