DAX Measure: IF 所有用户的总和 = Max THEN 单个用户的返回值

Posted

技术标签:

【中文标题】DAX Measure: IF 所有用户的总和 = Max THEN 单个用户的返回值【英文标题】:DAX Measure: IF sum of all users = Max THEN return value of individual user 【发布时间】:2018-02-15 14:54:14 【问题描述】:

大家,

我是 DAX 度量的新手,我正试图让我的度量具有以下逻辑:

When sum of all users = Max, THEN return value of individual user

数据模型具有以下列:CustomerID \ Usage \ Interval (DATETIME)。让我绊倒的是 DATETIME 以 15 分钟为增量。我有大约 700 个唯一的 CustomerID,我需要能够在所有 CustomerID 的 MAXSUM 期间返回每个 CustomerID 的使用情况。

我不确定这是否是一个 IF-THEN 语句,或者我是否需要使用时间函数。我正在 Power Pivot 中编写此 DAX 度量以发送到 Excel 中的数据透视表。

提前致谢,

【问题讨论】:

您的表格是什么样的,Max 是如何计算的? 数据模型有以下列: 数据模型具有以下列:CustomerID \ Usage \ Interval (DATETIME)。让我绊倒的是 DATETIME 以 15 分钟为增量。我有大约 700 个唯一的 CustomerID,我需要能够找到所有 700 个 CustomerID USAGE 的总和的最大 DATETIME,然后我需要弄清楚每个 CustomerID 在该 DATETIME 的单独 USAGE 是什么。 好的。您可能应该将该信息编辑到您的帖子中。 【参考方案1】:

这可能不是最简单的解决方案,但它适用于我(我已将表命名为 Load)。

CustomerUsage = 
    VAR Summarized = CALCULATETABLE(
                         SUMMARIZE(Load, Load[Interval], "TotalUsage", SUM(Load[Usage])),
                         ALLSELECTED(Load))
    VAR MaxUsage = MAXX(Summarized, [TotalUsage])
    VAR MaxInterval = MAXX(FILTER(Summarized, [TotalUsage] = MaxUsage), [Interval])
    RETURN CALCULATE(SUM(Load[Usage]), Load[Interval] = MaxInterval)

首先,您生成一个表格,通过对所有选定用户求和来找到每个时间间隔的总使用量。

MaxUsage 只是所有区间中最大的TotalUsage

MaxIntervalTotalUsage = MaxUsage 的间隔。

然后我们可以找到客户的Usage,在最大使用时间间隔内。

【讨论】:

非常感谢!工作得很好。我仍在阅读代码以完全了解它的工作原理。我越读越明白。

以上是关于DAX Measure: IF 所有用户的总和 = Max THEN 单个用户的返回值的主要内容,如果未能解决你的问题,请参考以下文章

DAX Measure 在过滤器表达式中使用来自不同相关表的多个列

带和不带 FILTER 的 DAX 计算函数

跨多个表的 DAX 乘法总和 (sumproduct)

带有加号或减号的 DAX 数字格式

DAX 中的多个 IF 语句

DAX,IF函数,使用两种类型的数据类型(数字和文本)