博客:www.jiaopengzi.com

焦棚子的文章目录

请点击下载附件

一、背景

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

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

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

二、数据源

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

1、【周几】

2、【calendar】

3、【data】

4、三张表的M

5、数据源M源码

/*data*/
let
D = #table(
type table[
date=date
,value=number
]
,List.Transform(
{0..364}
,(d)=>
{
Date.From(Number.From(#date(2018,1,1))+d)
,Number.Round(Number.RandomBetween(1,1000),2)
}
)
)
in
D /周几/

let

源 = #table(

type table [

ID=Int32.Type

,周几=text

]

,List.Transform(

{0..6}

,(d)=>

{

d

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

}

)

)

in

/calendar/

let

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

N = Number.From(D),

C = #table(

type table [

date=date

,weeknumber=Int32.Type

,weekday=Int32.Type

]

,List.Transform(

{0..364}

,(d)=>

let

r=Date.From(N+d)

in

{

r

, Date.WeekOfYear(r,1)

,Date.DayOfWeek(r,1)

}

)

)

in

C

6、关系

三、上DAX

1、周同比

周同比 :=
var w =
average ( 'calendar'[weeknumber] ) - 1
return
divide (
'calendar'[total]
- calculate ( 'calendar'[total], 'calendar'[weeknumber] = w ),
calculate ( 'calendar'[total], 'calendar'[weeknumber] = w )
)

2、日环比

日环比 :=
var dc =
lastdate ( 'calendar'[date] )
var dl =
dateadd ( dc, -1, day )
var vl =
calculate ( 'calendar'[total], 'calendar'[date] = dl )
return
divide ( 'calendar'[total] - vl, vl )

3、result

result :=
VAR v =
FORMAT ( 'calendar'[total], "0.00" )
VAR t =
SWITCH (
TRUE (),
'calendar'[周同比] > 0, "同比:▲" & FORMAT ( 'calendar'[周同比], "0%" ),
'calendar'[周同比] < 0, "同比:▼" & FORMAT ( 'calendar'[周同比], "0%" ),
"同比:▁" & FORMAT ( 'calendar'[周同比], "0%" )
)
VAR h =
SWITCH (
TRUE (),
'calendar'[日环比] > 0, "环比:▲" & FORMAT ( 'calendar'[日环比], "0%" ),
'calendar'[日环比] < 0, "环比:▼" & FORMAT ( 'calendar'[日环比], "0%" ),
"环比:▁" & FORMAT ( 'calendar'[日环比], "0%" )
)
RETURN
SWITCH (
TRUE (),
'calendar'[周同比] = BLANK ()
&&'calendar'[日环比] = BLANK (), v,
'calendar'[周同比] = BLANK (), CONCATENATE ( v, "|" & h ),
'calendar'[日环比] = BLANK (), CONCATENATE ( v, "|" & t ),
CONCATENATE ( v, "|" & t & "|" & h )
)

四、总结

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. 《基于.NET Core构建微服务》系列文章(更新至第6篇,最新第7篇,已发布主页候选区)

    原文:Building Microservices On .NET Core – Part 1 The Plan 时间:2019年1月14日 作者:Wojciech Suwała, Head Arch ...

  2. CSRF浅析

    概念 CSRF,Cross Site Request Forgery,跨站请求伪造. 为什么跨站的请求需要伪造? 因为浏览器实现了同源策略,这里可以将站和源视为同一个概念. 同源策略 The same ...

  3. Blazor组件自做八 : 使用JS隔离封装屏幕键盘kioskboard.js组件

    1. 运行截图 演示地址 2. 在文件夹wwwroot/lib,添加kioskboard子文件夹,添加kioskboards.js文件 2.1 常规操作,懒加载js库, export function ...

  4. GitHub Pages + Hexo搭建个人博客网站-github风格-采坑记录

    目录 1.本机安装nodejs 2.github上创建仓库 3.安装hexo 4.hexo主题 5.配置主题 6.添加文章 7.使用分类和标签 8.增加文章目录 9.推送github 使用github ...

  5. Servlet学习记录

    个人认为servlet属于一种控制程序,可以处理浏览器的请求并做出对应的回应.我们经常使用的是让一个类去继承HttpServlet,然后在doget或者dopost里面写东西. 目前我个人常在doge ...

  6. pod和容器(容易混淆的地方)

    在Kubenetes中,所有的容器均在 pod 中运行,一个pod可以承载一个或者多个相关的docker容器(或rkt,以及用户自定义容器),同一个Pod中的容器可以部署在同一个物理机器(可以叫宿主机 ...

  7. Java学习day30

    线程分为用户线程和守护线程,虚拟机必须确保用户线程执行完毕,虚拟机不用等待守护线程执完毕 并发:同一个对象被多个线程同时操作,例如上万了同时抢100张票,手机银行和柜台同时取同一张卡里的钱 处理多线程 ...

  8. vue - 文字3d展示

    <template>   <div>     <p>     <span>C</span>     <span>S</sp ...

  9. 分布式应用运行时 Dapr 1.7 发布

    Dapr 是一个开源.可移植的.事件驱动的运行时,可以帮助开发人员构建在云和边缘上运行的弹性的.微服务的.无状态和有状态应用程序,并且关注于业务逻辑而不用考虑分布式相关的问题. 分布式相关的问题交给D ...

  10. 算法基础⑦搜索与图论--BFS(宽度优先搜索)

    宽度优先搜索(BFS) #include<cstdio> #include<cstring> #include<iostream> #include<algo ...