首页 > 解决方案 > AWS Athena + boto3:我应该如何执行命名查询?

问题描述

关于以下草稿脚本,我想知道:如何执行我创建的命名查询?我可以通过浏览器界面访问查询,但想通过 Session 执行它。 这里的答案是使用client.start_query_execution(...)命令。但是,当它不是我创建的命名查询而是具有相同 query_string 的非命名查询时,这有什么意义。还是我错过了如何使用它的重要内容?

import boto3

sess = boto3.session.Session(
    region_name=region,
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY
)
 
athenaclient = sess.client('athena')

query_string = '''
SELECT *
FROM "ccindex"."ccindex"
WHERE crawl = 'CC-MAIN-2020-34'
  AND subset = 'warc'
  AND url_host_tld = 'de'
  AND url_query IS NULL
  AND url_path like '%impressum%'
LIMIT 20000
'''

resp = athenaclient.create_named_query(
    Name='filter-ccindex-de',
    Description='Filter *.de/impressum websites of Common Crawl index',
    Database='ccindex',
    QueryString=query_string
)

标签: amazon-web-servicesboto3

解决方案


我认为没有将命名查询传递给您的方法的直接选项。start_query_execution但这可以通过使用命名查询的get_named_query接受并作为响应Name返回来实现。QueryString

然后你可以解析这个响应并传递QueryStringstart_query_execution方法。


推荐阅读