all
总体占比 = var v_current_row_amt = [销售额] – 当前的值是会跟着筛选上下文进行变化的
var v_total_amt = calculate([销售额],all(‘订单表’)) – 这个只由于用了all函数,永远等于订单表的销售总额
return divide(v_current_row_amt, v_total_amt) – 返回计算的行金额以及销售总额相除的结果
分类占比 = var v_current_row_amt = [销售额] – 当前的值是会跟着筛选上下文进行变化的
var v_sub_total = calculate([销售额],all(‘产品表’[商品小类])) – 移除商品小类上的筛选器,即取出特定商品小类下所有产品的销售金额进行相加,因此会返回产品小类1,产品小类2 的小计金额
return divide(v_current_row_amt, v_sub_total) – 返回计算的行金额以及产品小类销售小计相除的结果
allselected
按当前筛选情况计算总体占比 = divide([销售额],calculate([销售额],allselected(‘产品表’))) – 筛选的行销售额/筛选的总销售额
按当前筛选情况计算分类占比 = divide([销售额],calculate([销售额],allselected(‘产品表’[商品小类]))) – 筛选后的行销售额/返回产品小类or产品小类2 的小计金额or……
isinscope
但指定的列级别是层级结构中的级别时,返回true
inscope层级占比%=
switch = (true(),
isinscope(‘产品表’[商品小类]), divide([销售额],calculate([销售额],allselected(‘产品表’[商品小类]))),
//当前行是商品次级分类,就按照刺激分类算比例
isinscope(‘产品表’[商品大类]), divide([销售额],calculate([销售额],allselected(‘产品表’[商品大类]))),
//当前行是商品大类,就按照大类计算比例
– hasonevalue(‘产品表’[商品大类]),divide([销售额],calculate([销售额],allselected(‘产品表’[商品大类])
// 在表格中用于判断当前行信息的时候,isinscope和hasonvalue作用相同
divide([销售额],calculate([销售额],allselected(‘产品表’[商品小类]))