博客:www.jiaopengzi.com

焦棚子的文章目录

请点击下载附件

1、背景

前几天看到群里有朋友在搞特殊结算日期,主要不是按照正常日期里的整月,按照比如:上月21号至本月20号作为结算周期,由于这样的结算日期,无法使用pp里面的时间智能函数。

pp内置了很多时间智能函数,但是都无法满足需求,dax只要你创建上下文即可满足业务需求,今天就简单写个这样的度量值。

2、数据源

calendar表

2017/1/1-2018/12/31

fact表

2017/1/1-2018/12/31的随机value


数据源

关系建立


关系

3、上DAX

total

total:=SUM('fact'[value])

ytd_1231

按照每年12月31号为结算年末的ytd,注意观察datesytd第二参数:"12-31"

ytd_1231:=CALCULATE('fact'[total],DATESYTD('calendar'[date],"12-31"))

ytd_0630

按照每年6月30号为结算年末的ytd,注意观察datesytd第二参数:"06-30"

ytd_0630:=CALCULATE('fact'[total],DATESYTD('calendar'[date],"06-30"))

mtd

按照正常整月的mtd

mtd:=CALCULATE('fact'[total],DATESMTD('calendar'[date]))

mtd2

1、按照结算周期(上月21日-本月20日,其中D是参数可以更改为自己需求)的mtd,可以看月维度及天维度;

2、考虑闰年2月29天因素

3、由于本案例中只存在2017年以后数据,2017年1月mtd即是1月1日-1月20日之间

mtd2:=
VAR D = 20//D设置为参数,D的范围应该在(1,28)
VAR MP =
COUNTROWS ( PREVIOUSMONTH ( 'calendar'[date] ) )
VAR MSD =
STARTOFMONTH ( 'calendar'[date] )
VAR N =
SWITCH (
TRUE (),
MP = 31, D - 31,
MP = 30, D - 30,
MP = 29, D - 29,
MP = 28, D - 28
)
VAR SD =
IF (
ISFILTERED ( 'calendar'[date] ),
IF (
DAY ( MAX ( 'calendar'[date] ) ) <= D,
DATEADD ( MSD, N, DAY ),
DATEADD ( MSD, D, DAY )
),
DATEADD ( MSD, N, DAY )
)
VAR ED =
IF (
ISFILTERED ( 'calendar'[date] ),
MAX ( 'calendar'[date] ),
DATEADD ( MSD, D - 1, DAY )
)
VAR T =
DATESBETWEEN ( 'calendar'[date], SD, ED )
RETURN
CALCULATE ( 'fact'[total], T )

结果图


结果图

透视表

请关注

1、mtd中2017年1月(1月1日-1月31日),即蓝色单元格;

2、mtd2中2017年1月(1月1日-1月20日),即黄色单元格;

3、mtd2中2017年2月(1月21日-2月20日),即橙色单元格(颜色如果不是橙色也暂且叫做橙色吧);

4、2017年6月中ytd_1231、ytd_0630都是相等,即红色字体单元格;

5、2017年7月中ytd_1231、ytd_0630不相等,即

绿色单元格:datesytd第二参数中,ytd_1231按照12月31日为结算年末,

红色单元格:datesytd第二参数中,ytd_0630按照6月30日为结算年末。

4、总结

1、好像没啥总结的;

2、datesytd注意第二参数的使用,主要是结算或者财年使用;

3、特殊结算周期,根据业务特点创建DAX上下文即可;

by 焦棚子

焦棚子的文章目录

