如何对查询列值触发 sql 例程并将结果合并到 powerquery 中



我正在使用Office 2016 excel并连接到Oracle db

我正在创建一个文件,用于获取订单、零件号、所需的交货日期、实际交货日期、平均交货时间、平均消耗量,最后是当前的库存水平。

我创建了一个sql来获取订单,日期和交货时间。但是,在数据库中,当前库存水平是通过输入零件号和位置的过程获得的(对于整体库存水平可以是"%")。现在,我可以构建一个查询,该查询接受所有订单,所有部件号并为每个零件号运行该过程,然后构建我的powerquery,但这似乎是对处理能力的可怕浪费。

问题是:有没有办法在筛选初始源结果后通过调用过程来追加或合并到 powerquery 中?因此,仅对上个月的订单运行程序还是仅对过滤的零件号运行程序?

我尝试过寻找通常的地方,support.office,google和这里,但我的问题是我(绝大多数)只能从如何附加或合并查询中获得结果(这是微不足道的,基本上是不需要的情况的一个版本)

Stian,

  1. 如果过程不是存储过程,而是函数,则可以为此函数创建单独的查询,然后将新列添加到筛选的表中。此列通过使用另一列中的参数执行此函数来获取其值。
  2. 执行此操作的另一种方法是创建一个包含所需所有列的视图,包括由过程生成的列。然后,在 PowerQuery 中查询此视图,并将筛选器应用于结果。这应该会触发查询折叠,这会将筛选器传递给服务器,因此它会优化查询并且不会提取不需要的行。 据我所知,本机查询(当您直接执行要执行的SQL查询时)不受查询折叠的影响。此外,它们非常不安全,通常是一个临时解决方案。请记住这一点。

谷歌搜索"查询折叠在Power Query",如果你想了解更多信息。

尽管如此,对于最佳方案,我会考虑使用函数而不是过程(当然,如果可能的话),并将 if 结合起来以获得您想要的数据。

最新更新