excel - 使用单元格值作为参数对 SQL 进行 Powerquery 非常慢
问题描述
设想:
运行 XL 表,使用单个 powerquery 从 SQL 服务器检索数据。生成的数据集用于两个子查询。然后将所有三个数据集加载到 XL 表中的数据透视表中。
客观的:
使用从 XL 表中检索到的 2 个参数发送查询,从而减小返回数据集的大小。将查询折叠回 SQL 服务器,而不是在 PQ 中过滤后检索。
问题描述:
如果我对主查询使用以下配置:
let
dbQuery = "SELECT * FROM dbo.somequery",
Source = Sql.Database("<server>", "<database>", [Query=dbQuery])
in
Source
这工作正常,几乎立即返回大约 6500 行。
以下函数在 PQ 中定义为“GetRange”以检索单元格值:
(rangeName) =>
Excel.CurrentWorkbook(){[Name=rangeName]}[Content]{0}[Column1]
使用以下语法检索两个参数:
= GetRange("<named cell>")
如果我现在将 dbQuery 更改为:
dbQuery = "SELECT * FROM dbo.xlPAS_PivotOutput
WHERE parameter1=" & Text.From(parameter1) & " and parameter2=" & Text.From(parameter2),
查询确实编译并返回结果,但 Excel PQ 实际返回值大约需要 1 到 2 分钟?出于某种原因,简单地检索 2 个单元格值并将它们用作输入参数似乎需要付出巨大的努力?
解决方案
我一直在尝试调试一个查询,该查询从我从电子表格中的单元格中提取的 URL 中提取数据。它运行得非常慢,而在查询中明确使用 URL 运行良好。我一直在尝试简化电子表格以排除故障,直到我有一个查询只是从一个空电子表格中的单个单元格中选择文本值,这仍然很慢。
名称管理器显示有几个无效的名称引用,其中一个引用了我无法访问的另一个位置的另一个 Excel 文件中的范围。删除这些过时的名称似乎已经解决了这个问题。
电子表格中未使用的名称引用导致此类问题的事实绝对是 Excel 错误,但至少知道这一点,搜索无效的名称引用并删除它们似乎可以解决问题。
推荐阅读
- types - 如何将混合类型细化为具有`toString()`的东西?
- vba - 确定同一列中日期之间天数的最佳方法(MS Access)
- json - 具有动态列名的嵌套 json 的角度渲染表 ngFor
- unity3d - 无法添加轨道脚本 - “脚本需要从 MonoBehaviour 派生!”
- single-sign-on - SP 元数据。WantAssertionsSigned 是假还是真?
- apache-camel - apache camel ftp:如何防止ftp组件在写入文件时处理文件
- c# - 在 C# 中捕获数组的用户输入
- android - Litho 是否支持数据绑定?
- list - 通过将对象与 [1..n] 相乘来创建列表
- amazon-web-services - 如何在基于休息的 API 函数中限制操作时间?