Power Query 参数在一个表中起作用,但在另一个表中不起作用

Posted

技术标签:

【中文标题】Power Query 参数在一个表中起作用,但在另一个表中不起作用【英文标题】:Power Query Parameter works in one table but not another 【发布时间】:2014-11-24 17:31:33 【问题描述】:

所以我有两个表(电源查询),并希望将它们合并为一个。第二个表只查看第一个表(电源查询)并对其应用参数过滤器。当我尝试将参数代码组合到原始查询中时,过滤器不起作用。我已启用快速组合以公开所有查询以消除任何防火墙问题。

为了不破坏 pq 的原始工作集,我复制了第一个 pq 并使用高级修改,通过处理所需的代码来应用参数(第三个 pq)

第二次电源查询代码(这首先查看 pq 并应用参数过滤器)并且有效

let
    Date_Parameter = Excel.CurrentWorkbook()[Name="Parameter"][Content],
    Date_Value = Date_Parameter0[Value],
    Source = Excel.CurrentWorkbook()[Name="Timesheet1"][Content],
    #"Filtered Rows" = Table.SelectRows(Source, each ([Date] = Date_Value))
in
    #"Filtered Rows"

三次幂查询代码(这是我复制第一个 pq 并从第二个 pq 添加参数代码的那个)这不起作用

let

    Date_Parameter = Excel.CurrentWorkbook()[Name="Parameter"][Content],
    Date_Value = Date_Parameter0[Value],

    Source = Excel.Workbook(File.Contents("\\192.168.12.31\Project Files\Daily Truck Sheet\TimeTrack\TimeTrack.xlsm")),
    Timesheet_Table = Source[Item="Timesheet",Kind="Table"][Data],
    Merge = Table.NestedJoin(Timesheet_Table,"Ref",Project,"Ref","NewColumn"),
    #"Expand NewColumn" = Table.ExpandTableColumn(Merge, "NewColumn", "Crew", "NewColumn.Crew"),
    #"Renamed Columns"  = Table.RenameColumns(#"Expand NewColumn","NewColumn.Crew", "Crew"),
    #"Removed Duplicates" = Table.Distinct(#"Renamed Columns", "Ref"),
    #"Removed Columns"  = Table.RemoveColumns(#"Removed Duplicates","Ref", "Employee Name", "Truck #", "Hours", "Per Diem", "Piecework", "Travel Day", "Timecard Filename", "Paid DT Hrs.", "hours check", "project hours", "Paid Regular Hours", "Paid  OT  Hrs.", "PayPeriod", "Employee Number", "Lead Hand Employee Number", "Crew Count", "Employee Revenue"),
    #"Reordered Columns"= Table.ReorderColumns(#"Removed Columns","Date", "Date Received", "Lead Hand", "Crew", "Project#", "Comments", "Work Performed", "time card hours", "Revenue per hour", "Total Reveneu"),
    Rounding = Table.TransformColumns(#"Reordered Columns","Revenue per hour", each Number.Round(_, 2), "Total Reveneu", each Number.Round(_, 2)),
    #"Filtered Rows" = Table.SelectRows(Rounding, each ([Date] = Date_Value))
in
    #"Filtered Rows"

【问题讨论】:

【参考方案1】:

所以我必须为 pq 插入一个转换以将其视为日期。即使在参数 pq(从参数表中加载值)中,它已经被转换了。用以下代码替换了源代码行之前的前三行,它起作用了

Date_Parameter = Excel.CurrentWorkbook()[Name="Parameter"][Content],
#"Changed Type1" = Table.TransformColumnTypes(Date_Parameter,"Value", type date),
Date_Value = #"Changed Type1"0[Value],

所以也许现在我可以去掉参数 pq,因为它全部内置在最终 pq 中,但还没有尝试过

【讨论】:

由于 Excel 中的日期在很大程度上只是一个特殊格式的数字,我们通常无法恢复它应该是日期的信息。

以上是关于Power Query 参数在一个表中起作用,但在另一个表中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

SQL 查询在 Excel 中不起作用,但在 Access 中起作用

带有参数的 Power Query 无效列

std::unique_ptr 作为参数在 std::thread 中起作用 [重复]

JavaScript 在 Safari 中不起作用,但在 Firefox 和 Chrome 中起作用

某些功能在“发布”部署中不起作用(但在“调试”中起作用)

模态在我的网络服务器中不起作用,但在 localhost 中起作用。这是为啥?