[已解决] Power BI中如何使用IFERROR函数

  [复制链接]
查看119007 | 回复125 | 2020-11-5 21:06:25 | 显示全部楼层 |阅读模式
如下图,已经关联了两张表的IP,用数据源表的IP去筛选事件表的IP
我们都知道,如果在Excel里用IFERROR函数可以轻松保留
但在Power BI中想让事件表那些匹配不到的IP保留原值,应该如何操作?


10534102039541.png
回复

使用道具 举报

hqpj | 2020-11-5 21:11:25 | 显示全部楼层
最直接的方法是在事件表中添加计算列
= IF( ISBLANK( RELATED( '数据源'[IP] ) ), '事件表'[IP] )
回复

使用道具 举报

chefar | 2020-11-5 21:19:26 | 显示全部楼层
最直接的方法是在事件表中添加计算列
= IF( ISBLANK( RELATED( '数据源' ) ), '事件表' )


感谢回复!按您的方式尝试操作,遇到如下问题:请问可以怎样解决呢?
10534102039542.png
回复

使用道具 举报

cttscy | 2020-11-5 21:22:26 | 显示全部楼层
感谢回复!按您的方式尝试操作,遇到如下问题:请问可以怎样解决呢?


我是通过你的截图写的表名和列名。。。

事件表和数据源两张表已经建立关系且关系设置为Active了么?

或者你把PIBX文件发上吧。
回复

使用道具 举报

啊龙 | 2020-11-5 21:27:26 | 显示全部楼层
度量值写法:
IP筛选 = CALCULATE( MAX( '事件表'[IP] ), ISBLANK( '数据源'[IP] ) )
回复

使用道具 举报

wugang8023 | 2020-11-5 21:34:26 | 显示全部楼层
我是通过你的截图写的表名和列名。。。

事件表和数据源两张表已经建立关系且关系设置为Active了么?


感谢您的回复,这是我的附件

10534102039544.rar (430.77 KB, 下载次数: 0)
回复

使用道具 举报

zhu8zhu | 2020-11-5 21:37:27 | 显示全部楼层
度量值写法:
IP筛选 = CALCULATE( MAX( '事件表' ), ISBLANK( '数据源' ) )


我按您的方式尝试添加了度量值,但度量值同样查询不出数据?显示空白

10534102039543.png
回复

使用道具 举报

paranoid | 2020-11-5 21:45:27 | 显示全部楼层
我按您的方式尝试添加了度量值,但度量值同样查询不出数据?显示空白


作为筛选标准的'数据源'[IP](我理解为你希望将'数据源'做为维度表)值有重复(参考我在'数据源'新增的计算列'数据源'[Occurrence]),所以'数据源'和'事件表'的关系成为了“多对多”,这样在很多统计和计算都会产生不可预知的问题(或者说是我的功力不足以处理这些问题)。

我新增了一张维度表UnicIP,这样计算列和度量值公式就能正确显示结果了。

请参考附件

10534102039545.zip (452.69 KB, 下载次数: 0)
回复

使用道具 举报

37度3 | 2020-11-5 21:50:27 | 显示全部楼层
感谢帮助!
我之前确实也在疑惑多对多不好处理
您给的思路非常好地解决了问题
谢谢您!
回复

使用道具 举报

chkcat | 2020-11-5 21:52:27 | 显示全部楼层
感谢帮助!
我之前确实也在疑惑多对多不好处理
您给的思路非常好地解决了问题


这两天恰好把TreatAs函数深入学习了一番,这个强大的函数能够在不新建物理表的情况下有效的处理“多对多”的关系;我想起来你的案例,于是翻出来把度量值又写了一下,也可以得到想要的结果,权当自己学习的巩固。
IP Filtering TreatAs =
IF (
  ISBLANK (
  CALCULATE ( VALUES ( '事件表'[IP] ), TREATAS ( VALUES ( '数据源'[ip] ), '事件表'[IP] ) )
  ),
  VALUES ( '事件表'[IP] )
)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则