|  01.03.2007, 14:47 | #21 | 
| Участник | 
			
			DTS настроить
		 | 
|  | 
|  01.03.2007, 15:33 | #22 | 
| Участник | Цитата: Категорически рекомендую создать в аксе хотя бы одну View с фильтром по компании и каким-нибудь именем, эту компанию идентифицирующим. А в кубе и измерениях настроить связи по dataareaid. Правда и в таком случае есть одна тонкость - при синхронизации связи по dataareaid во View не переносятся, поэтому, если в ней несколько датасорсов, придется настраивать Range для каждого. | 
|  | 
|  01.03.2007, 15:47 | #23 | 
| Member | 
			
			Я вообще предпочитаю и рекомендую под таблицу фактов и под измерения вьюхи делать. Не то, чтобы это принципиально, но работать и искать ошибки проще. И вероятность возникновения такой ситуации существенно снижается.
		 
				__________________ С уважением, glibs® | 
|  | 
|  02.03.2007, 10:29 | #24 | 
| MCTS | 
			
			И правда... уперлись в момент, который не решается на данном уровне... Будем ваять вьюхи... 
				__________________ farlander.ru | 
|  | 
|  05.03.2007, 11:05 | #25 | 
| MCTS | 
			
			С помощью вьюхи такое же точно задвоение происходит!
		 
				__________________ farlander.ru | 
|  | 
|  05.03.2007, 11:53 | #26 | 
| MCTS | 
			
			Получается чтоли нерешимая задача использовать несколько измерений?! Когда смотрим представление одного измерения ссумируются строки по другому... то есть мера умножается в количество значений второго измерения... 
				__________________ farlander.ru | 
|  | 
|  05.03.2007, 12:45 | #27 | 
| Member | 
			
			Боюсь, что просто что-то вы не так настраиваете.
		 
				__________________ С уважением, glibs® | 
|  | 
|  05.03.2007, 12:58 | #28 | 
| MCTS | ! 
			
			Тогда приведу пример. Таблицы RPayTrans и RPayEmplTblSum связаны по EmplId и PayPeriod. Например, возьмем измерения RPayTrans.PayCtype и RPayEmplTblSum.TimeCode. Меры возьмем RPayTrans.Amount и RPayEmplTblSum.DayFact В представлении TimeCode и DayFact получим одну строку, у которой мера будет включать СУММУ строк, равное количеству PayCtype при данном EmplId и PayPeriod. То есть если в этом периоде у этого человека есть 2 разных PayCtype, то сумма задвоится. Думаю надо применить mdx-формулу: отношение меры к количеству отфильтрованных строк... подскажет кто-нить такой код? 
				__________________ farlander.ru Последний раз редактировалось farlander; 05.03.2007 в 13:19. | 
|  | 
|  05.03.2007, 13:49 | #29 | 
| злыдень | Цитата: 
		
			Сообщение от farlander
			   Тогда приведу пример. Таблицы RPayTrans и RPayEmplTblSum связаны по EmplId и PayPeriod. Например, возьмем измерения RPayTrans.PayCtype и RPayEmplTblSum.TimeCode. Меры возьмем RPayTrans.Amount и RPayEmplTblSum.DayFact В представлении TimeCode и DayFact получим одну строку, у которой мера будет включать СУММУ строк, равное количеству PayCtype при данном EmplId и PayPeriod. То есть если в этом периоде у этого человека есть 2 разных PayCtype, то сумма задвоится. Думаю надо применить mdx-формулу: отношение меры к количеству отфильтрованных строк... подскажет кто-нить такой код? Если вы хотите получить сумму деленное на количество (некое среднее) то можно сделать например так SUM(Amount ) / Count(PayCtype) Если же Вам нужно делить на количество именно уникальных значений то вместо Count(PayCtype) можно попробовать DistinctCount(PayCtype) Тип агрегации (Sum, Count, DistinctCount и т.п.) Задаются в свойствах мер. Произвести требуемые вычисления можно как на стороне эскуэль так и непосредственно в кубе (заведя соответствующие меры и калькулируюмую меру сум/каунт). Если же непременно хочется через какой ть хитрый MDX поизвращаться попробуйте покурить функцию Avg 
				__________________ Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ Последний раз редактировалось Recoilme; 05.03.2007 в 13:58. | 
|  | 
|  05.03.2007, 14:12 | #30 | 
| Member | 
			
			Я не понял. Что за свинство? В чем заключалось бросание мною тени на свет ОЛАП технологий? Прошу аргументированно обосновать ваш наезд. 
				__________________ С уважением, glibs® | 
|  | 
|  05.03.2007, 14:23 | #31 | 
| злыдень | 
			
			я пошутил)
		 
				__________________ Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ | 
|  | 
|  05.03.2007, 15:22 | #32 | 
| MCTS | 
			
			Не знаю будет ли понятнее, но проблема аналогична этой http://www.olap.ru/iservices/message...6&topicId=9172 Только таблиц фактов 4, а измерений около 12, причем таких, что в общем итоге испльзуется около 10 таблиц... 
				__________________ farlander.ru | 
