سائيٽ جا انگ اکر ۽ توهان جي پنهنجي ننڍڙي اسٽوريج

Webalizer ۽ گوگل تجزياتي مون کي مدد ڪئي آهي بصيرت حاصل ڪرڻ ۾ جيڪي ويب سائيٽن تي ڪيترن ئي سالن کان ٿي رهيو آهي. هاڻي مان سمجهان ٿو ته اهي تمام گهٽ مفيد معلومات مهيا ڪن ٿا. توهان جي access.log فائل تائين رسائي حاصل ڪرڻ سان، انگن اکرن کي سمجهڻ ۽ ڪافي بنيادي اوزارن تي عمل ڪرڻ تمام آسان آهي، جهڙوڪ sqlite، html، sql ٻولي ۽ ڪنهن به اسڪرپٽنگ پروگرامنگ ٻولي.

Webalizer لاءِ ڊيٽا جو ذريعو سرور جي access.log فائل آهي. اھو اھو آھي جيڪو ان جا بار ۽ انگ جھڙا نظر اچن ٿا، جن مان صرف ٽرئفڪ جو ڪل مقدار واضح آھي:

سائيٽ جا انگ اکر ۽ توهان جي پنهنجي ننڍڙي اسٽوريج
سائيٽ جا انگ اکر ۽ توهان جي پنهنجي ننڍڙي اسٽوريج
اوزار جهڙوڪ گوگل تجزياتي پاڻ کي لوڊ ٿيل صفحي مان ڊيٽا گڏ ڪري ٿو. اهي اسان کي ڏيکارين ٿا ڪي ڊاگرام ۽ لائينون، جن جي بنياد تي صحيح نتيجن کي ڪڍڻ ڏکيو آهي. ٿي سگهي ٿو وڌيڪ ڪوشش ڪرڻ گهرجي ها؟ خبر ناهي.

تنهن ڪري، مان ڇا ڏسڻ چاهيان ٿو ويب سائيٽ دورو ڪندڙ انگ اکر؟

استعمال ڪندڙ ۽ بوٽ ٽرئفڪ

گهڻو ڪري سائيٽ ٽرئفڪ محدود آهي ۽ اهو ڏسڻ ضروري آهي ته ڪيترو ڪارائتو ٽرئفڪ استعمال ٿي رهيو آهي. مثال طور، هن طرح:

سائيٽ جا انگ اکر ۽ توهان جي پنهنجي ننڍڙي اسٽوريج

SQL رپورٽ سوال

SELECT
1 as 'StackedArea: Traffic generated by Users and Bots',
strftime('%d.%m', datetime(FCT.EVENT_DT, 'unixepoch')) AS 'Day',
SUM(CASE WHEN USG.AGENT_BOT!='n.a.' THEN FCT.BYTES ELSE 0 END)/1000 AS 'Bots, KB',
SUM(CASE WHEN USG.AGENT_BOT='n.a.' THEN FCT.BYTES ELSE 0 END)/1000 AS 'Users, KB'
FROM
  FCT_ACCESS_USER_AGENT_DD FCT,
  DIM_USER_AGENT USG
WHERE FCT.DIM_USER_AGENT_ID=USG.DIM_USER_AGENT_ID
  AND datetime(FCT.EVENT_DT, 'unixepoch') >= date('now', '-14 day')
GROUP BY strftime('%d.%m', datetime(FCT.EVENT_DT, 'unixepoch'))
ORDER BY FCT.EVENT_DT

گراف ڏيکاري ٿو بوٽن جي مسلسل سرگرمي. اهو دلچسپ ٿيندو ته سڀ کان وڌيڪ سرگرم نمائندن جي تفصيل سان مطالعو ڪرڻ.

پريشان ڪندڙ بوٽ

اسان صارف ايجنٽ جي معلومات جي بنياد تي بوٽن جي درجه بندي ڪريون ٿا. روزاني ٽرئفڪ تي اضافي انگ اکر، ڪامياب ۽ ناڪام درخواستن جو تعداد بوٽ سرگرمي جو سٺو خيال ڏيو.

