2014年7月21日 星期一

[SAP][Data Service] 定義 Plat File 格式並匯入資料表

若資料來源或目標是儲存在 flat files ,則必須在 Data Services 中先定義其格式來描述檔案的結構。可以從頭開始或由匯入的檔案來修改其格式。
首先在 Object Library 中切換至 Formats 頁籤,在 Object Library 空白處點選右鍵,選取 New 再選取 File Format。

General 中,選定 TypeDelimited,並修改 Name 為可判別的名稱,存檔後即無法修改。但我們可以複製已儲存的 Plat File ,再修改其檔名。
在已建立好的 Plat File 上按右鍵,點選 Replicate,會複製一份,再修改其 Name 後儲存即可。



Data Files(s) 中將 File name(s) 點選資料夾的圖示來指定檔案位置。
可在 Defult Format 中修改 Date 的格式為 ddmmyyyy ( 依資料的格式來設定 )。
第一列包含了欄位名稱,所以在 Input/Output 中,修改 Skip row headerYes
在右上方的 Column Attributes pane 中,點選 DateOpen 並改變 Data Type 為 Date。


設定輸出格式,對於數值或日期的資料型別欄位,可以在 Format 欄位設定。


日期格式可以自行定義於 Format 欄位中如下
  • yyyy.mm.dd
  • mm/dd/yyyy
  • dd.mm.yy



以上定義好要匯入的檔案格式後,要進行 Data Flow 的設計。
先在 Object Library 中切換至 Formats 頁籤後,將來源資料文字檔拖拉至工作區。會出現一個 shortcut menu ,點選 Make Source 將其設定為來源資料。


拖拉至工作區的 Flat File Template 不論是當 Source 或 Target ,都可點選它開啟修改部分屬性。例如修改檔案的路徑及名稱;但 Source 和 Target 的屬性有些不同。


若一次要讀取多個檔案,可設定 Root directory 指定其目錄。在 File name(s) 的屬性地方

  1. 使用逗號分隔開每個檔案名稱。
  2. 檔名中包含通用字元 ( * 或 ? )。如 *.txt 或 2012????.txt


再將工具列中的 Query Transform 按鈕拖拉至工作區,之後在 Object Library 切換至 Datastor 頁籤,將目標資料庫中的資料表 ( 要儲存文字檔資料的資料表 ) 拖拉至工作區,並在 Shortcut Menu 中點選 Make Target。
拖拉出資料流的順序。


在 Datastore 資料表分為 Tables 和 Template Tables 兩種,在圖示的表示上也有所不同。
Tables 內的資料表,必須在資料庫中建好後 Import 進入 Datastroe;而 Template Tables 可以在執行 Job 時系統自動建立。因此,若目標資料表是建立 Template Tables 中的話,可以直接點選「Template Tables」後拖拉至工作區,並在 Create Template 的對話方塊中輸入 Table name 即可作為目標資料表。若已建立好的資料表,可以在 Tables 或 Template Tables 下選擇目標資料表。

在 Template Tables 內的資料表,只能當為目標資料表;而 Tables 內的資料表可以當成來源資料表或目標資料表。

拉好資料流程後,再來需要定義 Query Transform 對應來源及目標資料表。點選 Query Transform 圖示兩下。

  • A區:Target schema
  • B區:Source schema
  • C區:Query options
  • D區:Column mapping definition

將 Schema In 的欄位點選後拖拉至 Schema Out 所對應的欄位後,即完成對應關係,且欄位名稱前的圖示會改變,才表示有對應。在下方也可以看到 Mapping 頁籤中有對應的欄位名稱。
點選工具列上的 Validate Current 按鈕,來檢查是否有錯誤。Output 視窗會顯示 Error、Warnings、Information。


在 Validation 選單上是提供設計時期的檢查,檢查語意有無錯誤,而不是執行時期錯誤。修正相關錯誤後,即可在 JOB 上按右鍵,選取 Execute。


若是將 Plat Files 當成 Target,可以不用指定欄位及其資料型別。

在設計時期,可將來源的 Plat File 放在本機上,但在 JOB 執行時期,必須放在執行 JOB 的主機上。若 Plat File 是放在執行 JOB 的伺服器上時,可以指定 Data File(s) 的 Location 為 JOB Server。


預設是使用逗號為分隔符號,也可使用下拉 Delimiters 的 Column 屬性選取,或直接輸入要使用的分隔符號。



若對 Source File 中有特殊標記的資料列要忽略的話,要設定 Ignore row marker(s) 預設為 {none} ,表示不忽略,可自行輸入在資料列前的特殊標記。但不能與分隔符號相同。
若輸入「abc」 表示 abc 開頭的資料不處理;「abc;def;hi」表示 abc 或 def 或 hi 開頭的資料不處理。 


Data Services 可以使用 parallel threads 來增加處理讀取及載入檔案的效能。輸入數值為 Thread 的個數。



沒有留言: