[已解决] 如何优化累计求和

  [复制链接]
查看232973 | 回复174 | 2021-2-18 22:13:31 | 显示全部楼层 |阅读模式
各位老师:
  我从SQL SERVER读取了出入库单据,希望做一个库存台账的查询,想在最后加一列,按照日期累计的求和。
   11022111747331.png
  

    [size=13.3333px]数[size=13.3333px]据查询到的数据大概在40W行左右。[size=13.3333px]该页面时通过钻取跳转过来。每次只显示1个存货的库存台账。
   11022111747332.png

    我参照了各教程中比较多用的pattern,但是这个运算速度实在太慢了,我测试了下TOP1000,不论结果是否准确,会出现结果,但是完整的数据集下,始终在转圈圈出不来。我猜测PB对整个数据集执行计算,而我想要的是仅对当前钻取过来的这个存货进行累计求和的运算。
  1. cumulative=

  2. CALCULATE (

  3.   SUM ( vou_six[iQuantity] ),

  4.   FILTER (

  5.     ALLEXCEPT ( 'vou_six'[cInvCode] ),

  6.     'vou_six'[单据日期] <= MAX ( 'vou_six'[单据日期] )
复制代码


请老师指点下,这种情况,如何能提高这个度量值的计算速度。万分感谢。
回复

使用道具 举报

srici_yb | 2021-2-18 22:19:31 | 显示全部楼层
filter是迭代函数,每次计算都会从头迭代一遍,一般如果要提高速度,并且需要两列比较时,可以用变量定义个max,然后直接calculate的简易写法,数据量大的时候尽量不要用迭代函数var A=MAX(【日期】) returncalculate(sum,allexcept,【日期】<A)这种写法是允许的,而且速度快的多
回复

使用道具 举报

燕飞 | 2021-2-18 22:24:32 | 显示全部楼层
你贴的公式应该是错的,建议上传样例数据集
回复

使用道具 举报

阿丫 | 2021-6-5 21:25:53 | 显示全部楼层
楼下的接上
回复

使用道具 举报

tangdashuai | 2021-6-29 14:21:57 来自手机 | 显示全部楼层
一直在看
回复

使用道具 举报

阿敏 | 2021-6-29 15:22:45 来自手机 | 显示全部楼层
LZ帖子不给力,勉强给回复下吧
回复

使用道具 举报

askazhi | 2021-7-7 07:27:15 来自手机 | 显示全部楼层
支持支持再支持
回复

使用道具 举报

朗月星空 | 2021-7-30 23:32:35 来自手机 | 显示全部楼层
太棒了,感谢唐楼主精彩的分享
回复

使用道具 举报

新手1 | 2021-8-18 09:42:41 | 显示全部楼层
支持一下云发教育!
回复

使用道具 举报

南半球 | 2021-9-13 09:21:00 | 显示全部楼层
顶起出售广告位
回复

使用道具 举报

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

本版积分规则