如何在 Snowflake 中执行多个异步查询而不会相互干扰?



我想执行多个异步查询。但是,它会不断干扰其他SQL命令。

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

示例查询A:

  1. 使用方案测试
  2. 从表A中选择*

示例查询B:

  1. 使用SCHEMA TEST_2
  2. 从tableb中选择*

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

  1. 使用方案测试
  2. 从tableb中选择*

这会导致查询失败,因为TABLE_B在模式TEST中不存在。

雪花是否有任何方法可以在不相互干扰的情况下触发多个异步查询?除了连接之外,请再次运行查询和断开连接。

问题似乎是您正在重用一个连接,并且连接有一个状态。每次设置变量或USE SCHEMA时,该状态都会发生变化。

可能的解决方案:

  • 不要重复使用连接。相反,为每个新的异步查询集创建一个新的连接。然后您可以在中设置不同的模式。

  • 如果要使用相同的连接,请不要使用USE SCHEMA更改状态。相反,将模式硬编码到查询中,如from db.schema.table中所示。

  • 使用恰好是无状态的SQL API:https://docs.snowflake.com/en/developer-guide/sql-api/index.html

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

最新更新