powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / MDX табличная иерархия
15 сообщений из 15, страница 1 из 1
MDX табличная иерархия
    #39943623
Batty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, всем привет!

Помогите, пожалуйста, новичку!

Задача: нужно развернуть иерархию в виде таблицы (по аналогии с табличным представлением в экселе при работе с олап-запросом), чтобы первый уровень был в первом столбце, второй во втором и так далее.

По умолчанию mdx выводит иерархию в один столбец, строками.

Select
(
[Товары].[КТТ].[Level 03],
[Товары].[КТТ].[Level 04]
)
on 1

Выдает ошибку "В функции Crossjoin иерархия КТТ используется более одного раза"

Я подозреваю, что должно быть какое-то простое решение, эксель ведь справляется)
...
Рейтинг: 0 / 0
MDX табличная иерархия
    #39943647
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Batty,

Запускаете Profiler и смотрите, какой запрос отправляет Excel
...
Рейтинг: 0 / 0
MDX табличная иерархия
    #39943718
PassedBI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Batty,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
Select
(
{
[Товары].[КТТ].[Level 03],
[Товары].[КТТ].[Level 04]
}
)
on 1
...
Рейтинг: 0 / 0
MDX табличная иерархия
    #39943729
Batty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Критик,

К сожалению нет доступа
...
Рейтинг: 0 / 0
MDX табличная иерархия
    #39943730
Batty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PassedBI
Batty,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
Select
(
{
[Товары].[КТТ].[Level 03],
[Товары].[КТТ].[Level 04]
}
)
on 1



Пишет "Достигнут конец входных данных."
...
Рейтинг: 0 / 0
MDX табличная иерархия
    #39943758
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИИ поднялся на такой уровень что from уже можно не указывать.. сервер сам должен знать в какой куче все это лежит.. да, Batty?

а вот посмотреть что Excel формирует для отправки на сервер можно и без профайлера.. достаточно быть знакомым с внутренней кухней Excel или установить расширение полезное, в общем и для таких целей, в частности.
...
Рейтинг: 0 / 0
MDX табличная иерархия
    #39943832
Batty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShIgor
ИИ поднялся на такой уровень что from уже можно не указывать.. сервер сам должен знать в какой куче все это лежит.. да, Batty?


Я привожу часть кода, конечно там есть from дальше, это к вопросу не относится. К чему ваш сарказм?

ShIgor


а вот посмотреть что Excel формирует для отправки на сервер можно и без профайлера.. достаточно быть знакомым с внутренней кухней Excel или установить расширение полезное, в общем и для таких целей, в частности.


Так расскажите как, будьте добры! Если бы я знала, как это сделать, то не спрашивала бы на форуме
...
Рейтинг: 0 / 0
MDX табличная иерархия
    #39943840
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Batty,

если вы хотите получить это в CellSet резулбьтаье MDX запроса, то перемножьте аттрибутные иерархии, лежащие в основе уровней иерархии

Код: sql
1.
2.
3.
select {} on 0,
Dim.AttributeOfLevel0.members * Dim.AttributeOfLevel1.members * ... * Dim.AttributeOfLeveln.members on 1
from Cube
...
Рейтинг: 0 / 0
MDX табличная иерархия
    #39943841
alexdr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Batty
Я привожу часть кода, конечно там есть from дальше, это к вопросу не относится. К чему ваш сарказм?

А откуда пытающиеся Вам помочь участники форума должны догадаться что еще Вы там напропускали в коде? В том виде в котором опубликован Ваш запрос, он обычно выдает ошибку:
Код: sql
1.
Query (3, 1) Axis numbers specified in a query must be sequentially specified, and cannot contain gaps.


Это означает, что Вы пропустили ось 0.
На нее можно вынести, напр., пустой сет, если вы хотите получить сет атрибутов измерения. Чтобы где-то попробовать MDX обычно, по возможности, моделируют ситуацию на каком-либо общеизвестном/легко доступном кубе (чаще всего Adventure Works). Чтобы MDX стал хоть что-то возвращать, можно его поправить, напр., так (в данном случае на оси 0 - определен пустой сет):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT
(
       {}
) ON 0,
Hierarchize
(
       {
              [Account].[Accounts].[Account Level 01],
              [Account].[Accounts].[Account Level 02],
              [Account].[Accounts].[Account Level 03]
       }
) ON 1
FROM [Adventure Works]