سائيٽ جا انگ اکر ۽ توهان جي پنهنجي ننڍڙي اسٽوريج

SQL رپورٽ سوال

SELECT 
1 AS 'Table: Annoying Bots',
MAX(USG.AGENT_BOT) AS 'Bot',
ROUND(SUM(FCT.BYTES)/1000 / 14.0, 1) AS 'KB per Day',
ROUND(SUM(FCT.IP_CNT) / 14.0, 1) AS 'IPs per Day',
ROUND(SUM(CASE WHEN STS.STATUS_GROUP IN ('Client Error', 'Server Error') THEN FCT.REQUEST_CNT / 14.0 ELSE 0 END), 1) AS 'Error Requests per Day',
ROUND(SUM(CASE WHEN STS.STATUS_GROUP IN ('Successful', 'Redirection') THEN FCT.REQUEST_CNT / 14.0 ELSE 0 END), 1) AS 'Success Requests per Day',
USG.USER_AGENT_NK AS 'Agent'
FROM FCT_ACCESS_USER_AGENT_DD FCT,
     DIM_USER_AGENT USG,
     DIM_HTTP_STATUS STS
WHERE FCT.DIM_USER_AGENT_ID = USG.DIM_USER_AGENT_ID
  AND FCT.DIM_HTTP_STATUS_ID = STS.DIM_HTTP_STATUS_ID
  AND USG.AGENT_BOT != 'n.a.'
  AND datetime(FCT.EVENT_DT, 'unixepoch') >= date('now', '-14 day')
GROUP BY USG.USER_AGENT_NK
ORDER BY 3 DESC
LIMIT 10

انهي صورت ۾، تجزيو جو نتيجو اهو هو ته سائيٽ تائين رسائي کي محدود ڪرڻ جو فيصلو ان کي شامل ڪندي robots.txt فائل ۾

User-agent: AhrefsBot
Disallow: /
User-agent: dotbot
Disallow: /
User-agent: bingbot
Crawl-delay: 5

پهرين ٻه بوٽ ٽيبل تان غائب ٿي ويا، ۽ ايم ايس روبوٽس پهرين لائينن کان هيٺ ٿي ويا.

سڀ کان وڏي سرگرمي جو ڏينهن ۽ وقت

ٽريفڪ ۾ اوچتو نظر اچي رهيا آهن. انھن کي تفصيل سان پڙھڻ لاء، اھو ضروري آھي ته انھن جي واقعن جي وقت کي اجاگر ڪيو وڃي، ۽ اھو ضروري نه آھي ته سڀني ڪلاڪن ۽ ڏينھن جي ماپ کي ڏيکاري. اهو آسان بڻائيندو انفرادي درخواستن کي ڳولڻ لاءِ لاگ فائل ۾ جيڪڏهن تفصيلي تجزيو گهربل هجي.

سائيٽ جا انگ اکر ۽ توهان جي پنهنجي ننڍڙي اسٽوريج

SQL رپورٽ سوال

SELECT
1 AS 'Line: Day and Hour of Hits from Users and Bots',
strftime('%d.%m-%H', datetime(EVENT_DT, 'unixepoch')) AS 'Date Time',
HIB AS 'Bots, Hits',
HIU AS 'Users, Hits'
FROM (
	SELECT
	EVENT_DT,
	SUM(CASE WHEN AGENT_BOT!='n.a.' THEN LINE_CNT ELSE 0 END) AS HIB,
	SUM(CASE WHEN AGENT_BOT='n.a.' THEN LINE_CNT ELSE 0 END) AS HIU
	FROM FCT_ACCESS_REQUEST_REF_HH
	WHERE datetime(EVENT_DT, 'unixepoch') >= date('now', '-14 day')
	GROUP BY EVENT_DT
	ORDER BY SUM(LINE_CNT) DESC
	LIMIT 10
) ORDER BY EVENT_DT

اسان چارٽ تي پهرين ڏينهن جا سڀ کان وڌيڪ فعال ڪلاڪ 11، 14 ۽ 20 جو مشاهدو ڪندا آهيون. پر ٻئي ڏينهن 13:XNUMX تي بوٽ چالو هئا.

