ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3158|回复: 10

[求助] POWER BI 库存天数的计算

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-10-31 20:30 | 显示全部楼层 |阅读模式
之前发过求助帖,但是结果仍有问题,所以求助。

需求: PBI呈现各经销商,各产品的库存天数,库存天数 =( 当月库存/过去三个月平均销售)*30
          过去3个月的平均销售= average(销售表的(M月)+(M-1月)+(M-2月))
          这个平均销售值,根据月份不同而自行滚动。
          比如5月的库存天数= (5月当月库存/ average (3,4,5月销售和))*30 ,如果是4月,库存天数= (4月库存/ average(2,3,4月销售和))*30
          最后希望PBI呈现一个 月份为X轴,天数为Y轴,然后点某一个产品/经销商,显示过去1~10月的库存天数趋势。呈现如下:

呈现大致:

切片器:经销商/产品编码,点击后有天数呈现。

图片.png

我按照之前网友写的,算出来结果有出入,可做参考。

TEST =
VAR MINDATE=CALCULATE(MIN('销售'[Month-POSOF]),ALL('销售'))
VAR ym=year(MINDATE)*100+MONTH(MINDATE)+2
VAR MAXDATE =CALCULATE(MAX('销售'[Month-POSOF]),ALL('销售'))
VAR YM2= YEAR(MAXDATE)*100+MONTH(MAXDATE)
RETURN
IF (MAX('销售'[YM])>=ym && MAX('销售'[YM])<=YM2,[Stock]/CALCULATE(AVERAGE('销售'[值]),DATESINPERIOD('销售'[Month-POSOF],MAX('销售'[Month-POSOF]),-3,MONTH)),BLANK())





销售、库存.rar

69.14 KB, 下载次数: 19

源数据

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-10-31 20:30 | 显示全部楼层
按照我算的,最终得出的结果和我按照数据算的有出入,也不知道问题出在哪里。感谢网友

TA的精华主题

TA的得分主题

发表于 2021-11-1 07:54 | 显示全部楼层
你需求的是 月份颗粒度上的平均值,但AVERAGE([度量值]) 求的是日颗粒度上的 平均值。应该用AVERAGEX,一参用FILTER(ALL(月份),BLABLABLA)  来获取 3个月的区间。

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-11-1 12:04 | 显示全部楼层
flashevil 发表于 2021-11-1 07:54
你需求的是 月份颗粒度上的平均值,但AVERAGE([度量值]) 求的是日颗粒度上的 平均值。应该用AVERAGEX,一参 ...

我觉得好像还是没办法得出我想要的结果,因为这个test算出来的只是当月的average。

POSOF = AVERAGE('POS OFFTAKE'[值])

TEST = CALCULATE([POSOF],FILTER(ALL('POS OFFTAKE'[Month-POSOF]),'POS OFFTAKE'[Month-POSOF]<=MAX('POS OFFTAKE'[Month-POSOF])&& 'POS OFFTAKE'[Month-POSOF]>MAX('POS OFFTAKE'[Month-POSOF])-3))

TA的精华主题

TA的得分主题

发表于 2021-11-1 14:09 | 显示全部楼层
Yudexxxxxxx 发表于 2021-11-1 12:04
我觉得好像还是没办法得出我想要的结果,因为这个test算出来的只是当月的average。

POSOF = AVERAGE(' ...

我说了是要用AVERAGEX呀, 你这个TEST 算的还是 日颗粒度的 均值。
AVERAGEX(FILTER(ALL..) ,CALCULATE() )

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-11-1 14:58 | 显示全部楼层
flashevil 发表于 2021-11-1 14:09
我说了是要用AVERAGEX呀, 你这个TEST 算的还是 日颗粒度的 均值。
AVERAGEX(FILTER(ALL..) ,CALCULATE( ...

你应该说的是这个意思吧。但是还是不对。不管是我上述还是下方的,都只有单月的数据。
test 1 = 单10月的POS平均数。但是我需要的是8~10月的平均数。
test2 = 十月总的POS数,差的更远、

TEST 1= CALCULATE([POSOF],FILTER(ALL('POS OFFTAKE'[Month-POSOF]),'POS OFFTAKE'[Month-POSOF]<=MAX('POS OFFTAKE'[Month-POSOF])&& 'POS OFFTAKE'[Month-POSOF]>MAX('POS OFFTAKE'[Month-POSOF])-3))

test2 = AVERAGEX(FILTER(ALL('POS OFFTAKE'[Month-POSOF]),'POS OFFTAKE'[Month-POSOF]<=MAX('POS OFFTAKE'[Month-POSOF]) && 'POS OFFTAKE'[Month-POSOF]>'POS OFFTAKE'[Month-POSOF]-3),CALCULATE(SUM('POS OFFTAKE'[值])))

TA的精华主题

TA的得分主题

发表于 2021-11-1 15:56 | 显示全部楼层
image.jpg

不知道你模型怎么建的,按照你的需求,需要弄3个维度表

blablabla.zip

55.37 KB, 下载次数: 15

TA的精华主题

TA的得分主题

发表于 2021-11-1 16:01 | 显示全部楼层
至于AVERAGEX的一参 用FILTER(ALL()) 还是 CALCULATETABLE( VALUES())  理论上都可以。但如果数据涉及到跨年就只能用后者了,因为日期智能函数可以处理跨年。

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-11-1 17:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
flashevil 发表于 2021-11-1 16:01
至于AVERAGEX的一参 用FILTER(ALL()) 还是 CALCULATETABLE( VALUES())  理论上都可以。但如果数据涉及到跨 ...

谢谢大哥!!!!感激涕零·!!!!
我终于找到问题所在,原来之前写的都是对的,验证了你之前那句话,日颗粒度和月颗粒度!!验算一直不对的原因是我每次都是按日颗粒度去算!但是这个是不对的!!大哥谢谢!!!!!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-11-16 16:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
flashevil 发表于 2021-11-1 15:56
不知道你模型怎么建的,按照你的需求,需要弄3个维度表

大哥,我又来了,如果我算出的【结果】>150的返回150,否则返回结果。

需要的样子:
= if ([结果]>150, 150, [结果]),

因为if只能对新建列进行判断,度量值如何去进行数值的大小判断呢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-4 00:31 , Processed in 0.035452 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表