2014年6月23日 星期一

[SAP][Data Service] 匯整關聯資料表至目標資料表

在進行資料匯整時為了查詢方便及效率,會進行反正規化,將要關聯的資料表匯整至一張目標資料表中。
使用 LOOKUP_EXT() 函數,來找出對應值。首先在 Data Flow 工作區中拖拉出兩個來源資料表、一個 Query Transform 及一個目標資料表。


D_COMPLAINTS 資料表:RecordID、CallerName、ServiceTypeID、CreatedDateTime
B_SERVICETYPE 資料表:ServiceTypeID、ServiceTypeName
T4 目標資料表:RecordID、CallerName、ServiceTypeID、CreatedDateTime、ServiceTypeName
( 來源資料表可以來自不同的資料來源或資料庫 )

接著要定義 join 來源資料表,點擊 Query Transform 開啟編輯視窗。在 Schema In 中可以看到來源兩個資料表的 Schema,切換至 From 頁籤,在 Join paris 下方的區域中,Left 欄位選取 D_COMPLAINS 資料表,在 Right 欄位選取 B_SERVICETYPE 資料表;在 Join Condition 欄位會自動找出兩張資料表中的 Primary Key 和 Foreign Key 的欄位名稱。
在 FROM clause 區域中會顯示其語法如下:

FROM  D_COMPLAINTS __SAP_INNER_JOIN B_SERVICETYPE ON (
B_SERVICETYPE.SERVICETYPEID = D_COMPLAINTS.SERVICETYPEID
)
 SET("ui_on_text"='B_SERVICETYPE.SERVICETYPEID = D_COMPLAINTS.SERVICETYPEID')


點選 Smart Edit Icon ,開啟 Smart Edit 的視窗。


在 Smart Edit 視窗內加入以下的條件篩選特定日期區間至目標資料表。

B_SERVICETYPE.SERVICETYPEID = D_COMPLAINTS.SERVICETYPEID
AND D_COMPLAINTS.CREATEDDATETIME >= to_date('2013/01/01','yyyy/mm/dd')
AND D_COMPLAINTS.CREATEDDATETIME <= to_date('2013.01.31','yyyy.mm.dd')


to_date('Input String 輸入字串','Format String 格式字串') 函數,可以將字串轉換為日期,輸入字串的格式要和格式字串一致。


再將 Schema In 的相關欄位對應至 Schema Out 中。


點擊目的資料表,在 Options 頁籤中勾選 Delete data from table before loading 。


執行 JOB 即可看到成功的畫面。

沒有留言: