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

Откуда:
Сообщений: 53
Коллеги, нужна Ваша помощь с MDX запросом для вычисляемой меры в OLAP-кубе:


В кубе есть:
Иерархия препаратов:

[Препараты].[Макросегменты].[Макросегмент].[Микросегмент].[Полное наименование]

Мера:

[Measures].[Упаковки]


Нужно найти сумму упаковок родительского элемента иерархии измерения Препараты:
[Препараты].[Макросегменты].[Макросегмент].[Микросегмент].[Полное наименование]


Например, выбираем полное наименование, а сумма считается по соответствующему всему микросегменту, куда входит данное полное наименование;
выбираем Микросегмент, а сумма считается по соответствующему всему макросегменту, куда входит данный Микросегмент;
выбираем Макросегмент, а сумма считается по всем макросегментам.

У меня получился такой запрос, но он не работет. Что я делаю не так?

(ANCESTOR(([Препараты].[Макросегменты].currentmember),1),[Measures].[Упаковки])



Версия сервера:
SSAS на
Microsoft SQL Server 2008 R2 (SP3-GDR) (KB4057113) - 10.50.6560.0 (X64)
Dec 28 2017 15:03:48 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

Клиент
Microsoft Excel 2013
26 июл 18, 16:33    [21605243]     Ответить | Цитировать Сообщить модератору
 Re: MDX запрос  [new]
vikkiv
Member

Откуда: London
Сообщений: 1654
ondorsal,
потому что это не запрос а выражение чего-то (конкретнее какие-то координаты в кубе),
так-же утверждать что он не работает немного странно т.к. синтаксис явно верный, следовательно выражение скорее всего работает, просто не так как ожидалось.
кроме того для полноты картины лучше указать где именно это выражение применяется и что именно не нравиться в результате (что получается и что ожидалось, с логикой на примере).

для функции Ancestor аргументом нужно указать именно иерархию (состоящую из нескольких атрибутов а не иерархия одного атрибута) например так:
with member[Measures].[x]as(ancestor([Product].[Product Categories],1),[Measures].[Order Quantity])
select{[Measures].[Order Quantity],[Measures].[x]}on 0,
non empty([Product].[Category].[Category],[Product].[Subcategory].[Subcategory])
having not isempty([Measures].[Order Quantity])on 1from[Adventure Works]
26 июл 18, 17:24    [21605441]     Ответить | Цитировать Сообщить модератору
 Re: MDX запрос  [new]
ondorsal
Member

Откуда:
Сообщений: 53
vikkiv,
спасибо за ответ.
Считаю, что не работает, так как при подключении к кубу через Excel и
перетаскивании в строки "Полное наименование"(Продукт), а этой расчетной меры в значения получаю пустую ячейку, а должны быть числа.

Выражение применяется для вычисления суммы продаж всего Микросегмента(Категории товаров), в который входит данное "Полное наименование"(Продукт).
Например, продажи продукта А 10 упаковок, а всего микросегмента(Категории товаров), куда входит этот продукт 2000 упаковок.
Нужно чтобы при выборе продукта А мера показывала 2000 упаковок.
26 июл 18, 17:57    [21605645]     Ответить | Цитировать Сообщить модератору
 Re: MDX запрос  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 2533
ondorsal
Коллеги, нужна Ваша помощь с MDX запросом для вычисляемой меры в OLAP-кубе:


В кубе есть:
Иерархия препаратов:

[Препараты].[Макросегменты].[Макросегмент].[Микросегмент].[Полное наименование]

Мера:

[Measures].[Упаковки]


Нужно найти сумму упаковок родительского элемента иерархии измерения Препараты:
[Препараты].[Макросегменты].[Макросегмент].[Микросегмент].[Полное наименование]


Например, выбираем полное наименование, а сумма считается по соответствующему всему микросегменту, куда входит данное полное наименование;
выбираем Микросегмент, а сумма считается по соответствующему всему макросегменту, куда входит данный Микросегмент;
выбираем Макросегмент, а сумма считается по всем макросегментам.

У меня получился такой запрос, но он не работет. Что я делаю не так?

(ANCESTOR(([Препараты].[Макросегменты].currentmember),1),[Measures].[Упаковки])



Версия сервера:
SSAS на
Microsoft SQL Server 2008 R2 (SP3-GDR) (KB4057113) - 10.50.6560.0 (X64)
Dec 28 2017 15:03:48 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

Клиент
Microsoft Excel 2013


Ловите.

CREATE MEMBER CURRENTCUBE.[Measures].[Упаковки по иерархии препаратов]

AS iif([Measures].[Упаковки]=0 or [Препараты].[название иерархии включающее микросегменты и макросегменты].CurrentMember.Ordinal = 0,null, -- таки мы на корневом уровне или для продаж на уровне пусто и не нужно показывать продажи уровня выше
-- таки находимся где-то на уровне иерархии, но не на корневом
-- так можно
--aggregate([Препараты].[название иерархии включающее микросегменты и макросегменты].CurrentMember.Parent.Children,[Measures].[Упаковки])
-- и так можно
sum([Препараты].[название иерархии включающее микросегменты и макросегменты].CurrentMember.Parent.Children,[Measures].[Упаковки])
),

VISIBLE = 1;
26 июл 18, 18:26    [21605722]     Ответить | Цитировать Сообщить модератору
 Re: MDX запрос  [new]
ondorsal
Member

Откуда:
Сообщений: 53
Andy_OLAP,
Гениально, спасибо огромное, теперь работает!!!
27 июл 18, 13:24    [21608113]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить