我有一个我正在解析的日志文件,并从特定页面中查找应用程序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