|  | 
|  05.03.2007, 15:55 | #33 | 
| злыдень | Цитата: 
		
			Сообщение от farlander
			   Не знаю будет ли понятнее, но проблема аналогична этой http://www.olap.ru/iservices/message...6&topicId=9172 Только таблиц фактов 4, а измерений около 12, причем таких, что в общем итоге испльзуется около 10 таблиц... Либо на уровне хранилища приводить к единой гранулярности. Подзапросом вытащить кол пунктов для клиента и поделить на него сумму оплаты, примерно так: select data, KodClient, ((Select sum(sumOpl) from оплаты where data=otgr.data and KodClient=otgr.KodClient) / (select count(KodPunkt) from отгрузки where data=otgr.data and KodClient=otgr.KodClient)) as oplbypunkt, sumOtgr from отгрузки otgr 
				__________________ Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ Последний раз редактировалось Recoilme; 05.03.2007 в 16:01. | 
|  | 
|  06.03.2007, 07:09 | #34 | 
| MCTS | 
			
			Я так и сделал... поместил 4 куба в виртуальный... НО хоть и меры в них были в таблице фактов - некоторые измерения были в других таблицах... и задвоение вылазило уже ДО объединения в виртуальный... Второй совет оппробую... я про это и спрашивал... только еще необходимо убедиться, что средняя будет правильным значением... очевидно, что не для всех комбинаций это верно :-/ 
				__________________ farlander.ru | 
|  | 
|  09.03.2007, 12:12 | #35 | 
| MCTS | 
			
			ОК... попробуем другим образом... Есть 3-4 таблицы фактов... у каждой свое временное измерение из своей таблицы... Как в виртуальном кубе, их объединяющем, создать общее для всех мер временное измерение... 
				__________________ farlander.ru | 
|  | 
|  09.03.2007, 12:59 | #36 | 
| злыдень | 
			
			Создать общее для всех таблиц фактов временнОе измерение. Определить его как shared dimension. Заджойнить его к каждой таблице фактов и в дальнейшем использовать его. Я в своих проектах создал пару таблиц для финансового и физического временнОго измерения. Заполняю его единожды при помощи следующего job: X++: #static void AxOlap_CreateObjects(Args _args) #{ #AX_DATA_FIN datafin; #AX_DATA_PH dataph; #date datestart=01\01\2000; #date dateend=31\12\2009; #int i; #DictEnum dictEnum; #ENUM_INVENT_DIRECTION enum_inventdirection; #ENUM_INVENTTRANSTYPE enum_inventtranstype; #; #/* #//Fin date #datafin.skipTTSCheck(1); #delete_from datafin; #datafin.DATA = 01\01\1900; #datafin.insert(); #for (i=0;i<=64536;i++) #{ # datafin.DATA = datestart+i; # datafin.SUMDAY = 1; # datafin.insert(); # if (datafin.DATA == dateend) break; #} #//Phiz date #dataph.skipTTSCheck(1); #delete_from dataph; #dataph.DATA = 01\01\1900; #dataph.insert(); #for (i=0;i<=64536;i++) #{ # dataph.DATA = datestart+i; # dataph.SUMDAY = 1; # dataph.insert(); # if (dataph.DATA == dateend) break; #} #*/ #//Base enums 
				__________________ Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ | 
|  | |
| За это сообщение автора поблагодарили: farlander (1). | |
|  09.03.2007, 15:06 | #37 | 
| Участник | Цитата: Правда, для её использования нужна лицензия на бизнес-анализ   | 
|  | 
|  09.03.2007, 18:01 | #38 | 
| злыдень | Цитата: 
		
			Сообщение от Alex_K
			   Кстати, создавать ничего и не нужно. В Аксе есть замечательная табличка OLAPTimeByDate, предназначенная именно для создания общего временнОго измерения для всех компаний. Заполняется автоматически при указании диапазона лет в форме Параметры OLAP (Основное / Настройки / Бизнес-анализ / Параметры OLAP) Правда, для её использования нужна лицензия на бизнес-анализ  Интересно создает ли данная функциональность "пустую" дату (01.01.1900) независимо от указанного диапазона? Не случится ли так что все проводки с "Нет даты" будут торжественно потеряны при использовании временнОй таблицы созданной данным методом ? (Конечно если не догадаться создать период от начала времен (с 1900 года) по наше время,про удобство работы с такой таблицей уж молчу) 
				__________________ Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ | 
|  | 
|  09.03.2007, 19:23 | #39 | 
| Участник | 
			
			Ну, сама она не создает. А кто мешает добавить её кусочком приведенного выше джоба? У неё есть еще одна полезная особенность - там не только даты, но и названия дней недели, месяцев и кварталов на разных языках, что, на мой взгляд, совсем не бесполезно... Последний раз редактировалось Alex_K; 09.03.2007 в 19:26. | 
|  | |
| За это сообщение автора поблагодарили: farlander (1). | |
|  12.03.2007, 12:58 | #40 | 
| Участник | 
			
			Кстати, сильно рекомендую книжку: http://www.books.ru/shop/books/490547 Может помочь в разрешении многих вопросов, в т.ч. заданных в этой ветке. | 
|  |