如何在不相互干扰的情况下在 Snowflake 中执行多个异步查询?

How to execute multiple asynchronous queries in Snowflake without it's interferring each other?

我想执行多个异步查询。但是,它一直互相干扰 SQL 命令。

例如,查询 A 需要使用模式 A,查询 B 需要使用模式 B,但是使用模式 B 的命令被触发,然后查询 A 在它之后 运行,这导致查询 A 失败。

示例查询 A:

  1. 使用模式测试;
  2. SELECT * 来自 TABLE_A;

示例查询 B:

  1. 使用模式TEST_2;
  2. SELECT * 来自 TABLE_B;

在我的案例中,当在同一个连接中异步触发它们时发生的情况是 运行 像这样:

  1. 使用模式测试;
  2. 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

如需进一步帮助,请提出新问题,并确保分享更多代码以及您使用的连接器和语言。