DAX - 不同粒度级别的汇总

DAX - Summarize on different granularity level

我在 Excel 2013 年有以下 "fact" table:

+----------+-------+-----------+---------------+----------------+
| Employee | Month | Branch_Id | Branch Target | Employee sales |
+----------+-------+-----------+---------------+----------------+
| John     |     1 | A         |           100 |             20 |
| John     |     2 | A         |           100 |             10 |
| Dave     |     1 | B         |            80 |             30 |
| Dave     |     2 | B         |            80 |              5 |
| Paul     |     1 | A         |           100 |             20 |
| Paul     |     2 | A         |           100 |             60 |
+----------+-------+-----------+---------------+----------------+

列 "Branch Target" 由来自 table "Targets":

的 Join 子句传送
+--------+--------+
| Branch | Target |
+--------+--------+
| A      |    100 |
| B      |     80 |
+--------+--------+

现在我想对"Branch Target"和"Employee Sales"两个字段进行动态计算,所以最终输出结果如下:

+--------+--------+-------+
| Branch | Target | Sales |
+--------+--------+-------+
| A      |    100 |   110 |
| B      |     80 |    35 |
+--------+--------+-------+

我正在努力处理目标库,因为 SUM 函数将根据它在事实中出现的所有行进行汇总 table 并且 - 即 - 对于分支 A,它将产生 400。

我想过使用平均值 (400/4 = 100) 来调整它,但它不是一个动态解决方案,当我从输出枢轴中删除分支 "grouping" 时它不成立。

感谢您的帮助。

阿萨夫

从大事实 table 中删除目标(我们称之为销售 table)。将目标 table 添加到 Power Pivot。添加一个新的 table,每个分支一行,并将其称为分支。 Sales 事实 table 中的分支应该是新分支 table 的外键。目标 table 中的分支应该是新分支 table 的外键。隐藏(右键单击并从客户端工具中隐藏)事实 table 和目标 table 中的分支列。为您的 Branch 目标创建一个简单的求和度量:

Branch Target := SUM('Targets'[Target])

就是这样。基本上将您的 tables 以其原生粒度加载到 Power Pivot 中,它将完成剩下的工作。

您会在上面注意到的另一个最佳实践是,如果您有两个带有度量的 table,则您需要有一个单独的维度 table。