1. 博客:www.jiaopengzi.com

焦棚子的文章目录

请点击下载附件

一、背景

在群里看到有人在交流周维度同环比,同时又好多天都没有更新文章了,最近没有什么好的素材,就硬生生的写一个吧。

先来看看结果图(ps:实现功能,美化靠天赋,反正我没什么天赋。)

关于中国式报表,有人喜欢方式一,也有人喜欢方式二,如果喜欢方式三就自己写吧。

二、数据源

数据源用M写的随机数据,共三张表。

1、【周几】

2、【calendar】

3、【data】

4、三张表的M

5、数据源M源码

  1. /*data*/
  2. let
  3. D = #table(
  4. type table[
  5. date=date
  6. ,value=number
  7. ]
  8. ,List.Transform(
  9. {0..364}
  10. ,(d)=>
  11. {
  12. Date.From(Number.From(#date(2018,1,1))+d)
  13. ,Number.Round(Number.RandomBetween(1,1000),2)
  14. }
  15. )
  16. )
  17. in
  18. D
  19. /周几/

  20. let

  21. = #table(

  22. type table [

  23. ID=Int32.Type

  24. ,周几=text

  25. ]

  26. ,List.Transform(

  27. {0..6}

  28. ,(d)=>

  29. {

  30. d

  31. , {"一","二","三","四","五","六","日"}{d}

  32. }

  33. )

  34. )

  35. in

  36.  
  37.  
  38. /calendar/

  39. let

  40. D = #date(2018,1,1),

  41. N = Number.From(D),

  42. C = #table(

  43. type table [

  44. date=date

  45. ,weeknumber=Int32.Type

  46. ,weekday=Int32.Type

  47. ]

  48. ,List.Transform(

  49. {0..364}

  50. ,(d)=>

  51. let

  52. r=Date.From(N+d)

  53. in

  54. {

  55. r

  56. , Date.WeekOfYear(r,1)

  57. ,Date.DayOfWeek(r,1)

  58. }

  59. )

  60. )

  61. in

  62. C

6、关系

三、上DAX

1、周同比

  1. 周同比 :=
  2. var w =
  3. average ( 'calendar'[weeknumber] ) - 1
  4. return
  5. divide (
  6. 'calendar'[total]
  7. - calculate ( 'calendar'[total], 'calendar'[weeknumber] = w ),
  8. calculate ( 'calendar'[total], 'calendar'[weeknumber] = w )
  9. )

2、日环比

  1. 日环比 :=
  2. var dc =
  3. lastdate ( 'calendar'[date] )
  4. var dl =
  5. dateadd ( dc, -1, day )
  6. var vl =
  7. calculate ( 'calendar'[total], 'calendar'[date] = dl )
  8. return
  9. divide ( 'calendar'[total] - vl, vl )

3、result

  1. result :=
  2. VAR v =
  3. FORMAT ( 'calendar'[total], "0.00" )
  4. VAR t =
  5. SWITCH (
  6. TRUE (),
  7. 'calendar'[周同比] > 0, "同比:▲" & FORMAT ( 'calendar'[周同比], "0%" ),
  8. 'calendar'[周同比] < 0, "同比:▼" & FORMAT ( 'calendar'[周同比], "0%" ),
  9. "同比:▁" & FORMAT ( 'calendar'[周同比], "0%" )
  10. )
  11. VAR h =
  12. SWITCH (
  13. TRUE (),
  14. 'calendar'[日环比] > 0, "环比:▲" & FORMAT ( 'calendar'[日环比], "0%" ),
  15. 'calendar'[日环比] < 0, "环比:▼" & FORMAT ( 'calendar'[日环比], "0%" ),
  16. "环比:▁" & FORMAT ( 'calendar'[日环比], "0%" )
  17. )
  18. RETURN
  19. SWITCH (
  20. TRUE (),
  21. 'calendar'[周同比] = BLANK ()
  22. &&'calendar'[日环比] = BLANK (), v,
  23. 'calendar'[周同比] = BLANK (), CONCATENATE ( v, "|" & h ),
  24. 'calendar'[日环比] = BLANK (), CONCATENATE ( v, "|" & t ),
  25. CONCATENATE ( v, "|" & t & "|" & h )
  26. )

四、总结

1、dax没有什么难度,主要是上周和前一天的筛选上下创建;

2、中国式报表:主要是利用文本连接(度量值:result);

3、本案例中只体现了2018年一年的周,如果需要多年的话,只需要创建weeknumber的索引即可。

by焦棚子

焦棚子的文章目录