سراسري روزاني صارف جي سرگرمي هفتي طرفان

اسان سرگرمي ۽ ٽريفڪ سان ڪجھه شيون ترتيب ڏنيون. ايندڙ سوال خود استعمال ڪندڙن جي سرگرمي هئي. اهڙن انگن اکرن لاءِ، ڊگھي مجموعي مدت، جهڙوڪ هڪ هفتي، گهربل آهن.

سائيٽ جا انگ اکر ۽ توهان جي پنهنجي ننڍڙي اسٽوريج

SQL رپورٽ سوال

SELECT
1 as 'Line: Average Daily User Activity by Week',
strftime('%W week', datetime(FCT.EVENT_DT, 'unixepoch')) AS 'Week',
ROUND(1.0*SUM(FCT.PAGE_CNT)/SUM(FCT.IP_CNT),1) AS 'Pages per IP per Day',
ROUND(1.0*SUM(FCT.FILE_CNT)/SUM(FCT.IP_CNT),1) AS 'Files per IP per Day'
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='n.a.' /* users only */
  AND HST.STATUS_GROUP IN ('Successful') /* good pages */
  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

هفتيوار انگ اکر ڏيکاري ٿو ته سراسري طور تي هڪ صارف هر روز 1,6 صفحا کوليندو آهي. هن معاملي ۾ في صارف درخواست ڪيل فائلن جو تعداد سائيٽ تي نئين فائلن جي اضافي تي منحصر آهي.

سڀ درخواستون ۽ انهن جون حالتون

Webalizer هميشه مخصوص صفحو ڪوڊ ڏيکاريو ۽ مان هميشه صرف ڪامياب درخواستن ۽ غلطين جو تعداد ڏسڻ چاهيان ٿو.

سائيٽ جا انگ اکر ۽ توهان جي پنهنجي ننڍڙي اسٽوريج

SQL رپورٽ سوال

SELECT
1 as 'Line: All Requests by Status',
strftime('%d.%m', datetime(FCT.EVENT_DT, 'unixepoch')) AS 'Day',
SUM(CASE WHEN STS.STATUS_GROUP='Successful' THEN FCT.REQUEST_CNT ELSE 0 END) AS 'Success',
SUM(CASE WHEN STS.STATUS_GROUP='Redirection' THEN FCT.REQUEST_CNT ELSE 0 END) AS 'Redirect',
SUM(CASE WHEN STS.STATUS_GROUP='Client Error' THEN FCT.REQUEST_CNT ELSE 0 END) AS 'Customer Error',
SUM(CASE WHEN STS.STATUS_GROUP='Server Error' THEN FCT.REQUEST_CNT ELSE 0 END) AS 'Server Error'
FROM
  FCT_ACCESS_USER_AGENT_DD FCT,
  DIM_HTTP_STATUS STS
WHERE FCT.DIM_HTTP_STATUS_ID=STS.DIM_HTTP_STATUS_ID
  AND datetime(FCT.EVENT_DT, 'unixepoch') >= date('now', '-14 day')
GROUP BY strftime('%d.%m', datetime(FCT.EVENT_DT, 'unixepoch'))
ORDER BY FCT.EVENT_DT

رپورٽ درخواستن کي ڏيکاري ٿي، نه ڪلڪ (هٽ)، برعڪس LINE_CNT، REQUEST_CNT ميٽرڪ COUNT(DISTINCT STG.REQUEST_NK) جي حساب سان ڳڻيو وڃي ٿو. مقصد موثر واقعن کي ڏيکارڻ آهي، مثال طور، MS بوٽس روز ۾ سوين ڀيرا robots.txt فائل کي پول ڪن ٿا ۽، ان صورت ۾، اهڙين پولن کي هڪ ڀيرو شمار ڪيو ويندو. هي توهان کي گراف ۾ جمپ کي هموار ڪرڻ جي اجازت ڏئي ٿو.

