Pass a Parameter from Power Query to T-SQL and Still Edit Query(将Power Query中的参数传递给T-SQL,但仍可编辑查询)
问题描述
是否可以在T-SQL查询中使用Power Query参数,但仍允许我像在链接图像中那样在"编辑设置"部分编辑源查询?我知道您可以通过高级编辑器屏幕将参数插入,但这样就很难对查询进行额外的编辑。本质上,我仍然希望在SQL查询中使用该参数,但不会失去轻松进行编辑的能力。我在Power BI(台式机)中使用Power Query。感谢您的帮助。
推荐答案
是的,这是可能的。
创建该查询时,第一个应用的步骤(请参见屏幕截图中的右窗格)将是如下所示的M代码:
= Sql.Database("server", "db", [Query="SELECT * FROM ABC WHERE Date = [Parameter]"])
如果您有一个参数Param
,您可以将代码编辑为动态的,如下所示:
= Sql.Database("server", "db", [Query="SELECT * FROM ABC WHERE Date = "&Text.From(Param)])
但是,PowerQuery可以进行自己的查询折叠,这在许多情况下可能会更轻松、更高效。
如果在不使用SQL语句的情况下加载该表,则查询应该如下所示:
let
Source = Sql.Database("server", "db"),
dbo_ABC = Source{[Schema="dbo",Item="ABC"]}[Data]
in
dbo_ABC
从那里您可以对Date
列应用筛选器(从下拉列表中选择任何日期),这应该会产生如下所示的另一个步骤:
#"Filtered Rows" = Table.SelectRows(dbo_ABC, each ([Date] = #date(2019, 12, 31)))
在这里,您可以用Date参数替换您选择的任何日期,因此现在整个查询如下所示:
let
Source = Sql.Database("server", "db"),
dbo_ABC = Source{[Schema="dbo",Item="ABC"]}[Data],
#"Filtered Rows" = Table.SelectRows(dbo_ABC, each ([Date] = Param))
in
#"Filtered Rows"
(请确保Date
列和参数的数据类型相同,否则将出现错误。)
select [_].[Col1],
[_].[Col2],
[_].[Col3],
[...]
from [dbo].[ABC] as [_]
where [_].[Date] = '2019-12-31' and [_].[Date] is not null
总之,关键是您可以在查询编辑器中工作,而不是修改查询字符串。
这篇关于将Power Query中的参数传递给T-SQL,但仍可编辑查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将Power Query中的参数传递给T-SQL,但仍可编辑查询
基础教程推荐
- 将数据从 MS SQL 迁移到 PostgreSQL? 2022-01-01
- ERROR 2006 (HY000): MySQL 服务器已经消失 2021-01-01
- 使用pyodbc“不安全"的Python多处理和数据库访问? 2022-01-01
- SQL Server:只有 GROUP BY 中的最后一个条目 2021-01-01
- Sql Server 字符串到日期的转换 2021-01-01
- SQL Server 中单行 MERGE/upsert 的语法 2021-01-01
- 在 VB.NET 中更新 SQL Server DateTime 列 2021-01-01
- SQL Server 2016更改对象所有者 2022-01-01
- 如何在 SQL Server 的嵌套过程中处理事务? 2021-01-01
- 无法在 ubuntu 中启动 mysql 服务器 2021-01-01