尝试在Excel Power Query SelectRows行中使用变量作为字段名时出错
我有以下Excel 2016 Power查询(获取和转换查询)。它工作正常,但我尝试在两行SelectRows中使用变量作为字段名:尝试在Excel Power Query SelectRows行中使用变量作为字段名时出错,excel,powerquery,excel-2016,Excel,Powerquery,Excel 2016,我有以下Excel 2016 Power查询(获取和转换查询)。它工作正常,但我尝试在两行SelectRows中使用变量作为字段名: let //Variables: //Server Name: DefnameServerName = Excel.CurrentWorkbook(){[Name="IMPORT_SERVER_NAME"]}[Content], ServerName = DefnameServerName{
let
//Variables:
//Server Name:
DefnameServerName = Excel.CurrentWorkbook(){[Name="IMPORT_SERVER_NAME"]}[Content],
ServerName = DefnameServerName{0}[Column1],
//Database Name:
DefnameDatabaseName = Excel.CurrentWorkbook(){[Name="IMPORT_DATABASE_NAME"]}[Content],
DatabaseName = DefnameDatabaseName{0}[Column1],
//Schema Name:
DefnameSchemaName = Excel.CurrentWorkbook(){[Name="IMPORT_SCHEMA_NAME"]}[Content],
SchemaName = DefnameSchemaName{0}[Column1],
//Table Name:
DefnameTableName = Excel.CurrentWorkbook(){[Name="IMPORT_TABLE_NAME"]}[Content],
TableName = DefnameTableName{0}[Column1],
//ID Field Name:
DefnameFieldNameID = Excel.CurrentWorkbook(){[Name="IMPORT_FIELDNAME_ID"]}[Content],
FieldNameID = DefnameFieldNameID{0}[Column1],
//Customer Field Name:
DefnameFieldNameCustomer = Excel.CurrentWorkbook(){[Name="IMPORT_FIELDNAME_CUSTOMER"]}[Content],
FieldNameCustomer = DefnameFieldNameCustomer{0}[Column1],
//Region Field Name:
DefnameFieldNameRegion = Excel.CurrentWorkbook(){[Name="IMPORT_FIELDNAME_REGION"]}[Content],
FieldNameRegion = DefnameFieldNameRegion{0}[Column1],
//Month Field Name:
DefnameFieldNameMonth = Excel.CurrentWorkbook(){[Name="IMPORT_FIELDNAME_MONTH"]}[Content],
FieldNameMonth = DefnameFieldNameMonth{0}[Column1],
//Forecast Value Field Name:
DefnameFieldNameForecastValue = Excel.CurrentWorkbook(){[Name="IMPORT_FIELDNAME_FORECAST_VALUE"]}[Content],
FieldNameForecastValue = DefnameFieldNameForecastValue{0}[Column1],
//Parameters:
//ID:
DefnameParameterID = Excel.CurrentWorkbook(){[Name="IMPORT_PARAMETER_ID"]}[Content],
ParameterID = DefnameParameterID{0}[Column1],
//Customer:
DefnameParameterCustomer = Excel.CurrentWorkbook(){[Name="IMPORT_PARAMETER_CUSTOMER"]}[Content],
ParameterCustomer = DefnameParameterCustomer{0}[Column1],
Source = Sql.Database(ServerName, DatabaseName),
dbo_MidtermOmnibusForecast = Source{[Schema=SchemaName,Item=TableName]}[Data],
RemoveOtherColumns = Table.SelectColumns(dbo_MidtermOmnibusForecast,{FieldNameID, FieldNameCustomer, FieldNameMonth, FieldNameForecastValue, FieldNameRegion}),
FilterByUUID = Table.SelectRows(RemoveOtherColumns, each ([UUID] = ParameterID)),
FilterByCustomer = Table.SelectRows(FilterByUUID, each ([ForecastName] = ParameterCustomer)),
PivotMonths = Table.Pivot(Table.TransformColumnTypes(FilterByCustomer, {{FieldNameMonth, type text}}, "en-US"), List.Distinct(Table.TransformColumnTypes(FilterByCustomer, {{FieldNameMonth, type text}}, "en-US")[ForecastDate]), FieldNameMonth, FieldNameForecastValue, List.Sum),
SortByCustomerThenRegion = Table.Sort(PivotMonths,{{FieldNameCustomer, Order.Ascending}, {FieldNameRegion, Order.Ascending}})
in
SortByCustomerThenRegion
我试过这个:
FilterByUUID = Table.SelectRows(RemoveOtherColumns, each ([FieldNameID] = ParameterID)),
FilterByCustomer = Table.SelectRows(FilterByUUID, each ([FieldNameCustomer] = ParameterCustomer)),
FilterByUUID = Table.SelectRows(RemoveOtherColumns, each (FieldNameID = ParameterID)),
FilterByCustomer = Table.SelectRows(FilterByUUID, each (FieldNameCustomer = ParameterCustomer)),
我试过这个:
FilterByUUID = Table.SelectRows(RemoveOtherColumns, each ([FieldNameID] = ParameterID)),
FilterByCustomer = Table.SelectRows(FilterByUUID, each ([FieldNameCustomer] = ParameterCustomer)),
FilterByUUID = Table.SelectRows(RemoveOtherColumns, each (FieldNameID = ParameterID)),
FilterByCustomer = Table.SelectRows(FilterByUUID, each (FieldNameCustomer = ParameterCustomer)),
但他们都打破了这个疑问。要在两个SelectRows行中使用字段名的变量,我需要做什么?答案如下:
不能对变量字段名使用方括号,但必须使用Record.field,如下所示:
FilterByUUID = Table.SelectRows(RemoveOtherColumns, each (Record.Field(_, FieldNameID) = ParameterID)),
(只有在字段名周围使用方括号时,这才是必要的,因为它们在SelectRows行中。在没有方括号的情况下,如上面代码中的我的SelectColumns行中,您可以像我一样交换变量名。--Greg)