powerbi - DAX 代码不适用于度量中使用的配置变量
问题描述
我在 power-bi 桌面中有一个表(名为 Proto),如下所示(有 4 列和大约 30k 行)。
我使用以下 DAX 代码创建了一个度量。在这里,ProtoVal 是一个包含唯一协议值(如 SSL、DNS 等)的单列表。根据用户选择的协议,我正在过滤上表以仅包含所选协议的行。
ProtoTotBytes =
VAR SelectedProto = SELECTEDVALUE(ProtoVal[Protocol])
VAR temp1 = FILTER(Proto, Proto[Protocol] == SelectedProto)
RETURN CALCULATE(SUM(Proto[total_bytes]), temp1)
上面的 DAX 代码工作正常。现在除了 SelectedProto 之外,我还想再添加一个配置变量 numIP(TopN-IP 是一个包含数值 5、10、15、20 等的单列表TopN-IP's = GENERATESERIES(5, 30, 5)
),我只想从中获取顶部的“numIP”行表 temp1。为此编写了下面的代码。每当我更改 SelectedProto 的值但在更改 numIP 时不会更改时,这都有效?任何人都可以让我知道它对一个配置变量敏感而忽略另一个配置变量吗?
ProtoTotBytes =
VAR numIP = SELECTEDVALUE('TopN-IP''s'[TopN-IP's])
VAR SelectedProto = SELECTEDVALUE(ProtoVal[Protocol])
VAR temp1 = FILTER(Proto, Proto[Protocol] == SelectedProto)
VAR temp2 = TOPN(numIP, temp1, [total_bytes], DESC)
RETURN CALCULATE(SUM(Proto[total_bytes]), temp2)
解决方案
它完全按照您的要求执行,请查看您的代码:
VAR temp1 = FILTER(Proto, Proto[Protocol] == SelectedProto)
VAR temp2 = TOPN(numIP, temp1, [total_bytes], DESC)
在您使用 FILTER 的第一行中,这是正确的,您在使用 TOPN 的第二行中进行过滤,这只是排序。我相信您的意图是,是基于您的选择的过滤器,所以在这里您也需要使用 FILTER。
VAR temp2 = FILTER(temp1, numIP = VALUE(RIGHT(Proto[networkIpAddress],1)))
在此过滤器中,我将 networkIp 的最后一位数字与用户选择的 numIP(s) 进行比较
推荐阅读
- c - 等号前的分号是什么意思?
- powershell - 编写 Powershell 函数,可以通过管道输入和“正常”输入调用
- c# - 仅当字符串出现在特定字符之前时,如何才能从字符串中删除某些字符
- asp.net - 我应该从现在开始放弃在 UWP 上工作吗?
- java - 如何加载捆绑在maven生成的可执行jar文件中的资源?
- c3.js - C3js - 如何更改左下角图例的宽度
- javascript - 如何修复未触发的 onclick 事件?
- amazon-web-services - AWS Cloudwatch 无法使用 SSE 发布到 SNS 主题
- keras - Keras Dense 中的 output_dim 是什么意思?
- oracle - Oracle 表列包含 $