Solved

Filter Aggregate Data in Oracle Data Integrator 11g

Posted on 2011-02-25
8
2,843 Views
Last Modified: 2013-12-19
I am having difficulting figuring out Oracle Data Integrator and how to filter an aggregate column,

for example - I am taking data from a source and aggregating it to a target.  Within one of the target fields I would like to filter - here is the scenerio

Source: Table1
order_number
line_item
quantity
unit_price
option

Target: Aggregate_Table_1

total_cost = sum(quantity*unit_price)
total_cost_less_options = sum(quantity*unit_price) where option='N'

I am having difficulting for the mapping for total_cost_less_options in ODI interface, when I create the implementation I am not getting the syntax correct.

Thanks.
0
Comment
Question by:daledog9
  • 3
  • 3
8 Comments
 
LVL 76

Expert Comment

by:slightwv (䄆 Netminder)
Comment Utility
are you aggregating across the entire table or for orders?

updating/inserting int the aggregate table should be straight forward:

select order_number,
   sum(options) over(partition by order_number order by order_number) options_price,
   sum(unit_price) over(partition by order_number order by order_number) total_price
select order_number, case when option='N' then 0 else unit_price end options, unit_price
from table1
)

0
 

Author Comment

by:daledog9
Comment Utility
I agree, the sql is very straight forward - but I cannot figure out how to use the expression builder in ODI to get my results.  When I run straight SQL I get my desired results, but I keep getting errors when writing the same code the expression builder within ODI.
0
 

Author Comment

by:daledog9
Comment Utility
to further explain my note above ...
In the mapping view of the Interface for the fields -

Implementation for total_cost field = sum(quantity*unit_price)
No errors

Implementation for total_cost_less_options field = sum(quantity*unit_price) where option='N'
Receive error: java.sql.SQLSyntaxErrorException: ORA-00923: FROM keyword not found where expected

I found under quick edit tab where you can create a filter, but I do not want the entire dataset filtered, just the calculated field of total_cost_less_options
0
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 
LVL 76

Expert Comment

by:slightwv (䄆 Netminder)
Comment Utility
I apologize.  I didn't see the ODI reference when I first read the question.

I've never used the product myself so this is a huge guess but try something like:

total_cost field = sum(case when option = 'N' then quantity*unit_price else 0 end)
0
 

Author Comment

by:daledog9
Comment Utility
Thank you for adding the additional zones.  The syntax you suggested pass the check, but now it's failing during executing with ORA-00920: invalid relational operator.  It does not seem to be processing the group by properly as it performs that automatically- or rather I am not understanding how ODI works in respect to group by.  
0
 
LVL 28

Accepted Solution

by:
Naveen Kumar earned 500 total points
Comment Utility
i think a typo here.

select order_number,
   sum(options) over(partition by order_number order by order_number) options_price,
   sum(unit_price) over(partition by order_number order by order_number) total_price
select order_number, case when option='N' then 0 else unit_price end options, unit_price
from table1
)

it should be the below right ?

select order_number,
   sum(options) over(partition by order_number order by order_number) options_price,
   sum(unit_price) over(partition by order_number order by order_number) total_price
from (
select order_number, case when option='N' then 0 else unit_price end options, unit_price
from table1
)
0
 
LVL 76

Expert Comment

by:slightwv (䄆 Netminder)
Comment Utility
daledog9,

Can I ask why I didn't get partial credit?

I gave you everything except I missed "from (".  A pretty simple typo correction nav just beat me to it.
0

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Join & Write a Comment

How to Create User-Defined Aggregates in Oracle Before we begin creating these things, what are user-defined aggregates?  They are a feature introduced in Oracle 9i that allows a developer to create his or her own functions like "SUM", "AVG", and…
Have you ever had to make fundamental changes to a table in Oracle, but haven't been able to get any downtime?  I'm talking things like: * Dropping columns * Shrinking allocated space * Removing chained blocks and restoring the PCTFREE * Re-or…
This video explains at a high level about the four available data types in Oracle and how dates can be manipulated by the user to get data into and out of the database.
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now