2017-02-20 31 views
0

我的MDX已经包含了NON EMPTY关键字检索后,但在报告中,我仍然得到字段作为object型的,因为第一行是在OLAP空:字段的类型是Object从MDX

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是这样的:

enter image description here

更新:

这里是在报表设计领域:

enter image description here

那么如何使现场成为Double类型的?

+0

目前尚不清楚你需要什么:什么提起你是指? –

+0

表示2013年列的度量值的字段。 – pheromix

回答

0

因此,它看起来像在该领域的第一项被用来决定类型。

你可以confirmif那绝对是通过运行以下命令,如果两者都现在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];