分类的TOTALYTD没有正确聚合 - Power BI / DAX

时间:2018-04-10 16:11:34

标签: powerbi dax

我的数据集格式如下:

Category          Type         Date     Hours
A               Billable    1/1/2018    8
A               Billable    1/2/2018    10
A               Billable    1/3/2018    7
B               Billable    1/4/2018    8
B               Billable    1/5/2018    10
B               Billable    1/6/2018    7
Not assigned    Available   1/1/2018    8
Not assigned    Available   1/2/2018    8
Not assigned    Available   1/3/2018    8
Not assigned    Available   1/4/2018    8
Not assigned    Available   1/5/2018    8
Not assigned    Available   1/6/2018    8

我使用TOTALYTD进行累积计算。计算是资源的YTD利用率(即,可计费/可用)。所以,公式是:

ytd_billable = TOTALYTD(Sum(Hours[Hours]),Hours[Date],Hours[Type]="Billable")
ytd_available = TOTALYTD(Sum(Hours[Hours]),Hours[Date],Hours[Type]="Available")
ytd_utilization = [ytd_billable] / [ytd_available]

现在,当我使用日期作为x axisytd_utilization作为绘图的值来绘制时,这很好用。但是,当我向图表中添加类别时,我会为每个组获取无穷大,而不是每个类别级别的ytd_utilization值。我如何获得所需的行为?请参阅下面的图表,了解我正在寻找的内容(图表基于不同的数据,但结构相同):

没有类别的YTD利用 - 工作 enter image description here

具有类别的YTD利用率 - 不起作用 enter image description here

YTD利用率 - 我正在寻找的东西(必须改变我的数据才能获得这个,但不想为解决方案做这件事) enter image description here

1 个答案:

答案 0 :(得分:0)

问题在于ytd_billable可以归类(A,B等)而ytd_available不能归类(未分配)。

例如,对于类别A,ytd_billable = 25,但没有相应的A类型可用数据(即ytd_available = 0),因此无效结果是因为除以0。 / p>

以表格形式捕捉它更容易:

division by zero

我假设Available小时与Category无关。

解决问题的一种方法是在使用ALL() function计算ytd_available时删除类别上的过滤器:

ytd_available =
TOTALYTD(
    SUM(Hours[Hours]),
    Hours[Date],
    FILTER(ALL(Hours), Hours[Type]="Available")
)

结果:

results

请注意,对于A类,它只计算到ytd_available的3月。根据{{​​1}}小时的定义,您可能还需要将Available更改为Hours[Date]以获得所需的结果。