销售需求丨移动周期汇报

2024-02-04 02:58

本文主要是介绍销售需求丨移动周期汇报,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

既然已经做了周分析,固定日期汇报,那么,咱们继续做一下移动周期汇报!既然已经做了,那就做到最好!

BOSS:就是就是!这还用我说么?
白茶:…你走开!

先来看看本期的示例文件:

(示例文件会放到知识星球中,小伙伴们可以搜索“PowerBI丨需求圈”,文章结尾处会有二维码。)

将其导入到PowerBI中,结果如下:

编写基础的代码如下:

聚合 = 
SUM ( '示例'[销售金额] )

结果如图:

到这里,准备工作基本完成。

开始思考一下思路。这道题的难点在于什么,在于判定最新日期!

首先要考虑这个固定的时间节点,让其不受筛选上下文影响。那么该使用哪个函数呢?小伙伴思考一下。

1
2
3
4
5

有的小伙伴说了,可以用MAX函数,因为它可以MAX文本。白茶说一下,这么说MAX函数也没有错误,但是MAX函数受当前上下文影响哦。继续思考。

1
2
3
4
5

现在可以公布答案:想跳出当前筛选上下文,那么就需要判定行上下文的最新日期值。判定行上下文属于什么?迭代啊!所以,正确答案是用MAXX函数(或者是其他迭代函数,比如MINX函数)!

迭代的问题解决了,那么接下来的就好弄了,算移动日期可以使用正常的加减法就行,也可以使用时间智能函数,当然TOPN也是可以的。

这里说一下,使用时间智能函数日期必须是连续不间断的,需要添加自己的日期表。用TOPN可以忽略日期挂蛋的问题,一切以事实表数据为基础,小伙伴们可以根据自己的需求自行选择。

编写如下代码:

周期 = 
VAR CQ =MAXX ( ALL ( '示例'[日期] ), '示例'[日期] )
VAR SQ =SELECTEDVALUE ( '示例'[日期] )
VAR DQ =TOPN ( 1, FILTER ( ALL ( '示例'[日期] ), '示例'[日期] = SQ - 7 ), '示例'[日期], DESC )
VAR LS =CALCULATE ('示例'[聚合],FILTER ( ALL ( '示例'[日期] ), '示例'[日期] <= SQ && '示例'[日期] > DQ ))
RETURNLS

结果放在TABLE中查看:

右边TABLE的计算结果没什么问题,但是显示的不对,想按照之前的方式显示,只显示最新日期以及相隔七天的累计值,这种情况该怎么处理呢?

(白茶想说:@冬哥威武!)
有请MOD函数!

语法=
MOD(<number>, <divisor>)

MOD函数的第一参数是被除数,第二参数是除数,结果返回的是余数。需要注意的是除数不能为0。

修改代码如下:

七日周期 = 
VAR CQ =MAXX ( ALL ( '示例'[日期] ), '示例'[日期] )
VAR SQ =SELECTEDVALUE ( '示例'[日期] )
VAR DQ =TOPN ( 1, FILTER ( ALL ( '示例'[日期] ), '示例'[日期] = SQ - 7 ), '示例'[日期], DESC )
VAR LS =CALCULATE ('示例'[聚合],FILTER ( ALL ( '示例'[日期] ), '示例'[日期] <= SQ && '示例'[日期] > DQ ))
RETURNIF ( MOD ( CQ - SQ, 7 ) = 0, LS, BLANK () )

结果如下:

这次显示的没有任何问题,解释一下代码含义:

CQ在这里是跳出筛选上下文,利用MAXX函数迭代行上下文获取最新日期。

SQ是利用SELECTEDVALUE函数智能匹配当前上下文的数值。

DQ是利用TOPN函数,返回固定间隔的日期。

LS利用CALCULATE+FILTER函数的经典模式分别求出各个时间段的累计值。

最后,IF利用MOD函数判断余数是否为0,如果日期正好间隔7天,那么数据显示,否则显示空。

小伙伴们,明白了么?修改一下代码,求出上期:

七日上期 = 
VAR CQ =MAXX ( ALL ( '示例'[日期] ), '示例'[日期] )
VAR SQ =SELECTEDVALUE ( '示例'[日期] )
VAR DQ =TOPN ( 1, FILTER ( ALL ( '示例'[日期] ), '示例'[日期] = SQ - 7 ), '示例'[日期], DESC )
VAR LS =CALCULATE ('示例'[聚合],FILTER ( ALL ( '示例'[日期] ), '示例'[日期] <= SQ-7 && '示例'[日期] > DQ-7 ))
RETURNIF ( MOD ( CQ - SQ, 7 ) = 0, LS, BLANK () )

结果如图:

这里修改一下时间间隔就可以了。原本到这里是可以结束的,但是!还有最后一个问题,移动!所以咱们继续。

根据自己的需求,添加属于自己的参数值,修改代码如下:

移动周期 = 
VAR CQ =MAXX ( ALL ( '示例'[日期] ), '示例'[日期] )
VAR SQ =SELECTEDVALUE ( '示例'[日期] )
VAR DQ =TOPN (1,FILTER ( ALL ( '示例'[日期] ), '示例'[日期] = SQ - [移动周期 值] ),'示例'[日期], DESC)
VAR LS =CALCULATE ('示例'[聚合],FILTER ( ALL ( '示例'[日期] ), '示例'[日期] <= SQ && '示例'[日期] > DQ ))
RETURNIF ( MOD ( CQ - SQ, [移动周期 值] ) = 0, LS, BLANK () )

修改上期代码:

移动上期 = 
VAR CQ =MAXX ( ALL ( '示例'[日期] ), '示例'[日期] )
VAR SQ =SELECTEDVALUE ( '示例'[日期] )
VAR DQ =TOPN (1,FILTER ( ALL ( '示例'[日期] ), '示例'[日期] = SQ - [移动周期 值] ),'示例'[日期], DESC)
VAR LS =CALCULATE ('示例'[聚合],FILTER (ALL ( '示例'[日期] ),'示例'[日期] <= SQ - [移动周期 值]&& '示例'[日期] > DQ - [移动周期 值]))
RETURNIF ( MOD ( CQ - SQ, [移动周期 值] ) = 0, LS, BLANK () )

修改一下日期间隔就好,结果如下:

小伙伴们,这就得出了我们想要的结果了。(因为最开始参数没选择,所以模型默认是错误的,选择参数即可。)至于其他的比率的变化,这里就不赘述了。

小伙伴们,GET了么?
(BOSS:哎呦,不错哦!)

这里是白茶,一个PowerBI的初学者。

下面这个知识星球是针对有实际需求的小伙伴,有需要的请加入下面的知识星球。
(这个星球里面有白茶之前所有的案例文件。)

ID:Storysming

这篇关于销售需求丨移动周期汇报的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/676186

相关文章

我在移动打工的日志

客户:给我搞一下录音 我:不会。不在服务范围。 客户:是不想吧 我:笑嘻嘻(气笑) 客户:小姑娘明明会,却欺负老人 我:笑嘻嘻 客户:那我交话费 我:手机号 客户:给我搞录音 我:不会。不懂。没搞过。 客户:那我交话费 我:手机号。这是电信的啊!!我这是中国移动!! 客户:我不管,我要充话费,充话费是你们的 我:可是这是移动!!中国移动!! 客户:我这是手机号 我:那又如何,这是移动!你是电信!!

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

简单的角色响应鼠标而移动

actor类 //处理移动距离,核心是找到角色坐标在世界坐标的向量的投影(x,y,z),然后在世界坐标中合成,此CC是在地面行走,所以Y轴投影始终置为0; using UnityEngine; using System.Collections; public class actor : MonoBehaviour { public float speed=0.1f; CharacterCo

物联网之流水LED灯、正常流水灯、反复流水灯、移动流水灯

MENU 硬件电路设计软件程序设计正常流水LED灯反复流水LED灯移动流水LED灯 硬件电路设计 材料名称数量直插式LED1kΩ电阻杜邦线(跳线)若干面包板1 每一个LED的正极与开发板一个GPIO引脚相连,并串联一个电阻,负极接GND。 当然也可以选择只使用一个电阻。 软件程序设计 正常流水LED灯 因为要用到多个GPIO引脚,所以最好把所有的GPI

12C 新特性,MOVE DATAFILE 在线移动 包括system, 附带改名 NID ,cdb_data_files视图坏了

ALTER DATABASE MOVE DATAFILE  可以改名 可以move file,全部一个命令。 resue 可以重用,keep好像不生效!!! system照移动不误-------- SQL> select file_name, status, online_status from dba_data_files where tablespace_name='SYSTEM'

《C++中的移动构造函数与移动赋值运算符:解锁高效编程的最佳实践》

在 C++的编程世界中,移动构造函数和移动赋值运算符是提升程序性能和效率的重要工具。理解并正确运用它们,可以让我们的代码更加高效、简洁和优雅。 一、引言 随着现代软件系统的日益复杂和对性能要求的不断提高,C++程序员需要不断探索新的技术和方法来优化代码。移动构造函数和移动赋值运算符的出现,为解决资源管理和性能优化问题提供了有力的手段。它们允许我们在不进行不必要的复制操作的情况下,高效地转移资源

创建一个大的DIV,里面的包含两个DIV是可以自由移动

创建一个大的DIV,里面的包含两个DIV是可以自由移动 <body>         <div style="position: relative; background:#DDF8CF;line-height: 50px"> <div style="text-align: center; width: 100%;padding-top: 0px;"><h3>定&nbsp;位&nbsp;

十四、我们应当怎样做需求分析:子用例与扩展用例

用例模型作为UML中4+1视图中非常重要的一员,非常集中地体现了面向对象的分析与设计思想。用例模型将现实世界中连续的一个一个业务流程,按照场景划分到了一个一个的用例中。由于场景的出现,使得用例中的业务流程存在着高度的内聚性,从而成为了日后各种对象的雏形。同时,在用例分析中,又将那些存在于各个用例中的,相同或相近的业务操作提取出来,形成一个一个的子用例或扩展用例,又体现了面向对象设计中的复用性。现在

十三、我们应当怎样做需求分析:查询报表分析

在我以往的用例分析中,使用这样格式的用例模式,对于大多数业务操作流程来说是得心应手的,但对于有些功能来说总感觉不对劲。感觉不对劲的,就是那些查询、汇总与报表功能。对于这部分功能,需要我们描述的不是什么操作流程,而更重要的是那些数据项、数据来源、报表格式、数据链接,以及使用者、使用频率的说明。而这些,在以往的用例说明格式中统统都没有,怎么办呢?俗话说“东西是死的人是活的”,把我们的用例格式改改吧。

九、我们应当怎样做需求分析:功能角色分析与用例图

在我们进行一系列需求调研工作的同时,我们的需求分析工作也开始启动了。需求调研与需求分析工作应当是相辅相伴共同进行的。每次参加完需求调研回到公司,我们就应当对需求调研的成果进行一次需求分析。当下一次开始进行需求调研时,我们应当首先将上次需求分析的结果与客户进行确认,同时对需求分析中提出的疑问交给客户予以解答。这就是一个需求捕获->需求整理->需求验证->再需求捕获的过程。  但是,当我们经