使用SQL解析日志并在首页查看时抓取引荐来源

时间:2016-06-02 14:23:05

标签: sql sql-server logparser

我有一个我正在解析的日志文件,并从特定页面中查找应用程序ID。我可以抓住它和他们的IP很好,但我想拿IP,找到他们连接到网站的最早点,并在那里看他们的推荐人。我遇到了如何提取信息的麻烦。这里有我们的应用程序ID,如果他们是移动,如果他们是新申请人,他们使用我们网站的西班牙语版本,以及他们的IP。无论如何标记该IP,回顾最早的时间(长时间都在同一天,所以只需要正常的hh:mm:ss)然后从一行中获取引用者的所有声明?或者我是否必须执行此查询,然后对每个IP执行另一个查询?

SELECT
    COALESCE(
        TO_INT(REPLACE_CHR(EXTRACT_TOKEN(TO_LOWERCASE(cs-uri-query),3,'+'),';','')),
        TO_INT(REPLACE_CHR(EXTRACT_TOKEN(TO_LOWERCASE(cs-uri-query),2,'+'),';',''))
    ) AS ApplicationID,
    CASE 
        COALESCE(
            INDEX_OF(cs(User-Agent), 'iPhone'),
            INDEX_OF(cs(User-Agent), 'iPad'),
            INDEX_OF(cs(User-Agent), 'Android'),
            INDEX_OF(cs(User-Agent), 'BlackBerry'),
            INDEX_OF(cs(User-Agent), 'Windows Phone')
        ) WHEN NULL THEN 0
        ELSE 1
    END AS Mobile,
    CASE TO_LOWERCASE(SUBSTR(EXTRACT_FILENAME(cs(Referer)),0,INDEX_OF(EXTRACT_FILENAME(cs(Referer)),'?')))
        WHEN 'application.aspx' THEN 1 
        ELSE 0 
    END AS NewApplication,
    CASE TO_LOWERCASE(EXTRACT_TOKEN(cs(Referer),5,'/')) WHEN 'es' THEN 1 ELSE 0
    END AS Spanish,
        EXTRACT_FILENAME(c-ip)
     AS IP,

INTO %outPutFile%
FROM %logFile%
WHERE %whereClause%
    AND TO_LOWERCASE(EXTRACT_FILENAME(cs-uri-stem)) 
        IN ('logclientconfirmation')
    AND TO_UPPERCASE(cs-method) = 'POST'
    AND TO_LOWERCASE(cs-uri-query) LIKE '{application}%'
ORDER BY ApplicationID

0 个答案:

没有答案