0

我的 MDX 已经包含NON EMPTY关键字,但在报告中我仍然得到字段 as of typeobject因为 OLAP 中的第一行是空的:

select NON EMPTY Hierarchize(Crossjoin({[Measures].[engagement]}, Union(Union(Union(Union(Crossjoin({[structure].[All structures]}, {[temps].[2016]}), Crossjoin({[structure].[All structures]}, {[temps].[2015]})), Crossjoin({[structure].[All structures]}, {[temps].[2014]})), Crossjoin({[structure].[All structures]}, {[temps].[2013]})), Crossjoin({[structure].[All structures]}, {[temps].[2012]})))) ON COLUMNS,
  NON EMPTY {[soa].[00-01-0-030-00000], [soa].[00-01-0-100-00000], [soa].[00-01-0-120-00000], [soa].[00-01-0-680-00000], [soa].[00-01-0-710-00000], [soa].[00-01-0-720-00000], [soa].[00-01-0-730-00000]} ON ROWS
from [cubExecution]

OLAP 是这样的:

在此处输入图像描述

更新 :

这是报表设计器中的字段:

在此处输入图像描述

那么如何使该字段成为 type Double

4

1 回答 1

0

所以看起来该字段中的第一项正在用于确定类型。

您可以通过运行以下命令来确认是否确实如此,如果两者现在都是 double 类型,那么是的,顶部的空单元格会创建对象类型:

select 
  NON EMPTY 
    Hierarchize(
      Crossjoin(
       {[Measures].[engagement]},     
         Union(
           Union(
             Union(
               Union(
                 Crossjoin(
                   {[structure].[All structures]}, 
                   {[temps].[2016]}
                 ), 
                 Crossjoin(
                   {[structure].[All structures]}, 
                   {[temps].[2015]}
                 )
               ), 
               Crossjoin(
                 {[structure].[All structures]}, 
                 {[temps].[2014]}
               )
             ), 
             Crossjoin(
               {[structure].[All structures]}, 
               {[temps].[2013]}
             )
           ), 
           Crossjoin(
             {[structure].[All structures]}, 
             {[temps].[2012]}
           )
         )
       )
     ) ON COLUMNS,
     NON EMPTY 
       {
        //[soa].[00-01-0-030-00000], //<<commented out
        [soa].[00-01-0-100-00000], 
        [soa].[00-01-0-120-00000], 
        [soa].[00-01-0-680-00000], 
        [soa].[00-01-0-710-00000], 
        [soa].[00-01-0-720-00000], 
        [soa].[00-01-0-730-00000]} ON ROWS
  from [cubExecution];

空白空间通常是您在多维数据集中的朋友和查询,因为它可以使事情快速执行,因此将空白强制为零并不是真正的好习惯,但您可以将空白更改为零 - 但您现在会看到很多列单元格以前不存在 - 但您的打字问题可能会得到解决?

WITH 
 [Measures].[engagementX] AS 
    CoalesceEmpty([Measures].[engagement],0)
SELECT 
  NON EMPTY 
    Hierarchize(
      Crossjoin(
       {[Measures].[engagementX]},     
         Union(
           Union(
             Union(
               Union(
                 Crossjoin(
                   {[structure].[All structures]}, 
                   {[temps].[2016]}
                 ), 
                 Crossjoin(
                   {[structure].[All structures]}, 
                   {[temps].[2015]}
                 )
               ), 
               Crossjoin(
                 {[structure].[All structures]}, 
                 {[temps].[2014]}
               )
             ), 
             Crossjoin(
               {[structure].[All structures]}, 
               {[temps].[2013]}
             )
           ), 
           Crossjoin(
             {[structure].[All structures]}, 
             {[temps].[2012]}
           )
         )
       )
     ) ON COLUMNS,
     NON EMPTY 
       {
        [soa].[00-01-0-030-00000], 
        [soa].[00-01-0-100-00000], 
        [soa].[00-01-0-120-00000], 
        [soa].[00-01-0-680-00000], 
        [soa].[00-01-0-710-00000], 
        [soa].[00-01-0-720-00000], 
        [soa].[00-01-0-730-00000]} ON ROWS
  from [cubExecution];
于 2017-02-21T00:27:20.837 回答