前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从信息安全到如何在DAX中实现for循环

从信息安全到如何在DAX中实现for循环

作者头像
陈学谦
发布2021-12-08 18:21:39
1.5K0
发布2021-12-08 18:21:39
举报
文章被收录于专栏:学谦数据运营学谦数据运营

在实际的业务场景中,诸多业务数据内容是不能对外展示的,比如姓名信息等:

比如在一些会议上要展示一些图表,如果仅仅是放一些数据,可能并不能起到很好的作用,如果把姓名全都放上,则又会泄露一些信息。

我们需要将姓名中间的字抹掉,保留前后的两个字:

我们可以这样写度量值:

代码语言:javascript
复制
姓名2 = 
var n=[学生姓名]
var name_out=IF(LEN(n)>2,LEFT(n,1)&"*"&RIGHT(n,1),LEFT(n,1)&"*")
return name_out

此时,有人会提出疑问,四个字的中间其实两个*,这里只显示了一个:

其实有时候真的有必要让四个字的人名中间显示2个*吗,四个字的名本来就很少,“杨*意”其实很难让人猜出来是哪一个,尤其是姓名量比较大的时候。然而如果放上“杨**意”,几乎所有知道这个名字的都会100%肯定就是她!那么请问,我们对名字中间打码的意义又在何处呢?

更极端的情况,四个字“****”,男性,很多人甚至可以直接猜出来“易烊千玺”。

当然,在某些业务场景中,可能并不是如此的隐秘,的确需要将“戏子多秋”显示为“戏**秋”,甚至还有五个字的姓名“耶律阿保机”想要显示为“耶***机”,那么,应该如何写呢?

其实也比较简单,就是判断一下字数,如果是3个字中间一个星*,4个字两个星**,五个字三个***,如果所涉及到的名字多于5个字的,那就继续往下写:

代码语言:javascript
复制
姓名3 = 
var n=[学生姓名]
var mid_num=
SWITCH(
    LEN(n),
    3,"*",
    4,"**",
    5,"***"
)
var name_out=IF(LEN(n)>2,LEFT(n,1)&mid_num&RIGHT(n,1),LEFT(n,1)&"*")
return name_out

但是这里有一个简单写法。当然,用在此处其实是大材小用,大家可以想一下在哪些场景中会用到:

代码语言:javascript
复制
姓名4 = 
var n=[学生姓名]
var mid_num=LEFT("**************************",LEN(n)-2)
var name_out=IF(LEN(n)>2,LEFT(n,1)&mid_num&RIGHT(n,1),LEFT(n,1)&"*")
return name_out

以上两种方法,效果自然是一样的:

以上的技巧,比如在处理满意度调查问卷收集的数据时,我们想把打分情况的数字变为报表中的五角星个数,就可以使用这种办法结合Unicode进行了:

度量值写起来也非常简洁:

代码语言:javascript
复制
满意度星标 = 
var wjx1=UNICHAR(9733)&UNICHAR(9733)&UNICHAR(9733)&UNICHAR(9733)&UNICHAR(9733)&UNICHAR(9733)&UNICHAR(9733)&UNICHAR(9733)&UNICHAR(9733)&UNICHAR(9733)
var wjx0=UNICHAR(9734)&UNICHAR(9734)&UNICHAR(9734)&UNICHAR(9734)&UNICHAR(9734)&UNICHAR(9734)&UNICHAR(9734)&UNICHAR(9734)&UNICHAR(9734)&UNICHAR(9734)
var wjx_out=LEFT(wjx1,[满意度])&LEFT(wjx0,10-[满意度])
return wjx_out

在处理这种根据已知的数字x一直重复x次的问题中,在其它语言中我们采用的一般是for或者while循环,而我们在DAX中采用了LEFT函数来伪造了一个这样一个循环。

有些时候从python中转到DAX里编辑度量值,往往会感觉到不适应,就是因为一个在其他语言中很简单的for循环,唯独在DAX里没法用。DAX毕竟是基于模型的语言,在对数据进行单独的处理方面有一些限制,但是放在模型中恐怕是无人能敌。

That's it!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PowerBI生命管理大师学谦 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档