如何使用 .Net 库管理对 Snowflake 的长时间运行过程调用

Posted

技术标签:

【中文标题】如何使用 .Net 库管理对 Snowflake 的长时间运行过程调用【英文标题】:How to manage a long running procedure call to Snowflake using .Net Library 【发布时间】:2021-08-30 14:01:48 【问题描述】:

我打算编写一个存储过程,我预计它需要很长时间才能运行。如果我使用.Net库,它似乎会在内部发出重复的HttpClient请求,直到它发现过程调用完成。

与其让 Command.Execute 方法保持等待结果,有没有办法在 Command.Execute 没有快速完成时终止它,然后稍后再用 Snowflake 检查该过程是否已完成?

如果我在 Command.Execute 完成之前删除它,Cloud Snowflake 会继续执行该过程吗?如果是这种情况,我可以编写程序以将标志写入表以指示它已完成,然后我可以定期 ping 该表以获取已完成标志。

有没有更好的方法来解决这个问题?我是不是想多了,因为没有过程调用应该超过几秒钟?我是 Snowflake 的新手,只是想了解一下。谢谢。

【问题讨论】:

【参考方案1】:

我知道 Snowflake Python Connector API,我可以在其中执行游标对象的 execute_async() 方法;此异步调用提交异步调用的查询/过程执行;我坚信.Net也必须有类似的方法

只需检查 Python Snowflake 连接器 [1]:https://docs.snowflake.com/en/user-guide/python-connector-example.html#label-python-connector-asynchronous-query-examples

【讨论】:

这个 python api 看起来正是我想要的,但我没有找到 .Net 等价物。

以上是关于如何使用 .Net 库管理对 Snowflake 的长时间运行过程调用的主要内容,如果未能解决你的问题,请参考以下文章

雪花:如何使用 .NET Core 连接到雪花

如何使用 C# 为 Snowflake 编写 MS 单元测试

使用 Snowflake 进行参数化查询并从 Snowflake .NET 连接器传递值

go工具库分析——go-snowflake

关于全局ID,雪花(snowflake)算法的说明

使用 Snowflake JDBC 驱动程序支持 Snowflake EXPLAIN 查询