2011-04-04 29 views
0

我已經在another forum問了這個,但我沒有得到任何答案或想法。我正在尋找的是在特定場景發生時在我的日誌文件中查找模式。Whiting group by logparser查詢模式

我想知道,如果一個用戶會話入門到10分鐘,其中最後一個GET請求是timeout.aspx 我能夠解析出由該aspnetsessionid和組超時之前,但我很想念另一個部分。我需要減去該會話從開始到結束所花費的時間。

這裏是我開始

SELECT 
    TO_STRING(time, 'm') as mins, 
     EXTRACT_TOKEN(EXTRACT_TOKEN(cs(Cookie), 1, 'ASP.NET_SessionId='), 0, ';+__ut') as ASPNETSESSIONID From C:\logs\ex11*.log 
    GROUP BY ASPNETSESSIONID, mins 

這裏是一個超時ocuring前10分鐘

Line Number Date Time Client-IP Server IP Server Port Request Verb Request URI, ASPNETSessionID 
255 4/1/2011 19:40:55 222.222.22.22 111.11.111.11 443 GET /webpage.aspx 1234567890 
256 4/1/2011 19:40:55 222.222.22.22 111.11.111.11 443 GET /jscript/SessionTimeout/SessionTimeout.js 1234567890 
257 4/1/2011 19:40:58 222.222.22.22 111.11.111.11 443 POST /VerifySession.aspx 1234567890 
260 4/1/2011 19:41:04 222.222.22.22 111.11.111.11 443 POST /Formle.aspx 1234567890 
261 4/1/2011 19:41:04 222.222.22.22 111.11.111.11 443 GET /jscript/SessionTimeout/SessionTimeout.js 1234567890 
263 4/1/2011 19:41:05 222.222.22.22 111.11.111.11 443 POST /VerifySession.aspx 1234567890 
265 4/1/2011 19:41:10 222.222.22.22 111.11.111.11 443 POST /FormItemsTable.aspx 1234567890 
266 4/1/2011 19:41:10 222.222.22.22 111.11.111.11 443 GET /FormRecord.aspx 1234567890 
267 4/1/2011 19:41:10 222.222.22.22 111.11.111.11 443 GET /jscript/SessionTimeout/SessionTimeout.js 1234567890 
268 4/1/2011 19:41:12 222.222.22.22 111.11.111.11 443 POST /VerifySession.aspx 1234567890 
273 4/1/2011 19:41:23 222.222.22.22 111.11.111.11 443 POST /FormRd.aspx 1234567890 
274 4/1/2011 19:41:23 222.222.22.22 111.11.111.11 443 GET /jscript/SessionTimeout/SessionTimeout.js 1234567890 
275 4/1/2011 19:41:25 222.222.22.22 111.11.111.11 443 POST /VerifySession.aspx 1234567890 
276 4/1/2011 19:41:25 222.222.22.22 111.11.111.11 443 GET /Timeout.aspx 1234567890 

回答

1

你可以使用相關子查詢導出時間的情況下的一個例子第一個入口?

例如...

WITH 
    raw_data 
AS 
(
    -- Your query to derive the example data goes here 
) 
SELECT 
    *, 
    time - (SELECT MIN(time) FROM raw_data AS [initial] WHERE session_id = raw_data.session_id) 
FROM 
    raw_data 
+0

儘管我無法在我的查詢中使用With,但我並沒有將數據導入到sql數據庫中,並使用了子查詢邏輯。謝謝! SELECT * from ((SELECT MAX(LocalDateTime)FROM dpo.importtable AS [initial] WHERE sessionid = raw_data.sessionid) - (SELECT MIN(LocalDateTime)FROM dpo.importtable AS [initial] WHERE sessionid = raw_data.sessionid)as diff)as g 其中diff kiev 2011-04-04 21:40:52

0

雖然對這個問題,我會說一個公認的答案:這個邏輯是不可能的LOGPARSER實現。