如何在不相互干扰的情况下在 Snowflake 中执行多个异步查询?
How to execute multiple asynchronous queries in Snowflake without it's interferring each other?
我想执行多个异步查询。但是,它一直互相干扰 SQL 命令。
例如,查询 A 需要使用模式 A,查询 B 需要使用模式 B,但是使用模式 B 的命令被触发,然后查询 A 在它之后 运行,这导致查询 A 失败。
示例查询 A:
- 使用模式测试;
- SELECT * 来自 TABLE_A;
示例查询 B:
- 使用模式TEST_2;
- SELECT * 来自 TABLE_B;
在我的案例中,当在同一个连接中异步触发它们时发生的情况是 运行 像这样:
- 使用模式测试;
- SELECT * 来自 TABLE_B;
这会导致查询失败,因为 TABLE_B 不存在于模式 TEST 中。
snowflake有没有办法在不互相干扰的情况下触发多个异步查询?除了连接之外,运行 再次查询和断开连接。
问题似乎是您正在重用一个连接,并且连接有一个状态。每次设置变量或 USE SCHEMA
.
时,该状态都会改变
可能的解决方案:
不要re-use连接。而是为每个新的异步查询集创建一个新连接。然后你可以在其中设置不同的模式。
如果要使用相同的连接,请不要使用 USE SCHEMA
更改状态。而是将 hard-code 模式放入查询中,如 from db.schema.table
.
使用刚好无状态的SQLAPI:https://docs.snowflake.com/en/developer-guide/sql-api/index.html
如需进一步帮助,请提出新问题,并确保分享更多代码以及您使用的连接器和语言。
我想执行多个异步查询。但是,它一直互相干扰 SQL 命令。
例如,查询 A 需要使用模式 A,查询 B 需要使用模式 B,但是使用模式 B 的命令被触发,然后查询 A 在它之后 运行,这导致查询 A 失败。
示例查询 A:
- 使用模式测试;
- SELECT * 来自 TABLE_A;
示例查询 B:
- 使用模式TEST_2;
- SELECT * 来自 TABLE_B;
在我的案例中,当在同一个连接中异步触发它们时发生的情况是 运行 像这样:
- 使用模式测试;
- SELECT * 来自 TABLE_B;
这会导致查询失败,因为 TABLE_B 不存在于模式 TEST 中。
snowflake有没有办法在不互相干扰的情况下触发多个异步查询?除了连接之外,运行 再次查询和断开连接。
问题似乎是您正在重用一个连接,并且连接有一个状态。每次设置变量或 USE SCHEMA
.
可能的解决方案:
不要re-use连接。而是为每个新的异步查询集创建一个新连接。然后你可以在其中设置不同的模式。
如果要使用相同的连接,请不要使用
USE SCHEMA
更改状态。而是将 hard-code 模式放入查询中,如from db.schema.table
.使用刚好无状态的SQLAPI:https://docs.snowflake.com/en/developer-guide/sql-api/index.html
如需进一步帮助,请提出新问题,并确保分享更多代码以及您使用的连接器和语言。