Используя многомерные выражения, как я могу вернуть .Имя элемента, которое является МАКСИМАЛЬНЫМ для конкретной меры?

#mdx

#многомерные выражения

Вопрос:

Это моя первая публикация, и я думаю, что это сложный вопрос.

Используя многомерные выражения, я хочу вернуть .Имя конкретного элемента измерения, основанное на том факте, что в мере я нашел МАКСИМАЛЬНОЕ

Итак, если я создам сетку

 Dimension X = Jobs
Dimension Y = Time
Dimension z = cause (not in grid)
Measure = Stress (1-10)

              July 1 | July 2 | July 3 | July 4
**Painter**        1 |      3 | **5**  |      2
  

Вы можете видеть, что 3 июля имеет значение MAX stress теперь, что я хочу сделать, это вернуть имя элемента измерения z без разрезания на нем (оно связано с измерением Jobs, поэтому, если я сделаю срез на нем, он будет действительным).

Итак [Измерение z].[причина].CurrentMember.Name даст мне имя всего элемента, но мне нужно, чтобы МАКСИМАЛЬНОЕ значение меры было связано с этим, и дайте мне имя элемента причины, которое относится к этому значению.

Я надеюсь, что это имеет смысл и даже может быть возможно?

Джеймс

Ответ №1:

Что-то вроде

 WITH Member Measures.[Name of Max Stress] AS
     TopCount([DimZ].[AttribZ].[AttribZ].Members, 1, Measures.[Stress]).Item(0).Item(0).Name
SELECT [DimZ].[HierZ].[Month].Members
       on columns,
       { Measures.Stress, Measures.[Name of Max Stress] }
       on rows
  FROM [cube]
  

должно дать то, что вы хотите.

Сначала используется TopCount функция, которая сортирует [DimZ].[AttribZ].[AttribZ].Members набор по убыванию на Measures.[Stress] . Поскольку TopCount возвращается набор, но нам нужен следующий элемент, мы используем Item функцию, где первый вызов возвращает первый (и единственный) кортеж из набора, а второй вызов возвращает первый (и единственный) элемент из кортежа. Тогда у нас есть элемент, и мы, наконец, можем применить Name функцию.