Power Query - 如何通过名称而不是索引值获取 Record.Field 值?
Power Query - How to get Record.Field value by name instead of index value?
我是 Power Query 的新手,阅读了足够多的资料以获得参数化查询和 运行。
在 Excel 中,在名为“参数”的选项卡上,我有一个名为“myParams”的范围,它跨越 A1:B4。它由 2 列组成,其中 A1 =“参数名称”和 B1 =“值”
A B
1 Parameter Name Value
2 User ID 12345
3 Other Thing foo
4 More Things bar
我的查询看起来像这样,工作正常:
let
myParamTable = Excel.CurrentWorkbook(){[Name="myParams"]}[Content],
pUserID = Record.Field(myParamTable{0}, "Value"),
Source = Sql.Database("myservername", "mydatabase"),
GoQuery = Value.NativeQuery(Source,
"
SELECT * FROM myTable WHERE UserIdField = @UserID",
[UserID = pUserID]
)
in
GoQuery
如果我理解这是如何工作的,pUserID 会在名为“Value”的列中的位置 0 中分配值,因为索引从 0 开始计数。
如何通过 A 列中的名称“用户 ID”获取值?我想它接近于
pUserID = Record.Field(myParamTable{"User ID"}, "Value"),
我想使用参数名称而不是索引值,因为如果将新字段添加到“myParams”范围,索引值将来可能会发生变化。
谢谢!
方法有很多种。这是一个使用 Lists
let
myParamTable = Excel.CurrentWorkbook(){[Name="myParams"]}[Content],
fieldList = myParamTable[#"Parameter Name"],
valueList = myParamTable[Value],
pUserID = valueList{List.PositionOf(fieldList,"User ID")}
in
pUserID
您可以像这样通过参数名称而不是索引号来引用行。
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"User ID" = Source{[#"Parameter Name"="User ID"]}[Value]
in
#"User ID"
Chris Webb 的博客对这类事情有很好的 post here
我是 Power Query 的新手,阅读了足够多的资料以获得参数化查询和 运行。
在 Excel 中,在名为“参数”的选项卡上,我有一个名为“myParams”的范围,它跨越 A1:B4。它由 2 列组成,其中 A1 =“参数名称”和 B1 =“值”
A B
1 Parameter Name Value
2 User ID 12345
3 Other Thing foo
4 More Things bar
我的查询看起来像这样,工作正常:
let
myParamTable = Excel.CurrentWorkbook(){[Name="myParams"]}[Content],
pUserID = Record.Field(myParamTable{0}, "Value"),
Source = Sql.Database("myservername", "mydatabase"),
GoQuery = Value.NativeQuery(Source,
"
SELECT * FROM myTable WHERE UserIdField = @UserID",
[UserID = pUserID]
)
in
GoQuery
如果我理解这是如何工作的,pUserID 会在名为“Value”的列中的位置 0 中分配值,因为索引从 0 开始计数。
如何通过 A 列中的名称“用户 ID”获取值?我想它接近于
pUserID = Record.Field(myParamTable{"User ID"}, "Value"),
我想使用参数名称而不是索引值,因为如果将新字段添加到“myParams”范围,索引值将来可能会发生变化。
谢谢!
方法有很多种。这是一个使用 Lists
let
myParamTable = Excel.CurrentWorkbook(){[Name="myParams"]}[Content],
fieldList = myParamTable[#"Parameter Name"],
valueList = myParamTable[Value],
pUserID = valueList{List.PositionOf(fieldList,"User ID")}
in
pUserID
您可以像这样通过参数名称而不是索引号来引用行。
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"User ID" = Source{[#"Parameter Name"="User ID"]}[Value]
in
#"User ID"
Chris Webb 的博客对这类事情有很好的 post here