BEX: Aggregation question
Hi to all,
I think I need some help of a BEX expert.
I have an issue with a query. Following scenario:
In my cube I post the following values:
Org-unit Employee Position P E
00000001 00000001 00000001 0 1
00000001 00000002 00000001 0 1
00000001 00000000 00000001 2 0
00000001 00000003 00000002 0 1
00000001 00000004 00000002 0 1
00000001 00000000 00000002 1 0
00000001 00000005 00000003 0 1
00000001 00000000 00000003 2 0
P = Capacity of the Position
E = Capacity of the Employee
Now to the issue.
In the query I need to calculate the difference of E - P as well as to create new keyfigures for storing a negative result and storing a positive result. At the end my query should look like this:
Org-unit Position P E diff. neg. pos.
00000001 00000001 2 2 00000 0000 0000
00000001 00000002 1 2 -0001 -001 0000
00000001 00000003 2 1 00001 0000 0001
and if I remove the position similar
Org-unit P E diff. neg. pos.
00000001 5 5 00000 -001 0001
The difference should not be displayed, but the rest should. Does anybody have an idea for solving this issue. I am playing around with constant selection on Employee and/or Position but the result is never as I expect it to be.
If you still have some problems understanding my issue feel free to ask.
Seeing forward to get your valueable and helpful hints.
regards
Siggi
Hi all,
well what I did so far was creating a calculated keyfigure E - P and additionally the two keyfigures negative and positive and the results are as expected if the position and/or the employee is initially displayed in the query. But if I take both out and any other characteristic in the result is not what I want to display. I want to get
this:
Org-unit P E diff. neg. pos.
00000001 5 5 00000 -001 0001
but I get this:
Org-unit P E diff. neg. pos.
00000001 5 5 00000 0000 0000
There is an issue with the aggregation level. The keyfigures diff., neg. and pos. should always show the results depending on the position/employee combination.
Hope it is clearer now.
Siggi
Similar Messages
-
I have an instance where I need 2 sender file adapters to send XI 2 different files (layouts are different). XI then needs to combine and map the messages from these two files into a single IDoc for each combined message. I know in a multi-mapping I can do it either with a BPM or without. When "aggregating" messages I know I can do it with a BPM. My question is does anyone know of a blog that exists where someone has accomplished this without the need of a BPM (and if there are any good blogs which cover how to aggregate with a BPM that would be helpful as well).
Thanks!Shaun,
As you can see here, [Multi-Mappings|http://help.sap.com/saphelp_nw70/helpdata/en/21/6faf35c2d74295a3cb97f6f3ccf43c/content.htm], you can not do the Message-Merge (n:1) mapping w/o BPM.
Using the BPM, you can refer to the pattern
BpmPatternCollectMultiIf - [Collecting and Bundling Messages - Multiple Interfaces|http://help.sap.com/saphelp_nw70/helpdata/en/0e/56373f7853494fe10000000a114084/content.htm]
I suggest that you schedule your sender adapters at around same time..so that the BPM doesn't have to wait too long to process them. If you can not ensure that, then you can use [Event-Driven Message Processing|http://help.sap.com/saphelp_nw70/helpdata/en/7a/00143f011f4b2ee10000000a114084/content.htm] to wait for both the files to be picked up before they are sent to BPM.
praveen -
Hi there
Got a couple of questions about OWB 10g R2 aggregations.
#1 When I create a cube with aggregations, I cannot for the life of me determine how the aggregations are actually implemented.
Are they implemented by separate tables? materialised views?
So far, when I browse the schema, I can't see any extra database objects created for the purpose of providing aggregates.
#2 I have seen this problem posted by a number of people, but have not yet seen any answer on how to overcome it.
When I create a cube, for some measures I would like to "SUM", for others I would like to "AVERAGE" and for columns such as degenerate dimensions (i.e. Transaction_ID) I would like to have no aggregation at all.
Can anyone tell me how to achieve this using the OWB Cube object???Hi
Answer to the second question:
In Design Center you have to double click in Project Explorer on the cube you want to examine. Than Data Object Editor is launched. To change the aggregation function of certain measures you have to select Aggregation tab in the low right corner. Than in the Measures panel select the measure that you want change aggregation function for. You can now change aggregation for that measure in panel: Aggregation for measure xxx.
Regards
Peter -
SSAS aggregation question.
I have a SSAS cube dimension with hierarchies - Country, State, City, Street.
I have two measures (Price and Quantity) that need to aggregate independently up to City level only. Product (multiplication) of these two measures at City level should then be aggregated for higher level hierarchies (Country, State).
How do I do this in MDX?
Thanks,
J.Hi,
Here is my question with example:
Dimension Hierarchy - Country, State, City, Street.
Country State City Street Qty
US CA City1 Street1 10
US CA City1 Street2 5
US FL City3 Street3 8
US FL City4 Street4 4
Country State Plan Price
US CA A $100
US CA C $70
US FL B $50
Calculated Measure at Country level = 100*10 + 100*5 + 70*10 + 70*5 + 50*8 + 50*4 = 3150
This is different from SUM(Price)*SUM(Qty) as it would be - 220*17 = 3740.
I want 3150 to be my answer at Country level.
I can JOIN the two table using Country and State fields to get a Cartesian product and that could works. The issue is the fact table becomes too big. -
http://bdn.borland.com/article/0,1410,31863,00.html
Please have a look at the class diagram. The relationship of Order and OrderDetail is aggregation but how come the OrderDetail and Item is not? They also contains collection there. why?not sure why they don't show any collections as class members. my guess is because this is an example, not a detailed specification. if you did it out in all its glory you'd include more than you see on this diagram.
i agree that there's no reason for OrderDetail not to use aggregation/composition with Item. my guess is that this is a teaching example, not a rigorous specification.
i'd take this link as an example, a teaching exercise and nothing more. it's good that you're questioning what you see, because it implies that you have enough insight to think about the problem for yourself. but if this is your first tour through UML don't worry about it. suck up those main ideas and start using them for yourself.
% -
Hello All.
Just a quick question since i'm getting inpatient.
I'm trying to set up schedules thru bex broadcaster thru the BI Portal.
Is there any other way to do this? Meaning is there a tran code i can go to in the system and do the same.
This just seems to be very slow way of doing it, and just thought i'd throw the question out there.
Thanks in advance.
AmitHi Amit,
Use the below tcode
RSRD_ADMIN - Broadcasting (7.x) Administration
go through the below link
http://wiki.sdn.sap.com/wiki/display/BI/UsefulTransactionsandNotesgoeswithNetWeaver+7.0
Hope this helps.
Regards
KP -
I have been looking through posts and tutorials but have not found the answer to a few questions about Aggregator.
Background
I have 7 projects each with quiz materials inside them I would like to aggregate.
If someone starts an aggregated project and leaves it before it finishes, can they resume or do they need to start over?
If each project has a quiz that needs to be passed before they can move on to the next project and reports back to the quiz results analyzer tool, will I have any problems with this?
Can someone move ahead in the TOC or can you prevent someone from clicking on TOC items until they have been viewed like you can in a normal project?
Would it be better to daisy chain the projects instead?
Thanks in advance
DavidThat's what Adobe's Multi-SCORM Packaging tool does. It came by default with Captivate 4, but only if you bought the entire E-learning Suite 2.0 or 2.5 thereafter.
With a Multi-SCO package you do not try to create a single TOC for all modules as you do with the Aggregator. The LMS is supposed to create the overall TOC to get to each module. Within the module, once it is launched, you can have the normal Captivate TOC. -
Hi
I am having one issue in CKF.
Original data:
Compcode Caseno. CreatedOn Amount
1000 A 06/18/2011 100
1000 B 06/19/2011 50
1000 C 06/18/2011 150
I have created one CKF for No.of Days Open. It is difference of Sy-datum and Created Date. I used two formula variables and used
them in the CKF.
Let us say today is 06/22/2011
Report Layout:
Caseno and CreatedOn are Free Characteristics
Compcode No.of Days Open Amount
1000 4 300
When I bring in the Case no I am getting below result: It should show No.of Days Open as "3" for Case B. Somehow it is always
taking maximum difference number and showing for all cases.
Compcode Caseno. No.of Days Open Amount
1000 A 4 100
1000 B 4 50
1000 C 4 150
When I bring in Createdon then only it is showing correct value for all cases. I tried with Exception Aggregation with reference to Caseno.
CreatedOn etc but didn't get the correct result.
Question: Could anyone identify the problem in my Query design? Thanks for your help
Best Regards,
Sree
Edited by: sree uk2004 on Jun 22, 2011 7:33 PMWell, I guess Key Figures of Date type work that way. Their Std Aggregation is Min Date value. I couldnt confirm this on google but obviously Date values cannot add up. It has to be Max(Latest) or Min(Oldest) value. One can check this in Dev System.
Now, about your requirement, how do you want 'No of Days' aggregated?
1. Calculate difference for each Case and then add up total difference. ie 434 = 11 in your example.
Solution : Try Exp Aggregation = 'Total' for Ref Char = 'Case No.'
2. Calculate the difference between system date and oldest date. ie 4 in your example.
Solution: I suppose right now it is working for this case with the glitch. -
3.6 Group Aggregation Question
I am trying to achieve a sql group by sort of behavior with coherence 3.6. I have achieved some success by using the following code.
public InvocableMap.EntryAggregator getAggregationCriteria()
BigDecimalSum agg1 = new BigDecimalSum("getTradeDateMVLocal");
BigDecimalSum agg2 = new BigDecimalSum("getTradeDateCashLocal");
BigDecimalSum agg3 = new BigDecimalSum("getCostLocal");
BigDecimalSum agg4 = new BigDecimalSum("getInterestUnrealizedLocal");
CompositeAggregator compAgg =
CompositeAggregator.createInstance(new InvocableMap.EntryAggregator[]
{agg1, agg2, agg3, agg4});
ChainedExtractor cr1 = new ChainedExtractor("getKey.getAccountName");
ChainedExtractor cr2 = new ChainedExtractor("getKey.getCurrency");
ValueExtractor[] extractors = new ValueExtractor[2];
extractors[0] = cr1;
extractors[1] = cr2;
MultiExtractor multiEx = new MultiExtractor(extractors);
GroupAggregator gpa = GroupAggregator.createInstance(multiEx, compAgg);
return gpa;
once the GroupAggregator is constructed I pass it to the namedcache.aggregate method using the following wrapper method.
public LiteMap aggregate(NamedCache cache, Filter filter, InvocableMap.EntryAggregator aggregationCriteria)
LiteMap map = (LiteMap) cache.aggregate(filter, aggregationCriteria);
return map;
the issue is that in a multi-node environment not all the data is aggregated.
for example if i have a single node and i run my aggregation code just in that node i get the expected number of grouped items. in a multi node scenario it ends up with lesser items. now the columns that i am grouping by are part of my composite key for the cache. the implementation of my key class is as follows.
package com.sac.dream.model;
import com.sac.dream.core.model.GridEntityKey;
import com.sac.dream.util.externalization.ObjectReader;
import com.sac.dream.util.externalization.ObjectWriter;
import com.tangosol.net.cache.KeyAssociation;
import javax.persistence.Embeddable;
import javax.persistence.Transient;
import java.io.IOException;
* Created by IntelliJ IDEA.
* User: ahmads
* Date: Jul 28, 2010
* Time: 1:54:45 PM
* To change this template use File | Settings | File Templates.
@Embeddable
public class GenevaValuationKey extends GridEntityKey implements KeyAssociation
private static final long serialVersionUID = 1L;
private String accountName;
private String currency;
private Long uid;
public GenevaValuationKey(Long uid)
this.uid = uid;
public GenevaValuationKey()
@Transient
public Object getAssociatedKey()
int hash = 1;
hash = hash * 31 + getAccountName().hashCode();
hash = hash * 31 + getCurrency().hashCode();
return hash;
public void setAssociatedKey(Object value)
public Long getUid() {
return uid;
public void setUid(Long uid) {
this.uid = uid;
@Override
public String toString()
return "GenevaValuationKey::uid:" + this.uid;
@Override
public boolean equals(Object o)
//if(this == o) return true;
//if (o == null || getClass() != o.getClass()) return false;
GenevaValuationKey that = (GenevaValuationKey) o;
if(this.getAccountName().equals(that.getAccountName()) && this.getCurrency().equals(that.getCurrency()) && this.uid == that.uid)
return true;
else
return false;
@Override
public int hashCode()
int hash = 1;
hash = hash * 31 + getAccountName().hashCode();
hash = hash * 31 + getCurrency().hashCode();
hash = hash * 31 + uid.hashCode();
return hash;
@Override
public int compareTo(GridEntityKey o)
return this.uid.compareTo(((GenevaValuationKey) o).getUid());
@Override
public final void readObject(ObjectReader reader) throws IOException
try
this.setAccountName(reader.readString());
this.setCurrency(reader.readString());
this.uid = reader.readLong();
catch(IOException e)
throw new RuntimeException(e);
@Override
public final void writeObject(ObjectWriter writer) throws IOException
try
writer.writeString(this.getAccountName());
writer.writeString(this.getCurrency());
writer.writeLong(this.uid);
catch(IOException e)
throw new RuntimeException(e);
public String getAccountName() {
return accountName;
public void setAccountName(String accountName) {
this.accountName = accountName;
public String getCurrency() {
return currency;
public void setCurrency(String currency) {
this.currency = currency;
i implemented the keyassociation assuming that i need to make sure that for a certain group all the rows within that group need to exist on the same node. there might be something wrong with that implementation.
thanksrehevkor5 wrote:
Yeah apparently you're not supposed to call readRemainder or writeRemainder from within the PortableObject methods, too bad the documentation does not mention this.
Here is a better idea of what a subclass's PortableObject methods should look like:
@Override
public void readExternal(PofReader in) throws IOException {
super.readExternal(in.createNestedPofReader(0));
myObj = (MyType) in.readObject(1);
@Override
public void writeExternal(PofWriter out) throws IOException {
super.writeExternal(out.createNestedPofWriter(0));
out.writeObject(1, myObj);
}Since you cannot read or write the remainder, the way that you support PortableObjects that need to evolve is by implementing the Evolvable interface. Coherence will detect that your object is an instanceof Evolvable, and will handle reading/writing the remainder/futureData and dataVersion for you.Yep. Otherwise, if you have handled the remainder in a PortableObject, you would not be able to sensibly override that method which handled the remainder.
Best regards,
Robert -
We have a key figure(key figure 1) that has different Sales Unit of Measurements - BOX, Pallet Pieces, another key figure(key figure 2) with one Unit of Measure PC. We are trying to display like this:
BOX PAL PC PC
Key Figure 1 Key Figure 2
However we are getting
BOX PAL PC BOX PAL PC
Key Figure 1 Key Figure 2
even though we restrict key figure 2 with PC only
our Columns area in Bex is
Structure
Key Figure 1
Key Figure 2
Sales Unit
Is this possible - I have tried a lot of different combinations with nothing working. Any help is appreciated.You can try...
Create a formula variable (ZZVAR) with the correct units (PC) with default value 1, optional, not ready for input.
For KF 2, instead use a formula where you add NODIM(KF2)*ZZVAR -
Currency exchange and aggregation question
Hi,
My requirement is to calculate the sum falling into intervals like
1) <2 million
2) 5 - 10 million
3) 10-20 million and so on
This part is easy. The question is that the intervals can be requested in any currency by the user. Since there r thousands of records and each record has its amount in its own currency.....what is the best way to do it so that the BW performance is not affected?
any help would be highly appreciated.
thks,
willsHi,
You can do currency conversion in the update rules during the data load as well as during the execution of the report.
Currency conversion doesn't have much effect on the execution time of the report.
You can have many records but it will not effect the performance of the query in big way.
Thanks -
Non-Level0 aggregation question
Hi There,
I have Account dimension, for example, Income - rental income - GL accounts (level 0), rental income is the sum of all level0 GL accounts. Data storage is "Store Data". Now I move one GL out of rental income, but the sum of Rental is still the same which is incorrect. My question is what is the way to fix this?
I try couple of things, for example, restructure, clean data then re-import into the essbase, but the issue is still there. I know if I change Rental Income as Dynamic Calc, the issue will be fixed, but I am wondering if there are other ways to do this without changing data storage?
ThanksSrinivas Bobbala wrote:
Donz,
Whenever you are doing outline changes, Do as below.
1) Take the Levo data export.
2) Clear the cube.
3) Do the modifications in the outline.
4) Reload the Lev0 data
5) Do the Rollup with CALCALL. Then this kinda issues will not arise.
Note: If any deletions are there at Lev0, better to delete after loading the Lev0 data and mapping the data with other or new members as required.Hi Srinivas,
As per your assumptions when ever we required to change the out line we need to clear the all data but as per my knowledge for this issue we no need of clearing the cube..we can directly modify the out line and Executing the CALC ALL is enough...
Regards,
Prabhas.. -
Hi,
I have a measure named DESCRIPTION, it makes data seprate into Y or N, if number > 0, we got Y, if number< =0, we got N.
eg:
NAMBER DESCRIPTION
11 Y
21 Y
0 N
7 Y
then we got 3 Y and 1 N after using aggregation rule with sum.
but if we got 4 Y, it does not show 0 N.
eg:
NAMBER DESCRIPTION
11 Y
21 Y
5 Y
7 Y
How can I make it to show 4 Y and 0 N?
Please kindly help me , thanks.This is OBIEE behaviour, since you have no data which is <=0 that's why you are not getting any N count or '0 N'. There shud be a specific row value which satifies the condition to get N or Y counts.
BTW how are you designing your measure in RPD or in Answers ?? and whats the procedure..?? -
/thread/750293 [original link is broken]
Edited by: sam on Feb 20, 2008 4:18 PMHello Sam,
You have to create Roles in PFCG and assign appropriate reports authorization to the roles. For example you can create roles for End User , Power User etc.
Once this is done, then assign the user to the Roles.
For more details
[Advanced Features of SAP BW Reporting Authorizations|https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/1b439590-0201-0010-ea8e-cba686f21f06]
[Authorizations in a SAP Business Information Warehouse Project|https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/adeac294-0501-0010-5a97-9ac5d562b1be]
[SAP NetWeaver 2004s BI Authorizations for Reporting - Webinar Powerpoint|https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a6c54319-0e01-0010-20a4-fb81ad32f330]
[Authorizations in a SAP Business Information Warehouse Project|https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/b014a2fa-fc1c-2a10-6ab2-e8e288de0e08]
[Field Based Authorizations in BW BEx Queries|https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/4753ed83-0e01-0010-e186-f98413f868cb]
[An Expert Guide to new SAP BI Security Features|https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/659fa0a2-0a01-0010-b39c-8f92b19fbfea]
Hope it helps
Thanks
Chandran -
Hi All,
At present our client SAP system is BW 3.x. and we have BEx related to that. and ou client Sand Box system is having SAP BI 7.0.and from this Sandbox, when giving rrmx transaction it is showing BEx 3.x version only. because BI 7.0 bex is not available. so can we have both the bex versions on the same system. because we want bi7.0 Bex .
Thankyou.HI SAPBI INDIA,
Yes, U can have both the versions of BEx installed on the same system. When both the versions are installed U can see Business Explorer (SAPBW 3.x) under the node Business Explorer of the Programs tree thru the start button. U can use either of them depending on the requirement.
For the version BI7.0 to work U need to have the SAP GUI 7.1 version (or) higher.
Maybe you are looking for
-
I played HayDay on my iPhone 4 to level 26-29 or so, then it didn't stay loaded when returning to play. Same scenario with iPad at level 26 even when signed in through Game Center. Why does the game quit within a few seconds after loading?
-
New ipod for me, was my friends
a friend gave me their ipod. it is still showing their name whenever i plug it in to the computer. they dont have the software disk anymore. how do i set it up to show my name and register the serial number under my name? ipod shuffle Windows XP
-
Widcomm 5.0.1.1200 drivers on Qosmio G20-127
Is there any possibility to install Widcomm Bluetooth software drivers on Qosmio G20-127? I want to use them instead of Toshiba and Microsoft Bluetooth stacks. I have modified btwusb.inf file in Widcomm 5.0.1.1200 with my own PID and VID (taken from
-
Nokia X6 - How do I help Ovi map get the first loc...
Hi all, Is there a way of "manually" assisting the GPS ? Sometimes I know where I am (e.g. in a car park) and it is annoying for the phone to try to get assisted info via my data plan. Can I just tell it where I am and for it to use that info to get
-
How to convert double to unsigned long integer for cRIO analog output?
All, Having issues sending out my arbitrary waveform to my cRIO analog output. My values are doubles and by the time I send them out, they have been converted to U32 values and are all turning out as zeroes. This led me to assume two things: 1) That