[已解决] PQ计算占比,多次重复读取源数据的问题

  [复制链接]
查看245374 | 回复180 | 2020-11-5 22:53:42 | 显示全部楼层 |阅读模式
数据量为200w条,文件大小是200M。

附件是示例数据

总共要算3次占比。发现每次计算占比的时候,都需要重新读取200M的数据,导致读取整体数据量达到1G以上,效率非常慢。

按照逻辑来说,不应该是按照“更改的类型”的表来算占比吗?怎么还要去每次读源数据?奇怪


===================

公式如下:
let
  源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
  更改的类型 = Table.TransformColumnTypes(源,{{"种类", type text}, {"所属仓库", type text}, {"数量", Int64.Type}}),
  占比 = Table.AddColumn(更改的类型, "占比", each [数量]/List.Sum(更改的类型[数量]),Percentage.Type)
in
  占比


求助各位大大。

10574102110541.png

10574102110542.png







10574102110543.rar (15.1 KB, 下载次数: 0)
回复

使用道具 举报

虎儿 | 2020-11-5 23:02:43 | 显示全部楼层
更改的类型那步buffer一下,总计单独用一步计算出常量,然后再addcolumn试试
回复

使用道具 举报

comic001 | 2020-11-5 23:04:43 | 显示全部楼层
这么规矩的数据源,这样的计算,放pp里去出度量值会不会更合适些
回复

使用道具 举报

xbzhan0228 | 2020-11-5 23:09:43 | 显示全部楼层
更改的类型那步buffer一下,总计单独用一步计算出常量,然后再addcolumn试试


感谢思路,果然加了Table.Buffer之后明显降低读取数据量,效率提升了几倍。



思路如下:

let
  源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
  更改的类型 = Table.Buffer(Table.TransformColumnTypes(源,{{"种类", type text}, {"所属仓库", type text}, {"数量", Int64.Type}})),
  占比 = Table.AddColumn(更改的类型, "占比", each [数量]/List.Sum(更改的类型[数量]),Percentage.Type)
in
回复

使用道具 举报

wwwhhh | 2020-11-5 23:15:43 | 显示全部楼层
但是也请教“总计单独用一步计算出常量”,应该怎么写呢?常量不明白
回复

使用道具 举报

firstpic | 2020-11-5 23:21:44 | 显示全部楼层
let
  源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
  更改的类型 = Table.Buffer(Table.TransformColumnTypes(源,{{"种类", type text}, {"所属仓库", type text}, {"数量", Int64.Type}})),
  合计=List.Sum(更改的类型[数量]),
  占比 = Table.AddColumn(更改的类型, "占比", each [数量]/合计,Percentage.Type)
in
回复

使用道具 举报

hylinfeng | 2021-5-6 06:51:25 | 显示全部楼层
前排,哇咔咔
回复

使用道具 举报

aya1999 | 2021-7-23 09:54:02 | 显示全部楼层
不错不错.,..我一直很喜欢
回复

使用道具 举报

李余多多 | 2021-8-6 16:47:08 | 显示全部楼层
我也来支持一下,很喜欢这里老师
回复

使用道具 举报

xilu168 | 2021-9-2 10:36:40 来自手机 | 显示全部楼层
回个帖子支持一下!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则