【问题标题】:Replace NULL Value with 0 when crossing measures in Browser SSAS MDX在浏览器 SSAS MDX 中交叉度量时将 NULL 值替换为 0
【发布时间】:2017-05-22 10:50:37
【问题描述】:

我想在多维数据集中浏览时替换 Null 值,当我执行 IIF 或合并时,我得到的年份为没有数据的 null 值(所有维度行),我只想替换当前交叉数据的 null 值。这是一个解释更多的例子:

Year   Measure 1     Measure 2
2015     55            60
2016     44            70
2017      30           (null)

我使用 ISEMPTY OR COALESCE 时的问题行为

Year Measure 1 Measure 2 (All TimeDim years) 0 0 2012 0 0 2013 0 0 2014 0 0 2015 55 60 2016 44 70 2017 30 0

数据集现在变大了,但值无用。

我想要什么:

Year Measure 1 Measure 2 2015 55 60 2016 44 70 2017 30 0

如何解决这个问题?谢谢。

【问题讨论】:

  • isnull(field, yourdefaultvalue)
  • @GuidoG 同样的问题,我将得到所有维度行,其中 null 替换为 0 + ISNULL 在 MDX 中不可用
  • 发布查询...
  • 那么 isnull 怎么帮不了你?如果您需要帮助,请帮助我们帮助您并发布示例数据和预期结果,而不是图像而是文本。同时发布您的查询
  • 编辑了帖子,谢谢

标签: sql-server ssas mdx


【解决方案1】:

这是一个人们可以玩的例子:

SELECT 
  {
    [Measures].[Internet Sales Amount]
   ,[Measures].[Reseller Sales Amount]
  } ON COLUMNS
 ,NON EMPTY 
    [Date].[Calendar Year].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE 
  [Geography].[Geography].[Country].&[Australia];

结果:

这是导致行扩展的简单修改:

WITH 
  MEMBER [Measures].[Reseller Sales Amount NEW] AS 
    IIF
    (
      [Measures].[Reseller Sales Amount] = 0
     ,0
     ,[Measures].[Reseller Sales Amount]
    ) 
SELECT 
  {
    [Measures].[Internet Sales Amount]
   ,[Measures].[Reseller Sales Amount NEW]
  } ON COLUMNS
 ,NON EMPTY 
    [Date].[Calendar Year].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE 
  [Geography].[Geography].[Country].&[Australia];

结果

所以我们可以对新的措施进行更多修改:

WITH 
  MEMBER [Measures].[Reseller Sales Amount NEW] AS 
    IIF
    (
        [Measures].[Reseller Sales Amount] = 0
      AND 
        [Measures].[Internet Sales Amount] <> 0
     ,0
     ,[Measures].[Reseller Sales Amount]
    ) 
SELECT 
  {
    [Measures].[Internet Sales Amount]
   ,[Measures].[Reseller Sales Amount NEW]
  } ON COLUMNS
 ,NON EMPTY 
    [Date].[Calendar Year].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE 
  [Geography].[Geography].[Country].&[Australia];

那么我们有:

请注意...在多维数据集空间中删除空值会严重降低 mdx 脚本的性能,因此请谨慎使用上述内容 - 最好还是不要为上述内容而烦恼,并且在您的客户端中对 mdx 执行以下操作(null) => 0

的变换

【讨论】:

  • 谢谢@whytheq
【解决方案2】:

您可以将IS 运算符与NULL 引用一起使用。 See here

另一种选择是将其包装在IIF 语句中。 See here

【讨论】:

    猜你喜欢
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    相关资源
    最近更新 更多