DAX: как реализовать функцию CREATE MEMBER MDX в табличной модели SSAS - PullRequest
0 голосов
/ 09 января 2019

У меня есть задача преобразовать существующие показатели MDX (из многомерной модели) в DAX (табличная модель). Во время этой задачи я обнаружил, что в DAX нет функциональности для использования опции «CREATE MEMBER», как это было в MDX. Но у меня есть некоторые члены, созданные внутри этого куба этой функцией (не в DWH). В этом случае я пытаюсь выяснить, как сделать то же самое (эквивалент) в табличной модели (DAX)

Есть часть кода, которую я сейчас заменяю:

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

Изображение:

enter image description here

Пример таблицы [Condition] из DWH : enter image description here

У меня есть идея создать VIEW на основе этой таблицы с помощью UNION, чтобы добавить новую строку "NEW + USED" внутри этого VIEW, а затем использовать 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 голосов
/ 23 апреля 2019

Единственное хорошее решение, которое я нашел сейчас, в целом выглядит так:

  1. Создайте новый объект базы данных (например, ПРОСМОТР) в вашей базе данных с полным списком повторяющихся элементов (поэтому элементы будут создаваться на стороне базы данных вместо 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 (не отмеченный флаг «Active» в окне ссылок), потому что он работал некорректно с этим флагом.

...