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

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

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

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

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

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

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

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

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

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

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



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

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


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

ShIgor


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


Так расскажите как, будьте добры! Если бы я знала, как это сделать, то не спрашивала бы на форуме
...
Рейтинг: 0 / 0
04.04.2020, 13:57
    #39943840
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDX табличная иерархия
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
04.04.2020, 14:00
    #39943841
alexdr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDX табличная иерархия
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
04.04.2020, 15:41
    #39943882
Batty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDX табличная иерархия
Владимир Штепа
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
04.04.2020, 15:48
    #39943884
Batty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDX табличная иерархия
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
04.04.2020, 16:39
    #39943909
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDX табличная иерархия
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
06.04.2020, 11:08
    #39944211
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDX табличная иерархия
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
06.04.2020, 13:58
    #39944259
PassedBI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDX табличная иерархия
Batty, есть add-in для экселя, там можно посмотреть mdx
https://olappivottableextensions.github.io/
...
Рейтинг: 0 / 0
06.04.2020, 16:14
    #39944297
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDX табличная иерархия
PassedBI,

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


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