美文网首页BI学习笔记
BI技巧丨计算组

BI技巧丨计算组

作者: Fabric丨白茶 | 来源:发表于2023-03-10 12:00 被阅读0次

    PowerBI有三大工具,分别是DAX Studio,Tabular Editor和Bravo。
    DAX Studio通常我们会用来进行性能分析和DAX调优使用,Bravo一般用来批量格式化DAX,而Tabular Editor主要的功能就是计算组。
    计算组这个名词,相信很多小伙伴都听过,但也有很多小伙伴其实并没有用过这个功能,本期我们来了解一下,计算组的用途以及使用方法。
    案例数据:

    案例数据比较简单,只有一张事实表。
    将其导入到PowerBI中,通过如下代码,建立模型关系。

    Date = 
    GENERATE (
        CALENDAR ( MIN ( 'Sales'[DATE] ), MAX ( 'Sales'[DATE] ) ),
        VAR DA = [Date]
        VAR YEAR =
            YEAR ( DA )
        VAR QUARTER =
            "Q" & FORMAT ( DA, "Q" )
        VAR MONTE =
            FORMAT ( DA, "MM" )
        VAR DAY =
            DAY ( DA )
        RETURN
            ROW (
                "Year", YEAR,
                "Quarter", QUARTER,
                "Month", MONTE,
                "DayOfMonth", DAY,
                "YearQuarter", YEAR & QUARTER,
                "YearMonth", YEAR & MONTE,
                "YearMonthCount",
                    YEAR * 12 + MONTE
            )
    )
    

    结果如下:

    到这里,我们的准备工作结束。
    安装Tabular Editor,这里就不赘述了,小伙伴们可以自行搜索Tabular Editor2。

    注:目前Tabular Editor2版本还是免费的,最新版Tabular Editor3属于收费。

    计算组最重要的用途,按照白茶的理解,有两个:
    1.相同逻辑的度量值,可避免重复造轮子;
    2.可自定义DAX格式而不改变其原有的数据格式。
    这里,我们只介绍如何避免重复造轮子。
    举个例子:
    我们现在有三段代码,分别用来计算销售数量的本期、同比以及环比。
    销售数量:

    Quantity = 
    SUM ( Sales[Quantity] )
    

    同比:

    Count同比% = 
    VAR CurrentCount =
        SELECTEDVALUE ( 'Date'[YearMonthCount] )
    VAR LastYearMonthCount = CurrentCount - 12
    VAR LastYearMonthValue =
        CALCULATE (
            [Quantity],
            FILTER ( ALL ( 'Date' ), 'Date'[YearMonthCount] = LastYearMonthCount )
        )
    VAR Result =
        DIVIDE ( [Quantity] - LastYearMonthValue, LastYearMonthValue )
    RETURN
        Result
    

    环比:

    Count环比% = 
    VAR CurrentCount =
        SELECTEDVALUE ( 'Date'[YearMonthCount] )
    VAR LastMonthCount = CurrentCount - 1
    VAR LastMonthValue =
        CALCULATE (
            [Quantity],
            FILTER ( ALL ( 'Date' ), 'Date'[YearMonthCount] = LastMonthCount )
        )
    VAR Result =
        DIVIDE ( [Quantity] - LastMonthValue, LastMonthValue )
    RETURN
        Result
    

    结果如下:

    这里,白茶为了更好阐述计算组的用途,特意使用了较为复杂的逻辑。
    在实际工作中,我们经常会遇到同一套逻辑,针对不同的KPI,我们需要重复写DAX的情况。
    这样不仅费时费力,而且后续维护起来,也是一个巨大的麻烦,而计算组的出现,很好的解决了这一烦恼。
    在安装好Tabular Editor后,我们会在面板导航上面,发现一个新的功能区”外部工具“(其他工具安装好后,也会出现在这里)。

    我们选择点击,打开Tabular Editor。

    在之前的版本中,还需要在预览功能里面打开“使用增强的元数据格式存储数据集”功能,目前最新版已经不需要了。

    打开之后的页面如下:

    依次点击鼠标右键:Table→Create New→Calculation Group,会出现如下界面:

    这里会构建一张新表,我们需要针对此表进行命名,例如:同环比。
    依次点击鼠标右键:表名→Create New→Calculation Item,会出现如下界面:

    Name是展示我们构建逻辑的名称,New Calculation则是逻辑名称以及构建我们需要的业务逻辑。我们可以创建两个业务逻辑,分别是同比和环比。
    这里会使用到一个特殊的函数:SELECTEDMEASURE。此函数的用途,用来代替我们要计算的指标。
    同比:

    VAR CurrentCount =
        SELECTEDVALUE ( 'Date'[YearMonthCount] )
    VAR LastYearMonthCount = CurrentCount - 12
    VAR LastYearMonthValue =
        CALCULATE (
            SELECTEDMEASURE(),
            FILTER ( ALL ( 'Date' ), 'Date'[YearMonthCount] = LastYearMonthCount )
        )
    VAR Result =
        DIVIDE ( SELECTEDMEASURE() - LastYearMonthValue, LastYearMonthValue )
    RETURN
        Result
    

    结果如下:

    环比:

    VAR CurrentCount =
        SELECTEDVALUE ( 'Date'[YearMonthCount] )
    VAR LastMonthCount = CurrentCount - 1
    VAR LastMonthValue =
        CALCULATE (
            SELECTEDMEASURE(),
            FILTER ( ALL ( 'Date' ), 'Date'[YearMonthCount] = LastMonthCount )
        )
    VAR Result =
        DIVIDE ( SELECTEDMEASURE() - LastMonthValue, LastMonthValue )
    RETURN
        Result
    

    结果如下:

    两个逻辑构建完毕之后,我们点击保存按钮。

    此时,我们回到PowerBI Desktop页面,会出现如下页面,点击立即刷新即可。

    此时,我们就可以在表中看到刚才构建的计算组了。

    最终展示效果如下:

    这里是白茶,一个PowerBI的初学者。


    相关文章

      网友评论

        本文标题:BI技巧丨计算组

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