请问可以从Lambda执行Athena保存的查询吗?

0

【以下的问题经过翻译处理】 我在Athena中保存了一个查询,我想从Lambda中运行它。

根据https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Athena.html, 似乎只有在提供SQL时SDK才能执行查询。 (需要在lambda中使用node.js)

有没有方法直接在lambda中调用Athena中保存的查询,类似下面这样: var params = { QueryName: '<保存的查询名称>,/*必需*/ },

athena.startQueryExecution(params,function(err,data){ if (err) console.log(err,err.stack); //出错了 else console.log(data); //成功响应 });

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

【以下的回答经过翻译处理】 通常可以按照以下步骤进行。

  • 获取所有查询ID
  • 获取每个查询ID的查询详情
  • 检查是否正确并执行相应操作

以下为示例代码:

获取 Athena 客户端/对象

client = boto3.client('athena')

# 获取 Athena 中的所有保存查询
response = client.list_named_queries()

# 从响应中获取所需查询的ID
named_query_IDs = response['NamedQueryIds']

# 遍历所有查询ID,查找需要运行的删除和创建查询
for query_ID in named_query_IDs:

    # 使用其ID获取所需查询的所有详细信息
    named_query = client.get_named_query(
        NamedQueryId=query_ID
    )
    
    # 获取查询的查询字符串和查询名称
    querystring = named_query['NamedQuery']['QueryString']
    queryname = named_query['NamedQuery']['Name']
    
    # 如果是创建查询,则将其添加到创建查询列表中
    # 我们还将查询中的 '/subfolder' 字符串替换为当前月份的文件夹结构
    if 'create_linked_' in queryname:
        new_query = querystring.replace('/subfolder', currentmonth)
        create_query_strings.append(new_query)
        
    # 如果是删除查询,则将其添加到稍后执行的删除查询列表中
    if 'delete_linked_' in queryname:
        delete_query_strings.append(querystring)

profile picture
专家
已回答 6 个月前

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

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

回答问题的准则