如何在查询列值上触发 sql 例程并将结果合并到 powerquery
How to trigger an sql routine on query column values and merge result into powerquery
我正在使用 Office 2016 excel 并连接到 Oracle 数据库
我正在创建一个文件来获取订单、零件号、他们希望的交货日期、实际交货日期、平均交货时间、平均消耗量,最后是当前库存水平。
我创建了一个 sql 来获取订单、日期和交货时间。但是,在数据库中,当前库存水平是通过输入零件号和位置的过程获得的(可以是“%”表示整体库存水平)。现在,我可以构建一个查询,获取所有订单、所有部件号和 运行 每个部件号的过程,然后构建我的 powerquery,但这似乎是对处理能力的可怕浪费。
问题是:在过滤初始源结果后,是否可以通过调用过程来追加或合并到 powerquery 中?因此,仅 运行 对上个月的订单或仅对过滤后的零件号进行处理?
我已经尝试寻找通常的地方,support.office、google 和这里,但我的问题是我(压倒性地)只从如何追加或合并查询中获得结果(这是微不足道的,基本上一个不需要的情况的版本)
斯蒂安,
- 如果您的过程不是存储过程,而是一个函数,那么您可以为这个函数创建单独的查询,然后将新列添加到过滤后的 table。此列通过使用来自另一列的参数执行此函数来获取其值。
- 另一种方法是创建一个视图,其中包含您想要的所有列,包括由过程生成的列。然后在 PowerQuery 中查询此视图,并将筛选器应用于结果。这应该会触发 query folding,它会将您的过滤器传递给服务器,因此它会优化查询并且不会获取不需要的行。
据我所知,本机查询(当你直接写一个 SQL 查询来执行时)不受查询折叠的影响。此外,它们非常不安全,通常是一种临时解决方案。请牢记这一点。
Google "Query folding in Power Query" 如果您想了解更多信息。
不过,对于最理想的情况,我会考虑使用函数而不是过程(当然,如果可能的话),并将 if 与视图结合起来以获得您想要的数据。
我正在使用 Office 2016 excel 并连接到 Oracle 数据库
我正在创建一个文件来获取订单、零件号、他们希望的交货日期、实际交货日期、平均交货时间、平均消耗量,最后是当前库存水平。
我创建了一个 sql 来获取订单、日期和交货时间。但是,在数据库中,当前库存水平是通过输入零件号和位置的过程获得的(可以是“%”表示整体库存水平)。现在,我可以构建一个查询,获取所有订单、所有部件号和 运行 每个部件号的过程,然后构建我的 powerquery,但这似乎是对处理能力的可怕浪费。
问题是:在过滤初始源结果后,是否可以通过调用过程来追加或合并到 powerquery 中?因此,仅 运行 对上个月的订单或仅对过滤后的零件号进行处理?
我已经尝试寻找通常的地方,support.office、google 和这里,但我的问题是我(压倒性地)只从如何追加或合并查询中获得结果(这是微不足道的,基本上一个不需要的情况的版本)
斯蒂安,
- 如果您的过程不是存储过程,而是一个函数,那么您可以为这个函数创建单独的查询,然后将新列添加到过滤后的 table。此列通过使用来自另一列的参数执行此函数来获取其值。
- 另一种方法是创建一个视图,其中包含您想要的所有列,包括由过程生成的列。然后在 PowerQuery 中查询此视图,并将筛选器应用于结果。这应该会触发 query folding,它会将您的过滤器传递给服务器,因此它会优化查询并且不会获取不需要的行。 据我所知,本机查询(当你直接写一个 SQL 查询来执行时)不受查询折叠的影响。此外,它们非常不安全,通常是一种临时解决方案。请牢记这一点。
Google "Query folding in Power Query" 如果您想了解更多信息。
不过,对于最理想的情况,我会考虑使用函数而不是过程(当然,如果可能的话),并将 if 与视图结合起来以获得您想要的数据。