گراف مان توهان ڪيتريون ئي غلطيون ڏسي سگهو ٿا - اهي غير موجود صفحا آهن. تجزيو جو نتيجو ريموٽ صفحن مان ريڊريڪٽس جو اضافو هو.

خراب درخواستون

تفصيلي درخواستن کي جانچڻ لاءِ، توھان تفصيلي انگ اکر ڏيکاري سگھو ٿا.

سائيٽ جا انگ اکر ۽ توهان جي پنهنجي ننڍڙي اسٽوريج

SQL رپورٽ سوال

SELECT
  1 AS 'Table: Top Error Requests',
  REQ.REQUEST_NK AS 'Request',
  'Error' AS 'Request Status',
  ROUND(SUM(FCT.LINE_CNT) / 14.0, 1) AS 'Hits per Day',
  ROUND(SUM(FCT.IP_CNT) / 14.0, 1) AS 'IPs per Day',
  ROUND(SUM(FCT.BYTES)/1000 / 14.0, 1) AS 'KB per Day'
FROM
  FCT_ACCESS_REQUEST_REF_HH FCT,
  DIM_REQUEST_V_ACT REQ
WHERE FCT.DIM_REQUEST_ID = REQ.DIM_REQUEST_ID
  AND FCT.STATUS_GROUP IN ('Client Error', 'Server Error')
  AND datetime(FCT.EVENT_DT, 'unixepoch') >= date('now', '-14 day')
GROUP BY REQ.REQUEST_NK
ORDER BY 4 DESC
LIMIT 20

هن لسٽ ۾ سڀ ڪالون به شامل هونديون، مثال طور، /wp-login.php ڏانهن هڪ درخواست سرور پاران ٻيهر لکڻ جي قاعدن کي ترتيب ڏيڻ سان، توهان اهڙين درخواستن تي سرور جي رد عمل کي ترتيب ڏئي سگهو ٿا ۽ انهن کي شروعاتي صفحي ڏانهن موڪلي سگهو ٿا.

تنهن ڪري، سرور لاگ فائل جي بنياد تي ڪجھ سادي رپورٽون سائيٽ تي ڇا ٿي رهيو آهي جي مڪمل تصوير ڏيو.

معلومات ڪيئن حاصل ڪجي؟

هڪ sqlite ڊيٽابيس ڪافي آهي. اچو ته ٽيبل ٺاھيون: ETL عملن کي لاگ ان ڪرڻ لاءِ معاون.

سائيٽ جا انگ اکر ۽ توهان جي پنهنجي ننڍڙي اسٽوريج

ٽيبل اسٽيج جتي اسين پي ايڇ پي استعمال ڪندي لاگ فائلون لکنداسين. ٻه مجموعي ٽيبل. اچو ته يوزر ايجنٽن تي انگن اکرن سان گڏ روزانه ٽيبل ٺاهيون ۽ اسٽيٽس جي درخواست ڪريو. درخواستن تي انگن اکرن سان ڪلاڪ، اسٽيٽس گروپن ۽ ايجنٽ. لاڳاپيل ماپن جا چار جدول.

نتيجو هيٺ ڏنل تعلقي ماڊل آهي:

ڊيٽا ماڊلسائيٽ جا انگ اکر ۽ توهان جي پنهنجي ننڍڙي اسٽوريج

sqlite ڊيٽابيس ۾ هڪ اعتراض ٺاهڻ لاء اسڪرپٽ:

DDL создание объекта

DROP TABLE IF EXISTS DIM_USER_AGENT;
CREATE TABLE DIM_USER_AGENT (
  DIM_USER_AGENT_ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  USER_AGENT_NK     TEXT NOT NULL DEFAULT 'n.a.',
  AGENT_OS          TEXT NOT NULL DEFAULT 'n.a.',
  AGENT_ENGINE      TEXT NOT NULL DEFAULT 'n.a.',
  AGENT_DEVICE      TEXT NOT NULL DEFAULT 'n.a.',
  AGENT_BOT         TEXT NOT NULL DEFAULT 'n.a.',
  UPDATE_DT         INTEGER NOT NULL DEFAULT 0,
  UNIQUE (USER_AGENT_NK)
);
INSERT INTO DIM_USER_AGENT (DIM_USER_AGENT_ID) VALUES (-1);

