рд╕рд╛рдЗрдЯ рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдХреЗ, рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рд╣рдо рдЙрддреНрдкрд╛рдж рдпрд╛ рд╕реЗрд╡рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреНрдп рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рд╣рдорд╛рд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рдЬрдм рдкрд╣рд▓реЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд▓реА рдЬрд╛рддреА рд╣реИ рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд▓рд╛ рдЪрд░рдг рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ: рдпрджрд┐ рдЖрдк рдбреЗрдЯрд╛ рдХреЛ рджреВрд╕рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдг рдХреА рд╕реАрдорд╛рдПрдВ рд╣реИрдВред рдпрд╣ рдПрдХ рдХрд╛рд░рдг рд╣реИ рдХрд┐ Google Analytics рдЯреВрд▓ рдореЗрд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛, рдЕрд░реНрдерд╛рддреН, рдореЗрд░реЗ рдбреЗрдЯрд╛ рдХреЛ рджреЗрдЦрдиреЗ рдФрд░ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреА рд╕реАрдорд┐рдд рдХреНрд╖рдорддрд╛ рдХреЗ рдХрд╛рд░рдгред
рдореИрдВ рд╣рдореЗрд╢рд╛ рдореВрд▓ рдбреЗрдЯрд╛ (рдорд╛рд╕реНрдЯрд░ рдбреЗрдЯрд╛) рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдПрдХрддреНрд░реАрдХрд░рдг рдХрд╛ рдПрдХ рдФрд░ рд╕реНрддрд░ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ, рдпрд╛ рдЕрдиреНрдпрдерд╛ рдореМрдЬреВрджрд╛ рдореВрд▓реНрдпреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реВрдВред
Access.log рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░
рдЖрдкрдХреА рдЫреЛрдЯреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдпрд╣ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ SQL рднрд╛рд╖рд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рддреЛ, рдореБрдЭреЗ рдХрд┐рди рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рдвреВрдВрдврдирд╛ рдерд╛?
рд╕рд╛рдЗрдЯ рдкрд░ рдХреНрдпрд╛ рдФрд░ рдХрдм рдмрджрд▓рд╛ рд╣реИ
рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛ (рдорд╛рд╕реНрдЯрд░ рдбреЗрдЯрд╛) рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рд╣рдореЗрд╢рд╛ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИред

SQL рд░рд┐рдкреЛрд░реНрдЯ рдЕрдиреБрд░реЛрдзSELECT 1 as 'SideStackedBar: Content Updates by Months', strftime('%m/%Y', datetime(UPDATE_DT, 'unixepoch')) AS 'Day', COUNT(CASE WHEN PAGE_TITLE != 'na' THEN DIM_REQUEST_ID END) AS 'Web page updates', COUNT(CASE WHEN PAGE_DESCR = 'IMAGES' THEN DIM_REQUEST_ID END) AS 'Image uploads', COUNT(CASE WHEN PAGE_DESCR = 'VIDEO' THEN DIM_REQUEST_ID END) AS 'Video uploads', COUNT(CASE WHEN PAGE_DESCR = 'AUDIO' THEN DIM_REQUEST_ID END) AS 'Audio uploads' FROM DIM_REQUEST WHERE PAGE_TITLE != 'na' OR PAGE_DESCR != 'na' GROUP BY strftime('%m/%Y', datetime(UPDATE_DT, 'unixepoch')) ORDER BY UPDATE_DT
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдЦреЛрдЬ рдЗрдВрдЬрди рдЕрдиреБрдХреВрд▓рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рд╕рд╛рдЗрдЯ рдкрд░ рдирдИ рд╕рд╛рдордЧреНрд░реА рдЬреЛрдбрд╝реА рдЧрдИ рдереА, рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдпрд╛рддрд╛рдпрд╛рдд рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреА рдЙрдореНрдореАрдж рд╣реИред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣
рдПрдХ рд╕рдореВрд╣ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ рдпрд╛ рдПрдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдирд╛рдо рд╣реИред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ рдЖрдпрд╛рдо рдиреЗ рд▓рдЧрднрдЧ рдПрдХ рд╣рдЬрд╛рд░ рд░рд┐рдХреЙрд░реНрдб рдЬрдорд╛ рдХрд┐рдП рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рд╕рдореВрд╣ рдХреЗ рднреАрддрд░ рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рд╡рд┐рддрд░рдг рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдереАред

