DAX:如何在SSAS表格模型中实现CREATE MEMBER MDX功能

时间:2019-01-09 12:34:35

标签: ssas mdx dax tabular ssas-tabular

我的任务是将现有的MDX度量(从多维模型)转换为DAX(表格模型)。在此任务期间,我发现在DAX中没有像在MDX中那样使用“创建成员”选项的功能。但是我有一些通过此函数在此多维数据集中创建的成员(不是在DWH中)。在这种情况下,我试图找出如何在表格模型(DAX)中执行相同操作(等效)

我现在正在替换一部分代码:

CREATE MEMBER CURRENTCUBE.[Condition].[Condition].[All].[NEW+USED]
 AS [Condition].[Condition Type].[NEW]+[Condition].[Condition Type].[USED]

图片:

enter image description here

有一个来自DWH的[条件]表的示例enter image description here

我有一个想法,就是使用UNION在此表的基础上创建一个VIEW,以在该VIEW中添加新行“ NEW + USED”,然后使用多维数据集内部的SWITCH(DAX函数)进行所有测量

例如:

NVC:= 
VAR GALC = [ABC] + [CDE]
RETURN SWITCH(
                    SELECTEDVALUE('Condition'[ConditionTotal]);
                    "ConditionTotal"; GALC;
                    "NEW+USED"; CALCULATE(
                                               GALC;
                                               FILTER(ALL('Condition'[ConditionDescription]); 'Condition'[ConditionDescription] = "New" && 'Condition'[ConditionDescription] = "Used")
                                               )
                )

但是我不确定这是否是正确的方法,因为在这种情况下,我应该填充表中的所有列,并且其中一些列应与多维数据集内的事实表建立关联。

1 个答案:

答案 0 :(得分:0)

我现在通常发现的唯一一个好的解决方案是这样的:

  1. 使用重复成员的完整列表在数据库中创建一个新的数据库对象(例如VIEW)(这样,将在数据库端而不是SSAS上创建成员)。
  2. 创建度量并为度量内部的这些成员添加其他逻辑。

测量示例:

My_measure:= 
VAR New_var  = CALC(SUM('FactTable'[Price]), 'Condition'[ConditionDescription] = "New")
VAR Used_var = CALC(SUM('FactTable'[Price]), 'Condition'[ConditionDescription] = "Used")
VAR New_and_Used_var = CALC(SUM('FactTable'[Price]),  ALL('Condition'), 'Condition'[ConditionDescription] in {"New","Used"})

RETURN   
  SWITCH (SELECTEDVALUE('Condition'[ConditionDescription]),   
         "New", New_var, 
         "Used",Used_var,
         "New + Used", New_and_Used_var
         )

我唯一要做的一件事是我在“ FactTable”和这个新的数据库对象(视图)之间以INACTIVE(在引用窗口中未选中“ Active”标志)的方式进行引用,因为它不能正确地与此标志一起使用。 / p>