اسٽيج

Access.log فائل جي صورت ۾، اهو ضروري آهي ته سڀني درخواستن کي پڙهڻ، پارس ڪرڻ ۽ لکڻ لاء ڊيٽابيس ڏانهن. اهو ٿي سگهي ٿو سڌو سنئون اسڪرپٽنگ ٻولي استعمال ڪندي يا sqlite اوزار استعمال ڪندي.

لاگ فائل فارميٽ:

//67.221.59.195 - - [28/Dec/2012:01:47:47 +0100] "GET /files/default.css HTTP/1.1" 200 1512 "https://project.edu/" "Mozilla/4.0"
//host ident auth time method request_nk protocol status bytes ref browser
$log_pattern = '/^([^ ]+) ([^ ]+) ([^ ]+) ([[^]]+]) "(.*) (.*) (.*)" ([0-9-]+) ([0-9-]+) "(.*)" "(.*)"$/';

اهم پروپيگنڊا

جڏهن خام ڊيٽا ڊيٽابيس ۾ آهي، توهان کي چابيون لکڻ جي ضرورت آهي جيڪي ماپ جي جدولن ۾ نه آهن. ان کان پوء ان جي ماپ جي حوالي سان تعمير ڪرڻ ممڪن ٿيندو. مثال طور، DIM_REFERRER جدول ۾، ڪيئي ٽن شعبن جو ميلاپ آھي.

SQL اهم پروپيگنڊا سوال

/* Propagate the referrer from access log */
INSERT INTO DIM_REFERRER (HOST_NK, PATH_NK, QUERY_NK, UPDATE_DT)
SELECT
	CLS.HOST_NK,
	CLS.PATH_NK,
	CLS.QUERY_NK,
	STRFTIME('%s','now') AS UPDATE_DT
FROM (
	SELECT DISTINCT
	REFERRER_HOST AS HOST_NK,
	REFERRER_PATH AS PATH_NK,
	CASE WHEN INSTR(REFERRER_QUERY,'&sid')>0 THEN SUBSTR(REFERRER_QUERY, 1, INSTR(REFERRER_QUERY,'&sid')-1) /* отрезаем sid - специфика цмс */
	ELSE REFERRER_QUERY END AS QUERY_NK
	FROM STG_ACCESS_LOG
) CLS
LEFT OUTER JOIN DIM_REFERRER TRG
ON (CLS.HOST_NK = TRG.HOST_NK AND CLS.PATH_NK = TRG.PATH_NK AND CLS.QUERY_NK = TRG.QUERY_NK)
WHERE TRG.DIM_REFERRER_ID IS NULL

يوزر ايجنٽ ٽيبل تي پروپيگيشن بوٽ منطق تي مشتمل ٿي سگھي ٿي، مثال طور sql snippet:


CASE
WHEN INSTR(LOWER(CLS.BROWSER),'yandex.com')>0
	THEN 'yandex'
WHEN INSTR(LOWER(CLS.BROWSER),'googlebot')>0
	THEN 'google'
WHEN INSTR(LOWER(CLS.BROWSER),'bingbot')>0
	THEN 'microsoft'
WHEN INSTR(LOWER(CLS.BROWSER),'ahrefsbot')>0
	THEN 'ahrefs'
WHEN INSTR(LOWER(CLS.BROWSER),'mj12bot')>0
	THEN 'majestic-12'
WHEN INSTR(LOWER(CLS.BROWSER),'compatible')>0 OR INSTR(LOWER(CLS.BROWSER),'http')>0
	OR INSTR(LOWER(CLS.BROWSER),'libwww')>0 OR INSTR(LOWER(CLS.BROWSER),'spider')>0
	OR INSTR(LOWER(CLS.BROWSER),'java')>0 OR INSTR(LOWER(CLS.BROWSER),'python')>0
	OR INSTR(LOWER(CLS.BROWSER),'robot')>0 OR INSTR(LOWER(CLS.BROWSER),'curl')>0
	OR INSTR(LOWER(CLS.BROWSER),'wget')>0
	THEN 'other'
