https://zhuanlan.zhihu.com/p/55295072
静态的分析经常不能满足实际分析的需要,还需要引入动态分析,通过调节某个维度的增减变化来观察对分析结果的影响。在PowerBI中,可以使用「参数」,以切片器的形式来控制变量,与其他指标进行交互,进而完成动态分析。
创建「参数」
在PowerBI Desktop中,在“建模”选型卡下,点击“新建参数”,
然后将出现这个窗口,
比如按照以上默认的值建立的参数就是建立一个从0到20的整数序列:0、1、2、3……20,点击确定,画布上将出现一个切片器,这是因为新建参数时,左下角有个默认选项:将切片器添加到此页,通过滑动切片器可以调整参数的数值,
在数据视图下,可以看到这个参数表,
其实就是利用DAX函数GENERATESERIES新建了一个表而已,只是这里是通过图形界面点击的方式创建的,并且通过新建参数的方式,不只是新建了这张表,同时也新建了一个度量值,并自动添加到数据模型中,可以在整个报表中使用,通过右边的字段区可以看到这个度量值,
参数 值 = SELECTEDVALUE('参数'[参数])
这个度量值就是提取被选中的参数值,切片器滑到哪个数值,该度量值就返回什么数值,正是通过这个切片器和这个度量值的结合,来*的控制变量,以下就通过几个实例来看看参数是如何实现动态分析的。
TopN分析
假设有全国每个省市的GDP金额,想知道GDP排名前5位GDP之和,可以这样写度量值:
GDP = SUM('各省市GDP'[金额])
前5名GDP = CALCULATE([GDP],TOPN(5,ALL('各省市GDP'[地区]),[GDP]))
这里使用了函数TOPN,第一个参数就是要返回的行数,第二个参数是被筛选的表,第三个参数是排序依据,还有第四个可选参数,默认为0按降序排列,就是提取前N位的行数;如果为1,就是按降序排列,将返回最小的N行。
这个度量值是计算前5名之和,如果想知道前10名,把TOPN的第一个参数改为10即可,但是在分析过程中我们不能总是手动更改度量值,这时就可以利用参数来自动实现。
新建一个从1到10的参数,自动生成的度量值为了更具可读性可以重命名为[TOPN参数],然后把这个度量值来替换TOPN函数的第一个参数,更改上面的这个度量值:
前N名GDP = CALCULATE([GDP],TOPN([TOPN参数],ALL('各省市GDP'[地区]),[GDP]))
然后就可以通过拖动切片器来实现动态的TOPN分析了,
动态移动平均
在分析股价走势图时,经常用到30日均线、60日均线等,使用移动平均线可以熨平每日价格的剧烈波动,让用户能更清晰看到长期的变化趋势。
30日均线就是向前推30天的均价折线图,60天均线、120天均线以此类推,我们先建立一个参数GENERATESERIES(30,120,30),以及度量值:[移动平均参数]。
由于股市不是每天都开盘的,所以不能直接用自然日期表向前推N天,这里直接在每日股价走势数据中添加编号,编写度量值:
N天均线 = AVERAGEX(
filter(all('股价走势'),'股价走势'[编号]<=VALUES('股价走势'[编号])&&'股价走势'[编号]>=VALUES('股价走势'[编号])-[移动平均参数]),
'股价走势'[收盘价])
AVERAGEX函数是一个迭代函数,可以将筛选出的表依据最后一个参数取算术平均值,控制移动平均天数的就是'股价走势'[编号])-[移动平均参数],将这个度量值和收盘价维度同时放入到折线图中,
可以直观的看出,天数越长的均线越平滑,走势越稳定。
动态折扣率
如果要测算对商品进行打折的情况下的销售额,可以新建一个折扣率参数GENERATESERIES(0.5,1,0.1),假设最低打5折,设置最小值为0.5,注意这里的数据类型选择“十进制数字”,
参数度量值重命名为[折扣率参数],原有计算销售额的度量值假设为[销售额],新建一个度量值:
折扣销售额=[销售额]*[折扣率参数]
将这个度量值和原来的[销售额]同时放入到柱形图中,
通过切片器选择不同的折扣率就可以动态的展示折后的销售情况。
关于参数就介绍到这里,参数的更多应用场景,可以根据这里的例子举一反三,使用方法类似。