#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
функцию.