|
![]() |
#1 |
MCTS
|
Например, вот анализируется поле EnumItemValue из датасорса MSKOLAP_FactTypeView представления MSKOLAP_FactSalesView и выбирается соответвующее ему значение из Map amountMap
X++: public static server str getAmountFactType1() { #macrolib.MSKOLAP Map amountMap = new Map(Types::String, Types::String); amountMap.insert(#cLiteral(MSKOlapFactType::Qty), #cField(MSKOLAP_FactSalesAllDiscView, CustInvoiceTrans, Qty)); amountMap.insert(#cLiteral(MSKOlapFactType::Retail), MSKOLAP_FactSalesAllDiscView::amount()); amountMap.insert(#cLiteral(MSKOlapFactType::Sale), MSKOLAP_FactSalesAllDiscView::amountSales()); amountMap.insert(#cLiteral(MSKOlapFactType::Purch), MSKOLAP_FactSalesAllDiscView::amountPurch()); return #cSwitch(#cComparisonField(MSKOLAP_FactSalesView, MSKOLAP_FactTypeView, EnumItemValue), amountMap, #cLiteral(0)); } X++: #localmacro.cField SysComputedColumn::returnField(tableStr(%1), identifierStr(%2), fieldStr(%2, %3)) #endmacro #localmacro.cFieldL SysComputedColumn::returnField(tableStr(%1), identifierStr(%2), fieldStr(%3, %4)) #endmacro #localmacro.cAdd SysComputedColumn::add(%1, %2) #endmacro #localmacro.cMultiply SysComputedColumn::multiply(%1, %2) #endmacro #localmacro.cSubtract SysComputedColumn::subtract(%1, %2) #endmacro #localmacro.cLiteral SysComputedColumn::returnLiteral(%1) #endmacro #localmacro.cSwitch SysComputedColumn::switch(%1, %2, %3) #endmacro #localmacro.cComparisonField SysComputedColumn::comparisonField(tableStr(%1), identifierStr(%2), fieldStr(%2, %3)) #endmacro #localmacro.cComparisonFieldL SysComputedColumn::comparisonField(tableStr(%1), identifierStr(%2), fieldStr(%3, %4)) #endmacro #localmacro.cIf SysComputedColumn::if(%1, %2, %3) #endmacro #localmacro.cEqual SysComputedColumn::equalExpression(%1, %2) #endmacro #localmacro.cCast SysComputedColumn::cast(%1, %2) #endmacro #localmacro.isNullExpr SysComputedColumn::isNullExpression(%1) #endmacro
__________________
I could tell you, but then I would have to bill you. |
|
![]() |
#2 |
Участник
|
Благодарю!
А как в методе SysComputedColumn::returnField() правильно указать индекс поля массива в третьем параметре? Upd: Можно прописать просто строкой. Но может есть какие-то стандартные методы? Последний раз редактировалось Cardagant; 15.10.2013 в 00:05. |
|
![]() |
#3 |
MCTS
|
Точно не знаю, с полями-массивами в вычислимых полях ранее не сталкивался. А просто указать индекс в [] у названия поля не работает?
__________________
I could tell you, but then I would have to bill you. |
|
![]() |
#4 |
Участник
|
Цитата:
X++: comparisonExpressionMap.insert(SysComputedColumn::returnLiteral(WeekDays::Monday), SysComputedColumn::returnField(viewName, identifierStr(myTable), fieldStr(myTable, Results) + "[5]")); |
|
|
За это сообщение автора поблагодарили: twilight (1). |
![]() |
#5 |
Участник
|
Мне очень интересно, а как всё-таки предпочтительнее решать подобные задачи: со стороны Аксапты или всё же со стороны BIDS?
И, если я произвёл доработку кода со стороны BIDS, не будут ли потеряны мои модификации после следующего обновления проекта этого же куба с помощью средств Аксапты? Спасибо! Последний раз редактировалось Cardagant; 02.11.2013 в 21:58. |
|
![]() |
#6 |
Участник
|
Снова прошу помощи более опытных коллег!
Добавлял ли кто-то стандартным мастером в куб финансовые аналитики в Dynamics AX 2012? Не совсем понимаю результат, которые получаю, просматривая структуру куба в BIDS. После добавления следующих аналитик (рис.1) имею следующую ситуацию в BIDS (рис.2) Помимо измерений "OLAP* " я получаю ещё и некоторые измерения "Main account OLAP* ", которые ссылаются на те же измерения "OLAP* ". Не совсем понимаю в чём логика данного результата? А также некоторые из измерений, если использовать Excel как UI отображаются без каких либо идентификаторов (рис.3). В то время как, к примеру, Departments отображается красиво. Очень прошу помочь разобраться или хотя натолкнуть на верные суждения! Буду рад любым ответам, так как информацию об этом нигде не могу найти. Благодарю! |
|
![]() |
#7 |
Участник
|
Доброго времени суток!
Может кто сталкивался с работой поддержки преобразования валют, предлагаемой стандартным мастером развёртывания кубов в 2012й версии и дальше. Для развёртывания использую DAX 2012, ставлю галку добавить фрэймворк преобразования валют. 1. В книге "Inside MS Dynamics AX 2012" нашёл интересный абзац, а именно: Цитата:
Provided that you define the field-level metadata tag ExchangeRateDateField, the wizard adds the currency conversion calculation to the generated project as a multidimensional expression (MDX) script. The wizard also adds the system dimension Analysis Currency (the Currency dimension is added regardless of whether you select currency conversion). The wizard also creates an intermediate measure group called Exchange Rates By Day in each cube.
2. При добавлении измерения Analysis Currency получаю интересную наполненность этого измерения данными. А именно, Измерение не имеет членов, кроме [Local] и [Unknown] (ну и [All], естественно) (см. рисунок). Насколько я понимаю, здесь должны содержаться пересчёты валют (список доступных валютных курсов и валют к пересчёту). При этом использованные вьюхи имеют данные, если просматривать через Аксу. Чего может не хватать? Буду благодарен за любые мысли. Спасибо! |
|
![]() |
#8 |
Участник
|
Ну тады и от себя добавлю 5 копеек
![]() Небольшая наколенная модель с использованием оператора UNPIVOT: X++: -- CREATE TABLE Perfomance (EmplID varchar(20), FromDate datetime, ToDate datetime, Result int, Result2_ int, Result3_ int, Result4_ int,Result5_ int,Result6_ int, Result7_ int); GO INSERT INTO Perfomance VALUES ('Иванов','2013-10-07','2013-10-07',1,2,3,4,5,6,7); INSERT INTO Perfomance VALUES ('Иванов','2013-10-14','2013-10-20',4,5,6,7,8,9,10); INSERT INTO Perfomance VALUES ('Петров','2013-10-07','2013-10-07',2,3,4,5,6,7,8); INSERT INTO Perfomance VALUES ('Петров','2013-10-14','2013-10-20',9,8,6,7,8,9,10); GO -- Unpivot SELECT EmplID, (dateadd(DAY, CAST(DayIdx as int), FromDate) ) as TransDate, Results FROM (SELECT EmplID, FromDate, Result "0", Result2_ "1", Result3_ "2", Result4_ "3", Result5_ "4", Result6_ "5", Result7_ "6" FROM Perfomance) p UNPIVOT (Results FOR DayIdx IN ("0", "1", "2", "3", "4", "5", "6") )AS unpvt; GO |
|
|
За это сообщение автора поблагодарили: Cardagant (1). |
![]() |
#9 |
Участник
|
2Alex_K
Спасибо большое за Ваш интересный вариант! С удовольствием его попробую! |
|
Теги |
olap, ssas, кубы |
|
|