2013-08-27 40 views
0

由於我能夠在帶有平面文件源的列中完全讀取數據,因此我無法執行操作,但是如果某些內容可用,我需要將它們拆分爲一個單獨的列。如果存在某些參數,請將列拆分

實施例:

line 1) 2013-08-23 14:03:17 ipaddress:port @client POST /api func_0() result(0) 

line 2) 2013-08-23 14:03:18 ipaddress:port @client POST /api/logout LOGOUT 
    (lm=local,haspid=randomnumbers,feat=0,sess=0000007E,duration=8400) result(0) 

line 3) 2013-08-23 14:03:18 ipaddress:port @client POST /api/logout LOGOUT 
    (lm=local,haspid=randomnumbers,feat=1,sess=0000007D,duration=8408) result(0) 

(包裹的可讀性:這三種的是真的一個長行)

我需要做某種派生列的打出SESS的內容=和duration =到他們自己的單獨列中,但正如你所看到的,有時候函數列是不同的,並且包含一個空的func_0或者其他類型的函數,所以它不能通過在Flat文件源中定界它來完成。在。

任何想法?

回答

1

我會在這裏使用腳本轉換。您可以使用regEx或簡單的string.contains查看/ api列中是否有數據。

然後使用split()或regEx將數據拉出sess =和duration = &將其寫入新列。

您可以在腳本轉換中創建新列,但是我個人喜歡在腳本任務之前使用派生列轉換來創建新列 - 例如,持續時間爲&。

然後您可以爲所有行創建的列&僅需要使用腳本任務將數據添加到持續時間列,如果數據存在於/ api列中。

我希望這是有道理的!

+0

這是我非常想到的,但我採取了一個稍微不同的路線。我正在使用腳本轉換,並使用子字符串將所有內容分開。我有會話ID,但目前正在處理持續時間,因爲根據用戶使用時間的長短可能會有所不同,這會造成輕微的問題,因爲它的大小可能會在1到4580之間變化,以此類推。 – Nick

+0

我想通了。謝謝。 – Nick

0

我有一個類似的要求,涉及讀取一些文件,並尋找tolken =值對可能或可能不存在。我只能通過使用腳本任務並編寫簡單的解析器來完成它。我在這個問題上解釋了一點。 ssis import fixed width flat file with header and trailer rows

如果你想朝這個方向走,我可以提供一些示例代碼。如果您有任何問題,請告訴我。

+0

這很有幫助,但並不完全是我在找的東西。 – Nick

+0

使用「=」和「)」分隔符爲你的分裂應該隔離你的持續時間 – TsSkTo