powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / MDX запрос
5 сообщений из 5, страница 1 из 1
MDX запрос
    #39679751
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
...
Рейтинг: 0 / 0
MDX запрос
    #39679782
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ondorsal,
потому что это не запрос а выражение чего-то (конкретнее какие-то координаты в кубе),
так-же утверждать что он не работает немного странно т.к. синтаксис явно верный, следовательно выражение скорее всего работает, просто не так как ожидалось.
кроме того для полноты картины лучше указать где именно это выражение применяется и что именно не нравиться в результате (что получается и что ожидалось, с логикой на примере).

для функции Ancestor аргументом нужно указать именно иерархию (состоящую из нескольких атрибутов а не иерархия одного атрибута) например так:
Код: sql
1.
2.
3.
4.
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]
...
Рейтинг: 0 / 0
MDX запрос
    #39679803
ondorsal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vikkiv,
спасибо за ответ.
Считаю, что не работает, так как при подключении к кубу через Excel и
перетаскивании в строки "Полное наименование"(Продукт), а этой расчетной меры в значения получаю пустую ячейку, а должны быть числа.

Выражение применяется для вычисления суммы продаж всего Микросегмента(Категории товаров), в который входит данное "Полное наименование"(Продукт).
Например, продажи продукта А 10 упаковок, а всего микросегмента(Категории товаров), куда входит этот продукт 2000 упаковок.
Нужно чтобы при выборе продукта А мера показывала 2000 упаковок.
...
Рейтинг: 0 / 0
MDX запрос
    #39679813
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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;
...
Рейтинг: 0 / 0
MDX запрос
    #39680183
ondorsal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andy_OLAP,
Гениально, спасибо огромное, теперь работает!!!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / MDX запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]