总和大于 0 的不同周数 PowerPivot

Distinct Count of weeks where sum is greater than 0 PowerPivot

我有一个 table 以下 criteria.There 是多个项目的多周结束。 hour/cost 列可以是正数或负数并且是相关的(正数 hours/positive 成本)。如果项目有任何成本(+ 或-),我能够得到项目结束的周数的不同计数,但只有当小时或成本的总和为正时,我才想得到一个不同的计数。

由于费用可以是 + 或 -,并且可能会在一周结束时抵消,如果计算总和为 0 的一周,这将改变我的平均公式。

我正在尝试构建一个计算字段,我可以将其添加到我的数据透视表 table 中,该字段列出了我按项目筛选时的实际收费周数。在示例中,有 4 个唯一日期的总和大于 0,但我当前的公式给了我 7 个唯一日期,忽略了正和。

周末日期|项目 |营业时间 |费用

Sample Data

+---------------+---------+--------+-------------+
| WeekEndDate | Project | Hours  |    Cost     |
+---------------+---------+--------+-------------+
| 10/7/16       | C7119A  |   2.00 | 2.00     |
| 10/7/16       | C7119A  |  32.00 | ,952.00   |
| 10/7/16       | C7119A  |   1.50 | .50      |
| 10/7/16       | C7119A  | -32.00 | (,952.00) |
| 10/14/16      | C7119A  |  10.00 | 0.00     |
| 10/14/16      | C7119A  | -10.00 | (0.00)   |
| 10/21/16      | C7119A  |  19.50 | ,189.50   |
| 10/21/16      | C7119A  | -19.50 | (,189.50) |
| 10/28/16      | C7119A  |   2.00 | 2.00     |
| 10/28/16      | C7119A  |   3.00 | 3.00     |
| 10/28/16      | C7119A  |  -3.00 | (3.00)   |
| 10/28/16      | C7119A  |  -2.00 | (2.00)   |
| 11/4/16       | C7119A  |   1.00 | .00      |
| 11/11/16      | C7119A  |   3.50 | 3.50     |
| 1/13/17       | C7119A  |   3.00 | 3.00     |
+---------------+---------+--------+-------------+

您可以使用 SUMMARIZE() 执行此操作。

首先创建一个计算列以获得 project/week 组合的不同 ID:

ProjectWeek =CONCATENATE([Project],[Week End Date])

然后创建一个计算度量来计算总小时数为正的周数:

Positive Project Weeks:= COUNTROWS(Filter(ADDCOLUMNS(
SUMMARIZE('Project Costs','Project Costs'[Week End Date]), 
"WeekSum", MAXX(Values('Project Costs'[ProjectWeek]), 
    CALCULATE(Sum([Hours]),ALL('Project Costs'[Hours])))), 
[WeekSum] >0))

SUMMARIZE 创建一个包含不同 WeekEndDate 值的 table。 ADDCOLUMNS 在 table 中创建一个列,显示该 WeekEndDate 的总小时数。 过滤器会删除虚拟 table 中总小时数小于或等于 0 的行。 Countrows 然后计算 table 中剩余的行数,这等于结束日期的不同计数。

如果您不为 ProjectWeek 创建计算列而是在 MAXX(VALUES()) 函数中使用 WeekEndDate,您将得到总共 7 个而不是 4 个。