SQL рд░рд┐рдкреЛрд░реНрдЯ рдЕрдиреБрд░реЛрдз SELECT 1 AS 'SideStackedBar: User Agents', AGENT_OS AS 'OS', SUM(CASE WHEN AGENT_BOT = 'na' THEN 1 ELSE 0 END ) AS 'User Agent of Users', SUM(CASE WHEN AGENT_BOT != 'na' THEN 1 ELSE 0 END ) AS 'User Agent of Bots' FROM DIM_USER_AGENT WHERE DIM_USER_AGENT_ID != -1 GROUP BY AGENT_OS ORDER BY 3 DESC
рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдВрдпреЛрдЬрди рд╡рд┐рдВрдбреЛрдЬ рджреБрдирд┐рдпрд╛ рд╕реЗ рд╕рд╛рдЗрдЯ рдкрд░ рдЖрддреЗ рд╣реИрдВред рдЕрдирд┐рд╢реНрдЪрд┐рдд рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк, рдкреЙрдХреЗрдЯрдореЗрдХрдЪреИрдЪ, PlayStation, SmartTV рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рдереЗред
рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣ рдЧрддрд┐рд╡рд┐рдзрд┐
рдХреБрдЫ рд╕рдореВрд╣реЛрдВ рдХреЛ рдорд┐рд▓рд╛рдХрд░, рд╣рдо рдЙрдирдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд╡рд┐рддрд░рдг рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд┐рдирдХреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдкрд░ рдЕрдзрд┐рдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

SQL рд░рд┐рдкреЛрд░реНрдЯ рдЕрдиреБрд░реЛрдз SELECT 1 as 'StackedBar: Traffic Volume by User OS and by Week', strftime('%W week', datetime(FCT.EVENT_DT, 'unixepoch')) AS 'Week', SUM(CASE WHEN USG.AGENT_OS IN ('Android', 'Linux') THEN FCT.BYTES ELSE 0 END)/1000 AS 'Android/Linux Users', SUM(CASE WHEN USG.AGENT_OS IN ('Windows') THEN FCT.BYTES ELSE 0 END)/1000 AS 'Windows Users', SUM(CASE WHEN USG.AGENT_OS IN ('Macintosh', 'iOS') THEN FCT.BYTES ELSE 0 END)/1000 AS 'Mac/iOS Users', SUM(CASE WHEN USG.AGENT_OS IN ('na', 'BlackBerry') THEN FCT.BYTES ELSE 0 END)/1000 AS 'Other' FROM FCT_ACCESS_USER_AGENT_DD FCT, DIM_USER_AGENT USG, DIM_HTTP_STATUS HST WHERE FCT.DIM_USER_AGENT_ID=USG.DIM_USER_AGENT_ID AND FCT.DIM_HTTP_STATUS_ID = HST.DIM_HTTP_STATUS_ID AND USG.AGENT_BOT = 'na' AND HST.STATUS_GROUP IN ('Successful') AND datetime(FCT.EVENT_DT, 'unixepoch') > date('now', '-3 month') GROUP BY strftime('%W week', datetime(FCT.EVENT_DT, 'unixepoch')) ORDER BY FCT.EVENT_DT
рдпрд╛рддрд╛рдпрд╛рдд рдХреА рднрд╛рд░реА рдЦрдкрдд
рддрд╛рд▓рд┐рдХрд╛ рд╕рдмрд╕реЗ рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣реЛрдВ рдФрд░ рдЙрдирдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рджрд┐рди рджрд┐рдЦрд╛рддреА рд╣реИред
рд╕рдмрд╕реЗ рд╕рдХреНрд░рд┐рдп рд▓реЛрдЧ рд▓рд┐рдирдХреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред

