美文网首页DAX从入门到精通
使用POWERBI处理实际和预算的场景

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

作者: PowerBI入门到实践 | 来源:发表于2019-08-15 15:56 被阅读0次
    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.处理计算需求的时候,性能上会更优秀。

    改进的地方

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

    相关文章

      网友评论

        本文标题:使用POWERBI处理实际和预算的场景

        本文链接:https://www.haomeiwen.com/subject/osvzjctx.html