当查询包含来自多个数据库的表的连接时,如何在 boto3 中设置 QueryExecutionContext?

How to set QueryExecutionContext in boto3 when the query contains joining of tables from multiple databases?

我在 python3 中使用 Boto3 包来执行 Athena 查询。从 documentation of Boto3,我了解到我可以指定查询执行上下文,即必须在其下执行查询的数据库名称。通过正确指定的查询执行上下文,我们可以从查询中省略完全限定的 table 名称 (db_name.table_name),而只使用 table 名称。

所以查询 SELECT * FROM db1.tab1 可以用 QueryExecutionContext : {'database':'db1'}

转换为 SELECT * FROM tab1

问题: 我需要 运行 来自 python 的 Athena 查询,看起来像这样

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

正如我们所见,查询连接了来自两个不同数据库的 tables。如果我想从这个查询中省略数据库名称,我该如何指定 QueryExecutionContext ?

QueryExecutionContext 只接受一个数据库作为 argument.So 如果您想 运行 跨多个数据库进行查询,那么您必须传递完全限定的 table 名称以及数据库。