人生没有彩排
每一天都是现场直播

XF.Analysis.AutoUnit

语法作用

将表达式的值自动格式化成合适的单位(无单位,K:千,M:百万,B:十亿),isFormat参数用于声明该函数是否用于度量值的动态格式化表达式中,该函数根据使用位置进行了适配,1:用于动态格式化表达式,0:用于普通度量值等表达式(将以文本类型返回格式化后的值)。

XF.Analysis.AutoUnit(expression:scalar,isFormat:int64)

函数代码

该函数的实现代码如下:

/// 将表达式的值自动格式化成合适的单位(无单位,K:千,M:百万,B:十亿),isFormat参数用于声明该函数是否用于度量值的动态格式化表达式中,该函数根据使用位置进行了适配,1:用于动态格式化表达式,0:用于普通度量值等表达式(将以文本类型返回格式化后的值)
FUNCTION XF.Analysis.AutoUnit = (expression:scalar,isFormat:int64) =>
    IF(NOT isFormat IN {0,1},
        ERROR("isFormat参数的可选取值仅为0或1"),
        VAR Val = expression
        VAR ValFormat = 
            SWITCH(
                TRUE(),
                ABS(val)<1E3,FORMAT(val,"#,##0.0"),          // 个位,无单位
                ABS(val)<1E6,FORMAT(val/1E3,"#,##0.0K"),     // 千位,显示为K
                ABS(val)<1E9,FORMAT(val/1E6,"#,##0.0M"),     // 百万,显示为M
                FORMAT(val/1E9,"#,##0.0B")                   // 十亿,显示为B
            )
        RETURN
        IF(isFormat=1,
            """"&ValFormat&""";"""&ValFormat&"""",
            ValFormat
        )
    )

应用示例

计算销售额,并自动格式化成合适的单位。

XF.Analysis.AutoUnit(SUM('订单'[销售额]),0)

结果如下图所示:

以上是isFormat参数设为0时的结果,即以文本类型返回格式化后的值,因此度量值不可再用于后续的数学运算,如下图所示:

如果后续还要引用该格式化单位后的度量值,那么推荐将isFormat参数设为1,并将该函数用于度量值的动态格式化表达式中,这样就不会影响其后续计算。如下图所示:

上图场景中用到的各表达式如下:

销售额-AutoUnit = SUM('订单'[销售额]) // 度量值表达式
销售额-AutoUnit = XF.Analysis.AutoUnit(SELECTEDMEASURE(),1) // 动态格式化表达式

销售额 + 1000000 = [销售额-AutoUnit] + 1000000

注意,isFormat参数设为1时,不要将其用在度量值表达式中,只能用在动态格式化表达式中。

赞(0) 打赏
版权声明:本文为夕枫的原创文章,著作权归作者所有,未经允许不得转载
文章名称:《PowerBI DAX自定义函数-XF.Analysis.AutoUnit》
文章链接:https://www.ximaple.com/posts/1551.html
订阅评论
提醒
guest
0 评论
最新
最久 最赞
内联反馈
查看所有评论

觉得文章有用的话就支持一下吧~

感谢您的打赏支持,我将持续输出有价值的内容!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册

Operation don't support