【实例】一个获取随机记录的PowerQuery实例优化

【2017年3月29日优化】
之前留下一个尾巴:如何自动获取表头。我在原文中使用了比较笨的办法。今天看到一篇帖子,提到了可以用Table.FromList()函数来单独构造行和表头。于是将原来的代码优化如下:

 let
   源 = Excel.CurrentWorkbook(){[Name="factTbl"]}[Content],
   更改的类型 = Table.TransformColumnTypes(源,{{"Year", type text}, {"Income", type text}, {"ID", type text}}),
   转换为随机list = List.Range(Table.ToList(更改的类型),Number.RoundDown(Number.RandomBetween(0,Table.RowCount(更改的类型))),Number.RoundDown(Number.RandomBetween(0,Table.RowCount(更改的类型)))),
   转换为表 = Table.FromList(转换为随机list, Splitter.SplitTextByDelimiter(","), Table.ColumnNames(更改的类型), null, ExtraValues.Error),
   更改的类型1 = Table.TransformColumnTypes(转换为表,{{"ID", Int64.Type}, {"Month", type text}, {"Year", Int64.Type}, {"Income", type number}, {"Chanel", type text}, {"Goes To", type text}, {"Social", type text}})
 in
   更改的类型1

【以下是原文】
无意中读到这篇帖子,作者介绍了一种通过筛选列来获取一个表中的随机记录的方法。

但是这个方法并没有完全做到随机,比如每次刷新后,都是获取的四个“Goes To”列中的值的记录:


单一值随机

而我想要的是这个表里的记录完全随机。也就是每次刷新,随机显示这1000行数据,有可能一次显示1行,也有可能一次显示100行,还有可能显示999行,而且顺序也是完全随机的。
以下是实现方法:

let
源 = Excel.CurrentWorkbook(){[Name="factTbl"]}[Content],
更改的类型 = Table.TransformColumnTypes(源,{{"Year", type text}, {"Income", type text}, {"ID", type text}}),
转换为随机list = List.Range(Table.ToList(更改的类型),Number.RoundDown(Number.RandomBetween(0,Table.RowCount(更改的类型))),Number.RoundDown(Number.RandomBetween(0,Table.RowCount(更改的类型)))),
转换为表 = Table.FromList(转换为随机list, Splitter.SplitTextByDelimiter(","), null, null, ExtraValues.Error),
降级原始标题行 = Table.DemoteHeaders(更改的类型),
获取新表的标题 = Table.FirstN(降级原始标题行,1),
追加的查询 = Table.Combine({获取新表的标题, 转换为表}),
提升的标题 = Table.PromoteHeaders(追加的查询, [PromoteAllScalars=true])
in
提升的标题

遇到的最大难题是怎么恢复原来的表头,我用了比较笨的办法。想要找一个更优雅的方式,没有成功。

这里是原始数据:http://pan.baidu.com/s/1pLptcON

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,034评论 25 709
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,967评论 6 13
  • 说到读书的姿态,也许真的很美,其实,这世界上美好的事物真的很多,比如说雕塑,雕塑也是有生命的,它的美只让懂它的人才...
    绝灬魅阅读 1,495评论 1 0
  • 聿宝出生前两个月的睡眠和作息,简直就是一团糟,不谈也罢。后来我学习了婴儿睡眠相关的知识,决心调整他的睡眠。有很多人...
    Nono妈咪_阅读 8,639评论 2 6

友情链接更多精彩内容