如何为 Power Query 设置最大运行时间/超时?

J H*_*son 6 excel timeout m powerquery

有没有办法在 Power Query 中设置最大运行时间或超时因子,以便在指定的时间段后,无论查询是否成功执行,查询都会自行终止?

这对我来说很重要,因为我在我的工作场所建立了各种查询,这些查询通常运行良好(因为我每天都在运行它,几个月和几年都没有问题)但偶尔,它们会挂起(可能是因为与另一个进程发生冲突)在那一刻,当服务器负载很重时)并无限期地在服务器上发出读取请求- 有一次 IT 告诉我他们在几个小时内从我的机器向数据库记录了超过 700 万次读取。在某些情况下,这些会导致服务器崩溃,从而导致大量停机。

所以我想知道是否有任何设置,或者我可以在查询本身中构建任何东西以确保它在一段时间后终止。

我精通 M Power Query 语言。

谢谢。

[更新 1] 感谢 Alexis 关于在编码连接时设置 CommandTimeout 值的以下建议。这是一个很好的指针。

我会尝试一下,做一些测试并报告是否最终解决了问题。

但与此同时,我深入研究了 Microsoft 的 Power Query 文档,发现 CommandTimeout 参数本身已经内置了 10 分钟的默认值,因此理论上即使我们没有指定该参数,查询应该自行终止。但事实并非如此。它运行了几个小时。

我想知道这是否是 Power Query Excel 版本的错误?因为我也在 Power BI 中使用了 Power Query,在那里我还没有看到它崩溃和挂起(不可否认,我使用 Excel 版本的频率比使用 Power BI 的频率要高)。

但是,如果有人对此问题的潜在修复有任何其他建议,我们将不胜感激。谢谢。

Ale*_*son 8

我在这里找到了一个相当不错的答案。以下是该论坛上发布的步骤:

  1. 在报表视图中打开 Power BI Desktop 文件
  2. 单击“编辑查询”的箭头(在外部数据部分)
  3. 将出现一个下拉列表 - 然后单击“数据源设置”
  4. 将出现数据源设置弹出窗口
  5. 单击“更改源...”
  6. 将出现另一个弹出窗口
  7. 单击高级选项(弹出窗口中将出现排序下拉菜单)
  8. “以分钟为单位的命令超时(可选)”将是第一个选项
  9. 输入一个值 - 我选择输入 60 分钟,但可以随意输入任何值
  10. 然后应用查询更改并等待刷新完成

这是为 Power BI 编写的,但它也适用于 Excel 查询编辑器。总之,

  1. 打开查询编辑器
  2. 选择文件 > 选项和设置 > 数据源设置
  3. 选择您的来源,然后单击更改来源...
  4. 展开高级选项并输入命令超时值

当我尝试连接到 SQL 服务器时,它CommandTimeout向我的 Source 步骤添加了一个参数。您可以改为使用此代码并跳过所有点击:

= Sql.Database("server", "DB", [CommandTimeout=#duration(0, 0, 15, 0)])
Run Code Online (Sandbox Code Playgroud)

如果您没有连接到 SQL 服务器,则通过数据源设置执行此操作可能更可取,因为参数可能不同。例如

= Web.Page(Web.Contents("URL", [Timeout=#duration(0,0,15,0)]))
Run Code Online (Sandbox Code Playgroud)

或者

= OData.Feed("http://some.url/service.svc/", null, [Timeout=#duration(0, 0, 15, 0)])
Run Code Online (Sandbox Code Playgroud)