ELSE 'n.a.' END AS AGENT_BOT

مجموعي جدول

آخر ۾، اسان مجموعي جدولن کي لوڊ ڪنداسين؛ مثال طور، روزاني جدول ھيٺ ڏنل لوڊ ڪري سگھجي ٿو:

مجموعي لوڊ ڪرڻ لاءِ SQL سوال

/* Load fact from access log */
INSERT INTO FCT_ACCESS_USER_AGENT_DD (EVENT_DT, DIM_USER_AGENT_ID, DIM_HTTP_STATUS_ID, PAGE_CNT, FILE_CNT, REQUEST_CNT, LINE_CNT, IP_CNT, BYTES)
WITH STG AS (
SELECT
	STRFTIME( '%s', SUBSTR(TIME_NK,9,4) || '-' ||
	CASE SUBSTR(TIME_NK,5,3)
	WHEN 'Jan' THEN '01' WHEN 'Feb' THEN '02' WHEN 'Mar' THEN '03' WHEN 'Apr' THEN '04' WHEN 'May' THEN '05' WHEN 'Jun' THEN '06'
	WHEN 'Jul' THEN '07' WHEN 'Aug' THEN '08' WHEN 'Sep' THEN '09' WHEN 'Oct' THEN '10' WHEN 'Nov' THEN '11'
	ELSE '12' END || '-' || SUBSTR(TIME_NK,2,2) || ' 00:00:00' ) AS EVENT_DT,
	BROWSER AS USER_AGENT_NK,
	REQUEST_NK,
	IP_NR,
	STATUS,
	LINE_NK,
	BYTES
FROM STG_ACCESS_LOG
)
SELECT
	CAST(STG.EVENT_DT AS INTEGER) AS EVENT_DT,
	USG.DIM_USER_AGENT_ID,
	HST.DIM_HTTP_STATUS_ID,
	COUNT(DISTINCT (CASE WHEN INSTR(STG.REQUEST_NK,'.')=0 THEN STG.REQUEST_NK END) ) AS PAGE_CNT,
	COUNT(DISTINCT (CASE WHEN INSTR(STG.REQUEST_NK,'.')>0 THEN STG.REQUEST_NK END) ) AS FILE_CNT,
	COUNT(DISTINCT STG.REQUEST_NK) AS REQUEST_CNT,
	COUNT(DISTINCT STG.LINE_NK) AS LINE_CNT,
	COUNT(DISTINCT STG.IP_NR) AS IP_CNT,
	SUM(BYTES) AS BYTES
FROM STG,
	DIM_HTTP_STATUS HST,
	DIM_USER_AGENT USG
WHERE STG.STATUS = HST.STATUS_NK
  AND STG.USER_AGENT_NK = USG.USER_AGENT_NK
  AND CAST(STG.EVENT_DT AS INTEGER) > $param_epoch_from /* load epoch date */
  AND CAST(STG.EVENT_DT AS INTEGER) < strftime('%s', date('now', 'start of day'))
GROUP BY STG.EVENT_DT, HST.DIM_HTTP_STATUS_ID, USG.DIM_USER_AGENT_ID

sqlite ڊيٽابيس توهان کي پيچيده سوالن کي لکڻ جي اجازت ڏئي ٿي. WITH ڊيٽا ۽ ڪيچ جي تياري تي مشتمل آهي. مکيه سوال طول و عرض جي سڀني حوالن کي گڏ ڪري ٿو.

