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

DAX: How to implement CREATE MEMBER MDX function in SSAS Tabular Model

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

中执行相同(等效)操作

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

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

图片:

有一个来自 DWH 的 [Condition] table 的例子:

我有一个想法基于此 table 使用 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")
                                               )
                )

但我不确定这是否正确,因为在这种情况下,我应该填充 table 中的所有列,其中一些列用于与多维数据集中的事实 tables 的关系.

目前我找到的唯一一个好的解决方案大体上是这样的:

  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" 和这个新数据库对象 (View) 之间引用了 INACTIVE(引用 window 中未选中的 "Active" 标志)因为它无法正确使用此标志。