Как установить QueryExecutionContext в boto3, когда запрос содержит объединение таблиц из нескольких баз данных? - PullRequest
1 голос
/ 22 января 2020

Я использую пакет Boto3 в python3 для выполнения запроса Athena. Из документации в Boto3 я понимаю, что могу указать контекст выполнения запроса, то есть имя базы данных, под которой должен выполняться запрос. При правильно заданном контексте выполнения запроса мы можем опустить полное имя таблицы (db_name.table_name) в запросе и вместо этого использовать только имя таблицы.

Таким образом, запрос SELECT * FROM db1.tab1 можно преобразовать в SELECT * FROM tab1 с QueryExecutionContext : {'database':'db1'}

Проблема: Мне нужно запустить запрос на Афина из python, который выглядит примерно так

SELECT *
FROM   ((SELECT *
        FROM   db1.tab1 AS Temp1)
        INNER JOIN (SELECT *
                    FROM   db2.tab2 AS Temp2)
                ON temp1.id = temp2.id)  

Как мы видим запрос объединяет таблицы из двух разных баз данных. Если я хочу опустить имена баз данных в этом запросе, как мне указать QueryExecutionContext?

1 Ответ

1 голос
/ 24 января 2020

QueryExecutionContext принимает только одну базу данных в качестве аргумента. Так что если вы хотите выполнить запрос к нескольким базам данных, вы должны передать полное имя таблицы вместе с базой данных.

...