SQL рд░рд┐рдкреЛрд░реНрдЯ рдЕрдиреБрд░реЛрдз SELECT 1 AS 'Table: User Agent with Havy Usage', strftime('%d.%m.%Y', datetime(FCT.EVENT_DT, 'unixepoch')) AS 'Day', ROUND(1.0*SUM(FCT.BYTES)/1000000, 1) AS 'Traffic MB', ROUND(1.0*SUM(FCT.IP_CNT)/SUM(1), 1) AS 'IPs', ROUND(1.0*SUM(FCT.REQUEST_CNT)/SUM(1), 1) AS 'Requests', USA.DIM_USER_AGENT_ID AS 'ID', MAX(USA.USER_AGENT_NK) AS 'User Agent', MAX(USA.AGENT_BOT) AS 'Bot' FROM FCT_ACCESS_USER_AGENT_DD FCT, DIM_USER_AGENT USA WHERE FCT.DIM_USER_AGENT_ID = USA.DIM_USER_AGENT_ID AND datetime(FCT.EVENT_DT, 'unixepoch') >= date('now', '-30 day') GROUP BY USA.DIM_USER_AGENT_ID, strftime('%d.%m.%Y', datetime(FCT.EVENT_DT, 'unixepoch')) ORDER BY SUM(FCT.BYTES) DESC, FCT.EVENT_DT LIMIT 10
рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рджрд┐рди рдФрд░ рдПрдЬреЗрдВрдЯ рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣реЛрдВ рдХреЗ рджрд┐рдиреЛрдВ рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдЪрд░рдг рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрд╛рдирдХрд╛рд░реА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?
Access.log рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдХреЗ рдФрд░ рдПрдХрддреНрд░реАрдХрд░рдг рдФрд░ рд╕рдореВрд╣реАрдХрд░рдг рдХреЗ рдирдП рд╕реНрддрд░реЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдХреЗ рдФрд░ рднреА рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдмреБрдирд┐рдпрд╛рджреА рдбреЗрдЯрд╛ рдФрд░ рдЗрдХрд╛рдЗрдпрд╛рдБ
рдмреБрдирд┐рдпрд╛рджреА рдбреЗрдЯрд╛ рдореЗрдВ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИ: рд╡реЗрдм рдкреЗрдЬ, рдЪрд┐рддреНрд░, рд╡реАрдбрд┐рдпреЛ рдФрд░ рдСрдбрд┐рдпреЛ рд╕рд╛рдордЧреНрд░реА, рд╕реНрдЯреЛрд░, рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВред
рдЗрдХрд╛рдЗрдпрд╛рдВ рд╕реНрд╡рдпрдВ рдЖрдпрд╛рдореЛрдВ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреА рд╣реИрдВ, рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдРрддрд┐рд╣рд╛рд╕рд┐рдХрддрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрдХреНрд╕рд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдмрджрд▓рддреЗ рдЖрдпрд╛рдореЛрдВ (рдПрд╕рд╕реАрдбреА) рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдмреБрдирд┐рдпрд╛рджреА рдбреЗрдЯрд╛ рдХрд╛ рд╕реНрд░реЛрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдзреАрд░реЗ-рдзреАрд░реЗ рдмрджрд▓рддреЗ рдЖрдпрд╛рдо
DIM_REQUEST рдЖрдпрд╛рдо рдореЗрдВ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рдореЗрдВ рд╕рд╛рдЗрдЯ рдкрд░ рдореМрдЬреВрдж рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреАред
SCD2 рддрд╛рд▓рд┐рдХрд╛ CREATE TABLE DIM_REQUEST ( DIM_REQUEST_ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, DIM_REQUEST_ID_HIST INTEGER NOT NULL DEFAULT -1, REQUEST_NK TEXT NOT NULL DEFAULT 'na', PAGE_TITLE TEXT NOT NULL DEFAULT 'na', PAGE_DESCR TEXT NOT NULL DEFAULT 'na', PAGE_KEYWORDS TEXT NOT NULL DEFAULT 'na', DELETE_FLAG INTEGER NOT NULL DEFAULT 0, UPDATE_DT INTEGER NOT NULL DEFAULT 0, UNIQUE (REQUEST_NK, DIM_REQUEST_ID_HIST) ); INSERT INTO DIM_REQUEST (DIM_REQUEST_ID) VALUES (-1);
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рджреГрд╢реНрдп рдмрдирд╛рдПрдВ рдЬреЛ рд╣рдореЗрд╢рд╛ рдЕрдВрддрд┐рдо рд░рд╛рдЬреНрдп рдореЗрдВ рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдорд╛рдк рдХреЛ рд╕реНрд╡рдпрдВ рд▓реЛрдб рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

SCD2 рдХрд╛ рд╡рд░реНрддрдорд╛рди рджреГрд╢реНрдп SELECT HI.DIM_REQUEST_ID, HI.DIM_REQUEST_ID_HIST, HI.REQUEST_NK, HI.PAGE_TITLE, HI.PAGE_DESCR, HI.PAGE_KEYWORDS, NK.CNT AS HIST_CNT, HI.DELETE_FLAG, strftime('%d.%m.%Y %H:%M', datetime(HI.UPDATE_DT, 'unixepoch')) AS UPDATE_DT FROM ( SELECT REQUEST_NK, MAX(DIM_REQUEST_ID) AS DIM_REQUEST_ID, SUM(1) AS CNT FROM DIM_REQUEST GROUP BY REQUEST_NK ) NK, DIM_REQUEST HI WHERE 1 = 1 AND NK.REQUEST_NK = HI.REQUEST_NK AND NK.DIM_REQUEST_ID = HI.DIM_REQUEST_ID;
рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рджреГрд╢реНрдпред рддрдереНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╕рдВрдмрдВрдз рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

