尝试在Excel Power Query 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{

我有以下Excel 2016 Power查询(获取和转换查询)。它工作正常,但我尝试在两行SelectRows中使用变量作为字段名:

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)