如何正确对DAX(和SQL)的结果正确应用限制

如果一项措施的输出不得超过特定的限制,该怎么办?我们如何确保正确计算总数?这篇文章是关于正确计算和汇总此类输出的。帖子如何正确应用DAX(和SQL)的结果限制,首先是在数据科学上出现的。

来源:走向数据科学

简介

,我的一位客户问我以下问题:

我的公司对每个员工可以累积的加班余额限制。该限制总计为20小时。如果员工超过此限制,则加班时间将超过20小时。

如何在Power BI中对此进行计算?

Glenn Villas Unplash

这听起来像是一件简单的工作。

让我们尝试DAX度量

首先,我们必须创建一个措施,该措施加在一起以来,自从开始计算总余额以来就完成了:

加班总= var firstot =计算(firstNonblank('date'[date],[coptertime]),removeFilters('date'))var maxdate = maxDate = max('date'[date'[date])返回计算(加班],emoverfime],removerfilters('date'),dateSbetthiew('date'date'date'date'[date],'[date],'[date],'date,maxdate)
第二,我们创建了一个将上限设置为20的度量:
加时性更正(尝试1)= var overtimeOverAll = [加时性总体]返回(越过时间> 20、20,加班)
让我们看看结果:
图1  - 第一种解决挑战的方法的结果(作者的数字)
看起来正确。 
在仔细检查结果后,我们发现它们没有正确累加。 
看曼迪·琼斯(发明名称):
图2  - 曼迪·琼斯(Mandy Jones)的结果,我们看到结果无法正确添加(作者的数字)
从4月开始,她工作时间较少,以减少加班的平衡。 
但是,即使3月份进行了纠正,[整体加班]的措施仍显示超过20个小时。这是不正确的。 
 [总体加班]必须考虑更正。 
此外,总数是错误的。由于总数始终高于20,因此它也将显示20。
计算的目标
在进行前进之前,我们必须定义要求以确定需要做什么。 
 calculatetable()

第二,我们创建了一个将上限设置为20的度量:

加时性更正(尝试1)= var overtimeOverAll = [加时性总体]返回(越过时间> 20、20,加班)

让我们看看结果:

图1 - 第一种解决挑战的方法的结果(作者的数字)

看起来正确。

在仔细检查结果后,我们发现它们没有正确累加。

看曼迪·琼斯(发明名称):

图2 - 曼迪·琼斯(Mandy Jones)的结果,我们看到结果无法正确添加(作者的数字)

从4月开始,她工作时间较少,以减少加班的平衡。

但是,即使3月份进行了纠正,[整体加班]的措施仍显示超过20个小时。这是不正确的。

[总体加班]必须考虑更正。

此外,总数是错误的。由于总数始终高于20,因此它也将显示20。

计算的目标

在进行前进之前,我们必须定义要求以确定需要做什么。

calculatetable()