BOSS:白茶,咱这个报表啊,每年一到一月份的时候,柱子和折线图都会变成一根柱子或者一个点,这样太难看了,能不能换个看法?

白茶:老板,比如说呢?你想咋看?

BOSS:这样吧,往前平移12个月,我要看一段时间的,这个能搞不?

白茶:(¥%&*@#)老板,有点难啊!

——(支付宝到账XXXX元)——

白茶:能搞!等着!

在项目实施的过程中,用户往往需要从时间维度对数据进行趋势分析,这是很常见的需求。

但是很多可视化图形,在数据跨年的时候,因为节点问题,会导致原本的趋势变成单点或者单个柱子,这对用户来说体验是非常差的。

所以我们在需求确认阶段,就需要帮助用户提前预估这种情况,并给出合理性建议,例如,时间趋势图我们可以滚动去看,永远看某一个时间节点向前平移的结果。

先来看看本期的案例数据:

一张销售事实表,案例数据比较简单,导入到PowerBI中,添加日期表。

Dim_Data = 
GENERATE (
    CALENDAR ( MIN ( 'Fact_Sales'[DATE] ), MAX ( 'Fact_Sales'[DATE] ) ),
    VAR DA = [Date]
    VAR YEAR =
        YEAR ( DA )
    VAR QUARTER =
        "Q" & FORMAT ( DA, "Q" )
    VAR MONTE =
        FORMAT ( DA, "MM" )
    VAR DAY =
        DAY ( DA )
    VAR WEEKID =
        WEEKDAY ( DA, 2 )
    RETURN
        ROW (
            "年度", YEAR,
            "季度", QUARTER,
            "月份", MONTE,
            "日", DAY,
            "年度季度", YEAR & QUARTER,
            "年度月份",
                YEAR & "." & MONTE,
            "YearMonth",
                YEAR * 12 + MONTE
        )
)

建立模型关系如下:

添加如下基础度量值。

销售数量:

A.销售数量 =
SUM ( Fact_Sales[Quantity] )

到这里,我们的准备工作就完成了。

我们需要根据切片器选择的时间节点,向前平移,有两个问题需要解决:

1.解决日期表直接筛选的影响;

2.添加一个参数,赋值平移周期。

那么该如何实现呢?

思考一下 1 2 3 ......

其实,我们可以继续插入一张日期表。

Dim_Data_II = 
GENERATE (
    CALENDAR ( MIN ( 'Fact_Sales'[DATE] ), MAX ( 'Fact_Sales'[DATE] ) ),
    VAR DA = [Date]
    VAR YEAR =
        YEAR ( DA )
    VAR MONTE =
        FORMAT ( DA, "MM" )
    VAR DAY =
        DAY ( DA )
    RETURN
        ROW (
            "年度", YEAR,
            "月份", MONTE,
            "日", DAY,
            "年度月份",
                YEAR & "." & MONTE,
            "YearMonth",
                YEAR * 12 + MONTE
        )
)

这个日期表,不需要和之前的表建立模型关系,仅用作条件判断即可。

在“建模”面板下选择“新建参数”。

这里面小伙伴们可以酌情设置。

编写如下度量值:

B.滚动度量值 = 
VAR SelectedYearMonth =
    SELECTEDVALUE ( 'Dim_Data_II'[YearMonth] )
VAR SelectedYearMonthPeriod = SelectedYearMonth - [移动区间周期 值]
VAR CurrentYearMonth =
    SELECTEDVALUE ( Dim_Data[YearMonth] )
RETURN
    IF (
        CurrentYearMonth >= SelectedYearMonthPeriod
            && CurrentYearMonth <= SelectedYearMonth,
        [A.销售数量],
        BLANK ()
    )

选择第一个日期表中的维度,与此度量值放入到同一个可视化中。

将第二个日期表中的维度,放入到切片器中,页面添加参数选择。

美化一下,最终效果如下:

(BOSS:可以可以!

Demo文件在知识星球。

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