SCD2 рдХрд╛ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рджреГрд╢реНрдп SELECT SCD.DIM_REQUEST_ID, SCD.DIM_REQUEST_ID_HIST, SCD.REQUEST_NK, SCD.PAGE_TITLE, SCD.PAGE_DESCR, SCD.PAGE_KEYWORDS, SCD.DELETE_FLAG, CASE WHEN HIS.UPDATE_DT IS NULL THEN 1 ELSE 0 END ACTIVE_FLAG, SCD.DIM_REQUEST_ID_HIST AS ID_FROM, SCD.DIM_REQUEST_ID AS ID_TO, CASE WHEN SCD.DIM_REQUEST_ID_HIST=-1 THEN 3600 ELSE IFNULL(SCD.UPDATE_DT,3600) END AS TIME_FROM, CASE WHEN HIS.UPDATE_DT IS NULL THEN 253370764800 ELSE HIS.UPDATE_DT END AS TIME_TO, CASE WHEN SCD.DIM_REQUEST_ID_HIST=-1 THEN STRFTIME('%d.%m.%Y %H:%M', DATETIME(3600, 'unixepoch')) ELSE STRFTIME('%d.%m.%Y %H:%M', DATETIME(IFNULL(SCD.UPDATE_DT,3600), 'unixepoch')) END AS ACTIVE_FROM, CASE WHEN HIS.UPDATE_DT IS NULL THEN STRFTIME('%d.%m.%Y %H:%M', DATETIME(253370764800, 'unixepoch')) ELSE STRFTIME('%d.%m.%Y %H:%M', DATETIME(HIS.UPDATE_DT, 'unixepoch')) END AS ACTIVE_TO FROM DIM_REQUEST SCD LEFT OUTER JOIN DIM_REQUEST HIS ON SCD.REQUEST_NK = HIS.REQUEST_NK AND SCD.DIM_REQUEST_ID = HIS.DIM_REQUEST_ID_HIST;
рдбреЗрдЯрд╛ рдПрдХрддреНрд░реАрдХрд░рдг
рд╕рдВрдкреАрдбрд╝рди (рдПрдХрддреНрд░реАрдХрд░рдг) рдЖрдкрдХреЛ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рдбреЗрдЯрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдФрд░ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдФрд░ рд░реБрдЭрд╛рдиреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рд╕реНрддреГрдд рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдиреБрд░реЛрдз рд╕реНрдерд┐рддрд┐ рдХреЛрдб DIM_HTTP_STATUS рдХреЗ рдЖрдпрд╛рдо рдореЗрдВ, рд╕рдореВрд╣ рдЬреЛрдбрд╝реЗрдВ:
рд╕реНрдерд┐рддрд┐ / рд╕рдореВрд╣
0xx / рдирд╛
1xx / рд╕реВрдЪрдирд╛рддреНрдордХ
2xx / рд╕рдлрд▓
3xx / рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди
4xx / рдЧреНрд░рд╛рд╣рдХ рддреНрд░реБрдЯрд┐
5xx / рд╕рд░реНрд╡рд░ рддреНрд░реБрдЯрд┐
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ рдЖрдпрд╛рдо DIM_USER_AGENT рдореЗрдВ AGENT_OS рдФрд░ AGENT_BOT рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реЛрдВрдЧреАред рдИрдЯреАрдПрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдЙрдиреНрд╣реЗрдВ рднрд░рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
DIM_USER_AGENT рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ INSERT INTO DIM_USER_AGENT (USER_AGENT_NK, AGENT_OS, AGENT_ENGINE, AGENT_DEVICE, AGENT_BOT, UPDATE_DT) WITH CLS AS ( SELECT BROWSER FROM STG_ACCESS_LOG WHERE LENGTH(BROWSER)>1 GROUP BY BROWSER ) SELECT CLS.BROWSER AS USER_AGENT_NK, CASE WHEN INSTR(CLS.BROWSER,'Macintosh')>0 THEN 'Macintosh' WHEN INSTR(CLS.BROWSER,'iPhone')>0 OR INSTR(CLS.BROWSER,'iPad')>0 OR INSTR(CLS.BROWSER,'iPod')>0 OR INSTR(CLS.BROWSER,'Apple TV')>0 OR INSTR(CLS.BROWSER,'Darwin')>0 THEN 'iOS' WHEN INSTR(CLS.BROWSER,'Android')>0 THEN 'Android' WHEN INSTR(CLS.BROWSER,'X11;')>0 OR INSTR(CLS.BROWSER,'Wayland;')>0 OR INSTR(CLS.BROWSER,'linux-gnu')>0 THEN 'Linux' WHEN INSTR(CLS.BROWSER,'BB10;')>0 OR INSTR(CLS.BROWSER,'BlackBerry')>0 THEN 'BlackBerry' WHEN INSTR(CLS.BROWSER,'Windows')>0 THEN 'Windows' ELSE 'na' END AS AGENT_OS,
рдбреЗрдЯрд╛ рдПрдХреАрдХрд░рдг
рдЗрд╕рдореЗрдВ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдПрдХ рддрдХ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд╛ рд╕рдВрдЧрдарди рд╢рд╛рдорд┐рд▓ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрд░реЛрдд рдХреЗ рд╕рдорд╛рди рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдордВрдЪ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВред
рд╡реЗрдм рдкреЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдбрд╛рд▓рдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд░реВрдк рдореЗрдВ рд╕реАрдПрдордПрд╕ рдмреИрдХрдЕрдк рд╕реЗ рдЪрд░рдг рдореЗрдВ рдорд┐рд▓рддреА рд╣реИред
рдореВрд▓рднреВрдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдРрддрд┐рд╣рд╛рд╕рд┐рдХ DIM_REQUEST рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рддреАрди рдЪрд░рдг рд▓рдЧрддреЗ рд╣реИрдВ: рдирдИ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд▓реЛрдб рдХрд░рдирд╛, рдореМрдЬреВрджрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдФрд░ рд╣рдЯрд╛рдП рдЧрдП рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреЛ рдареАрдХ рдХрд░рдирд╛ред
рдирдИ SCD2 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ INSERT INTO DIM_REQUEST (DIM_REQUEST_ID_HIST, REQUEST_NK, PAGE_TITLE, PAGE_DESCR, PAGE_KEYWORDS, DELETE_FLAG, UPDATE_DT) WITH CLS AS (
рдЕрджреНрдпрддрди SCD2 рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ INSERT INTO DIM_REQUEST (DIM_REQUEST_ID_HIST, REQUEST_NK, PAGE_TITLE, PAGE_DESCR, PAGE_KEYWORDS, DELETE_FLAG, UPDATE_DT) WITH CLS AS (
рд╣рдЯрд╛рдП рдЧрдП SCD2 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ INSERT INTO DIM_REQUEST (DIM_REQUEST_ID_HIST, REQUEST_NK, PAGE_TITLE, PAGE_DESCR, PAGE_KEYWORDS, DELETE_FLAG, UPDATE_DT) WITH CLS AS (
рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛ рдФрдкрдЪрд╛рд░рд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, readme.txt рдлрд╝рд╛рдЗрд▓ рдореЗрдВ:
рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ / рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛: рдирд╛рдо, рдИрдореЗрд▓ рдкрддрд╛
рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рддрд╛ / рддрдХрдиреАрдХреА: рдирд╛рдо, рдИрдореЗрд▓
рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд: рдлрд╝рд╛рдЗрд▓ рдкрде, рд╕реЗрд╡рд╛ рдирд╛рдо
рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдХреА рдЬрд╛рдирдХрд╛рд░реА: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб
рдбреЗрдЯрд╛ рдЖрдВрджреЛрд▓рди рдпреЛрдЬрдирд╛ рд░рдЦрд░рдЦрд╛рд╡ рдФрд░ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рда рд░реВрдк рдореЗрдВ:
рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЗ рдЬрд╛рдирд╛ред рд╕реНрд░реЛрдд: ftp.domain.net: /logs/access.log рд▓рдХреНрд╖реНрдп: /var/www/access.log
рд╕реНрдЯреЗрдЬ рдореЗрдВ рдкрдврд╝рдирд╛ред рд▓рдХреНрд╖реНрдп: STG_ACCESS_LOG
рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиред рд▓рдХреНрд╖реНрдп: FCT_ACCESS_REQUEST_REF_HH
рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиред рд▓рдХреНрд╖реНрдп: FCT_ACCESS_USER_AGENT_DD
рд░рд┐рдкреЛрд░реНрдЯред рд▓рдХреНрд╖реНрдп: /var/www/report.html
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд▓реЗрдЦ рдРрд╕реЗ рддрдВрддреНрд░реЛрдВ рдХреЛ рдореВрд▓ рдбреЗрдЯрд╛ рдХреЗ рдПрдХреАрдХрд░рдг рдФрд░ рдПрдХрддреНрд░реАрдХрд░рдг рдХреЗ рдирдП рд╕реНрддрд░реЛрдВ рдХреА рд╢реБрд░реВрдЖрдд рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рдЬреНрдЮрд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕реВрдЪрдирд╛ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдЧреЛрджрд╛рдореЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред