Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 SSAS 2012 Контекст MDX-запроса  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 672
Hello world!
Пытаюсь разобраться в таком вопросе связанном с CURRENTMEMBER
Из Managerment Studio запускаю Запрос1:
SELECT	{} ON 0,
		ASCENDANTS([Counteragent].[Counteragent].CURRENTMEMBER) ON 1
FROM [Cube]

Результат запроса:
Все контрагенты

Вопрос: Что является CURRENTMEMBER?

Из Managerment Studio запускаю Запрос2:
SELECT	{} ON 0,
		ASCENDANTS([Counteragent].[Counteragent].[Counteragent]) ON 1
FROM [Cube]

Результат запроса ошибка: Query (2, 3) Функция ASCENDANTS ожидает для аргумента 1 выражение элемента. Было использовано выражение уровня.

Из Managerment Studio запускаю Запрос2:
SELECT	{} ON 0,
		ASCENDANTS([Counteragent].[Counteragent].[Counteragent].CURRENTMEMBER) ON 1
FROM [Cube]

Результат запроса ошибка: Query (2, 14) Функция CURRENTMEMBER ожидает для аргумента 1 выражение иерархии. Было использовано выражение элемента.
Вопрос: Как получить предка для коллекции контрагентов?
13 июл 17, 11:30    [20639976]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Контекст MDX-запроса  [new]
vikkiv
Member

Откуда: London / Zurich
Сообщений: 1134
Yagrus2,

.currentmember в данном случае будет равен .defaultmember (обычно [All] если не отключено {т.е. [все контрагенты] у тебя}, если отключено и указанно какой - то такой и будет, иначе первый с верху)
а где у тебя многоуровневая (а не одно-) иерархия? структуру уровней выложи.
13 июл 17, 12:05    [20640153]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Контекст MDX-запроса  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 672
vikkiv
Yagrus2,
а где у тебя многоуровневая (а не одно-) иерархия? структуру уровней выложи.

Вы это имели в виду?

К сообщению приложен файл. Размер - 13Kb
13 июл 17, 12:24    [20640222]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Контекст MDX-запроса  [new]
vikkiv
Member

Откуда: London / Zurich
Сообщений: 1134
Yagrus2,

т.е. иерархия одноуровневая (один атрибут) ?
или [Иерархия Контрагент]=
- [Страна]
- - [Город]
- - - [Контрагент]
?
13 июл 17, 12:31    [20640253]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Контекст MDX-запроса  [new]
vikkiv
Member

Откуда: London / Zurich
Сообщений: 1134
потому что в данном случаэ явно видно обращение к атрибуту а не к многоуровневой иерархии (у которой в GUI будет 6 квардатов расположенных в виде треугольника)
13 июл 17, 12:34    [20640268]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Контекст MDX-запроса  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 672
vikkiv, Да иерархия обноуровневая
13 июл 17, 12:54    [20640364]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Контекст MDX-запроса  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 672
vikkiv
потому что в данном случае явно видно обращение к атрибуту а не к многоуровневой иерархии (у которой в GUI будет 6 квадратов расположенных в виде треугольника)

То из-за этого для одноуровневой иерархии ф-ция ASCENDANTS не работает и не выведет [All]?

можно подробней про GUI или это шутка?
13 июл 17, 12:58    [20640379]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Контекст MDX-запроса  [new]
vikkiv
Member

Откуда: London / Zurich
Сообщений: 1134
Yagrus2,

на GUI глянуть просто чтобы примерно определить тип.
[Все контрагенты] разве не есть тот-же переименнованый [All] он-же .parent для любого из листьев?
13 июл 17, 13:44    [20640600]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Контекст MDX-запроса  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 672
vikkiv
Yagrus2,

[Все контрагенты] разве не есть тот-же переименнованый [All] он-же .parent для любого из листьев?

Да так и есть. Только ASCENDANTS не отработал
13 июл 17, 14:00    [20640675]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Контекст MDX-запроса  [new]
vikkiv
Member

Откуда: London / Zurich
Сообщений: 1134
Yagrus2,

не отработал в первом случае или в остальных двух?
про остальные два - синтаксис : member надо указывать {или всё иерархию - от туда currentmember сам прилетит) а не уровни (на уровнях иерархии currentmember нет, на самих атрибутах есть)
в первом (можно без .currentmember) вывел .default и его parent ([Все Контрагенты] и null)
13 июл 17, 14:29    [20640807]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Контекст MDX-запроса  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 672
vikkiv
Yagrus2,

в первом (можно без .currentmember) вывел .default и его parent ([Все Контрагенты] и null)
С этим разобрался. Спасибо
vikkiv
Yagrus2,
про остальные два - синтаксис : member надо указывать

То есть например так?
SELECT	{} ON 0,
		ASCENDANTS([Counteragent].[Counteragent].[Мебельстрой-99  ООО]) ON 1
FROM [Cube]

vikkiv
Yagrus2,
{или всё иерархию - от туда currentmember сам прилетит)
а не уровни (на уровнях иерархии currentmember нет, на самих атрибутах есть)


Что значит на атрибутах есть можете привести пример запрос?
13 июл 17, 15:38    [20641265]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Контекст MDX-запроса  [new]
vikkiv
Member

Откуда: London / Zurich
Сообщений: 1134
Yagrus2,

да, в фукциях указание атрибута (без элемента) автоматом определяется/расчитывается на .currentmember
напр. [Date].[Calendar Semester] сам по себе будет .defaultmember т.е. [Date].[Calendar Semester].[All Periods] (т.к. isАggregatable = True и имя корневого уровня прописанно) если контекст нигде не задан
with member [Measures].[x] as settostr(Ascendants([Date].[Calendar Semester].defaultmember))
select [Measures].[x] on 0 from[Adventure Works];
go
with member [Measures].[x] as settostr(Ascendants([Date].[Calendar Semester].currentmember))
select [Measures].[x] on 0 from[Adventure Works];
go
with member [Measures].[x] as settostr(Ascendants([Date].[Calendar Semester]))
select [Measures].[x] on 0 from[Adventure Works]
или если на осях что-то другое определено то в контексте текущих координат (тогда в основном current <> default)
with member[Measures].[x]as settostr(Ascendants([Date].[Calendar Semester].defaultmember))select[Measures].[x]
on 0,[Date].[Calendar Quarter].members on 1 from[Adventure Works]where[Date].[Calendar Year].&[2013];
go
with member[Measures].[x]as settostr(Ascendants([Date].[Calendar Semester].currentmember))select[Measures].[x]
on 0,[Date].[Calendar Quarter].members on 1 from[Adventure Works]where[Date].[Calendar Year].&[2013];
go
with member[Measures].[x]as settostr(Ascendants([Date].[Calendar Semester]))select[Measures].[x]on 0,
[Date].[Calendar Quarter].members on 1 from[Adventure Works]where[Date].[Calendar Year].&[2013]
если конечно в where слайсер для current не определяет что-то другое (и функции не жестко прописанно default или конкретный элемент)
with member[Measures].[x]as settostr(Ascendants([Date].[Calendar Semester].&[2014]&[2]))
select[Measures].[x]on 0from[Adventure Works]where[Date].[Calendar Semester].&[2013]&[1];
go
with member[Measures].[x]as settostr(Ascendants([Date].[Calendar Semester].[H2 CY 2014]))
select[Measures].[x]on 0from[Adventure Works]where[Date].[Calendar Semester].&[2013]&[1];
go
with member[Measures].[x]as settostr(Ascendants([Date].[Calendar Semester].defaultmember))
select[Measures].[x]on 0from[Adventure Works]where[Date].[Calendar Semester].&[2013]&[1];
go
with member[Measures].[x]as settostr(Ascendants([Date].[Calendar Semester].currentmember))
select[Measures].[x]on 0from[Adventure Works]where[Date].[Calendar Semester].&[2013]&[1];
go
with member[Measures].[x]as settostr(Ascendants([Date].[Calendar Semester]))
select[Measures].[x]on 0from[Adventure Works]where[Date].[Calendar Semester].&[2013]&[1]
13 июл 17, 22:55    [20642625]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Контекст MDX-запроса  [new]
vikkiv
Member

Откуда: London / Zurich
Сообщений: 1134
Yagrus2
Что значит на атрибутах есть можете привести пример запрос?
иерархии определяют currentmember для атрибутов из которых они состоят.

выбери любую существующую комбинацию иерархии - и посмотри currentmember исходных атрибутов
например задав день - соответствующая иерархия определит месяц-квартал-семестр и год, т.е. для атрибута квартал будет определён currentmember<>defaultmember (который [All periods])

у иерархии есть .currentmember - но писать его не обязательно - достаточно указать саму иерархию.
13 июл 17, 23:01    [20642638]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Контекст MDX-запроса  [new]
vikkiv
Member

Откуда: London / Zurich
Сообщений: 1134
например
with member [Measures].[a] as [Date].[Date].unique_name
member [Measures].[b] as [Date].[Date].currentmember.unique_name
member [Measures].[c] as settostr([Date].[Calendar])
member [Measures].[d] as settostr([Date].[Calendar].currentmember)
member [Measures].[e] as [Date].[Calendar Year].unique_name
member [Measures].[f] as [Date].[Calendar Year].currentmember.unique_name
select{[Measures].[a],[Measures].[b],[Measures].[c],[Measures].[d],[Measures].[e],[Measures].[e]}
on 0 from[Adventure Works]where[Date].[Calendar].[Date].&[20130517]
13 июл 17, 23:08    [20642647]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Контекст MDX-запроса  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 672
vikkiv,
Огромное спасибо за развернутый ответ.
Все результаты возвращаемые селектами в ваших постах осознал.

С идеологией currentmember получается так:
у ИЕРАРХИИ есть currentmember
у УРОВНЯ нет currentmember


Не понял, вот это: У атрибута есть currentmember.

Поясните пожалуйста, что вы имеете в виду под словом атрибут вот тут

(на уровнях иерархии currentmember нет, на самих атрибутах есть)

Просто при обращении к измерению в MDX запросе, функции в качестве аргумента могут просить: Измерение, Иерархию, Уровень, Элемент
14 июл 17, 13:58    [20644381]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить