|
MDX. Обращение по порядковому номеру в иерархии
|
|||
---|---|---|---|
#18+
Всем доброго времени суток. Имеется измерение с иерархией атрибутов, всего два уровня. На первом уровне может быть переменное количество значений, на нижнем - тоже. Например: id, subpart, part id уникально идентифицирует subpart id - ключ измерения. Сортировка атрибута subpart осуществляется по наименованию. Есть пары веток первого уровня этой иерархии (partX-partY), которые взаимосвязаны и количество и порядок элементов второго уровня у них одинаковый, элементы могут различаться наименованием (суффиксом). При последовательном перечислении subpart ([Измерение].[Subpart].children) необходимо обратиться к соответствующей ветке иерархии по порядковому индексу: [Измерение].[Part].[{current subpart index}] Изначально было реализовано по следующему принципу (упрощено): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Проблемы возникают, когда наименования subpart различаются. Порядок следования на уровне part может меняться. Изменить состав атрибутов измерения невозможно. Дело в том, что management studio для таких ячеек выводит NULL, а в Excel выводится "#ЗНАЧ!". Не понимаю, почему Excel так себя ведет. Поэтому пытаюсь реализовать обращение по порядковому номеру. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2020, 00:27 |
|
MDX. Обращение по порядковому номеру в иерархии
|
|||
---|---|---|---|
#18+
IlyamI, Cousin ? наверное ещё можно Ordinal / CurrentOrdinal прикруть (и вставлять через Item) если на кактус с Rank лезть - то очень затратно/медленно получится на тяжелых измерениях. Кстати - в логику вычисления (меры ?) ведь проверку можно вставить тоже без проблем, и выводить пустое значение вместо null чтобы интерфейс доволен был ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2020, 02:15 |
|
MDX. Обращение по порядковому номеру в иерархии
|
|||
---|---|---|---|
#18+
п.с. В некоторых случаях (когда именно эта функциональность критична) правильней такие переходы навигации по суррогатному ключу (атрибута) делать (на которые текстовые наименования привязаны) тогда от таких несовпадений получится избавится. естественно всю систему пересобирать придётся. а ещё можно и позицию найти через count (т.е. посчитать сколько элементов в наборе null:currentmember) и на основании этого делать Item() {-1} из соответствующего набора в нужном месте другого уровня иерархии по необходимости разбавив LinkMember (для перехода между корневым атрибутом и его клоном в иерархии) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2020, 05:47 |
|
|
start [/forum/topic.php?fid=49&fpage=6&tid=1857226]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 278ms |
total: | 388ms |
0 / 0 |