销售需求丨移动周期汇报

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

相关文章

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

Pandas进行周期与时间戳转换的方法

《Pandas进行周期与时间戳转换的方法》本教程将深入讲解如何在pandas中使用to_period()和to_timestamp()方法,完成时间戳与周期之间的转换,并结合实际应用场景展示这些方法的... 目录to_period() 时间戳转周期基本操作应用示例to_timestamp() 周期转时间戳基

双系统电脑中把Ubuntu装进外接移动固态硬盘的全过程

《双系统电脑中把Ubuntu装进外接移动固态硬盘的全过程》:本文主要介绍如何在Windows11系统中使用VMware17创建虚拟机,并在虚拟机中安装Ubuntu22.04桌面版或Ubunt... 目录一、首先win11中安装vmware17二、磁盘分区三、保存四、使用虚拟机进行系统安装五、遇见的错误和解决

使用FileChannel实现文件的复制和移动方式

《使用FileChannel实现文件的复制和移动方式》:本文主要介绍使用FileChannel实现文件的复制和移动方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录使用 FileChannel 实现文件复制代码解释使用 FileChannel 实现文件移动代码解释

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

Python重命名文件并移动到对应文件夹

《Python重命名文件并移动到对应文件夹》在日常的文件管理和处理过程中,我们可能会遇到需要将文件整理到不同文件夹中的需求,下面我们就来看看如何使用Python实现重命名文件并移动到对应文件夹吧... 目录检查并删除空文件夹1. 基本需求2. 实现代码解析3. 代码解释4. 代码执行结果5. 总结方法补充在

我在移动打工的日志

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

用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