excel - 从范围返回值的公式在 DAX 度量中不起作用,但在 DAX 列中起作用
问题描述
这让我发疯了。我以前从未遇到过这种情况。
我有一个表(基于 Excel 的称为“指标范围”,其中包含一系列指标及其评分范围值(下限和上限)。
我需要创建一个度量,将度量的 ID 和值传递到此表中,并根据范围返回分数。下面的公式在表格列中工作正常并返回分数,但由于某种原因作为度量,它不会返回值。当我测试并返回所有 VAR 时,我得到了返回的值,所以我知道这不是那里的值,它是实际的计算,这是行不通的。返回的分数是一个空白值。
Net Savings Year to date =
VAR MetricValue = [Savings % Annualize Goal]
VAR MetricPrgm = "4003"
VAR MetricId = 1
VAR Score =
CALCULATE(
VALUES( 'Metric Ranges'[Score] ),
FILTER(
'Metric Ranges',
'Metric Ranges'[MetricId] = MetricId
&& 'Metric Ranges'[Program] = MetricPrgm
&& MetricValue > 'Metric Ranges'[Lower Range]
&& MetricValue <= 'Metric Ranges'[Upper Range]
)
)
RETURN
MetricId
解决方案
在计算计算列时,存在一个行上下文,并且要具有相应的过滤器上下文,需要一个 CALCULATE 来触发上下文转换。
相反,当评估度量时,存在筛选上下文但没有行上下文。
这意味着在评估FILTER( 'Metric Ranges' ...)
度量中的 时,仅Metric Ranges
使用过滤器上下文中的部分。相反,在计算列中使用了整个表。为了使这段代码工作,我们必须改变它以使用过滤器上下文。这可能是一个可能的解决方案
Net Savings Year to date =
VAR MetricValue = [Savings % Annualize Goal]
VAR MetricPrgm = "4003"
VAR MetricId = 1
VAR Score =
CALCULATE(
SUM( 'Metric Ranges'[Score] ),
FILTER(
ALL( 'Metric Ranges' ),
'Metric Ranges'[MetricId] = MetricId
&& 'Metric Ranges'[Program] = MetricPrgm
&& MetricValue > 'Metric Ranges'[Lower Range]
&& MetricValue <= 'Metric Ranges'[Upper Range]
)
)
RETURN
MetricId
推荐阅读
- c# - 在 Visual Studio UWP 项目中将最小版本从 build 10240 更改为 Fall Creators Update 后出现多个警告
- wordpress - 具有帖子类型的 WordPress WP 查询,而不是默认值
- mysql - Mysql重复更新不起作用?
- php - Mysql更新表其中相关表=
- plsqldeveloper - DBMS_OUTPUT.PUT_LINE('God is' || NULL || NULL || 'Great' ) 显示什么?
- sql - Oracle 分析 SUM SQL 不会在窗口中一次求和一个
- amazon-web-services - AWS CloudFormation 模板和实际请求类型不匹配
- java - SMS 发送 jar 不能从终端工作
- python - Tensorflow 字符级 CNN - 输入形状
- java - 在 Android Studio 中为 TextView 添加背景颜色