PowerBI设置字段参数以及动态排名
Cemon_Liu Lv5

powerbi新特性 字段参数

字段参数

字段参数可以帮助我们更好的完成动态筛选。默认的筛选可能只在某一个表格列中,而字段参数可以实现跨表格列,以及使用多度量值筛选。
在Modeling里面可以选择新建参数。

image
当参数设置完成后,会生成一个计算表。初次看这个计算表,以为是用DAX 函数 NAMEOF写的一个公式。但是实际上,是当我们新建参数时,系统自动生成的。我们可以进行二次编辑。
image

案例学习:
这个案例的研究了很久,作者的思路的确很巧妙。图形上面设置了几个slicer,包含度量值筛选,按TOP还是BOTTOM,以及排名数字,产品、catergory等进行展示。

image

  1. 从关联上来看,下面的图表放入的数据和上方的筛选没有相应的关联关系。当我们按照同样的数值进行绘制图表,会发现上方的筛选器都是无效的。
  2. 从图表的筛选上面来看,可以发现多了一个度量值的筛选。
    查看该度量值,可以看到,它是判定了选择TOPN还是BOTTMN,以及排名的数字是多少。
    然后将另外一个度量值与排名数字进行比较,如果小于排名数字就是1,否则就是0。而使用filter只选择1的部分,这样就实现了TOPN的排序功能。
    1
    2
    3
    4
    过滤综合指标 = var a =SELECTEDVALUE('TOPNBOTTMN'[TOPN/BOTTMN])
    var b =SELECTEDVALUE('Topn'[序号])
    return SWITCH(true(),a="TOPN",IF([Rank_按综合指标]<=B,1,0),
    a="BOTTMN",IF([Rank_按综合指标 -反序]<=B,1,0))
  3. 继续展开到Rank_按综合指标这个度量值。
    这里的DAX逻辑是,根据选择的'参数-指标'[参数-指标 个字段]来判定界面上选择的是那个指标,然后获取对应这个指标的按照相应的分类得到的RANK排名。这样就实现了根据TOPN/BOTTOM N,进行动态排名的目的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Rank_按综合指标 = VAR xs = SWITCH(TRUE(),
ISFILTERED('Product'[category]), RANKX(ALLSELECTED('Product'[category]),[销售金额]),
ISFILTERED('Product'[Subcategory]), RANKX(ALLSELECTED('Product'[Subcategory]),[销售金额]),
ISFILTERED('Product'[Model]),RANKX(ALLSELECTED('Product'[Model]),[销售金额]),
ISFILTERED('Product'[Product]), RANKX(ALLSELECTED('Product'[Product]),[销售金额]),
ISFILTERED('Product'[SKU]), RANKX(ALLSELECTED('Product'[SKU]),[销售金额]),
ISFILTERED('Customer'[Customer]), RANKX(ALLSELECTED('Customer'[Customer]),[销售金额]),
ISFILTERED('Reseller'[Reseller]), RANKX(ALLSELECTED('Reseller'[Reseller]),[销售金额]),
ISFILTERED('Sales Territory'[Country]), RANKX(ALLSELECTED('Sales Territory'[Country]),[销售金额]),
BLANK())
VAR dg = SWITCH(TRUE(),
ISFILTERED('Product'[category]), RANKX(ALLSELECTED('Product'[category]),[订购数量]),
ISFILTERED('Product'[Subcategory]), RANKX(ALLSELECTED('Product'[Subcategory]),[订购数量]),
ISFILTERED('Product'[Model]),RANKX(ALLSELECTED('Product'[Model]),[订购数量]),
ISFILTERED('Product'[Product]), RANKX(ALLSELECTED('Product'[Product]),[订购数量]),
ISFILTERED('Product'[SKU]), RANKX(ALLSELECTED('Product'[SKU]),[订购数量]),
ISFILTERED('Customer'[Customer]), RANKX(ALLSELECTED('Customer'[Customer]),[订购数量]),
ISFILTERED('Reseller'[Reseller]), RANKX(ALLSELECTED('Reseller'[Reseller]),[订购数量]),
ISFILTERED('Sales Territory'[Country]), RANKX(ALLSELECTED('Sales Territory'[Country]),[订购数量]),
BLANK())
VAR cb = SWITCH(TRUE(),
ISFILTERED('Product'[category]), RANKX(ALLSELECTED('Product'[category]),[成本]),
ISFILTERED('Product'[Subcategory]), RANKX(ALLSELECTED('Product'[Subcategory]),[成本]),
ISFILTERED('Product'[Model]),RANKX(ALLSELECTED('Product'[Model]),[成本]),
ISFILTERED('Product'[Product]), RANKX(ALLSELECTED('Product'[Product]),[成本]),
ISFILTERED('Product'[SKU]), RANKX(ALLSELECTED('Product'[SKU]),[成本]),
ISFILTERED('Customer'[Customer]), RANKX(ALLSELECTED('Customer'[Customer]),[成本]),
ISFILTERED('Reseller'[Reseller]), RANKX(ALLSELECTED('Reseller'[Reseller]),[成本]),
ISFILTERED('Sales Territory'[Country]), RANKX(ALLSELECTED('Sales Territory'[Country]),[成本]),
BLANK())
VAR lr = SWITCH(TRUE(),
ISFILTERED('Product'[category]), RANKX(ALLSELECTED('Product'[category]),[利润]),
ISFILTERED('Product'[Subcategory]), RANKX(ALLSELECTED('Product'[Subcategory]),[利润]),
ISFILTERED('Product'[Model]),RANKX(ALLSELECTED('Product'[Model]),[利润]),
ISFILTERED('Product'[Product]), RANKX(ALLSELECTED('Product'[Product]),[利润]),
ISFILTERED('Product'[SKU]), RANKX(ALLSELECTED('Product'[SKU]),[利润]),
ISFILTERED('Customer'[Customer]), RANKX(ALLSELECTED('Customer'[Customer]),[利润]),
ISFILTERED('Reseller'[Reseller]), RANKX(ALLSELECTED('Reseller'[Reseller]),[利润]),
ISFILTERED('Sales Territory'[Country]), RANKX(ALLSELECTED('Sales Territory'[Country]),[利润]),
BLANK())
VAR kd = SWITCH(TRUE(),
ISFILTERED('Product'[category]), RANKX(ALLSELECTED('Product'[category]),[客单金额]),
ISFILTERED('Product'[Subcategory]), RANKX(ALLSELECTED('Product'[Subcategory]),[客单金额]),
ISFILTERED('Product'[Model]),RANKX(ALLSELECTED('Product'[Model]),[客单金额]),
ISFILTERED('Product'[Product]), RANKX(ALLSELECTED('Product'[Product]),[客单金额]),
ISFILTERED('Product'[SKU]), RANKX(ALLSELECTED('Product'[SKU]),[客单金额]),
ISFILTERED('Customer'[Customer]), RANKX(ALLSELECTED('Customer'[Customer]),[客单金额]),
ISFILTERED('Reseller'[Reseller]), RANKX(ALLSELECTED('Reseller'[Reseller]),[客单金额]),
ISFILTERED('Sales Territory'[Country]), RANKX(ALLSELECTED('Sales Territory'[Country]),[客单金额]),
BLANK())
RETURN SWITCH(TRUE(),SELECTEDVALUE('参数-指标'[参数-指标 个字段])="'Measure'[销售金额]",xs,
SELECTEDVALUE('参数-指标'[参数-指标 个字段])="'Measure'[订购数量]",dg,
SELECTEDVALUE('参数-指标'[参数-指标 个字段])="'Measure'[成本]",cb,
SELECTEDVALUE('参数-指标'[参数-指标 个字段])="'Measure'[利润]",lr,
SELECTEDVALUE('参数-指标'[参数-指标 个字段])="'Measure'[客单金额]",kd

)

image

 评论
评论插件加载失败
正在加载评论插件
由 Hexo 驱动 & 主题 Keep
访客数 访问量