Hi,
I have some general feeders questions, if you could share your experience, I would be grateful.
#1:
Can I mix cubes with feeders and without? For example, cube B gets data from cube A. In cube B, I use feeders. In cube A, I only want to push data to B, but without using SKIPCHECK (the cube is very dense). Can I skip SKIPCHECK command in cube A and write a feeder to cube B?
#2:
How can I test if inter-cube feeder is working? I've created a feeder and commented it out, and nothing changed - summaries in 'Ilgalaikis turtas' are working fine.
Rule in 'Ilgalaikis turtas':
['Vertės padidėjimas dėl investicijų'] = N:
DB('Investicijos konsoliduotas', !5 Versijos, 'VISO PRIEMONIŲ:', !2_Tarnybos_Verslai, !3 IT, !4 Laikotarpiai, !1_IT_Matai);
Feeder in 'Investicijos konsoliduotas':
['VISO PRIEMONIŲ:'] =>
DB('Ilgalaikis turtas', !4 Laikotarpiai, !5 Versijos, 'Vertės padidėjimas dėl investicijų', !3 IT, !2_Tarnybos_Verslai);
#3:
If I have rule like this:
['SomethingA']=n:DB('Cube B', !dim1, 'somethingB') - DB('Cube C', !dim1, 'somethingC');
What feeders should I put in Cube B and Cube C?
#4:
Rule:
['Įsigijimo vertė'] = N:IF (AttrS('4 Laikotarpiai', !4 Laikotarpiai, 'metai') @= '2011', ['2011 atidarymas'], continue);
FEEDER:
['2011 atidarymas'] => ['Įsigijimo vertė'];
Is this correct? Am I overfeeding here?
Various feeder questions
- jim wood
- Site Admin
- Posts: 3961
- Joined: Wed May 14, 2008 1:51 pm
- OLAP Product: TM1
- Version: PA 2.0.7
- Excel Version: Office 365
- Location: 37 East 18th Street New York
- Contact:
Re: Various feeder questions
See my answers above.kudzis wrote:Hi,
I have some general feeders questions, if you could share your experience, I would be grateful.
#1:
Can I mix cubes with feeders and without? For example, cube B gets data from cube A. In cube B, I use feeders. In cube A, I only want to push data to B, but without using SKIPCHECK (the cube is very dense). Can I skip SKIPCHECK command in cube A and write a feeder to cube B?
Cubes pull rather than push. The only way you can get away with this is you have some way of feeding B from either another cube or from within itself.
#2:
How can I test if inter-cube feeder is working? I've created a feeder and commented it out, and nothing changed - summaries in 'Ilgalaikis turtas' are working fine.
Rule in 'Ilgalaikis turtas':
['Vertės padidėjimas dėl investicijų'] = N:
DB('Investicijos konsoliduotas', !5 Versijos, 'VISO PRIEMONIŲ:', !2_Tarnybos_Verslai, !3 IT, !4 Laikotarpiai, !1_IT_Matai);
Feeder in 'Investicijos konsoliduotas':
['VISO PRIEMONIŲ:'] =>
DB('Ilgalaikis turtas', !4 Laikotarpiai, !5 Versijos, 'Vertės padidėjimas dėl investicijų', !3 IT, !2_Tarnybos_Verslai);
You have effectively tested your feeder by switching it off. It sounds like it wasn't working. Fro the feeder to work you have to make sure all dimensions in the cube being fed have something delclared in teh feeder cube. I can't tell from the above if the cubes share the same dimensions. If the cube with DB has extra columns you need to make sure you select something specific in the Feeder.
#3:
If I have rule like this:
['SomethingA']=n:DB('Cube B', !dim1, 'somethingB') - DB('Cube C', !dim1, 'somethingC');
What feeders should I put in Cube B and Cube C?
This is a classic over feed. You have no choice but to feed from both. Feed something A from something B and Something C.
#4:
Rule:
['Įsigijimo vertė'] = N:IF (AttrS('4 Laikotarpiai', !4 Laikotarpiai, 'metai') @= '2011', ['2011 atidarymas'], continue);
FEEDER:
['2011 atidarymas'] => ['Įsigijimo vertė'];
Is this correct? Am I overfeeding here?
It looks ok but I'm sure. I would need more detail regarding the measure / dimension composition of the cube(s) involved.
Struggling through the quagmire of life to reach the other side of who knows where.
Go Build a PC
Jimbo PC Builds on YouTube
OS: Mac OS 11 PA Version: 2.0.7
Go Build a PC
Jimbo PC Builds on YouTube
OS: Mac OS 11 PA Version: 2.0.7
-
- Posts: 42
- Joined: Wed Nov 10, 2010 12:35 pm
- OLAP Product: Cognos 8 BI
- Version: 9.5.1
- Excel Version: Excel 2007
Re: Various feeder questions
Jim,
thank you for your answers.
#1:
I did some additional testing with demo cubes and found out that SKIPCHECK is not necessary in source cube:
Cube A (source) rules:
FEEDERS;
<rule feeding cube B>
Cube B (target) rules:
SKIPCHECK;
<rule taking data from cube A>
It works OK, data is fed and displayed properly.
#2:
When I commented out a feeder in 'Investicijos konsoliduotas', I needed to restart server for feeder to stop working.
thank you for your answers.
#1:
I did some additional testing with demo cubes and found out that SKIPCHECK is not necessary in source cube:
Cube A (source) rules:
FEEDERS;
<rule feeding cube B>
Cube B (target) rules:
SKIPCHECK;
<rule taking data from cube A>
It works OK, data is fed and displayed properly.
#2:
When I commented out a feeder in 'Investicijos konsoliduotas', I needed to restart server for feeder to stop working.
- Steve Rowe
- Site Admin
- Posts: 2464
- Joined: Wed May 14, 2008 4:25 pm
- OLAP Product: TM1
- Version: TM1 v6,v7,v8,v9,v10,v11+PAW
- Excel Version: Nearly all of them
Re: Various feeder questions
On your Q2 you need to take care when testing feeders.
Feeders persist in a cell, I always think of it a flag in a cell saying "calculate me". The flag gets populated by the feeder statement.
If you remove the feeder statement it doesn't remove the flag. This is important when you are developing too, it's easy to write feeders a few different ways when you are developing and because they persist it looks like the system works. Then when you restart the server the feeder flags for the feeders you wrote during developement disappear and your system "breaks"!
The feeder flags only get removed when the cube is rebuilt from scratch, i.e. by unloading it from RAM or by restarting your server.
If you are working with inter cube feeders you need to take care if you are unloading cubes.
If cube A feeds cube B then to refresh the cube feeders in cube B using the unload method, then you would first unload both cubes. You would then need to browse B (i.e. reload cube B), then browse cube A ( at which the point the feeders to cube B would fire) then when you browse cube B you would have the correct set of feeders.
In any complex many cube model the only way to see your behaviour exactly as written in the rules is to restart the server.
Cheers
Feeders persist in a cell, I always think of it a flag in a cell saying "calculate me". The flag gets populated by the feeder statement.
If you remove the feeder statement it doesn't remove the flag. This is important when you are developing too, it's easy to write feeders a few different ways when you are developing and because they persist it looks like the system works. Then when you restart the server the feeder flags for the feeders you wrote during developement disappear and your system "breaks"!
The feeder flags only get removed when the cube is rebuilt from scratch, i.e. by unloading it from RAM or by restarting your server.
If you are working with inter cube feeders you need to take care if you are unloading cubes.
If cube A feeds cube B then to refresh the cube feeders in cube B using the unload method, then you would first unload both cubes. You would then need to browse B (i.e. reload cube B), then browse cube A ( at which the point the feeders to cube B would fire) then when you browse cube B you would have the correct set of feeders.
In any complex many cube model the only way to see your behaviour exactly as written in the rules is to restart the server.
Cheers
Technical Director
www.infocat.co.uk
www.infocat.co.uk
-
- Posts: 1
- Joined: Thu Jan 27, 2011 6:04 pm
- OLAP Product: TM1
- Version: 9.5x
- Excel Version: 2007
Re: Various feeder questions
Why I am still lost in feeders is beyond me....I have read all of these threads and I still seem no closer to enlightenment...let's talk about a further simplified example.
I have two cubes, "i_position_attributes" and "c_labor_calc"...the position attributes cube does not have a time dimension, the calc cube have t_days which includes 366 days. I need to feed some of the position attributes into every single day (like base hourly rate), the rule works fine, the feeder works as I have it written, but only when I specify every day in the time dimension.
Here is the code:
c_labor_calc rule
skipcheck;
['HourlyRate'] = N: DB('i_position_attributes', !h_position, 'HourlyRate');
i_position_attributes
feeders;
['HourlyRate'] => DB('c_labor_calc', 'Jan 01', !h_position, 'HourlyRate');
['HourlyRate'] => DB('c_labor_calc', 'Jan 02', !h_position, 'HourlyRate');
...repeat 364 more times
Please tell me that there is some wildcard or other method which allows me to feed the hourly rate to every day without 366 lines of code..??!!??
Thanks in advance for any help you can offer.
I have two cubes, "i_position_attributes" and "c_labor_calc"...the position attributes cube does not have a time dimension, the calc cube have t_days which includes 366 days. I need to feed some of the position attributes into every single day (like base hourly rate), the rule works fine, the feeder works as I have it written, but only when I specify every day in the time dimension.
Here is the code:
c_labor_calc rule
skipcheck;
['HourlyRate'] = N: DB('i_position_attributes', !h_position, 'HourlyRate');
i_position_attributes
feeders;
['HourlyRate'] => DB('c_labor_calc', 'Jan 01', !h_position, 'HourlyRate');
['HourlyRate'] => DB('c_labor_calc', 'Jan 02', !h_position, 'HourlyRate');
...repeat 364 more times
Please tell me that there is some wildcard or other method which allows me to feed the hourly rate to every day without 366 lines of code..??!!??
Thanks in advance for any help you can offer.
-
- MVP
- Posts: 2836
- Joined: Tue Feb 16, 2010 2:39 pm
- OLAP Product: TM1, Palo
- Version: Beginning of time thru 10.2
- Excel Version: 2003-2007-2010-2013
- Location: Atlanta, GA
- Contact:
Re: Various feeder questions
Feeding into a consolidated node is the same as feeding every child individually. If you had a parent in your t_days dimension like "Year", or "All_Days" and made it a parent of all the elements you could just do this:
['HourlyRate'] => DB('c_labor_calc', 'All_Days', !h_position, 'HourlyRate');
['HourlyRate'] => DB('c_labor_calc', 'All_Days', !h_position, 'HourlyRate');
-
- MVP
- Posts: 263
- Joined: Fri Jun 27, 2008 12:15 am
- OLAP Product: Cognos TM1, CX
- Version: 9.0 and up
- Excel Version: 2007 and up
Re: Various feeder questions
@GreenMonkey
Do you actually need to consolidate HourlyRate?
Do you use the HourlyRate in c_labor_calc to calculate a Cost by using something like HoursWorked?
Do you actually need to consolidate HourlyRate?
Do you use the HourlyRate in c_labor_calc to calculate a Cost by using something like HoursWorked?
- Steve Rowe
- Site Admin
- Posts: 2464
- Joined: Wed May 14, 2008 4:25 pm
- OLAP Product: TM1
- Version: TM1 v6,v7,v8,v9,v10,v11+PAW
- Excel Version: Nearly all of them
Re: Various feeder questions
I'm guessing what Gregor is getting at is that you don't need to pull the hourly rate into your labour calc
Instead of this
c_labor_calc rule
skipcheck;
['HourlyRate'] = N: DB('i_position_attributes', !h_position, 'HourlyRate');
you could do
['Cost']=N: ['Hours'] * DB('i_position_attributes', !h_position, 'HourlyRate');
['Hours']=>['Cost'];
then you are not holding the same value many hundreds of time in your calculation cube.
If you want to show the rate then you can back calculate it with a combined N and C level rule with the advantage that you will get an average hourly rate at the consolidated level.
['HourlyRate'] = ['Cost'] \ ['Hours'];
['Hours']=>['HourlyRate'] ;
Irrespective of the above you might want to reconsider your original feeder. You actually only need to populate the hourly rate when you have hours rather than to fill all possible cells with the hourly rate. So a better feeder would still be
['Hours']=>['HourlyRate'] ;
in your calculation cube with no feeder from your rate cube.
HTH!
Cheers
Instead of this
c_labor_calc rule
skipcheck;
['HourlyRate'] = N: DB('i_position_attributes', !h_position, 'HourlyRate');
you could do
['Cost']=N: ['Hours'] * DB('i_position_attributes', !h_position, 'HourlyRate');
['Hours']=>['Cost'];
then you are not holding the same value many hundreds of time in your calculation cube.
If you want to show the rate then you can back calculate it with a combined N and C level rule with the advantage that you will get an average hourly rate at the consolidated level.
['HourlyRate'] = ['Cost'] \ ['Hours'];
['Hours']=>['HourlyRate'] ;
Irrespective of the above you might want to reconsider your original feeder. You actually only need to populate the hourly rate when you have hours rather than to fill all possible cells with the hourly rate. So a better feeder would still be
['Hours']=>['HourlyRate'] ;
in your calculation cube with no feeder from your rate cube.
HTH!
Cheers
Technical Director
www.infocat.co.uk
www.infocat.co.uk