浅谈MDX处理空值NULL及格式化结果

MDX查询结果中往往会含有“NULL”值,这是某维度下对应的的量值不存在导致的,为了让报表呈现更好的效果,在有些情况下,需要将“NULL”的切片值置换成0,这些置换可以在报表端处理,亦可以在MDX脚本中进行。本文就MDX空值NULL谈谈查询结果格式化处理。

以下示例图为格式化处理空值之前的状态:

MDX处理空值NULL及格式化结果-彭智勇博客

对应的MDX脚本为:


SELECT {
        [Measures].[TransInQty],
        [Measures].[TransOutQty]
        } ON 0,
    {[Time].[Day].&[2014-04-07T00:00:00]
    :[Time].[Day].&[2014-04-10T00:00:00]} ON 1
FROM [RMS]

下面需要将上图中相应切片的(NULL)值变更为0,且将非(NULL)的切片的数字转换成千分位格式,即有以下示图:

MDX处理空值NULL及格式化结果-彭智勇博客

对应的MDX处理脚本为:


WITH 
MEMBER [Measures].[TransInQtyFormatted] 
AS [Measures].[TransInQty],FORMAT_STRING = "#,##0;- #,##0;0;0"
MEMBER [Measures].[TransOutQtyFormatted] 
AS [Measures].[TransOutQty],FORMAT_STRING = "#,##0;- #,##0;0;0"
SELECT {
        [Measures].[TransInQty],
        [Measures].[TransInQtyFormatted],
        [Measures].[TransOutQty],
        [Measures].[TransOutQtyFormatted]
        } ON 0,
    {[Time].[Day].&[2014-04-07T00:00:00]
    :[Time].[Day].&[2014-04-10T00:00:00]} ON 1
FROM [RMS]

在上述MDX中,属性FORMAT_STRING = "#,##0;- #,##0;0;0"值以分号(;)分隔成四部分格式化,即按正数,负数,0,空值NULL的顺序进行格式化,#为格式化占位符,即当切片值为正数地返回带千分位的正数;当切片值为负数时返回带千分位的负数;当切片值为0时返回0;当切片为空值时返回0,你也可以设成“N/A”。

更多有关FORMAT_STRING参见:FORMAT_STRING Contents

本文首发地址:http://pengzhiyong.com/blog/281.html

转载于:https://www.cnblogs.com/pengzhiyong/p/3690840.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值