excel - 如何设置 Power Query 的最大运行时间/超时?
问题描述
有没有办法在 Power Query 中设置最大运行时间或超时因素,以便在指定时间段后查询将自行终止,无论它是否成功执行?
这对我来说很重要,因为我在我的工作场所构建了各种查询,这些查询通常运行良好(就像我每天都在运行它几个月甚至几年都没有问题)但偶尔,它们会挂起(可能是因为与另一个进程发生冲突)那个时候,当服务器负载很重时)并无限期地在服务器上发出读取请求- 有一次 IT 告诉我,他们在几个小时内将超过 700 万次读取从我的机器记录到数据库中。在某些情况下,这些会导致服务器崩溃,从而导致大量停机。
所以我想知道是否有任何设置,或者我可以在查询本身中构建的任何东西,以确保它在一段时间后终止。
我精通 M Power Query 语言。
谢谢。
[更新 1] 感谢 Alexis 在对连接进行编码时提供以下有关设置 CommandTimeout 值的建议。这是一个很好的指针。
我会尝试一下,做一些测试并报告它是否最终解决了问题。
但与此同时,我对 Microsoft 的 Power Query 文档进行了一些挖掘,发现 CommandTimeout 参数本身已经内置了 10 分钟的默认值,所以理论上即使我们没有指定该参数,查询应该已经终止了。但事实并非如此。它运行了几个小时。
我想知道这是否是 Excel 版本的 Power Query 的错误?因为我也确实在 Power BI 中使用了 Power Query,而且我还没有看到它崩溃和挂起(诚然,我使用 Excel 版本的频率比我使用 Power BI 的频率高)。
但是,如果有人对此问题的潜在修复有任何其他建议,将不胜感激。谢谢。
解决方案
我在这里找到了一个相当不错的答案。以下是该论坛上发布的步骤:
- 在报表视图中打开 Power BI Desktop 文件
- 单击“编辑查询”的箭头(在外部数据部分)
- 将出现一个下拉菜单 - 然后单击“数据源设置”
- 将出现数据源设置弹出窗口
- 点击“更改来源...”
- 将出现另一个弹出窗口
- 单击高级选项(弹出窗口中将出现一个下拉列表)
- “以分钟为单位的命令超时(可选)”将是第一个选项
- 输入一个值 - 我选择输入 60 分钟,但可以随意输入任何值
- 然后应用查询更改并等待刷新完成
这是为 Power BI 编写的,但它也适用于 Excel 查询编辑器。总之,
- 打开查询编辑器
- 选择文件 > 选项和设置 > 数据源设置
- 选择您的来源并单击更改来源...
- 展开高级选项并输入命令超时值
当我尝试连接到 SQL 服务器时,它CommandTimeout
在我的 Source 步骤中添加了一个参数。您可以只使用此代码并跳过所有点击:
= Sql.Database("server", "DB", [CommandTimeout=#duration(0, 0, 15, 0)])
如果您没有连接到 SQL 服务器,则通过数据源设置可能会更好,因为参数可能不同。例如
= Web.Page(Web.Contents("URL", [Timeout=#duration(0,0,15,0)]))
或者
= OData.Feed("http://some.url/service.svc/", null, [Timeout=#duration(0, 0, 15, 0)])
推荐阅读
- bash - 为什么在此示例代码中执行错误条件退出而没有任何错误
- java - Java JFXPanel:eventHandler返回按钮被按住而不是按钮被按下
- python - 出现 Python 错误,“-: 'str' 和 'str' 不支持的操作数类型”
- security - ChromeCast (gen3) 设置阶段 - 是否可以劫持?
- hyperledger-fabric - 不同网络的超级账本结构排序器
- c++ - 使用 tun/tap 接口的错误序列号
- flutter - 字符串格式化时从资产加载图像不起作用
- javascript - 在 JS ES6 中更高效地从 json 数据创建新对象
- mysql - 使用第二个表中的值作为 mysql json_extract 中的路径
- spartacus-storefront - 在 spartacus 中创建组件和页面的 CLI 命令