无需预先建立关系,用DAX关联Excel透视表并响应切片器筛选
DAX度量方案:无表关系下关联两表并响应Group切片器
核心思路
不建立物理表关系,通过DAX上下文筛选功能,基于切片器选中的Group集合和透视表当前行的Activity,跨表匹配计算所需指标。
所需DAX度量
1. 总员工数(来自Table1)
根据切片器选中的Group,汇总对应Activity下的Staff Count总和:
总员工数 = VAR SelectedGroups = ALLSELECTED(Table2[Group]) -- 获取切片器选中的Group集合 VAR CurrentActivity = SELECTEDVALUE(Table1[Activity]) -- 获取透视表当前行的Activity RETURN CALCULATE( SUM(Table1[Staff Count]), Table1[Group] IN SelectedGroups, Table1[Activity] = CurrentActivity )
注:如果透视表行字段用的是Table2的Activity,将CurrentActivity改为SELECTEDVALUE(Table2[Activity])即可。
2. Activity收入总计(来自Table2)
计算当前Activity下、选中Group范围内的所有Income总和,作为占比计算的分母:
Activity收入总计 = CALCULATE( SUM(Table2[Income]), Table2[Group] IN ALLSELECTED(Table2[Group]), ALLEXCEPT(Table2, Table2[Activity]) -- 忽略Category筛选,保留Activity上下文 )
3. 收入占比(各Category占行总计的百分比)
计算当前Category的Income占对应Activity收入总计的比例:
收入占比 = DIVIDE( CALCULATE( SUM(Table2[Income]), Table2[Group] IN ALLSELECTED(Table2[Group]) ), [Activity收入总计], 0 -- 分母为0时返回0,避免错误 )
使用步骤
- 在Power Pivot中创建上述三个度量;
- 插入切片器,选择
Table2[Group](或Table1的Group字段,需和度量中ALLSELECTED的参数对应); - 构建透视表:
- 行字段:先添加
Activity(Table1/Table2均可),再添加Table2[Category](用于展示各收入类型); - 值字段:添加
[总员工数]和[收入占比],并将[收入占比]设置为百分比格式。
- 行字段:先添加
注意事项
- 确保两个表中
Activity和Group字段的取值完全一致(如拼写、大小写),否则会出现匹配错误; - 若使用独立的Group维度表(推荐优化数据模型),只需将度量中
ALLSELECTED(Table2[Group])替换为ALLSELECTED(Group表[Group])即可。
内容的提问来源于stack exchange,提问作者JohnTdata
相关产品推荐
相关产品推荐

