删除powerquery中的动态列列表

时间:2017-01-16 10:27:41

标签: powerquery m

我正在开发一种工具来帮助我的团队识别某些数据文件中的更改。长话短说,我设法将一些东西放在一起(即使是powerquery和M的初学者)效果很好,但缺乏用户友好性。

问题是并非所有团队成员都需要该工具来检查所有列中的差异(不同的人,不同的兴趣)。为了管理这个,我在执行比较之前使用以下内容删除了所有不需要的列:

= Table.RemoveColumns(myTable,{" col1"," col2"," col3" ...等

这样可行,但如果您想更改配置,则需要进入代码并修改列表。

我的问题如下:有没有办法将动态列表集成到此代码中?即在易于使用的表格中列出列表,"勾选/取消勾选"你想要的那些,并让代码删除其余的?

如果您需要更多信息,请访问:)

感谢所提供的任何帮助

2 个答案:

答案 0 :(得分:0)

最简单的方法可能是在查询编辑器的“主页”选项卡上使用“选择列”,然后将生成的步骤重命名为:     #“在这里选择栏目----->” = Table.SelectColumns(Source,{“Column1”,“Column2”,“Column3”,“Column5”,“Column7”,“Column8”,“Column9”,“Column10”})

然后,当您想要调整所选列时,您可以按下箭头所指向的小轮,然后会出现一个弹出窗口,您可以从中进行(联合)滴答。

或者,如果您使用具有相同选择的多个查询,则可以创建一个输出列表的其他查询,例如:

let
    Source = Table.FromList(List.Transform({1..10}, each "Column" & Text.From(_)),null,{"Available Columns"}),
    Transposed = Table.Transpose(Source),
    #"CHOOSE COLUMNS HERE ----->" = Table.SelectColumns(Transposed,{"Column2", "Column3", "Column5",  "Column6", "Column8", "Column9", "Column10"}),
    TransposedBack = Table.Transpose(#"CHOOSE COLUMNS HERE ----->"),
    ConvertedToList = TransposedBack[Column1]
in
    ConvertedToList

然后在查询中使用该列表,例如: = Table.SelectColumns(#“Transposed Table”,SelectedColumns) 其中SelectedColumns是具有所选列的查询的名称。

答案 1 :(得分:0)

如果您的目的是允许用户在不输入查询编辑器的情况下选择列,那么您可以使用如下所述的参数表:http://www.excelguru.ca/blog/2014/11/26/building-a-parameter-table-for-power-query/。您应该能够使用一些预定义的列名称/数字向用户公开2colxNrow表。您可以使用数据验证将用户输入约束为二进制开/关行为(https://support.office.com/en-us/article/Apply-data-validation-to-cells-29fecbcc-d1b9-42c1-9d76-eff3ce5f7249)。

(P.S。根据您对目标的描述,查询加载项可能会提供您正在寻找的功能)