Amazon Athena

要添加数据库连接,请点击右上角的齿轮图标,然后导航到管理员设置 > 数据库 > 添加数据库

连接和同步

连接到数据库后,您将看到“连接和同步”部分,其中显示当前连接状态和管理数据库连接的选项。

在此处,您可以同步数据库架构并重新扫描字段值,并编辑连接详情。

编辑连接详情

您可以随时编辑这些设置(并记住保存您的更改)。

连接字符串

在此处粘贴连接字符串以预填充以下剩余字段。

显示名称

Metabase 界面中数据库的显示名称。

区域

数据库托管的 AWS 区域,用于 Amazon Athena。例如,您可以输入 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 服务,我们建议您创建一个特殊的 AWS 服务账户,该账户仅具有运行 Athena 所需的权限,并将该账户的 IAM 凭证输入以将 Metabase 连接到 Athena。

请参阅 Athena 中的身份和访问管理

使用 AWS 默认凭证链连接

如果您在 AWS 上运行 Metabase 并想使用 AWS 默认凭证链,请留空访问密钥和秘密密钥。

在这两种情况下,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": "*" 键值对为账户提供了对任何表的 Delete 和 Update 权限

{
  "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 还没有可用的模型功能。

数据库路由

通过数据库路由,管理员可以使用单个数据连接构建一次问题,然后根据查看问题的人的不同,该问题将在具有相同架构的不同数据连接上运行其查询。

不可否认,“数据库路由”这个名称对于 Athena 来说具有误导性,因为 Athena 中的“数据库”一词更接近于其他数据库中的“架构”。您不能使用数据库路由来路由不同 Athena数据库之间的查询,但您可以在不同的数据连接之间进行路由,例如不同的区域或存储桶,或不同的 IAM 用户,或不同的数据源/目录。

请参阅 数据库路由

危险区

请参阅 危险区域

延伸阅读

阅读其他版本的 Metabase 的文档。

这有帮助吗?

感谢您的反馈!
想改进这些文档? 提议更改。
© . This site is unofficial and not affiliated with Metabase, Inc.