使用POWERBI处理实际和预算的场景

image.png

在介绍星形结构和powerbi最佳实践的时候,通常会被问到如何在同一个模型中处理预算和实际的问题?如果两者的粒度不一样怎么处理?通常我们不能通过简单的模型和关系处理这个问题,这需要复杂的DAX计算。但是这里的解决方案是,我们可以通过简单的模型解决这个问题!下面我们会通过一个案例来介绍解决过程,使用简单模型如何处理预算和实际粒度不同的问题。

销售的星形模型

事实表包含了发生的业务,其中保存了数值和可聚集的数值。下面这个FactResellerSales表就是一个事实表,DimProduct,DimDate,DimSalesTerritory,DimEmployee表。


image.png

建立模型的步骤:
1.把数据表加载到模型中
2.选择对于的表
3.移除DimSalesTerritory 和 DimEmployee之间的关系
4.把FactResellerSales 和 DimEmployee的关系设为活动的
5.使用FactResellerSales中的OrderDateKey和DimDate表的DateKey建立关系

上面这样的模型就是一个典型的星形模型。这个模型可以很好的处理销售相关的问题。但是,当我们要把另外一个不同粒度的表格添加到模型中的时候,似乎建立模型就有些困难。

销售指标:一个粒度不同的表

举个栗子,这里我们使用销售指标来替代预算表,也是和业务表是不同粒度的。概念是一样的。我们要把一个粒度不同的表添加到模型中。销售指标表记录的是每个员工每个季度的销售指标数值。粒度是每员工每季度,而销售表的粒度是每员工每天每地区每产品。


image.png

连接两个不同粒度的表的难点:

如果你要对着两种表(指标和实际)添加到星形模型中,那么一般会遇到下面着两个问题:
1.如何把指标表连接到日期表?
2.如果我们建立了一个季度的维度表,那么如何把这个表和日期表关联?会形成一个雪花模型?

我们的目标是建立一个简单的模型来解决这个问题,也还是使用星形模型

连接指标表和日期表

虽然这里我们的销售指标表使用的粒度是基于季度的,我们还是可以把它连接到日期表。这样的方法可以避免额外的维度表以及产生雪花模型。有个需要考虑的是,我们要对每个季度确定一个默认的日期。例如,我们可以把每个季度的第一天设置为这个日期值。

要达到这个目标,我们需要在指标表建立一个列,下面的图中可见,我们使用了YYYYMMDD的格式。


image.png

通过以下步骤可以建立下面的列:
1.基于季度值,建立月份值
2.用月的第一天建立自定义列。

要建立季度一个月的值,我们使用下面着公式即可以完成:

calculation of ((<quarter-1>*3)+1)

[图片上传中...(image.png-aa0d4d-1565855207069-0)]
这个计算我们放在Power Query Editor中完成。

第二步就是在这个基础上建立一个DateKey列。

这里,我们要确保的是,月份值都是两位的长度,通过三个步骤可以完成:1.把值转换为文本 2.对该列添加前缀“0” 3.提取该列右边的两个位置的值。

把数值类型转换为文本:


image.png

把列添加前缀:


image.png

添加“0”作为前缀:
image.png

提取字符串末尾两位字符:


image.png

结果是这样:
image.png

现在,我们已经得到了我们需要的最后的步骤是建立一个自定义列,把年月日连接起来
image.png

然后把DateKey的值转换整数,我们现在可以把其他中间过程的列给删除了。
image.png

这里我们没有介绍其中的详细步骤,因为实际中,各自的数据不一定就是季度的粒度,然后对于日期的格式,可能也是不同的版本。无论使用什么方法,主要的目标就是让我们的表可以直接连接到日期维度表,而不同新增其他的维度。

星形模型无处不在

在对指标表添加了DateKey后,我们可以通过它连接到日期表和employee表,这里我们依旧是星形模型。


image.png

这里我们不需要使用双向的关系,或者把一个维度连接到另外一个维度。这个模型可以轻松解决我们关于预算和实际的问题。

案例分析

下面简单的展示一些分析的案例,我们从处理实际和预算的场景中,建立了一些指标和报表。所有这些工作都不需要特别的DAX函数计算以及使用双向的关系等。之所以能这样实现,是基于正确的建立了数据模型。

DAX案例指标

这里我们只建立了两个计算,很简单,分别是bud vs act:


image.png

以及Bud vs Act %:


image.png

报表案例

建立了如下这样的案例:


image.png

从Employee角度:


image.png

以及这个通过上面两个页面下钻后的详情页:
image.png

这个模型的优点

这里,我们展示了一个处理预算和实际情况的完整数据模型。这个模型继承了星形模型的全部优点,包括但是不限于如下:
1.不需要额外的建立关系。只需要在事实表和维度表之间建立简单的关系就可以了。
2.不需要使用双向的关系。
3.不需要使用多对多关系。
4.不需要使用复杂的DAX函数计算。
5.处理计算需求的时候,性能上会更优秀。

改进的地方

这模型仍然还有一些地方可以进行改进,例如,如果你要在更低的一个粒度上分析数据,你需要额外的一些考虑。例如,如果你需要在“天”的级别上分析数据(注意,我们的指标数据是基于季度的,而不是“天”),然后,你需要一些其他的计算。这个我们会在另外的时间探讨以下。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容