(DAX & Power BI) 在事实表上使用过滤器并显示维度列时如何获取数据?

问题描述 投票:0回答:1

我使用 DAX 函数创建的应用于日期表的度量之一在某些条件下没有显示任何内容,我无法理解为什么。

我有两个来自 OLAP 多维数据集的表,比如说“暗淡日期”和“事实数据”。第一个包含截至 2030 年的不同形式的日期(年、月、日等)。事实表包含一些列,其中包含其他表中实例的 ID,以及列 Value。

在事实表中,我有一个名为“事实日期 id”的字段,并且在“暗淡日期”(“暗淡日期 id”)中也有相同的字段。它们在 OLAP Cube 中以一对多的方式连接。

我创建了一个衡量标准“价值事实总和”:

Fact Sum of Value = CALCULATE(SUM(Value),
LASTDATE('Dim Dates'[Dim Date]),
CROSSFILTER('Fact Data'[fact date id], 'Dim Dates'[dim date id], BOTH)
)

当我尝试将此度量放在视觉中(在 Power BI Desktop 中)而不使用“暗淡日期”行时,问题就出现了。

因此,当我想要制作一个矩阵视觉效果时,例如,[事实日期 id] 作为行,事实值的总和作为“值”,它对所有 [事实日期 id] 不显示任何内容。当我添加 Dim Date ID 或 Dim Date 时,它工作正常并显示每个日期的度量计算结果。

当我只是尝试在没有其他行/列的情况下显示此度量时,它也什么也没有显示。

我仔细检查了它,发现这个度量给出了正确的值(事实表中的最后日期):

CALCULATE(
LASTDATE('Dim Dates'[Dim Date]),
CROSSFILTER('Fact Data'[fact date id], 'Dim Dates'[dim date id], BOTH)
)

我也尝试过这个测量公式:

Fact Sum of Value = CALCULATE(SUM(Value),
FILTER('Fact Data', LASTDATE('Dim Dates'[Dim Date])),
)

但是,当未指定日期时,此公式会忽略最后一个日期的过滤器,仅汇总所有日期的值。但是,当我创建以“事实日期 id”作为列的表/矩阵时,它显示了正确的值,这比什么都没有好。

powerbi dax report
1个回答
0
投票

我找到了解决方案:

如您所知,在 PowerBI Desktop 的 FILTER 中不可能使用 MAX(...),因此您不能只在以下位置编写过滤器:

'Fact Data'[fact date id] = MAX('Fact Data'[fact date id])

但是你可以将这个MAX值存储在一个变量中,然后使用这个变量。因此,解决方案如下:

Fact Sum of Value = 
VAR max_date_id = MAX('Fact Data'[fact date id])
RETURN CALCULATE(
SUM(Value),
FILTER('Fact Data', 'Fact Data'[fact date id] = max_date_id)
)

就是这样!

© www.soinside.com 2019 - 2024. All rights reserved.