118_Power Pivo周维度度同比、环比相关的更多相关文章

  1. 再谈Cognos利用FM模型来做同比环比

    很早之前已经讲过 <Cognos利用DMR模型开发同比环比>这篇文章里说的是不利用过滤器,而是采用 except (lastPeriods (-9000,[订单数据分析].[日期维度].[ ...

  2. cognos report同比环比以及默认为当前月分析

    现在的需求是按月份分析不同时期的余额数据,.(报表工具:cognos report:建模工具:FM) ------------------------------------------------- ...

  3. Hive之同比环比的计算

    Hive系列文章 Hive表的基本操作 Hive中的集合数据类型 Hive动态分区详解 hive中orc格式表的数据导入 Java通过jdbc连接hive 通过HiveServer2访问Hive Sp ...

  4. 111_Power Pivot 24小时维度:累计、同比、环比相关

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 今天有朋友讨论怎么做每天24小时维度的工作量计算(运营类企业,每天24小时都在运营)需求如下: 1.从0时到23 ...

  5. MySQL统计同比环比SQL

    大体思路: MySQL没有类似oracle方便的统计函数,只能靠自己去硬计算:通过时间字段直接增加年份.月份,然后通过left join关联时间字段去计算环比.同比公式即可 原始表结构: 求同比SQL ...

  6. 数据可视化之DAX篇(十二)掌握时间智能函数,同比环比各种比,轻松搞定!

    https://zhuanlan.zhihu.com/p/55841964 时间可以说是数据分析中最常用的独立变量,工作中也常常会遇到对时间数据的对比分析.假设要计算上年同期的销量,在PowerBI中 ...

  7. Oracle分析函数/排名函数/位移函数/同比环比

    分析函数 作用:分析函数可以在数据中进行分组,然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值.统计函数:MAX(字段名).MIN(字段名).AVG(字段名).SUM(字段名).CO ...

  8. MDX 占比同比环比

    http://blog.csdn.net/hero_hegang/article/details/9072889

  9. Q:判断链表中是否存在环的相关问题

    问题:如何判断一个单向链表中是否存在环? 例如: 链表中存在环(B-->D): <-- <--^ | | v | A-->B-->C-->D 链表中不存在环: A- ...

随机推荐

  1. Hive启动后show tables报错:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

    错误详情: FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive ...

  2. 【Android开发】【第三方SDK】 安卓版分词功能

    功能介绍: 获取剪切板内容,进行分词: 点击分解后的词,填入输入框: 点击叉号将地址拼接起来返回主界面 用途: 增加用户的体验效果,可以直接在微信上复制地址,然后通过此功能确认地址. 附上git地址 ...

  3. 利用css3实现3D轮播图

    动画实现主要利用了z-index将层级关系改变,从而实现了焦点图的效果:css3属性 transform rotate 来实现图片的动画效果 .transition实现过度动画! * { margin ...

  4. SpringMVC的数据响应方式-页面跳转

    1.返回字符串形式 直接返回字符串:此种方式会返回字符串与视图解析器的前后缀拼接后跳转 有关视图解析器的拼接请访问此地址 注意:WEB-INF下的资源一般不能访问,因为转发是服务器的操作所以可以访问到 ...

  5. 使用SQL的FOR XML PATH('')将字段用逗号隔开

    FOR XML PATH('') 将查询结果显示为XML 经常用来将查询结果按逗号分隔后显示至某一字段 select * from Area结果 添加FOR XML PATH('')后 select ...

  6. linux磁盘分区fdisk命令操作(实践)

    写这篇的目的,还是要把整个过程完整的记录下来,特别是小细节的地方,通常很多情况是一知半解,平时不实践操作只凭看是没有用的,所以做这个行业就是要多动手,多学习,多思考慢慢你的思路也会打开.练就自己的学习 ...

  7. RENIX软件V6板卡速率设置——网络测试仪实操

    本文主要介绍RENIX软件V6板卡速率设置相关操作.全文分为V6板卡介绍.如何配置端口两大部分.其中从添加和连接机箱.预约端口.配置端口为强制10M.配置端口为自协商100M.配置说明五个方面详细介绍 ...

  8. [翻译] Cassandra 分布式结构化存储系统

    Cassandra 分布式结构化存储系统 摘要 Cassandra 是一个分布式存储系统,用于管理分布在许多商品服务器上的大量结构化数据,同时提供无单点故障(no single point of fa ...

  9. java并发问题总结

    1.java中产生并发问题的主要原因有哪三个? 原子性.可见性和有序性 2.什么是java内存模型? java虚拟机规范中用来屏蔽掉各种硬件和操作系统内存访问差异,java内存模型的主要目标是定义程序 ...

  10. MVC:开发模式&&三层架构:软件设计架构

    MVC:开发模式 jsp演变历史 早期只有servlet,只能使用response输出标签数据,非常麻烦 后来又jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大量的java代码 ...