AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Функционал
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.03.2007, 14:47   #21  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
DTS настроить
Старый 01.03.2007, 15:33   #22  
Alex_K is offline
Alex_K
Участник
 
531 / 36 (3) +++
Регистрация: 07.02.2003
Цитата:
Сообщение от farlander Посмотреть сообщение
Извиняйте мэтры 8)
Действительно затесалась еще одна компания... да еще и с такими же данными... странно, что фильтр на измерениях и кубе не отрабатывался :-/
В кубе и измерениях стоит фильтр dbo.таблица.dataareaid = 'компания'
А вот это лишнее... Мало того, что этот фильтр не видно во время строительства кубика, так ещё и в дальнейшем о нем помнить надо.

Категорически рекомендую создать в аксе хотя бы одну View с фильтром по компании и каким-нибудь именем, эту компанию идентифицирующим. А в кубе и измерениях настроить связи по dataareaid.

Правда и в таком случае есть одна тонкость - при синхронизации связи по dataareaid во View не переносятся, поэтому, если в ней несколько датасорсов, придется настраивать Range для каждого.
Старый 01.03.2007, 15:47   #23  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Я вообще предпочитаю и рекомендую под таблицу фактов и под измерения вьюхи делать. Не то, чтобы это принципиально, но работать и искать ошибки проще. И вероятность возникновения такой ситуации существенно снижается.
__________________
С уважением,
glibs®
Старый 02.03.2007, 10:29   #24  
farlander is offline
farlander
MCTS
Аватар для farlander
MCBMSS
Ex AND Project
 
282 / 27 (1) +++
Регистрация: 27.10.2006
Адрес: Россия
И правда... уперлись в момент, который не решается на данном уровне...
Будем ваять вьюхи...
__________________
farlander.ru
Старый 05.03.2007, 11:05   #25  
farlander is offline
farlander
MCTS
Аватар для farlander
MCBMSS
Ex AND Project
 
282 / 27 (1) +++
Регистрация: 27.10.2006
Адрес: Россия
С помощью вьюхи такое же точно задвоение происходит!
__________________
farlander.ru
Старый 05.03.2007, 11:53   #26  
farlander is offline
farlander
MCTS
Аватар для farlander
MCBMSS
Ex AND Project
 
282 / 27 (1) +++
Регистрация: 27.10.2006
Адрес: Россия
Получается чтоли нерешимая задача использовать несколько измерений?!
Когда смотрим представление одного измерения ссумируются строки по другому... то есть мера умножается в количество значений второго измерения...
__________________
farlander.ru
Старый 05.03.2007, 12:45   #27  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Боюсь, что просто что-то вы не так настраиваете.
__________________
С уважением,
glibs®
Старый 05.03.2007, 12:58   #28  
farlander is offline
farlander
MCTS
Аватар для farlander
MCBMSS
Ex AND Project
 
282 / 27 (1) +++
Регистрация: 27.10.2006
Адрес: Россия
!
Тогда приведу пример.
Таблицы 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  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Сообщение от farlander Посмотреть сообщение
Тогда приведу пример.
Таблицы RPayTrans и RPayEmplTblSum связаны по EmplId и PayPeriod.
Например, возьмем измерения RPayTrans.PayCtype и RPayEmplTblSum.TimeCode.
Меры возьмем RPayTrans.Amount и RPayEmplTblSum.DayFact
В представлении TimeCode и DayFact получим одну строку, у которой мера будет включать СУММУ строк, равное количеству PayCtype при данном EmplId и PayPeriod. То есть если в этом периоде у этого человека есть 2 разных PayCtype, то сумма задвоится.

Думаю надо применить mdx-формулу: отношение меры к количеству отфильтрованных строк... подскажет кто-нить такой код?
У меня в базе нет таблицы RPayEmplTblSum и соответсвенно я не знаю как она м.б. связана с RPayTrans что Вы хотите получить и не помню модуль зп и вообще честно говоря не понял ничего из того что Вы написали и почему она должна "незадвоится")) Но так как glibs в соседнем топике бросил тень на свет ОЛАП технологий)), попробую угадать:

Если вы хотите получить сумму деленное на количество (некое среднее) то можно сделать например так 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  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от Recoilme Посмотреть сообщение
...
Но так как glibs в соседнем топике бросил тень на свет ОЛАП технологий))
...
Я не понял. Что за свинство?

В чем заключалось бросание мною тени на свет ОЛАП технологий?

Прошу аргументированно обосновать ваш наезд.
__________________
С уважением,
glibs®
Старый 05.03.2007, 14:23   #31  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
я пошутил)
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Старый 05.03.2007, 15:22   #32  
farlander is offline
farlander
MCTS
Аватар для farlander
MCBMSS
Ex AND Project
 
