跳转到内容
首页PT · EN · ES · JA · ZH

在 Athena 中查询

Data Pump 会把结果编目到 Glue Data Catalog 中。任何能读取该目录的工具——Athena、 Redshift Spectrum、EMR、Spark——都能看到这些表。

表名由数据库名和表名组成,并应用你配置的别名:

数据库中 数据湖中 Athena 中
pagila / public.payment pagila.payment pagila_payment
配置别名 vendas / pagamentos vendas.pagamentos vendas_pagamentos

public schema 会被去掉,其他 schema 则保留。

SELECT customer_id, sum(CAST(amount AS DECIMAL(10,2))) AS total
FROM datalake.vendas_pagamentos
WHERE ano = 2024 AND mes = 3
GROUP BY customer_id
ORDER BY total DESC
LIMIT 20;

真正影响成本的是针对分区列的 WHERE:没有它,Athena 会读取整张表。

RDS 导出会把不少列输出为文本,包括日期和小数。这是导出格式本身的行为,与 Data Pump 无关。

-- 日期
CAST(payment_date AS TIMESTAMP)
-- 小数
CAST(amount AS DECIMAL(10,2))

如果某个 CAST 每次都要用到,不妨在分区配置中增加一个 额外列:它在接入时计算一次, 到达 Athena 时就已经是转换好的结果。

控制台的 Datalake(数据湖)页面会列出已编目的表,包含字段、类型、行数以及每张表的 来源。当你只是想知道有哪些数据时,这比通过 Athena 查询目录更快。