|
|
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
Я нашла, как это, в общем-то, делается: в "вычислениях" создаю Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. "иерархия заказчиков" - это условно заказчиков так в группы объединила. И это работает, если скинуть "Иерархия Заказчиков" по строкам и "деньги" Но. при построении "сводной таблицы" в excel если добавить в строки помимо "иерархии заказчиков" ещё и "люди", то для них всех будут 100%, как это побороть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 14:14 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
Nika gnome, как это побороть? Судя по всему вам нужен SCOPE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 14:53 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
А возможен ли какой-то подобный вариант написания кода? Чтобы вне зависимости от того, что будет скинуто на строки или столбцы (или другие оси), в случае нахождения иерархии, вычислялся бы итог по строкам (Rows)? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 17:53 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
a_voroninNika gnome, как это побороть? Судя по всему вам нужен SCOPE чё-то вообще в него никак не вкурю :-? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2015, 15:05 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
Nika gnomea_voroninпропущено... Судя по всему вам нужен SCOPE чё-то вообще в него никак не вкурю :-? SCOPE переопределяет значения какого-то показателя в зависимости от текущего выбора на осях. То есть например для листьев иерархии показывать одно выражение, для корня другое. Это рекомендуемый способ переопределения выражений в OLAP кубах. Так что вкуривайте. Это только на первый взгляд сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2015, 17:49 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. до-о-олго висит у меня при разворачивании и при построении "сводной таблицы" в excel :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2015, 12:03 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
Nika gnome, Код: sql 1. Как пример написания кода 9902513 . вот пример решения. А ежели по-теме : скорее всего "иерархии заказчиков" и "люди" никак не связяны между собой, поэтому и выдаёт 100%. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2015, 12:35 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
RioMareА ежели по-теме : скорее всего "иерархии заказчиков" и "люди" никак не связяны между собой, поэтому и выдаёт 100%. Они связаны многие ко многим. Там такая ситуация: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. и т.д. Т.е. это список каких-то заказчиков (организаций и частных лиц) А ещё есть отдельная таблица из людей (сотрудников), которые работают с этими клиентами Код: sql 1. 2. 3. Соответственно, есть два справочника (с клиентами и с "людьми"), и третья - связывает их многие-ко-многим ID клиента ID людака деньги дата4 1 1000 11.01.20155 1 1200 17.03.20154 2 1500 15.05.2015... ......... да, поэтому, логично, выдаёт 100% - с этим я не спорю. Но хочется "поменять правила". То есть, если сделать такой запрос, который выдаст Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. (из результатов игнорирую все те значения, где "клиент" == "All", чтобы не подводить итоги по каждому человеку) и добавить к нему второй столбец "Процент от итога", который я наваяла в предыдущем посте, то он выдаст нужные проценты для иерархии, а напротив фамилий сотрудников выдаст значение "100%", поскольку у меня так записан запрос "CREATE MEMBER CURRENTCUBE.[Measures].[Процент от итога]". Логично. Что требуется: В предыдущем моём посте я пыталась подменить значения меры "Процент от итога" так, чтобы для клиентов он выдавал бы всё те же значения, что и раньше, а вот для людей он бы выдавал (для начала) что-нибудь другое. А в идеале - долю от клиента, в котором он записан. p.s. да, со ссылками я сейчас ознакомлюсь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2015, 14:55 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
Nika gnome Код: sql 1. 2. 3. 4. 5. 6. 7. 8. до-о-олго висит у меня при разворачивании и при построении "сводной таблицы" в excel :-( надо не if ([Сотрудники].[Контактное лицо].CurrentMember <> [Сотрудники].[Контактное лицо].[All]) then А SCOPE([Сотрудники].[Контактное лицо].[All]) одно выражение А SCOPE([Сотрудники].[Контактное лицо].[All].Children) другое выражение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2015, 14:57 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
RioMareNika gnome, Код: sql 1. Как пример написания кода 9902513 . вот пример решения. А ежели по-теме : скорее всего "иерархии заказчиков" и "люди" никак не связяны между собой, поэтому и выдаёт 100%. Почитала программу по первой ссылке - прямо то, что надо! НО не работает StrToMember. Вот так работает Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. А вот так - уже не работает (в excel выдаёт для всех значений #ЗНАЧ! ) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. В MSDN строки в апострофы берутся, а в примере по вашей ссылке - в кавычках. И так, и иначе пробовала. Всегда ошибка "#ЗНАЧ!". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2015, 16:59 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
Nika gnomeне работает StrToMember. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. если не секрет откуда такая уверенность ? А по-моему StrToMember как раз работает, только .Currentmember вы берёте от того, что возвращает StrToMember, т.е. от члена измерения, а не от иерархии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2015, 21:13 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
RioMareNika gnomeне работает StrToMember. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. если не секрет откуда такая уверенность ? А по-моему StrToMember как раз работает, только .Currentmember вы берёте от того, что возвращает StrToMember, т.е. от члена измерения, а не от иерархии. ну, ошибочка вышла... так вот всё равно не работает Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. [/quote] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2015, 10:02 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
Nika gnome, Вот пример на Adventure Works ( у меня работает ) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2015, 10:55 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
Nika gnome, Если не серет - в чём глубокий смысл упражнений с StrToMember ? Как пример решения я привёл немного другой пример. :) И ещё ( как мне кажется ) у вас немного не корректно построена factless table M2M третья - связывает их многие-ко-многим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2015, 11:44 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
всё понятно... туплю.... При построении отчёта OLAP в сводной таблице excel я скидываю Код: sql 1. в строки, думая, что "строки" - это "rows", а следовательно, ось номер 1 (ведь Columns - это axis(0), значит, Rows - axis(1)). Но при этом ничего не скидываю в столбцы (даты там обычно стоят). А excel отправляет MDX запрос на сервер Код: sql 1. - но отображает их, как и просил пользователь, в строках. Соответственно, Оси Axis(1) просто тупо не существует, пока я даты не скину. Короче Приведённые мной выше примеры всё-таки работают - автоматически определяют, какая иерархия в строках и успешно анализируют её. НО если я в строки скину, помимо клиентов, людей (в сообщении 17815809 чуть выше - я описала, как я хочу) - то он определяет только первую иерархию, а для "людей" по-прежднему ставит 100%. И до сих пор не знаю, как сделать так, чтобы для каждого человека просчитывался свой процент, если брать клиента, которому он совместно со своими коллегками что-то сделал, за 100%. Пытаюсь разобраться с другой ссылкой, которую вы мне скинули, но... можно как-то всё решить одним только MDX-ом? Либо привязывая новый MEMBER к "строкам", либо привязывая новый MEMBER конкретно к клиентам+людям ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2015, 12:08 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
Nika gnomeвсё понятно... туплю.... При построении отчёта OLAP в сводной таблице excel я скидываю Код: sql 1. в строки, думая, что "строки" - это "rows", а следовательно, ось номер 1 (ведь Columns - это axis(0), значит, Rows - axis(1)). Но при этом ничего не скидываю в столбцы (даты там обычно стоят). А excel отправляет MDX запрос на сервер Код: sql 1. - но отображает их, как и просил пользователь, в строках. Соответственно, Оси Axis(1) просто тупо не существует, пока я даты не скину. Короче Приведённые мной выше примеры всё-таки работают - автоматически определяют, какая иерархия в строках и успешно анализируют её. НО если я в строки скину, помимо клиентов, людей (в сообщении 17815809 чуть выше - я описала, как я хочу) - то он определяет только первую иерархию, а для "людей" по-прежднему ставит 100%. И до сих пор не знаю, как сделать так, чтобы для каждого человека просчитывался свой процент, если брать клиента, которому он совместно со своими коллегками что-то сделал, за 100%. Пытаюсь разобраться с другой ссылкой, которую вы мне скинули, но... можно как-то всё решить одним только MDX-ом? Либо привязывая новый MEMBER к "строкам", либо привязывая новый MEMBER конкретно к клиентам+людям если у вас люди -- это отдельное измерение, то никакой Parent тут работать не будет. Он считает процент человека от самого себя. т.е 100% . Вы можете всю иерархию собрать внутри одного измерения? Вы упорно не хотите изучить SCOPE, между тем он позволяет делать очень крутые вещь. Вы можете написать вот так и это будет работать в ситуации, когда выбран конкретный заказчик и конкретное контакное лицо. Код: sql 1. 2. 3. 4. 5. 6. 7. А можете написать вот так, и это будет означать ситуацию, когда выбран заказчик, а контакное лицо не выбрано, например в итоге. Код: sql 1. 2. 3. 4. 5. 6. 7. Вам не придётся думать о том, что попало на ROWS, а что на COLUMS, потому что SCOPE-у всё равно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2015, 14:24 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
Также this = this / 2 возможно не стаботает Я обычно делаю так Сначала делаю [Measures].[Процент от итога Скрытый], который является физическим показателем, потом объявляю вычисляемый [Measures].[Процент от итога] и пишу Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2015, 14:30 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
я с 16 июня, когда мне посоветовали SCOPE, много раз к нему возвращалась, пытаясь его понять, когда не получалось, искала вариант чтения иерархии со строки. Но не сколько часов назад поняла, что без него нельзя вообще никак, других вариантов нет. Но scope как-то плохо входит в моё сознание. Непрерывно ищу и читаю различную литературу на эту тему и временами экспериментирую. чувствую себя очень тупой :'( Вот, например, Код: sql 1. 2. 3. 4. 5. 6. 7. Работает нереально долго и выдаёт нереальное количество лишних данных. По задумке, он должен был напротив фамилий контактных лиц писать "4", а во всех остальных строках (напротив заказчиков) писать процент из поля "процент от итога". Но в итоге он везде пишет проценты (соответственно, напротив людей значится 100%), а вот в случае, если он в дереве натыкается на заказчика в Level=2 (т.е. child от All), то там у него он начинает перечислять вообще всех людей, кто только есть в базе, и напротив писать 4. Я понимаю, почему у него такая реакция. Но не понимаю, как добиться желаемого. Т.е. 1. Как узнать, является ли заказчик "листовым" в дереве заказчиков? И применять SCOPE только к нему. 2. Содержит ли контактное лицо какие-то данные по этому заказичку? Если нет, то игнорить, если да, то влепить ему 4. (тут я ещё могу разобраться) А вообще, я потихоньку начинаю доходить, что это и с чем едят)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2015, 17:13 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
Nika gnomeя с 16 июня, когда мне посоветовали SCOPE, много раз к нему возвращалась, пытаясь его понять, когда не получалось, искала вариант чтения иерархии со строки. Но не сколько часов назад поняла, что без него нельзя вообще никак, других вариантов нет. Но scope как-то плохо входит в моё сознание. Непрерывно ищу и читаю различную литературу на эту тему и временами экспериментирую. чувствую себя очень тупой :'( Вот, например, Код: sql 1. 2. 3. 4. 5. 6. 7. Работает нереально долго и выдаёт нереальное количество лишних данных. По задумке, он должен был напротив фамилий контактных лиц писать "4", а во всех остальных строках (напротив заказчиков) писать процент из поля "процент от итога". Но в итоге он везде пишет проценты (соответственно, напротив людей значится 100%), а вот в случае, если он в дереве натыкается на заказчика в Level=2 (т.е. child от All), то там у него он начинает перечислять вообще всех людей, кто только есть в базе, и напротив писать 4. Я понимаю, почему у него такая реакция. Но не понимаю, как добиться желаемого. Т.е. 1. Как узнать, является ли заказчик "листовым" в дереве заказчиков? И применять SCOPE только к нему. 2. Содержит ли контактное лицо какие-то данные по этому заказичку? Если нет, то игнорить, если да, то влепить ему 4. (тут я ещё могу разобраться) А вообще, я потихоньку начинаю доходить, что это и с чем едят)))) Вы знаете, я в своё время тоже не с первого раза въехал, что это такое. Почему работает долго -- вполне очевидно. Вы поставили константу в качестве значения, в результате перестали исключаться пустые ячейки. Далее вы зачем упорно переставляете "scope([Measures].[Процент от итога]);" в начало списка. Вы что пытаетесь переопределить? На что указывает THIS? Я вам как написал ? Код: sql 1. 2. 3. 4. 5. This это текущий подкуб. Вы говорите, что внутри данного SCOPE(...) этот THIS, то есть [Measures].[Процент от итога] последний SCOPE!!!, должен иметь значение [Measures].[Процент от итога Скрытый] /2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2015, 17:51 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
yyeeaaaHAHAHAHAHA Я разобралась!! Заработало. Спасибо всем, кто принял участие в обсуждении, особенно, a_voronin! Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Правда, мелочь осталась - не форматирует как процент. Ну это ща разберусь, наверно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2015, 17:52 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
Можно вот так писать Код: sql 1. 2. 3. 4. 5. 6. Но последним стоит то, что вы переопределяете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2015, 17:53 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
по-моему всё гораздо проще ( если я правильно понял вашу задачу ) 1. Сделайте физическую null-based меру [Measures].[Процент от итога 4 Excel] в той же самой группе мер, что и [Measures].[Процент от итога] и поставьте ей тип аггрегации SUM 2. Дальше как тут советовали Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. зачем вам *.all.children ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2015, 18:04 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
RioMare зачем вам *.all.children ? По определению Код: sql 1. 2. 3. А как записать Subcube_Expression каждый решает сам. Вариантов много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2015, 18:07 |
|
||
|
Как посчитать долю от родителя?
|
|||
|---|---|---|---|
|
#18+
Nika gnomeПравда, мелочь осталась - не форматирует как процент. Ну это ща разберусь, наверно. Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2015, 18:19 |
|
||
|
|

start [/forum/topic.php?fid=49&fpage=34&tid=1858362]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
110ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 430ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...