统计独特的事件PowerPivot

时间:2014-12-01 21:57:27

标签: powerpivot dax

我是PowerPivot和DAX公式的新手。我认为我想要做的是非常基本的,它可能已经在某个地方得到了解答,我只是不知道在它上面搜索什么找到它。

我正在尝试确定在特定季度进行销售的销售人员的百分比。我有两个表,一个列出销售人员,另一个列出一个季度的所有销售额。例如

Employee ID
123
456
789

Sales ID - Emp ID - Amount
135645 ---- 123 ----- $50
876531 ---- 123 ----- $127
258546 ---- 123 ----- $37
516589 ---- 789 ----- $128
998513 ---- 789 ----- $79

因此,数据透视表将如下所示:

Emp ID - % w/ sales
123 -------- 100%
456 -------- 0%
789 -------- 100%
Total ------- 66%

如果你能指出我已经解决这个问题的帖子,或者让我知道解决这个问题的最佳方法,我将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:2)

这是一种简单的方法(假设表名为empssales):

=IF (DISTINCTCOUNT ( sales[Emp ID] ) = BLANK (),
        0,
        DISTINCTCOUNT ( sales[Emp ID] )
     )
    / COUNTROWS ( emps )

IF()仅用于确保尚未进行销售的人出现在Pivot中。所有实际公式都是将销售行数除以员工行数。

雅各

答案 1 :(得分:0)

您需要删除以 - 开头的文字。我想描述DAX正在做什么。这可能无法满足您的需求,因为它只会影响上下文中的员工。 E.x。:如果用户筛选出所有没有销售的员工,那么总计是100%还是66%?对于前者,您需要使用ALL DAX函数,下面的DAX执行后者。我对DAX很新,所以我确信有更好的方法可以做你想做的事。

=IF
(
-- are we processing 1 employee or multiple employees? (E.x.: The grand total processes multiple employees...)
COUNTROWS(VALUES(employee[Employee ID])) > 1, 


--If Processing multiple employees do X / Y
-- Where X = The number of employees that have sales
-- Where Y = The number of employees selected by the user
COUNTROWS(FILTER(employee, NOT(ISBLANK(CALCULATE(COUNT(sales[Sales ID])))))) / COUNTROWS(employee),


-- If processing single employee, return 0 if they have no sales, and 1 if they have sales
IF
	(
	ISBLANK(CALCULATE(COUNT(sales[Sales ID]))),
	0,
	1
	)
)