110_Power Pivot特殊结算日期及财年日期的更多相关文章

  1. 一起学微软Power BI系列-使用技巧(5)自定义PowerBI时间日期表

    1.日期函数表作用 经常使用Excel或者PowerBI,Power Pivot做报表,时间日期是一个重要的纬度,加上做一些钻取,时间日期函数表不可避免.所以今天就给大家分享一个自定义的做日期表的方法 ...

  2. [MSSQL]採用pivot函数实现动态行转列

    环境要求:2005+ 在日常需求中常常会有行转列的事情需求处理.假设不是动态的行,那么我们能够採取case when 罗列处理. 在sql 2005曾经处理动态行或列的时候,通常採用拼接字符串的方法处 ...

  3. Sql2008的行列转换之行转列

    今天在工作的时候遇到了行列转换的问题,记得去年有一段时间经常写,但是许久不用已经记不太得了.好记性不如烂笔头,忙完之后赶紧记录一下. 关键字:PIVOT(行转列),UNPIVOT(列转行) 先说说 P ...

  4. Oracle根据【日期】组,其他条件根据PIVOT行转列。使每个日期条件关联的其他数据只有一行。

    select OPER_TIME, MICROPAY, REFUND from ( select trunc(oper_time) oper_time, class_name, sum(total_f ...

  5. 122_Power Pivot&Power BI不连续日期的日环比

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 这两天有朋友在交流,dax中使用时间智能函数写日环比,一个 dateadd 就可以了.但是有些业务不是每天都连续 ...

  6. 如何用Pivot实现行列转换

    在Oracle中,如果要实现行列转换,较为常见的是用DECODE和CASE语句.对于简单的行列转行,DECODE和CASE语句尚能应付.在逻辑比较复杂,分组聚合较多的场景中,DECODE和CASE语句 ...

  7. 在Sqlserver下巧用行列转换日期的数据统计

    在Sqlserver下巧用行列转换日期的数据统计 前言 在SQLSERVER 中有很多统计函数的基础语法,有使用Group By 或 partition by 后配合Sum,Count(*) 等用法. ...

  8. 中等难度SQL语句(存储过程,分页,拼接字段、游标,日期类型转换,动态行转列,视图)汇总

    一.创建存储过程 if Exists(select name from sysobjects where NAME = 'sp1LoginUser' and type='P')drop procedu ...

  9. 每日学习心得:SQL查询表的行列转换/小计/统计(with rollup,with cube,pivot解析)

    2013-8-20 1.    SQL查询表的行列转换/小计/统计(with  rollup,with cube,pivot解析) 在实际的项目开发中有很多项目都会有报表模块,今天就通过一个小的SQL ...

随机推荐

  1. 4_ 比例控制器_燃烧卡路里(2)_Matlab/Simulink_Proportional Control

  2. IMWeb前端提升营七天学习总结

    写在前面 5月24到30这7天,IMWeb前端提升营,腾讯大佬们分享个人经验,使出各种前端方面的大招.从中学习了很多前端方面的知识,也get到了前端学习的方法论,还有一些算法知识等等. 现将总结如下: ...

  3. 将HTML页面转换为PDF文件并导出

    目前,在大多数的管理系统中,都会有这样一个功能:根据相关的条件查询相应的数据,并生成可视化报表,然后可导出为PDF文件.本文只展现生成可视化报表之后导出PDF文件的过程,生成可视化的报表可使用Echa ...

  4. 【uniapp 开发】校验工具类 CheckUtil

    校验手机号格式 /** * 验证是否为电话号码(座机) * * @param {} * source */ function isTelephone(source) { var regex = /^( ...

  5. 高频重要前端API手写整理(call,apply,bind,instanceof,flat,filter,new,防抖,节流,深浅拷贝,数组乱序,数组去重,继承, lazyman,jsonp的实现,函数的柯里化 )

    Function.prototype.call = function(context,...args){ var context = context || window; context.fn = t ...

  6. vue上拉加载下拉加载

    npm i vue-scroller <scroller :on-refresh="refresh" :on-infinite="infinite" :n ...

  7. 《头号玩家》AI电影调研报告(四)

    五. 现实中对于技术的实现 1.自由变身 电影中,主人公借助"魔幻眼镜"让自己快速变成另一个人的模样,现实中我们一样也能做到! 在今年游戏开发者大会(GDC)上,一个名为" ...

  8. 第一阶段:Java基础之异常和处理

    文章目录 Java中异常处理机制的简单和应用 一.异常的体系结构&分类 二.问题扩展 三.应用场景 Java中异常处理机制的简单和应用 异常也是一种对象,Java中有很多异常类,并且定义了基类 ...

  9. Python Django项目日志查询系统

    该项目适合中小型公司日志查询工作.大型公司可以使用elk等.该系统其实就是调用了absible命令去查日志,然后把输出的信息输到页面查看. 日志查询系统 维护手册 作者:陈土锋 日期:2020年6月1 ...

  10. flex 布局 自己做的demo

    .row {/*横*/ display: -webkit-box;// display: -webkit-flex; /* Safari */ display: -moz-box; display: ...