1

我有一个从 SQL Server 提取的 Power BI 报告,由于数据拉取大,需要设置增量刷新。由于负载相当复杂(并且 PQuery 编辑器很乏味并且经常中断折叠),我需要使用 SQL 查询(在 PBI 中也称为“本机查询”),同时保留查询折叠(以便增量刷新工作)。

我一直在用好...

Value.NativeQuery( Source, query, null, [EnableFolding = true])

......在这里找到了让它工作的技巧。

但它似乎只有在本机查询完成得相当快的情况下才有效。当我的 WHERE 子句只提取今年的数据时,没问题。当我删除 WHERE 子句中的日期过滤器时(以免与增量刷新过滤器冲突),或者只是将年份向后推,似乎需要更长的时间才能导致 PBI 确定:

"We cannot fold on top of this native query. Please modify the native query or remove the 'EnableFolding' option."

几分钟后,在 PQuery 编辑器中或者如果我尝试通过快速单击“关闭并应用”来“绕过”它,上面的错误就会出现。不幸的是,由于我们的数据结构不太好,底层 SQL 可能已经达到了最好的水平。我已经尝试通过脚本中的 an 来欺骗 PBI 似乎超时OPTION (FAST 1),但它不能足够快地拉出任何东西。

我现在卡住了。这似乎是一个愚蠢的障碍,因为我需要做的就是完成第一次导入,因为显然它可以查询折叠以获取较短的负载。我该如何工作?

4

1 回答 1

0

回想起来,我最初没有尝试这个很愚蠢,但是即使Value.NativeQuery()M 步骤不允许命令超时选项,您仍然可以Sql.Database()手动将其放在前面的步骤中并继续执行。我还从我的查询中删除了一些公用表表达式,它们也破坏了查询折叠(不知道为什么,但通过将我的复杂逻辑保存为 sql server 本身的视图并加入到该视图中很容易修复)。现在需要一段时间才能运行,但不会超时!

于 2021-09-25T16:48:48.490 回答