【发布时间】:2017-07-22 12:02:47
【问题描述】:
我是 SQL 新手,我尝试使用 Power Query 将 Great Plains 数据直接提取到 Excel 中,使用我发现 here 的 UDF 将参数从工作簿传递到查询。这是 UDF:
(ParameterName as text) =>
let
ParamSource = Excel.CurrentWorkbook(){[Name="Parameters"]}[Content],
ParamRow = Table.SelectRows(ParamSource, each ([Parameter] = ParameterName)),
Value=
if Table.IsEmpty(ParamRow)=true
then null
else Record.Field(ParamRow{0},"Value")
in
Value
这里是 SQL 查询:
Declare @accrualDate Date
set @accrualDate = dbo.fnGetParameter("Accrual Date")
Declare @lookback Date
set @lookback = dbo.fnGetParameter("Lookback for Automated Accruals")
Declare @lookbackBOP Date
set @lookbackBOP = dbo.fnGetParameter("Lookback for Manual Accruals - BOP")
Declare @lookbackEOP Date
set @lookbackEOP = dbo.fnGetParameter("Lookback for Manual Accruals - EOP")
SELECT
[Open Year],
[History Year],
[Period ID],
[TRX Date],
[Account Number],
[Account Description],
[Journal Entry],
[description],
[reference],
[Originating Posted Date],
Sum([Debit Amount]) AS [Debit Amount],
Sum([Credit Amount]) AS [Credit Amount] ,
Segment1,
Segment2,
Segment3,
Segment4,
Segment5,
Segment6,
Segment7
FROM ['dbName'].[dbo].[AccountTransactions]
WHERE Segment2 BETWEEN 6000 AND 6999
and [description] = 'Purchases'
and [TRX Date] BETWEEN @lookback AND @accrualDate
GROUP BY [Open Year], [History Year], [Period ID], [TRX Date], [Account Number], [Account Description], [Journal Entry],[description],[reference], [Originating Posted Date], Segment1, Segment2, Segment3, Segment4, Segment5, Segment6, Segment7
我自己运行了 UDF,并确认它从我的“参数”表中返回了预期值。但是,在运行查询时出现以下错误:
DataSource.Error:Microsoft SQL:找不到列“dbo”或 用户定义的函数或聚合“dbo.fnGetParameter”,或 名字不明确。细节: DataSourceKind=SQL DataSourcePath=dcb-gp15-sql.us.medsolutions.com;MED01 Message=找不到列“dbo”或用户定义的函数或聚合“dbo.fnGetParameter”,或 这个名字是模棱两可的。 号码=4121 类=16
任何帮助将不胜感激。
【问题讨论】:
-
什么是
dbo.fnGetParameter?如果是table-valued function,则不能将其用作标量函数 -
fnGetParameter是 Excel 函数吗?不清楚。 -
fnGetParameter 是我使用 Power Query > From Other Sources > Blank Query > Advanced Editor 创建的 UDF 的名称。抱歉,我应该在问题中更清楚地说明这一点。
标签: sql sql-server excel powerquery