alt

PowerBI中,我们经常使用柱形图来进行趋势对比分析,通过柱形图我们可以直观展示每个月之间的差异。

但是在实际需求中,PowerBI原生的柱形图仅能展示一个数据标签,如果我们想要展示同环比的变化情况,往往需要将同环比的度量值放置到工具提示中。

这对用户来说,体验其实是很不友好的,用户期望的往往是一眼可以获取到所有想知道的关键信息。

面对用户的这一需求,我们可以通过计算组来实现。

案例数据:

alt

将其导入到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
        )
)

模型关系如下:

alt

添加如下基础度量值:

销售数量:

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

将上述度量值在柱形图中展示如下:

alt

到这里,我们的准备工作完成,其实这也是不通过计算组功能所能实现的效果。

alt

在外部工作区,打开Tabular。

alt

选择创建计算组。

alt

添加两个计算项:

同比计算项:

SELECTEDMEASURE()

设置数据展示格式:

IF (
    ISBLANK ( [Count同比%] ),
    SUBSTITUTE ( SELECTEDMEASURE (), "0", "\0" ),
    SUBSTITUTE (
        SELECTEDMEASURE () & "("
            & FORMAT ( [Count同比%], "0%" ) & ")",
        "0",
        "\0"
    )
)

alt

环比计算项:

SELECTEDMEASURE()

设置数据展示格式:

IF (
    ISBLANK ( [Count环比%] ),
    SUBSTITUTE ( SELECTEDMEASURE (), "0", "\0" ),
    SUBSTITUTE (
        SELECTEDMEASURE () & "("
            & FORMAT ( [Count环比%], "0%" ) & ")",
        "0",
        "\0"
    )
)

alt

将其保存,应用到PowerBI中,最终展示的效果如下:

alt

解释:

1.IF判断的目的,是为了解决某些时间段不存在同环比的情况;

2.SUBSTITUTE是为了解决因为0导致的数据格式问题;

3.当然,这个需求也可以深挖一下,进行同环比配色,这里就不进行展示了。

alt alt

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