|
Calc cells .Pomogite!!!!
|
|||
---|---|---|---|
#18+
Dobroe utro.kak dela?Rada chto mne otvetili.Spacibo vam. I have a problem.To simplify the problem first i DESIRE to understand following: For example ----------------------------------------------------------------------------- My cube based on 2 dims "dim1" , "dim2" and has 1 measure "meas1" "meas1" do not has value at any point ( such as "[dim1].[base1] , [dim2].[base2]" "[dim1].[par1] , [dim2].[par2]" "[dim1].[par11] , [dim2].[par22]" ) UNARY_OPERATOR="+" for all members [dim1].[base1].parent is [dim1].[par1] [dim1].[par1].parent is [dim1].[par11] [dim2].[base2].parent is [dim2].[par2] [dim2].[par2].parent is [dim2].[par22] Cube also has calculation cell "cc1". "cc1" has CalculationSubcube "{[Measures].[meas1]},{[dim1].[base1]} , {[dim2].[base2]}" and empty CalculationCondition. "cc1" has CalculationValue ="1" ( it put 1 - - so simple) Solve_order=0,Pass=1,Disabled=False ( "cc1" has defaults at Solve_order , Pass,Disabled and so on) i understand that ------------------------------------------------------------------ "cc1" put value 1 at "{[Measures].[meas1]},{[dim1].[base1]} , {[dim2].[base2]}" the QUESTION is ------------------------------------------------------------------------ at non-base members as "{[Measures].[meas1]},{[dim1].[par1]}, {[dim2].[par2]}" i also get 1 , if it is OK ????? i think - OK. i think it is OK , cause also at additional pass in it executed "cc1" base points aggregated into its parents as them was aggregated at pass0. I have discussion with my colleage .He said that it is not according to theory. If i am right then i have 2-nd QUESTION Suppose my cube have additional calc cell "cc2" placed after "cc1". "cc2" description: "cc2" has CalculationSubcube "{[Measures].[meas1]}" and empty CalculationCondition. "cc2" has CalculationValue ="0.1" ( it put 0.1 ) Solve_order=0,Pass=1,Disabled=False ( "cc2" has defaults at Solve_order , Pass,Disabled and so on) And now when "cc1" and "cc2" are enabled At non-base members (such as "{[Measures].[meas1]},{[dim1].[par1]}, {[dim2].[par2]}" ) i get value 0.1. If it is OK? Why it is occured? The reason is that now at non-base point defined "cc2" , if it right? the 2-nd QUESTION is How i can ensure that non-base members will have value 1 (value of "cc1") without changing CalcSubcube && CalcCondition of "cc2" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2003, 12:58 |
|
Calc cells .Pomogite!!!!
|
|||
---|---|---|---|
#18+
Vse ochen klassno. The question is. Calc cell put 5 at it`s subcube point . This value (5) is aggregated at the parent of subcube .If it is ok ? Thanks , Alla. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2003, 18:32 |
|
Calc cells .Pomogite!!!!
|
|||
---|---|---|---|
#18+
Alla I\'m in trouble with your English. Moreover sometimes I can\'t understand your Russian too. So let\'s stick to Analysis Services terms regardless of spoken language. \r \r Q1. Are base1 and base2 (leafs?) the only childs of their respective parents? Or maybe their siblings are 0. Then of course par1 and par2 equal 1, otherwise this behavior is abnormal. \r \r Q2. Strange. Given the same solve order (0) and calc pass (1) for both you should get result of meas1 aggregation function in par1 and par2. Let\'s take Foodmart 2000, Sales cube. Let cc1 subcube be {Measures.[Store Sales]}, {Store.Seattle}, {Time.[1997].[Q4].[12]}, cc2 - {Measures.[Store Sales]}. You see that Store.WA (parent of Seattle) contains 1.6 (1 for Seattle and 0.1 for the rest 6 towns in Washington), Q4 contains 1.2 (1 for December and 0.1 for November and October) and so on.\r \r Q2. (Another one. Sorry but you have 2 different second questions :))\r To my mind the most reliable way is to create 3rd calculation for them with certainly higher calc pass number.\r \r PS. For additional info pls refer to content of the recently held sql.ru seminar (/topic/17779&pg=2), ppt called "Пользовательские вычисления в кубах Analysis Services"\r \r PPS. You miss \'d\' in my name. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2003, 20:35 |
|
Calc cells .Pomogite!!!!
|
|||
---|---|---|---|
#18+
Алла, попробую обяснить почему вы правы, а не коллега:) Q1: Будем исходить из того, что на каждом уровне находится только один мембер. На каждом calculation pass происходит вычисление calculated cell. Для самого нижнего уровня ([dim1].[base1],[dim2].[base2]) все понятно, вычисляется calculated cell, получается value==1; У его родителя "{[Measures].[meas1]},{[dim1].[par1]}, {[dim2].[par2]}" нет calculated cell, но есть агрегация, которая будет вычисленна как сумма его детей, учитывая значение calculated cell, так как ребенок один, то сумма будет 0 +1 == 1. Если бы было больше детей, то сумма была бы другой. Q2: >> If it is OK? Why it is occured? The reason is that now at non-base point defined "cc2" , if it right? Да это правильно потому что у обоих calculated cells одинаковые solve order и calculation pass, один из них выигрывает, это cc2, а в нем subcube определен, только по measure и для всех остальных ячеек куба. How i can ensure that non-base members will have value 1 (value of "cc1") without changing CalcSubcube && CalcCondition of "cc2" ? Не хочу давать не проверенное решение, если будет возможность попробую вечером и напишу. Ирина ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights П.С. Дедушка, хотела посмотреть на презентацию, а она мне ошибку выдала, мол не может ан-зиппить, а посмотреть все-равно хочется. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2003, 06:27 |
|
Calc cells .Pomogite!!!!
|
|||
---|---|---|---|
#18+
How i can ensure that non-base members will have value 1 (value of "cc1") without changing CalcSubcube && CalcCondition of "cc2" ? Да, Дед Маздай прав, нужен еще один cell, иначе происходит агрегация на верхний уровень. Для него задается subcube(на примере фудмарта) Descendants( [Customers].[All Customers], [Customers].[City], BEFORE), {[Unit Sales]} и Calculation Value = CalculationPassValue([Unit Sales], 1 ), Calculation Pass=3; Еще одна идея, заменить Unary Operator из '+' на '~' или что-то в этом роде. Ирина ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2003, 12:11 |
|
Calc cells .Pomogite!!!!
|
|||
---|---|---|---|
#18+
По поводу Q1 разногласий нет, это радует. По поводу Q2.1. Ира, я вначале так и рассуждал, потому что это логично. Но потом проверил на Foodmarte (посмотри пример, который я приводил в своем ответе) - нет, по Time и Store (т.е. тем измерениям, к-е присутствуют в определении подкуба cc1) все равно агрегирует несмотря на наличие "живого" cc2. Почему так? Зы. С презентацией, я думаю, вопрос будет решен не позже завтра. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2003, 12:19 |
|
Calc cells .Pomogite!!!!
|
|||
---|---|---|---|
#18+
Hy,anybody at home? Irina, right click Save As ... and zip downloded . Dedushka,execuse my English and MSOLAP .i try your example and i got the same results. Irina,very interesting what you thinking about last DedMazdai`s question. Alla. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2003, 13:04 |
|
Calc cells .Pomogite!!!!
|
|||
---|---|---|---|
#18+
Hy. DedMazdai,at FoodMart dimensions "All Level" property is set Yes. i took copy-paste of some db , and change the property only . At one db's dimensions it "Yes" (at db1) at 2-nd db's dims it "No" (at db2). I still have 2 calc cells , 1-st defined on some "leaf" and "cc2" defined on whole measure . And i see that at "db1" calc cell of leaf is aggregated into it parent instead that the parent "has" "live" calc cell (a whole measure defined one) . At "db2" it is not happened. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2003, 18:13 |
|
Calc cells .Pomogite!!!!
|
|||
---|---|---|---|
#18+
Ира и Алла. Я тут немного поэкспериментировал и пришел к мысли, что на с.д. почему мир так устроен - это вопрос философский. Главное - что кое-где он все-таки подчиняется некоторым закономерностям. Применительно к нашему случаю закономерность, по-видимому, состоит в том, что агрегируются измерения, участвующие в определении subcube в сс c наивысшим Pass Number. Пример 1. сс1. Подкуб = {Measures.[Store Sales]}, {Store.[Store State].[WA].[Seattle]}, {Time.[1997].[Q4].[12]}, формула = 1, Pass Number = 3; сс2. Подкуб = {Measures.[Store Sales]}, формула = 0.1, Pass Number = 2; сс3. Подкуб = {Measures.[Store Sales]}, {Product.[Product Family].[Drink].[Alcoholic Beverages]}, формула = -0.1, Pass Number = 1 Действительно, если в контекстном меню ячейки {Store.Seattle, Time.[1997].[Q4].[12], Product.[Alcoholic Beverages], Measures.[Store Sales]} посмотреть Cell Evaluation List, то приоритеты применения вычислений будут cc1, cc2, cc3. Сс1 идет с наивысшим приоритетом, поэтому эта ячейка имеет значение 1. Скажем, у {Store.Seattle, Time.[1997].[Q4].[11], Product.[Alcoholic Beverages], Measures.[Store Sales]} Cell Evaluation List = сс2, сс3. Поэтому здесь последнее слово остается за сс2 и ячейка получает значение 0.1. На самом деле -0.1 нигде в кубе не встретится, п.ч. сс2 (у к-го Pass Number больше, чем у сс3) имеет область определения (subcube), покрывающий сс3. Поэтому, по-видимому, имеет смысл назначать сс с самым охватывающим сабкубом самый низкий приоритет и наоборот. Но это к слову. Ключевой момент состоит в том, что агрегирование происходит по Store (напр., {Store.WA, Time.[1997].[Q4].[12], Measures.[Store Sales]} = 1.6, т.е. 1 в Seattle и 0.1 в 6 др.городах штата WA) и Time (напр., {Store.Seattle, Time.[1997].[Q4], Measures.[Store Sales]} = 1.2, т.е. 1 в декабре и 0.1 в ост.месяцах квартала). Агрегируются измерения, входящие в определение subcube для сс1. Теперь перетащим на одну из осей измерение Product и убедимся, что по нему агрегирования нет. Вдоль всего измерения Products Store Sales = 1 для {Store.Seattle, Time.[1997].[Q4].[12]} = 0.1 для {Store.Seattle, Time.[1997].[Q4].[11]} и т.д. Пример 2. Поменяем Pass Number у сс1 и сс3: пусть теперь cc1.PassNumber = 1, сс2.PassNumber = 2, cc3.PassNumber = 3. Понятно, что теперь последнее слово остается за cc3. Можно покрутить куб и убедиться, что агрегирование, соответственно, происходит только по измерению Products - Drink = 0.1 (-0.1 + 0.1 + 0.1), All Products = 0.3 (0.1 за Drink + 0.1 за Food + 0.1 за Промтовары). Вдоль Store и вдоль Time теперь стоят константы. Пример 3. Наконец, если сделать сс2.PassNumber > cc1.PassNumber, сс2.PassNumber > cc3.PassNumber, то везде будет стоять 0.1 и ни по каким измерениям агрегирование вестись не будет, т.к. в состав сабкуба сс2 ограничения по измерениям не входят. Если все выч.области ячеек имеют одинаковые Pass Numbers, то в дело вступает порядок, в к-м они перечислены в кубе. Напр., если у них у всех Pass Number = 1, а идут они в порядке сс1, сс2, сс3, то можно считать, что cc1.PassNumber = 1.2, сс2.PassNumber = 1.1, cc3.PassNumber = 1.0, и эффект в этом случае будет, как в примере 1. Перетащим в Cube Editor, напр., сс2 вверх, переобработаем куб и получим картину, как в примере 3. Порядок измерений в кубе оказывается также существенным. Пример 4. Слегка изменим сабкуб cc3: {Measures.[Store Sales]}, {Time.[1997].[Q4].[12]}. Пусть cc1.PassNumber = 3, cc2.PassNumber = 1, cc3.PassNumber = 2. Из-за довеска по измерению Time в виде cc2 симметрия нарушается и теперь суммирование сначала по Time, потом по Store и сначала по Store, потом по Time будут давать разные рез-ты. У меня измерение Time в кубе стояло раньше, чем Store, поэтому в спорных ячейках суммирование шло именно по Time. Так, в {Store.WA, Time.[1997].[Q4], Measures.[Store Sales]} = 0.6, т.е. 0.4 + 0.1 + 0.1 (по месяцам), а не 1.2 + 6* 0.1 (по городам). Если, не изменяя Pass Numbers, просто перетащить в Cube Editor измерение Store выше над Time (и не забыть переобработать куб), то суммирование будет идти по Store и {Store.WA, Time.[1997].[Q4], Measures.[Store Sales]} примет значение 1.8. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2003, 00:02 |
|
Calc cells .Pomogite!!!!
|
|||
---|---|---|---|
#18+
Hy. R1.DedMazdai I agree with you that Порядок измерений в кубе оказывается также существенным , may be dimension properties also … I got from client db in it while “cc2” defined on whole measure is enabled it “kill” “leaf” “cc1” formula result aggregation into it parents . This occured also when “leaf” “cc1” has Pass Number > than 1( Pass of “cc2” ) . And also when “leaf” “cc1” SolveOrder greater than Solve Order of “cc2”. Q2.How I can to print out cell.Properties("CELL_EVALUATION_LIST") of parent. Alla. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2003, 12:48 |
|
Calc cells .Pomogite!!!!
|
|||
---|---|---|---|
#18+
Already found how to print out CELL_EVALUATION_LIST -------- run mdx -------- SELECT FROM [newvar] Where (leaf1,[Measures].[meas1] ) CELL PROPERTIES CELL_EVALUATION_LIST ---- Without Where clause it return "cc2" ( whole measure calc cell ), is it correct? For "leaf" it return "leaf_cc;whole_meas_cc" -------- but it does not help Hy, i do not know what to do with "client" db. Why at FoodMart and at some others dbs global calc cell do not prevent "leaf" calc cell to be aggregated at "leaf" parent when pass,solve order are defaults and first appeared "leaf cc" after it "global cc" Pomogi mne ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2003, 14:56 |
|
Calc cells .Pomogite!!!!
|
|||
---|---|---|---|
#18+
Ребята, извините что пропала, а так же за то, что сейчас буду говорить не по-теме, так как слегка потеряла нить разговора, пытаясь выяснить как-же оно должно работать. Похоже, что вопрос действительно философский, ответ зависит от миллиона факторов, как вы уже подметили. Применительно к нашему случаю закономерность, по-видимому, состоит в том, что агрегируются измерения, участвующие в определении subcube в сс c наивысшим Pass Number Агрегация происходит всегда, если высший calculation pass не принадлежит "статической" вычисляемой ячейке-например, суб-куб которой определен только измерением, а не координатой, в нашем примере cc2. Если же на каком-то из пассов изменяется только одна ячейка куба, то все ее ancestors являются "грязными" и аггрегируются. Ячейка может стать "грязной" и не из-за самого высокого calculation pass. Вот тот пример с которым я работала(сорри, что он слегка отличается от твоего, но похоже, что мы шли параллельно, а переделывать сейчас мне лень, тем более что дроби и отрицательные числа уменьшают наглядность). Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Все измерения проаггрегированны. Алла, сорри, но я опять не поняла вопрос. Ирина ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2003, 11:55 |
|
|
start [/forum/topic.php?fid=49&msg=32087101&tid=1873607]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 267ms |
total: | 405ms |
0 / 0 |