【问题标题】:SSAS Dimension Attribute based on a SSAS calculated measure基于 SSAS 计算度量的 SSAS 维度属性
【发布时间】:2019-04-28 16:03:06
【问题描述】:

我目前正在努力解决一个问题,希望您能帮助解决这个问题。

我需要根据对多维数据集本身执行的计算,动态关联我的 SSAS 多维数据集(多维)中维度的属性。

简化,根据用户选择的日期,我有一个计算(已经完成),它返回该类型材料的库存天数。使用该值,我想根据一系列值返回一个属性。

例如:

Nr_Days_Calculated = 80 

尺寸:

ID  INI  END        DSC

1     0  90         TextA

2    91  180        TextB

3   181  99999      TextC

结果:1 - TextA

谁能帮帮我?感谢您的关注。

【问题讨论】:

    标签: ssas olap olap-cube


    【解决方案1】:

    如果您的维度也有动态计算,这是可行的。让我再举一个例子,但想法是一样的。

    我有一个维度 [重复客户],如果客户(通过电子邮件识别)第二次、第三次、第四次签名 - 将此客户移动到此维度的适当成员。

    首先,使用一个默认成员创建维度。

    其次,添加几个空成员:

    (您可以跳过它,因为在您的情况下,dim 成员已具体化)

    CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[One] as NULL;      
    CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[Two] as NULL;      
    CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[Three] as NULL;      
    CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[Four] as NULL;      
    CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[Five] as NULL;      
    CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[6+] as NULL;      
    CREATE MEMBER CURRENTCUBE.[Repeat Customers].[Repeat Customers].[All].[N/A] as NULL; 
    

    第三,添加他们的计算:

    SCOPE([Repeat Customers].[Repeat Customers].[All].[One],[Measures].[Count]);      
    THIS=Count(Filter([Email].[Email].Members,([Measures].[Count],[Repeat Customers].[Repeat Customers].&[0])=1));      
    END SCOPE;      
    
    SCOPE([Repeat Customers].[Repeat Customers].[All].[Two],[Measures].[Count]);      
    THIS=Count(Filter([Email].[Email].Members,([Measures].[Count],[Repeat Customers].[Repeat Customers].&[0])=2));      
    END SCOPE;      
    
    ...     
    
    SCOPE([Repeat Customers].[Repeat Customers].[All].[6+],[Measures].[Count]);      
    THIS=Count(Filter([Email].[Email].Members,([Measures].[Count],[Repeat Customers].[Repeat Customers].&[0])>=6));      
    END SCOPE;
    
    SCOPE([Repeat Customers].[Repeat Customers].[All].[N/A],[Measures].[Count]);      
    THIS=([Measures].[Count],[Repeat Customers].[Repeat Customers].&[0])
    -SUM({
     [Repeat Customers].[Repeat Customers].[All].[One]
    ,[Repeat Customers].[Repeat Customers].[All].[Two]
    ,[Repeat Customers].[Repeat Customers].[All].[Three]
    ,[Repeat Customers].[Repeat Customers].[All].[Four]
    ,[Repeat Customers].[Repeat Customers].[All].[Five]
    ,[Repeat Customers].[Repeat Customers].[All].[6+]
    },[Measures].[Count]);      
    END SCOPE;
    

    输出:

    我认为您的过滤器必须使用 >= 和 1 - TextA 是否与 [Measures].[Nr_Days_Calculated] 相关?如果是,我们很好,在我的情况下,只需使用您的度量和 SUM 或作为聚合而不是 Count()。

    这不是最佳性能解决方案(因为动态计算),但它仍然有效。希望对您有所帮助。

    【讨论】:

    • 嗨@Alex Peshik,这似乎对我有帮助......我会尝试实施,他们会提供反馈。澄清一下,输出 1 - TextA 是维度中的 ID 和 DSC
    • 是的,我明白了。但是您希望看到哪个度量按此维度分布?应该像COUNT OF ROWS where Nr_Days_Calculated = 80 falls to '1 - TextA' member。就我而言,这很简单,因为它只是计数。让我们等待你将实现什么。
    • 基本上我需要根据Nr_Days_Calculated动态关联维度的一个属性。我们的想法是能够将此维度用作度量组的分析入口点。
    猜你喜欢
    • 2015-11-05
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    相关资源
    最近更新 更多