我正在寻找一个删除列的步骤,该步骤将删除标题(日期)早于某个日期(比当前日期早X年)的任何列。我收到一个大数据转储,它只是从2012年到今天他们每月支付的客户名称和费用的列表,以他们每月支付的费用为首,但是随着时间的推移,我不需要最早的数据。
到目前为止,我已经尝试从标题创建一个列表(基于另一位董事会成员的先前答复-Thankyou @horseyride!),然后从该列表中删除不符合条件的列。但是它一直在破坏。
这是高级编辑器中的最新行
#“ Pivoted Column” = Table.Pivot(Table.TransformColumnTypes(#“ Removed Columns”,{{“ Calendar Period”,type text}},“ en-GB”),List.Distinct(Table.TransformColumnTypes( #“已移除的栏”,{{“日历期”,键入文本}},“ en-GB”)[#“日历期”]),“日历期”,“批准的发票金额”,列表总数)>
这是我要创建的行:
在 #“删除列”
我似乎无法正确理解的第二段代码-我认为现在应该是这样。但从本质上讲,我希望表删除其标题(日期)早于今天日期X年的所有列。
编辑-如果期望的截止日期是2012年12月,则为之前和之后的屏幕截图:
提前谢谢
答案 0 :(得分:0)
假设您有一个名为date_var的命名范围,其中包含一个日期(使用所需的任何公式建立),并且您希望消除所有小于该日期的列
方法1-取消枢转并向后枢转。可能比方法2慢
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Primary Customer Name"}, "Attribute", "Value"),
#"Changed Type" = Table.TransformColumnTypes(#"Unpivoted Other Columns",{{"Attribute", type date}}),
DateVar=Date.From(Excel.CurrentWorkbook(){[Name="date_var"]}[Content]{0}[Column1]),
#"Filtered Rows" = Table.SelectRows(#"Changed Type", each [Attribute] >= DateVar),
#"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Filtered Rows", {{"Attribute", type text}}, "en-US"), List.Distinct(Table.TransformColumnTypes(#"Filtered Rows", {{"Attribute", type text}}, "en-US")[Attribute]), "Attribute", "Value", List.Sum)
in #"Pivoted Column"
方法2-直接创建较旧的日期列的列表并将其删除
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
ColumnList= Table.FromList(List.Skip(Table.ColumnNames(Source),1)),
#"Changed Type" = Table.TransformColumnTypes(ColumnList,{{"Column1", type date}}),
DateVar=Date.From(Excel.CurrentWorkbook(){[Name="date_var"]}[Content]{0}[Column1]),
DateFilter = Table.SelectRows(#"Changed Type", each [Column1] < DateVar),
RemoveList = Table.TransformColumnTypes(DateFilter,{{"Column1", type text}})[Column1],
#"Removed Columns" = Table.RemoveColumns(Source,RemoveList)
in #"Removed Columns"
答案 1 :(得分:0)
只需使用以下代码。对于静态日期:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
final = Table.SelectColumns(Source, List.Select(Table.ColumnNames(Source),
each try Date.From(_) >= #date(2012,12,1) otherwise true))
in
final
动态日期(当前日期之前的3年以内):
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