BI技巧丨Window应用之同环比
白茶曾介绍过OFFSET可以用来解决同环比的问题,其实微软最近推出的开窗函数WINDOW也可以用来解决同环比。
WINDOW函数基础语法
WINDOW ( from[, from_type], to[, to_type][, <relation>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>] )
参数介绍:
from:表示窗口开始的位置,正负数均可,可以是固定值,也可以是DAX表达式。
from_type:修改from行为,有两个选项ABS(绝对位置)和REL(相对位置)。
to:表示窗口结束的位置,正负数均可,可以是固定值,也可以是DAX表达式。
to_type:修改to行为,有两个选项ABS(绝对位置)和REL(相对位置)。
relation:表表达式,后续参数orderby,partitionby,matchby的内部参数,都需要来自它或相关表。
orderby:可选项,排序依据。
blanks:可选项,保留参数,可以忽略。
partitionby:可选项,分区定义,参照SQL的开窗分区即可。
matchby:可选项,定义匹配数据和标识当前行的列的语句。
PS:
from和to的1代表向后移动一行,-1代表向前移动一行,0代表当前位置。
其他参数与OFFSET和INDEX函数一致,这里就不过多介绍了。
接下来我们搭配应用场景来看一下如何使用WINDOW函数。
先来看看本期的案例数据:
案例数据就一张Sales的销售事实表,表结构也相对简单,将其导入到PowerBI中。
添加如下日期表,并建立模型关系。
Date =
GENERATE (CALENDAR ( MIN ( 'Sales'[DATE] ), MAX ( 'Sales'[DATE] ) ),VAR DA = [Date]VAR YEAR =YEAR ( DA )VAR QUARTER ="Q" & FORMAT ( DA, "Q" )VAR MONTE =FORMAT ( DA, "MM" )VAR DAY =DAY ( DA )RETURNROW ("Year", YEAR,"Quarter", QUARTER,"Month", MONTE,"DayOfMonth", DAY,"YearQuarter", YEAR & QUARTER,"YearMonth", YEAR & MONTE,"YearMonthCount",YEAR * 12 + MONTE ----新增列)
)
模型关系如下:
添加如下基础度量值:
销售数量:
Quantity =
SUM ( Sales[Quantity] )
环比:
Offset环比% =
VAR LastMonth =CALCULATE ( [Quantity], OFFSET ( -1, ALL ( 'Date'[Year], 'Date'[YearMonth] ) ) )
RETURNDIVIDE ( [Quantity] - LastMonth, LastMonth )
同比:
Offset同比% =
VAR LastYear =CALCULATE ( [Quantity], OFFSET ( -12, ALL ( 'Date'[Year], 'Date'[YearMonth] ) ) )
RETURNDIVIDE ( [Quantity] - LastYear, LastYear )
这是我们之前利用OFFSET函数的写法,结果如下:
有了WINDOW函数,我们还可以这么写:
环比:
Window环比% =
VAR LastYear =CALCULATE ([Quantity],WINDOW ( -1, REL, -1, REL, ALL ( 'Date'[Year], 'Date'[YearMonth] ) ))
RETURNDIVIDE ( [Quantity] - LastYear, LastYear )
同比:
Window同比% =
VAR LastYear =CALCULATE ([Quantity],WINDOW ( -12, REL, -12, REL, ALL ( 'Date'[Year], 'Date'[YearMonth] ) ))
RETURNDIVIDE ( [Quantity] - LastYear, LastYear )
结果如下:
二者结果是一致的。
从执行性能上来看,OFFSET函数的效果是最优的。
无论是对比之前的时间智能函数的写法,还是对比日期表加列的写法,包括本期对比WINDOW函数的写法,OFFSET在同环比计算上的速度都是最优的。
而WINDOW函数,因为有from和to两个定位值,因此性能上面对比OFFSET是有损耗的。
相关文章:
![](https://img-blog.csdnimg.cn/img_convert/1143fcb4c5170262d668d0212aaea1d1.webp?x-oss-process=image/format,png)
BI技巧丨Window应用之同环比
白茶曾介绍过OFFSET可以用来解决同环比的问题,其实微软最近推出的开窗函数WINDOW也可以用来解决同环比。 WINDOW函数基础语法 WINDOW ( from[, from_type], to[, to_type][, <relation>][, <orderBy>][, <blanks>][, <partitionBy>][, &l…...
![](https://img-blog.csdnimg.cn/ffe68a45f4a24675b858fefc541c728e.png)
【Mac】编译Spring 源码和Idea导入
今天我们开始Spring源码的阅读之旅。阅读Spring的源码的第一步当然是编译Spring源码。首先我们要去GitHub上将spring源码给clone下来。 笔者编译环境如下: Spring版本:5.28 https://github.com/spring-projects/spring-framework/tree/v5.2.8.RELEASE …...
![](https://img-blog.csdnimg.cn/229cfe889f124e1d9b6b9db6ee14331e.png#pic_center)
手把手教你用 ANSYS workbench
ANSYS Workbench ANSYS Workbench是一款基于有限元分析(FEA)的工程仿真软件。其基本概念包括: 工作区(Workspace):工程仿真模块都在此区域内,包括几何建模、网格划分、边界条件设置、分析求解等…...
![](https://img-blog.csdnimg.cn/8eb58e44c8f14385906e286b09dd9b1a.png)
Kotlin开发笔记:协程基础
Kotlin开发笔记:协程基础 导语 本章内容与书的第十五章相关,主要介绍与协程相关的知识。总的来说,本文将会介绍Kotlin中关于异步编程的内容,主要就是与协程有关。在Kotlin中协程是利用continuations数据结构构建的,用…...
![](https://www.ngui.cc/images/no-images.jpg)
自学设计模式(简单工厂模式、工厂模式、抽象工厂模式)
使用工厂模式来生产某类对象(代码简化且容易维护,类之间有血缘关系,可以通过工厂类进行生产); 简单工厂模式(用于创建简单对象) 对于简单工厂模式,需要的工厂类只有一个࿱…...
![](https://www.ngui.cc/images/no-images.jpg)
NFS:使⽤ NFS 为远程客户端提供共享文件系统
写在前面 分享一些 nfs 搭建的笔记考试顺便整理内容涉及 nfs 服务端客户端的搭建配置理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的&…...
![](https://www.ngui.cc/images/no-images.jpg)
2022-kaggle-nlp赛事:Feedback Prize - English Language Learning(超多注释讲解)
2022-kaggle-nlp赛事:Feedback Prize - English Language Learning 零、比赛介绍 比赛地址Feedback Prize - English Language Learning | Kaggle 0.1 比赛目标 写作是一项基本技能。可惜很少学生能够磨练,因为学校很少布置写作任务。学习英语作为第…...
![](https://img-blog.csdnimg.cn/8a6e9c1188934ae098dadc7d06d5cfc1.png)
第十三课 宾语从句
文章目录 前言一、宾语从句1、主语及物动词宾语从句2、主语双宾动词间接宾语直接宾语3、主语特定及物动词宾语从句(作宾语)宾补4、主语be某些形容词宾语从句5、动词不定式后面的宾语从句6、动名词后面的宾语从句7、介词后面的宾语从句9、间接引语 前言 一…...
![](https://img-blog.csdnimg.cn/af21713b969d41abbf61e457f94a99d2.png)
Docker容器与虚拟化技术:GitHub账户注册
目录 一、实验 1.GitHub 一、实验 1.GitHub (1)GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。 (2)官网 GitHub: Let’s build from here …...
![](https://img-blog.csdnimg.cn/1df200cbc20041e984dc7abc20afbc64.png)
thinkphp安装workman
需要加版本,版本太高了不行 composer require topthink/think-worker1.0.*...
![](https://www.ngui.cc/images/no-images.jpg)
L1-036 A乘以B(Python实现) 测试点全过
题目 看我没骗你吧 —— 这是一道你可以在 10 秒内完成的题:给定两个绝对值不超过 100 的整数 A 和 B,输出 A 乘以 B 的值。 输入格式 输入在第一行给出两个整数 A 和 B ( − 100 ≤ A , B ≤ 100 ) A 和 B(−100≤…...
![](https://www.ngui.cc/images/no-images.jpg)
代码随想录第五十三天
代码随想录第五十三天 Leetcode 1143. 最长公共子序列Leetcode 1035. 不相交的线Leetcode 53. 最大子数组和 Leetcode 1143. 最长公共子序列 题目链接: 最长公共子序列 自己的思路:没想出来!!! 正确思路:首先这道题由于是涉及到了两个数组&…...
![](https://www.ngui.cc/images/no-images.jpg)
cmd - 如何在不重启的情况下让修改后的hosts生效
cmd - 如何在不重启的情况下让修改后的hosts生效 亲测有效 一般在修改了hosts文件后,需要重启电脑才能生效;其实可以不通过重启电脑也可以令其生效,方法如下: 打开cmd窗口输入ipconfig /flushdns,然后回车。…...
![](https://www.ngui.cc/images/no-images.jpg)
echarts实现双x轴并且分组滚动效果
var myChart echarts.init(document.getElementById(allOutPut1));var option {legend: {itemHeight: 10, // 图例icon高度itemWidth: 16, // 图例icon宽度icon:rect,//设置为矩形top:2%,right:10%,},tooltip: {trigger: axis,axisPointer: {type: shadow},textStyle: {fontS…...
![](https://img-blog.csdnimg.cn/a3f0a95b71c244788eb3834752a28bb8.png)
UE4 地形编辑基础知识 学习笔记
之前自己写过这样的功能,今天看到一个UE现成的 点击地形,选择样条 按住CTRL键点击屏幕中某一个点会在场景内生成一个这样的图标 再点两次,会生成B样条的绿线条 点击号再选择一个模型,会生成对应的链条状的mesh 拉高最远处的一个图…...
![](https://img-blog.csdnimg.cn/img_convert/3b6b89dbd94c2204f392b2c361bb384e.gif#pic_center)
AcWing算法提高课-5.5.2最大公约数
宣传一下 算法提高课整理 CSDN个人主页:更好的阅读体验 原题链接 题目描述 给定整数 N N N,求 1 ≤ x , y ≤ N 1 \le x,y \le N 1≤x,y≤N 且 gcd ( x , y ) \gcd(x,y) gcd(x,y) 为素数的数对 ( x , y ) (x,y) (x,y) 有多少对。 输入格式 输…...
![](https://www.ngui.cc/images/no-images.jpg)
Kubernetes-CKA考题详解
Kubernetes-CKA考题详解 考前须知:考试环境说明第一题:RBAC(4%)第二题:指定node设置为不可用(4%)第三题:升级kubernetes节点(7%)第四题:etcd备份还原(7%)第五题:创建NetworkPolicy(7%)第六题:创建svc(7%)第七题:创建ingress资源(7%)第八题:扩展deployme…...
![](https://img-blog.csdnimg.cn/0110b16b78ed4969999b10628f56c021.png)
不同版本.net引用同一个项目
项目文件.csproj文件内容如下: 重点是:不能有其他的 netstandard2;net40;net45;net46;net6 <Project Sdk"Microsoft.NET.Sdk"><PropertyGroup><TargetFrameworks>netstandard2;net40;net45;net46;net6</TargetFrame…...
![](https://img-blog.csdnimg.cn/img_convert/52985e894483f8775333ce92c524997c.webp?x-oss-process=image/format,png)
软件开发企业SDL安全培训案例
1.背景 随着计算机技术的发展、internet及mobile应用的普遍使用,软件安全像功能、性能、稳定性一样是计算机系统的一个非常重要部分。没有安全的软件,任何美好的功能都是徒劳的,没有安全的软件,公司的机密数据、客户隐私、系统的可靠性都得不到保障.如何有效评估、开发安全、可…...
![](https://www.ngui.cc/images/no-images.jpg)
ide-eval-resetter jar包下载、源码、使用介绍
如果你在找ide-eval-resetter插件,这里告诉你,2021.3版本开始该插件正式失效。 如果你安装的JB产品版本低于2021.3版本,你确定要找ide-eval-resetter,下面提供相关链接希望对你有帮助。 ide-eval-resetter源码: Githu…...
![](https://www.ngui.cc/images/no-images.jpg)
数据压缩算法一览
文章首发地址 Huffman编码: Huffman编码是一种基于字符频率的无损压缩算法。它将出现频率较高的字符用较短的编码表示,出现频率较低的字符用较长的编码表示,从而实现压缩。Lempel-Ziv-Welch (LZW): LZW是一种基于字典的无损压缩算…...
![](https://img-blog.csdnimg.cn/img_convert/89510d21e330abefae59ec9d5efd9274.png)
使用Rust开发命令行工具
生成二进制文件,将其扔到环境变量的path下即可~ 用rust打造实时天气命令行工具[1] 找到合适的API 使用该api[2] 如请求 api.openweathermap.org/data/2.5/weather?qBeijing&appidyour_key: { "coord": { "lon": 116.3972, "lat&quo…...
![](https://img-blog.csdnimg.cn/e8a04e84fe754048b65d358cf4d4b9d2.png)
CentOS中Oracle11g进程有哪些
最近遇到Oracle数据库运行过程实例进程由于某种原因导致中止的问题,专门看了下正常Oracle数据库启动后的进程有哪些,查阅资料了解了下各进程的作用,记录如下。 oracle 3032 1 0 07:36 ? 00:00:00 ora_pmon_orcl oracle …...
![](https://img-blog.csdnimg.cn/3e75a620e7d942eda55d4301978a4cf8.png)
WebRTC之FEC前向纠错协议
FEC前向纠错用于丢包恢复,对媒体包进行异或或其他算法生成冗余包进行发送。如果接收端出现丢包,可以通过冗余包恢复出原始的媒体包。FEC的代价是增加码率带宽,所以一般会根据网络状况、丢包率来动态调整FEC冗余系数,也会结合NACK/…...
![](https://img-blog.csdnimg.cn/a04a286764814986a179a6ea4a30b0cb.png)
软件测试技术分享丨使用Postman搞定各种接口token实战
现在许多项目都使用jwt来实现用户登录和数据权限,校验过用户的用户名和密码后,会向用户响应一段经过加密的token,在这段token中可能储存了数据权限等,在后期的访问中,需要携带这段token,后台解析这段token才…...
![](https://img-blog.csdnimg.cn/ae2a2da7fa22447495073dae6eb87dfb.jpeg)
GBU812-ASEMI逆变器专用整流桥GBU812
编辑:ll GBU812-ASEMI逆变器专用整流桥GBU812 型号:GBU812 品牌:ASEMI 芯片个数:4 封装:GBU-4 恢复时间:>50ns 工作温度:-55C~150C 浪涌电流:200A 正向电流&…...
![](https://www.ngui.cc/images/no-images.jpg)
D2007在64位Win7出现 delphi 2007 assertion failure thread32.cpp 的解决办法
Delphi2007 原来安装在Win7 下 运行正常, 自从升级到Win10 ,新建工程运行然后关闭报错, 报错信息如下: --------------------------- bds.exe - bordbk105N.dll --------------------------- Assertion failure: "(!"S…...
![](https://img-blog.csdnimg.cn/0c7aa01c8a414a97bab4f52a2434b1cf.png)
windows10 docker 安装在D盘
win10安装docker后发现c盘空间急速减少,360管家查看发现images镜像安装在C盘,于是重装docker desktop以为在安装过程中能够选择,遗憾的是没有提供选择权限,默认直接就安装到了c盘。 desktop 迁移 百度得知可以将c盘的docker安装…...
![](https://img-blog.csdnimg.cn/de4abfaac75942d1b3809301c8fbb78d.png)
Scikit-learn强化学习代码批注及相关练习
一、游戏介绍 木棒每保持平衡1个时间步,就得到1分。每一场游戏的最高得分为200分每一场游戏的结束条件为木棒倾斜角度大于41.8或者已经达到200分。最终获胜条件为最近100场游戏的平均得分高于195。代码中env.step(),的返回值就分…...
![](https://img-blog.csdnimg.cn/50eb5df75e6747558307a5727ec15d04.png)
执行jmeter端口不够用报错(Address not available)
执行jmeter端口不够用报错(Address not available) linux解决方案 // 增加本地端口范围 echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range// 启用快速回收TIME_WAIT套接字 sudo sysctl -w net.ipv4.tcp_tw_recycle 1// 启用套接字的重用 sudo sysctl -w net.ipv4.…...
![](/images/no-images.jpg)
网站建设策划书ppt/百度客服24小时人工服务在线咨询
http://www.oschina.net/question/12_50469 Netcat 或者叫 nc 是 Linux 下的一个用于调试和检查网络工具包。可用于创建 TCP/IP 连接,最大的用途就是用来处理 TCP/UDP 套接字。 这里我们将通过一些实例来学习 netcat 命令。 1. 在服务器-客户端架构上使用 Netcat …...
![](/images/no-images.jpg)
国内十个免费自学网站/郑州做网络优化的公司
贝壳找房1.公司是否有做生命周期管理2.为什么要做生命周期管理3.为什么使用parquet列式存储?为什么不用别的?4.orc,rc,parquet列式存储有什么区别,底层存储的内存是否是连续的?5.为什么orc有索引就一定快?我答了orc的构…...
![](https://img-blog.csdnimg.cn/20210609102323511.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDEyNjczNg==,size_16,color_FFFFFF,t_70#pic_center)
品牌建设 网站/百度电话号码查询平台
The frontend does not match Zabbix database. Current database version (mandatory/optional): 4040000/4040002. Required mandatory version: 4000000. Contact your system administrator....
![](/images/no-images.jpg)
wordpress网站专题/qq推广软件
SQL安装时出现“以前的某个程序安装已在安装计算机上创建挂起的文件操作……”解决办法:打开注册表编辑器(或在命令行输入:regedit),在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations项目,并删…...
西安有哪些做网站的公司/深圳网络公司推广平台
上文(https://mp.csdn.net/editor/html/115607641)我们用实例讲解了如何利用.m文件实现对simulink系统的动态仿真,实例中有一句代码为: [t1,x1,y1]sim(new,10) 该语句中x1,y1均为空数组,其表示什么含义呢?…...
![](https://img-blog.csdnimg.cn/20191222141219580.png)
wordpress 繁体转简/怎么做网站宣传
1、什么是Nginx Nginx是一个高性能的反向代理服务器,他是一个非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发 2、为什么要用Nginx 跨平台、配置简单、方向代理、高并发连接:处理2-3万并发连接…...