Ну, а дальше, как советовали выше можно посмотреть как формирует MDX Excel, какие MDX-функции он использует. Как отображает резульаты запроса клиентское приложение - зависит от него. MDX здесь не причем.
...
Рейтинг: 0 / 0
MDX табличная иерархия
    #39943882
Batty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир Штепа
Batty,

если вы хотите получить это в CellSet резулбьтаье MDX запроса, то перемножьте аттрибутные иерархии, лежащие в основе уровней иерархии

Код: sql
1.
2.
3.
select {} on 0,
Dim.AttributeOfLevel0.members * Dim.AttributeOfLevel1.members * ... * Dim.AttributeOfLeveln.members on 1
from Cube



Владимир, написала так:

select {} on 0,
[Товары].[КТТ].[Level 03].members * [Товары].[КТТ].[Level 04].members on 1
from Cube

Все равно выдает ошибку " В функции Crossjoin иерархия КТТ используется более одного раза."

Может я что-то не так поняла?
...
Рейтинг: 0 / 0
MDX табличная иерархия
    #39943884
Batty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexdr

А откуда пытающиеся Вам помочь участники форума должны догадаться что еще Вы там напропускали в коде? В том виде в котором опубликован Ваш запрос, он обычно выдает ошибку:

Query (3, 1) Axis numbers specified in a query must be sequentially specified, and cannot contain gaps.



Я не с этой ошибкой обращалась.
Запрос без повторения иерархии работает, так что давайте разберем только обозначенную ошибку, а не другие возможные (но не присутсвующие)


alexdr


SELECT
(
{}
) ON 0,
Hierarchize
(
{
[Account].[Accounts].[Account Level 01],
[Account].[Accounts].[Account Level 02],
[Account].[Accounts].[Account Level 03]
}
) ON 1
FROM [Adventure Works]


Ну, а дальше, как советовали выше можно посмотреть как формирует MDX Excel, какие MDX-функции он использует. Как отображает резульаты запроса клиентское приложение - зависит от него. MDX здесь не причем.


Эта структура запроса у меня возвращает только последний уровень иерархии, оставаясь в рамках одного столбца.

Вы советуете посмотреть как формирует MDX Excel - КАК ЭТО ПОСМОТРЕТЬ? Если бы я знала, меня бы здесь с вопросами не было.
...
Рейтинг: 0 / 0
MDX табличная иерархия
    #39943909
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Batty,

для получения запроса на стороне Excel-клиента стандартно используется VBA свойство activecell.pivottable.mdx
https://docs.microsoft.com/en-us/office/vba/api/excel.pivottable.mdx

куда его выводить уже вопрос вкуса, можно присвоить значение ячейке на том-же листе, или в immediate window
Debug.Print (ActiveCell.PivotTable.MDX)

в простейшем случае чтобы получить иерархию в плоском поколоночном виде - достаточно вместо иерархии поставить атрибуты измерения которые составляют уровни этой иерархии
(часто эти атрибуты скрыты в дереве измерения, или даже числятся там под другим именем)
хотя методология разворота в плоский вид наверное так-же зависит от типа иерархии...


data mining в базе есть?
тогда можно развернуть в плоский вид через DMX запрос и natural prediction join

если клиент не SSMS - то можно развернуть просто используя другой драйвер
...
Рейтинг: 0 / 0
MDX табличная иерархия
    #39944211
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Batty
Владимир Штепа
Batty,

если вы хотите получить это в CellSet резулбьтаье MDX запроса, то перемножьте аттрибутные иерархии, лежащие в основе уровней иерархии

Код: sql
1.
2.
3.
select {} on 0,
Dim.AttributeOfLevel0.members * Dim.AttributeOfLevel1.members * ... * Dim.AttributeOfLeveln.members on 1
from Cube



Владимир, написала так:

select {} on 0,
[Товары].[КТТ].[Level 03].members * [Товары].[КТТ].[Level 04].members on 1
from Cube

Все равно выдает ошибку " В функции Crossjoin иерархия КТТ используется более одного раза."

Может я что-то не так поняла?


Правильно выдает ошибку, так как перемножение уровней иерархии это не перемножение аттрибутных иерархий, лежащие в основе уровней иерархии.
...
Рейтинг: 0 / 0
MDX табличная иерархия
    #39944259
PassedBI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Batty, есть add-in для экселя, там можно посмотреть mdx
https://olappivottableextensions.github.io/
...
Рейтинг: 0 / 0
MDX табличная иерархия
    #39944297
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PassedBI,

Там на vba одна строчка кода...
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / MDX табличная иерархия
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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