【2017年3月29日優(yōu)化】
之前留下一個(gè)尾巴:如何自動(dòng)獲取表頭踱稍。我在原文中使用了比較笨的辦法。今天看到一篇帖子悠抹,提到了可以用Table.FromList()函數(shù)來(lái)單獨(dú)構(gòu)造行和表頭珠月。于是將原來(lái)的代碼優(yōu)化如下:
let
源 = Excel.CurrentWorkbook(){[Name="factTbl"]}[Content],
更改的類(lèi)型 = Table.TransformColumnTypes(源,{{"Year", type text}, {"Income", type text}, {"ID", type text}}),
轉(zhuǎn)換為隨機(jī)list = List.Range(Table.ToList(更改的類(lèi)型),Number.RoundDown(Number.RandomBetween(0,Table.RowCount(更改的類(lèi)型))),Number.RoundDown(Number.RandomBetween(0,Table.RowCount(更改的類(lèi)型)))),
轉(zhuǎn)換為表 = Table.FromList(轉(zhuǎn)換為隨機(jī)list, Splitter.SplitTextByDelimiter(","), Table.ColumnNames(更改的類(lèi)型), null, ExtraValues.Error),
更改的類(lèi)型1 = Table.TransformColumnTypes(轉(zhuǎn)換為表,{{"ID", Int64.Type}, {"Month", type text}, {"Year", Int64.Type}, {"Income", type number}, {"Chanel", type text}, {"Goes To", type text}, {"Social", type text}})
in
更改的類(lèi)型1
【以下是原文】
無(wú)意中讀到這篇帖子,作者介紹了一種通過(guò)篩選列來(lái)獲取一個(gè)表中的隨機(jī)記錄的方法。
但是這個(gè)方法并沒(méi)有完全做到隨機(jī)楔敌,比如每次刷新后啤挎,都是獲取的四個(gè)“Goes To”列中的值的記錄:
單一值隨機(jī)
而我想要的是這個(gè)表里的記錄完全隨機(jī)。也就是每次刷新卵凑,隨機(jī)顯示這1000行數(shù)據(jù)庆聘,有可能一次顯示1行,也有可能一次顯示100行勺卢,還有可能顯示999行掏觉,而且順序也是完全隨機(jī)的。
以下是實(shí)現(xiàn)方法:
let
源 = Excel.CurrentWorkbook(){[Name="factTbl"]}[Content],
更改的類(lèi)型 = Table.TransformColumnTypes(源,{{"Year", type text}, {"Income", type text}, {"ID", type text}}),
轉(zhuǎn)換為隨機(jī)list = List.Range(Table.ToList(更改的類(lèi)型),Number.RoundDown(Number.RandomBetween(0,Table.RowCount(更改的類(lèi)型))),Number.RoundDown(Number.RandomBetween(0,Table.RowCount(更改的類(lèi)型)))),
轉(zhuǎn)換為表 = Table.FromList(轉(zhuǎn)換為隨機(jī)list, Splitter.SplitTextByDelimiter(","), null, null, ExtraValues.Error),
降級(jí)原始標(biāo)題行 = Table.DemoteHeaders(更改的類(lèi)型),
獲取新表的標(biāo)題 = Table.FirstN(降級(jí)原始標(biāo)題行,1),
追加的查詢(xún) = Table.Combine({獲取新表的標(biāo)題, 轉(zhuǎn)換為表}),
提升的標(biāo)題 = Table.PromoteHeaders(追加的查詢(xún), [PromoteAllScalars=true])
in
提升的標(biāo)題
遇到的最大難題是怎么恢復(fù)原來(lái)的表頭值漫,我用了比較笨的辦法。想要找一個(gè)更優(yōu)雅的方式织盼,沒(méi)有成功杨何。
這里是原始數(shù)據(jù):http://pan.baidu.com/s/1pLptcON