首页 > 解决方案 > 如何使用 Excel 中表中的命名日期来过滤 Power Query?

问题描述

所以我之前实际上已经用我已经构建的查询完成了此操作,但这次我尝试使用从 Excel 表中提取的日期来过滤其他人构建的 Power Query,这不是最干净的代码。我在正确编写代码时遇到问题,也不想把它搞砸。下面是我为 Start_Date 和 End_Date 提供的代码。

let
Source = Excel.CurrentWorkbook(){[Name="Start_Date"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type date}}),
Start_Date = Record.Field(#"Changed Type"{0},"Column1")
in
Start_Date

let
Source = Excel.CurrentWorkbook(){[Name="End_Date"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type date}}),
End_Date = Record.Field(#"Changed Type"{0},"Column1")
in
End_Date

这使我的日期格式为 Start_Date 的 12/29/2019 和 End_Date 的 6/26/2021。然后我尝试在下面的代码中使用这些来替换当前存在的日期。

let
Start_Date = Start_Date,
End_Date = End_Date,
Source = Sql.Database("", "", [Query="-- Estimated Runtime: <30 sec for 1 year of data#(lf)# 
(lf)Declare @StartDate date#(lf)Declare @EndDate date#(lf)Set @EndDate = End_Date -- Set 
EndDate to Now#(lf)Set @StartDate = '2019-12-29'--dateadd(yy,-1,dateadd(yy, 
datediff(yy,0,@EndDate),0)) -- Set StartDate to January 1st of previous year#(lf)#(lf)

但是,如果我只是尝试用命名的 Start_Date 和 End_Date 替换日期,则会收到以下错误消息。

DataSource.Error: Microsoft SQL: Invalid column name 'End_Date'.
Details:
DataSourceKind=SQL
DataSourcePath=jansql01;mas500_app
Message=Invalid column name 'End_Date'.
Number=207
Class=16

任何帮助是极大的赞赏!

标签: excelpowerquerym

解决方案


它需要是 SQL 可以消化的文本格式。

所以而不是

Query="...Set @EndDate = End_Date..."

你需要End_Date作为一个字符串插入更像

Query="...Set @EndDate = '" & Date.ToText(End_Date, "yyyy-MM-dd") & "'..."

推荐阅读