DAX вычисляет сумму детских сумм

Я новичок в DAX, раньше использовал MDX. У меня есть следующая формула в многомерных выражениях

    CREATE 
  MEMBER CURRENTCUBE.[Measures].[Count Visit] AS [Measures].[Unique Contact Count]
  ;    

scope([Date Cheque].[YEAR-MONTH-DATE].[Month Of Year], [Measures].[Count Visit]);
this= Sum
        ({[Date Cheque].[YEAR-MONTH-DATE].CurrentMember.Children}
         ,[Measures].[Count Visit]);
end scope;

scope([Date Cheque].[YEAR-MONTH-DATE].[Calendar Year], [Measures].[Count Visit]);
this= Sum
        ({[Date Cheque].[YEAR-MONTH-DATE].CurrentMember.Children}
         ,[Measures].[Count Visit]);
end scope;

Я понимаю, что в DAX нет иерархий, поэтому я понятия не имею, как это сделать


person Mars9n9    schedule 20.02.2019    source источник
comment
Было бы намного легче помочь вам, если бы вы вместо MDX описали свою модель данных и желаемый результат. Также будет полезна выборка данных.   -  person RADO    schedule 20.02.2019


Ответы (1)


Как правило, в DAX можно использовать функции проверки фильтров, такие как ISFILTERED, ISCROSSFILTERED, HASONEVALUE и ISINSCOPE, чтобы определить текущий уровень вычислений. Это позволяет нам делать сложные вещи, для которых мы обычно использовали бы оператор SCOPE в многомерных выражениях.

Однако в этом случае кажется, что все, что вы хотите делать, это всегда оценивать [Меры]. [Уникальное количество контактов] на дневном уровне, а затем повышать его до более высоких уровней. Для этого мы можем просто написать меру [Count Visit] следующим образом, предполагая, что ваша таблица 'Date Check' содержит столбец [Date] в графе дня:

SUMX(VALUES('Date Cheque'[Date]), [Unique Contact Count])

SUMX - это так называемая функция итератора, которая оценивает второй аргумент для каждой строки в первом аргументе (который должно быть табличным выражением) и вернуть сумму 2-го аргумента.

person Dan    schedule 20.02.2019