282 / 27 (1) +++
Регистрация: 27.10.2006
Адрес: Россия
Не знаю будет ли понятнее, но проблема аналогична этой http://www.olap.ru/iservices/message...6&topicId=9172
Только таблиц фактов 4, а измерений около 12, причем таких, что в общем итоге испльзуется около 10 таблиц...
__________________
farlander.ru
Старый 05.03.2007, 15:55   #33  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Сообщение от 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  
farlander is offline
farlander
MCTS
Аватар для farlander
MCBMSS
Ex AND Project
 
282 / 27 (1) +++
Регистрация: 27.10.2006
Адрес: Россия
Я так и сделал... поместил 4 куба в виртуальный... НО хоть и меры в них были в таблице фактов - некоторые измерения были в других таблицах... и задвоение вылазило уже ДО объединения в виртуальный...
Второй совет оппробую... я про это и спрашивал... только еще необходимо убедиться, что средняя будет правильным значением... очевидно, что не для всех комбинаций это верно :-/
__________________
farlander.ru
Старый 09.03.2007, 12:12   #35  
farlander is offline
farlander
MCTS
Аватар для farlander
MCBMSS
Ex AND Project
 
282 / 27 (1) +++
Регистрация: 27.10.2006
Адрес: Россия
ОК... попробуем другим образом...
Есть 3-4 таблицы фактов... у каждой свое временное измерение из своей таблицы...
Как в виртуальном кубе, их объединяющем, создать общее для всех мер временное измерение...
__________________
farlander.ru
Старый 09.03.2007, 12:59   #36  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Создать общее для всех таблиц фактов временнОе измерение. Определить его как 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  
Alex_K is offline
Alex_K
Участник
 
531 / 36 (3) +++
Регистрация: 07.02.2003
Цитата:
Сообщение от Recoilme Посмотреть сообщение
Я в своих проектах создал пару таблиц для финансового и физического временнОго измерения. Заполняю его единожды ...
Кстати, создавать ничего и не нужно. В Аксе есть замечательная табличка OLAPTimeByDate, предназначенная именно для создания общего временнОго измерения для всех компаний. Заполняется автоматически при указании диапазона лет в форме Параметры OLAP (Основное / Настройки / Бизнес-анализ / Параметры OLAP)

Правда, для её использования нужна лицензия на бизнес-анализ
Старый 09.03.2007, 18:01   #38  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Сообщение от Alex_K Посмотреть сообщение
Кстати, создавать ничего и не нужно. В Аксе есть замечательная табличка OLAPTimeByDate, предназначенная именно для создания общего временнОго измерения для всех компаний. Заполняется автоматически при указании диапазона лет в форме Параметры OLAP (Основное / Настройки / Бизнес-анализ / Параметры OLAP)

Правда, для её использования нужна лицензия на бизнес-анализ
Да бог с ней с лицензией)
Интересно создает ли данная функциональность "пустую" дату (01.01.1900) независимо от указанного диапазона?
Не случится ли так что все проводки с "Нет даты" будут торжественно потеряны при использовании временнОй таблицы созданной данным методом ?
(Конечно если не догадаться создать период от начала времен (с 1900 года) по наше время,про удобство работы с такой таблицей уж молчу)
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Старый 09.03.2007, 19:23   #39  
Alex_K is offline
Alex_K
Участник
 
531 / 36 (3) +++
Регистрация: 07.02.2003
Ну, сама она не создает. А кто мешает добавить её кусочком приведенного выше джоба?

У неё есть еще одна полезная особенность - там не только даты, но и названия дней недели, месяцев и кварталов на разных языках, что, на мой взгляд, совсем не бесполезно...

Последний раз редактировалось Alex_K; 09.03.2007 в 19:26.
За это сообщение автора поблагодарили: farlander (1).
Старый 12.03.2007, 12:58   #40  
Alex_K is offline
Alex_K
Участник
 
531 / 36 (3) +++
Регистрация: 07.02.2003
Кстати, сильно рекомендую книжку:
http://www.books.ru/shop/books/490547

Может помочь в разрешении многих вопросов, в т.ч. заданных в этой ветке.
Теги
olap

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX UK: Repairing the AX 2009 OLAP Cubes where License/Config keys are switched off Blog bot DAX Blogs 0 03.12.2008 19:05
Почему не могут зайти пользователи Excel 2003 на OLAP 2005? mazzy DAX: Администрирование 4 30.08.2007 10:35
ALEG: Olap. Что нам стоит куб настроить Blog bot DAX Blogs 4 05.12.2006 17:16
Опять про OLAP и Enum mit DAX: Программирование 6 05.04.2004 11:06
Проблема с подключением к OLAP серверу Andrew Besedin DAX: Администрирование 0 20.03.2002 12:06

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:48.