Salı , 16 Eylül 2014
Anasayfa / MAKALELER / İş Zekası / ODI 11g Temp Interface Kullanımı(Yellow Interface)

ODI 11g Temp Interface Kullanımı(Yellow Interface)

ODI stage tablo yaratmadan subquery elde edilmesi

Subquery içeren selectleri kolaylaştırmak için temp (yellow) interfaceleri kullanabiliriz. Aşağıdaki sorguyu mavi interfacelerle yaptığımızda 2 tablo, 2 datastore, 2 interface gerekiyor. Temp interface ile yaptığımızda ise subquery için tablo ve datastore yaratmadan temp interface yaratılır.

CREATE TABLE TOP_10_MIN_PRICE_PROD AS
select prod_id, PROD_MIN_PRICE, MIN_ROWNUM FROM (
select prod_id, PROD_MIN_PRICE, row_number() over (partition by 1
order by PROD_MIN_PRICE) MIN_ROWNUM from sh.PRODUCTS s)
WHERE MIN_ROWNUM<11

Temp interface i oluştururken source datastore u atıyorum, source datastore üzerine gelip sağ tıklayarak add to target ile source datastore alanları target a kopyalanır.

tmp_int1

 

 

Quick-edit tabından Target datastore ismini belirliyorum, ben anlamlı bir isim olması için MIN_PROD_PRICE yazdım.

 

tmp_int2

MIN_ROWNUM alanını ekleyerek “row_number() over (partition by 1 order by PROD_MIN_PRICE )” şeklinde map ettim.

 

tmp_int3

Flow tabında temp tablo özellikleri için create table yapmamasını istiyorum. Fiziksel bir tablo oluşturmadığı için truncate etmememize de gerek kalmıyor. ;)

 

tmp_int6

 

Ve temp interface i execute ettiğimde aşağıdaki script ortaya çıkıyor:
insert into SH.MIN_PRICE_PROD
(
PROD_ID,
PROD_MIN_PRICE,
MIN_ROWNUM
)
select
PRODUCTS.PROD_ID,
PRODUCTS.PROD_MIN_PRICE,
row_number() over (partition by 1
order by PROD_MIN_PRICE)
from SH.PRODUCTS PRODUCTS

Asıl tablomuz için database de TOP_10_MIN_PRICE_PROD tablosunu yaratıyorum.

CREATE TABLE TOP_10_MIN_PRICE_PROD
(
PROD_ID NUMBER(6) NOT NULL,
PROD_MIN_PRICE NUMBER(8,2) NOT NULL,
MIN_ROWNUM NUMBER
);

ODI de yeni bir interface yaratarak, ismi INT_TOP_10_MIN_PRICE_PROD olsun, temp interface i source datasource olarak atıyorum, source datasource u seçerek source properties ten Use Temporary Interface as Devired Table (Sub-Select) seçeneğini işaretliyorum.

 

tmp_int5

Flow tabından truncate:true seçerek kaydediyorum.

 

tmp_int6

Sub-select içeren query yi istediğim için sadece mavi interface i çalıştırıyorum. Tmp interface i kullanmadan istediğim sorguyu elde ediyorum.

 

tmp_int7

Schedule için interface senaryosu veya paket içinde sadece mavi interface i kullanmak yeterli olacak.

ODI kullanımı açısından temp interfacelerin tek sakıncası, target datasource un kaynağına baktığımızda olarak temp tabloyu göstermesi, aslında kaynak olarak sh.products tablosunu gösterebilirdi.

 

tmp_int8

Jale Ozgur

PL/SQL , ETL, BI Developer

Latest posts by Jale Ozgur (see all)

Powered by Starbox

Hakkında Jale Ozgur

PL/SQL , ETL, BI Developer

Cevapla

E-posta adresiniz yayınlanmayacak. Required fields are marked *

*


Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>