شرط تاريخ کي ٻيهر لوڊ ڪرڻ جي اجازت نه ڏيندو: CAST(STG.EVENT_DT AS INTEGER) > $param_epoch_from، جتي پيرا ميٽر درخواست جو نتيجو آهي
FCT_ACCESS_USER_AGENT_DD کان LAST_EVENT_EPOCH AS COALESCE(MAX(EVENT_DT)، '3600' چونڊيو

شرط صرف پورو ڏينهن لوڊ ڪندي: CAST(STG.EVENT_DT AS INTEGER) < strftime('%s', date('هاڻي'، 'ڏينهن جي شروعات'))

صفحن يا فائلن جي ڳڻپ هڪ ابتدائي طريقي سان ڪئي ويندي آهي، هڪ نقطي جي ڳولا ڪندي.

رپورٽون

پيچيده بصري نظام ۾، اهو ممڪن آهي ته ميٽا ماڊل ٺاهي، ڊيٽابيس جي شين جي بنياد تي، متحرڪ طور تي فلٽر ۽ مجموعي ضابطن کي منظم ڪن. بالآخر، سڀئي مهذب اوزار هڪ SQL سوال ٺاهيندا آهن.

هن مثال ۾، اسان تيار ڪيل SQL سوالن کي ٺاهينداسين ۽ انهن کي ڊيٽابيس ۾ نظرن جي طور تي محفوظ ڪنداسين - اهي رپورٽون آهن.

زير نظر

Bluff: جاوا اسڪرپٽ ۾ خوبصورت گراف هڪ بصري اوزار طور استعمال ڪيو ويو

هن کي ڪرڻ لاء، ضروري هو ته پي ايڇ پي استعمال ڪندي سڀني رپورٽن ذريعي وڃو ۽ ٽيبل سان گڏ هڪ html فائل ٺاهي.

$sqls = array(
'SELECT * FROM RPT_ACCESS_USER_VS_BOT',
'SELECT * FROM RPT_ACCESS_ANNOYING_BOT',
'SELECT * FROM RPT_ACCESS_TOP_HOUR_HIT',
'SELECT * FROM RPT_ACCESS_USER_ACTIVE',
'SELECT * FROM RPT_ACCESS_REQUEST_STATUS',
'SELECT * FROM RPT_ACCESS_TOP_REQUEST_PAGE',
'SELECT * FROM RPT_ACCESS_TOP_REQUEST_REFERRER',
'SELECT * FROM RPT_ACCESS_NEW_REQUEST',
'SELECT * FROM RPT_ACCESS_TOP_REQUEST_SUCCESS',
'SELECT * FROM RPT_ACCESS_TOP_REQUEST_ERROR'
);

اوزار صرف نتيجن جي جدولن کي ڏسي ٿو.

ٿڪل

مثال طور ويب تجزيو استعمال ڪندي، آرٽيڪل بيان ڪري ٿو ميکانيزم کي ڊيٽا گودام ٺاهڻ لاءِ ضروري آهي. جيئن نتيجن مان ڏسي سگھجي ٿو، آسان ترين اوزار ڊيٽا جي گہرے تجزيو ۽ تصور لاءِ ڪافي آھن.

مستقبل ۾، هن مخزن کي مثال طور استعمال ڪندي، اسان ڪوشش ڪنداسين ته اهڙين جوڙجڪ کي لاڳو ڪرڻ جي ڪوشش ڪنداسين جيئن سست تبديل ٿيندڙ طول و عرض، ميٽا ڊيٽا، مجموعي سطح ۽ مختلف ذريعن کان ڊيٽا جي انضمام.

انهي سان گڏ، اچو ته هڪ ويجهڙائي تي نظر رکون آسان ترين اوزار کي منظم ڪرڻ لاء ETL عملن کي منظم ڪرڻ لاء هڪ واحد ٽيبل جي بنياد تي.

اچو ته ڊيٽا جي معيار کي ماپڻ ۽ هن عمل کي خودڪار ڪرڻ جي موضوع ڏانهن موٽون.

اسان ٽيڪنيڪل ماحول جي مسئلن جو مطالعو ڪنداسين ۽ ڊيٽا اسٽوريج جي سار سنڀال، جنهن لاء اسان هڪ اسٽوريج سرور کي گهٽ ۾ گهٽ وسيلن سان لاڳو ڪنداسين، مثال طور، Raspberry Pi جي بنياد تي.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو