BOSS:白茶,咱这个报表啊,每年一到一月份的时候,柱子和折线图都会变成一根柱子或者一个点,这样太难看了,能不能换个看法?
白茶:老板,比如说呢?你想咋看?
BOSS:这样吧,往前平移12个月,我要看一段时间的,这个能搞不?
白茶:(¥%&*@#)老板,有点难啊!
——(支付宝到账XXXX元)——
白茶:能搞!等着!
在项目实施的过程中,用户往往需要从时间维度对数据进行趋势分析,这是很常见的需求。
但是很多可视化图形,在数据跨年的时候,因为节点问题,会导致原本的趋势变成单点或者单个柱子,这对用户来说体验是非常差的。
所以我们在需求确认阶段,就需要帮助用户提前预估这种情况,并给出合理性建议,例如,时间趋势图我们可以滚动去看,永远看某一个时间节点向前平移的结果。
先来看看本期的案例数据:
一张销售事实表,案例数据比较简单,导入到PowerBI中,添加日期表。
代码语言:txt复制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
)
)
建立模型关系如下:
添加如下基础度量值。
销售数量:
代码语言:txt复制A.销售数量 =
SUM ( Fact_Sales[Quantity] )
到这里,我们的准备工作就完成了。
我们需要根据切片器选择的时间节点,向前平移,有两个问题需要解决:1.解决日期表直接筛选的影响;2.添加一个参数,赋值平移周期。
那么该如何实现呢?
思考一下
1
2
3
......
其实,我们可以继续插入一张日期表。
代码语言:txt复制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
)
)
这个日期表,不需要和之前的表建立模型关系,仅用作条件判断即可。
在“建模”面板下选择“新建参数”。
这里面小伙伴们可以酌情设置。
编写如下度量值:
代码语言:txt复制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的初学者。