amazon-web-services - 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
)
解决方案
我认为没有将命名查询传递给您的方法的直接选项。start_query_execution
但这可以通过使用命名查询的get_named_query
接受并作为响应Name
返回来实现。QueryString
然后你可以解析这个响应并传递QueryString
给start_query_execution
方法。
推荐阅读
- python - Keras - Get mode of 2 one hot arrays
- javascript - Angular 6变量在定义时未定义
- javascript - 如何使用 Element 从多个选择中获取 ID?
- android - 如何在android studio中生成具有内置数据库的项目的apk文件
- linux - Running desktop enviroment in docker in headless linux
- angular - 如何在根模块中的组件调度操作之前等待功能效果注册?
- javascript - 某些 CSS 模块样式未应用
- python - 如何在函数签名中使用 *args 和 **kwargs 返回默认值
- domain-driven-design - 丢失的事件如何重播?
- java - 在 json Android Studio 中获取数据的问题