代码之家  ›  专栏  ›  技术社区  ›  vldmrrdjcc

写入与作用域分配等效的计算成员

  •  0
  • vldmrrdjcc  · 技术社区  · 6 年前

    我正在努力更好地理解作用域和计算成员,因此 AdventureWorks 我做的数据库如下:

    我写了这个简单的范围声明:

    SCOPE([Customer].[Customer].[All Customers], [Measures].[Average Rate]);  
            /* This expression sets the value of the Amount measure */  
            THIS = 999;  
    END SCOPE;  
    

    等效计算构件为:

    Create Member CurrentCube.[Measures].[My Measure]
     AS 
    iif([Customer].[Customer].currentmember IS [Customer].[Customer].[All Customers], 999, [Measures].[Average Rate]);
    

    但我不确定如何创建与此作用域分配等效的计算成员:

    SCOPE([Customer].[Country].members, [Measures].[Average Rate]);  
            /* This expression sets the value of the Amount measure */  
            THIS = 999;  
    END SCOPE; 
    

    实际上我不知道怎么写 iff 这将检查客户维度的当前成员是否是[客户].[国家/地区]的成员。

    1 回复  |  直到 6 年前
        1
  •  0
  •   MoazRub    6 年前

    干得好

    ///Will Display 999 for any member apart from All
    
    
         with Member [Measures].[My Measure]
             AS 
             iif([Customer].[Country].currentmember.Properties ("Member_Value",TYPED)='All Customers',[Measures].[Internet Sales Amount] , 999)
    
            select {[Measures].[Internet Sales Amount],[Measures].[My Measure]}
             on columns,
    
            [Customer].[Country].members
            on rows 
            from [Adventure Works]
    
        ///Will display 999 for any member
            with Member [Measures].[My Measure]
             AS 
             iif([Customer].[Country].currentmember.Properties ("Member_Value",TYPED)='WhatEver', 999, 999)
    
            select {[Measures].[Internet Sales Amount],[Measures].[My Measure]}
             on columns,
    
            [Customer].[Country].members
            on rows 
            from [Adventure Works]
    

    //下面的查询有助于检查成员是否是层次结构的一部分 ///////////////////////////////////////////////////////////////////////////

    //Query checks if a Member is part of a hierarchy
    with MEMBER TestIFAValidMember
    as 
    [Product].[Subcategory].[InvalidMember].UniqueName
    
    MEMBER TestIFAValidMember2
    as 
    [Product].[Subcategory].[Caps].UniqueName
    
    select {TestIFAValidMember,TestIFAValidMember2}
    on columns 
    FROM [Adventure Works]
    

    你也可以试试

    WITH MEMBER MEASURES.NotMember AS
    
    IsSibling([Product].[Category].CURRENTMEMBER, [Product].[Category].[Invalid])
    
    MEMBER MEASURES.ISMember AS
    
    IsSibling([Product].[Category].CURRENTMEMBER, [Product].[Category].[Bikes])
    
    SELECT {MEASURES.NotMember,MEASURES.ISMember} ON 0,
    
    [Product].[Category].MEMBERS ON 1
    
    FROM [Adventure Works]