如何通过Athena查询将S3数据加载至Power BI?及已通过Glue数据目录ODBC加载时的前置Athena查询改造方法
嘿,这两个问题我都在实际项目里处理过,给你分享下具体的实操方法:
问题1:如何通过Athena查询将S3中的数据加载到Power BI?
核心是借助Athena的ODBC驱动建立连接,直接将Athena查询结果作为Power BI的数据源,具体步骤如下:
第一步:安装Athena ODBC驱动
下载并安装匹配你系统(32/64位)的Athena ODBC驱动,安装过程中可提前配置AWS访问密钥(Access Key ID和Secret Access Key),也可以后续在DSN配置里补充。第二步:配置ODBC数据源(DSN)
打开系统的ODBC数据源管理器,新增一个Athena类型的DSN:- 给数据源起个好记的名字,比如
Athena-PowerBI-Connection - 选择和你的S3桶、Glue数据目录一致的AWS区域
- 选择身份验证方式(个人开发常用访问密钥,生产环境推荐IAM角色)
- 设置默认数据库(对应Glue数据目录里的目标数据库)
- 点击测试连接,确认能成功访问Athena
- 给数据源起个好记的名字,比如
第三步:在Power BI中连接并加载数据
打开Power BI Desktop,依次点击「获取数据」→「更多」→搜索「ODBC」,选中你刚配置的DSN:- 进入导航器后,你可以直接选Glue里的表,也可以点击「高级选项」输入自定义Athena查询,比如:
SELECT user_id, order_amount, order_date FROM your_db.s3_raw_orders WHERE order_date BETWEEN '2024-01-01' AND '2024-06-30' - 最后点击「加载」或「转换数据」,就能把Athena查询的结果导入Power BI了
- 进入导航器后,你可以直接选Glue里的表,也可以点击「高级选项」输入自定义Athena查询,比如:
问题2:先通过Athena查询转换数据再加载到Power BI是否可行?当然可行!
你已经用了Glue数据目录+ODBC的基础架构,只要微调数据源的选择逻辑就能实现,这里有两种常用的实操方法:
方法一:在Athena中创建转换视图,用视图作为Power BI数据源(推荐)
这种方式的优势是转换逻辑可统一维护、复用,不用在Power BI里反复改查询:
- 登录Athena控制台,打开查询编辑器,编写你的转换SQL并创建视图,比如:
CREATE OR REPLACE VIEW your_db.cleaned_orders AS SELECT user_id, CAST(order_amount AS DECIMAL(10,2)) AS order_amount_clean, DATE_FORMAT(order_date, '%Y-%m') AS order_month, CASE WHEN order_status = 'PAID' THEN '已支付' ELSE '未支付' END AS status_cn FROM your_db.s3_raw_orders WHERE order_status != 'CANCELED' - 执行查询创建视图后,回到Power BI的ODBC导航器,就能看到这个新视图,直接选择加载即可。后续要调整转换逻辑,只要修改Athena里的视图,Power BI这边刷新数据就能同步更新。
方法二:在Power BI连接时直接编写自定义转换查询
如果是临时的一次性转换需求,不想创建视图,可以在Power BI连接ODBC的步骤中,点击「高级选项」,直接输入你的转换SQL,Power BI会直接调用Athena执行这个查询,把返回的结果作为数据源加载进来。
两种方法都能满足你“先转换再加载”的需求,长期来看更推荐用视图的方式,便于团队协作和后续维护。
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

