AWS Data Wrangler Athena查询失败

0

【以下的问题经过翻译处理】 我正在尝试使用 AWS Data Wrangler 运行 Athena 查询,该查询失败并出现错误,指示无法解析列。但是,当我在 Athena 控制台中查看失败的查询并在那里重新运行时,没有出现任何错误。我觉得它与表名或列名的格式有关,但我一直未能找到解决方法。当我尝试使用 vanilla boto3 进行相同的查询时,同样失败并出现相同的错误。下面是失败的代码示例,随后在控制台中运行了相同的成功查询。 (为了安全起见,一些名字被匿名化了)更奇怪的是,如果我删除 JOIN部分 ,它将错误指示无法解析选择中的第一列,但相同的查询在控制台中依然成功运行。

Python代码

import awswrangler as wr

query = """
SELECT 
    t1.description, 
    t1.model_number as model, 
    t1.p_id as p_id, 
    t1.created_at as createdAt, 
    t1.updated_at as updatedAt, 
    t3.description as platform, 
    t2.name as module
FROM 
    database_with_underscores.first_table t1 
LEFT JOIN
    database_with_underscores.other_table t2
ON
    t2.id = t1.module_id
LEFT JOIN
    database_with_underscores.lasttable t3
ON  
    t1.platform_id = t3.id
"""

df = wr.athena.read_sql_query(query, workgroup="primary", database="database_with_underscores")

Python 运行结果

awswrangler.exceptions.QueryFailed: SYNTAX_ERROR: line 19:5: Column 't2.id' cannot be resolved

AWS Athena 控制台运行如下SQL

SELECT 
    t1.description, 
    t1.model_number as model, 
    t1.p_id as p_id, 
    t1.created_at as createdAt, 
    t1.updated_at as updatedAt, 
    t3.description as platform, 
    t2.name as module
FROM 
    database_with_underscores.first_table t1 
LEFT JOIN
    database_with_underscores.other_table t2
ON
    t2.id = t1.module_id
LEFT JOIN
    database_with_underscores.lasttable t3
ON  
    t1.platform_id = t3.id

Athena控制台运行结果

Successful

这里我有一个类似问题的链接,同样是,相同的查询,但一个成功,另一个失败 https://imgur.com/a/V9QSbIn

profile picture
专家
已提问 5 个月前10 查看次数
1 回答
0

【以下的回答经过翻译处理】 经过多次尝试和错误,我发现问题的真正源头是由于我的Console使用的用户和CLI用户之间的权限差异。将select/describe权限添加到我的CLI用户后,问题解决。

这种情况下的列未能解析的错误消息,会产生误导。更有趣的是,在CloudTrail中竟然没有生成任何未经授权的相关事件。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则