按 Header 日期动态删除 Power Query 中的列

Dynamically Remove Columns In Power Query By Header Dates

我有一个查询 table 数据已在 Power Query 中合并。结果是两年内每个人的每月百分比,如下所示。我想在月份结束时从 table 中动态删除月份。因此,从 8 月 1 日开始,当我刷新时,7 月将从电源查询 table 中删除。

合并查询Table:

Name Jul-21 Aug-21 Sept-21
Bob .10 .20 .10
Amy .30 .40 .10

我查看了 StackOver,有一个 post 与我想要完成的类似:

post 中建议删除超过三年的列 headers 的代码是:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    final = Table.SelectColumns(Source, List.Select(Table.ColumnNames(Source), 
            each try Date.From(_) >= Date.AddYears(Date.From(DateTime.FixedLocalNow()),-3)
                 otherwise true))
in
    final  

我进入 Power Query 中的高级编辑器,试图将其调整为我想要执行的操作,但代码不起作用,也没有删除任何列。这甚至在调整代码以不删除当前月份之前。

let
    Source = Table.Combine({Merge1, Merge2}),
    final = Table.SelectColumns(Source, List.Select(Table.ColumnNames(Source), 
            each try Date.FromText(_) >= Date.From(DateTime.FixedLocalNow())
                 otherwise true))
in
    final

我已经尝试了 每次尝试 Date.From(_)每次尝试 Date.FromText(_),两者都没有删除任何列。在我的任何测试中,我都没有改变等式的 Date.From(DateTime.FixedLocalNow()) 部分。

我曾尝试搜索在线资源以了解此代码的工作原理以及使用 Microsoft 的支持站点来了解 Table.SelectColumns 和 List.Select,但我还没有找到合适的资源可以分解如何理解上面的代码,所以这让我很难理解我需要做哪些改变才能让它工作。

到目前为止,我了解到 List.Select 正在确定将包含在 Table.SelectColumns[=47 中的列=] 功能。 List.Select 正在创建所有列 headers 的列表,然后测量它们的文本(由 Date.FromText(_ ) 函数转换成一个日期)针对当前日期使用 each tryotherwise 捕获所有 non-date headers 并确保它们也包括在内。

但我不明白为什么方程没有删除任何过去的日期列或如何调整函数(一旦它起作用)以不删除当前月份。对于这两个问题,我将不胜感激。如果有帮助,我可以将 link 分享到完整的电子表格。

怎么样

 Table.SelectColumns(Source, List.Select(Table.ColumnNames(Source), 
   each try 
   Date.StartOfMonth(Date.FromText(Text.Start(_,3)&"/01/"&"20"&Text.End(_,2)))
   >= Date.StartOfMonth(Date.From(DateTime.FixedLocalNow()))
   otherwise true))