Indlela esiyisombulule ngayo ingxaki yokubona amaqela abasebenzisi kwinkonzo yePromopult sisebenzisa iGrafana.
Umntu ubhalise kwaye "walala" ngonaphakade. Umntu ulibale igama eliyimfihlo lakhe kwaye ubhalise isibini amaxesha amaninzi kwisithuba seenyanga ezintandathu. Umntu uzisa imali kwirejista yemali, kwaye umntu uze simahla
Kwiiseti ezinkulu zedatha njengezethu, ukuhlalutya ukuziphatha komsebenzisi ngamnye kunye nokwenza izigqibo ezincinci akukho nto. Kodwa ukubamba iindlela kunye nokusebenza kunye namaqela amakhulu kunokwenzeka kwaye kuyimfuneko. Nto leyo kanye esiyenzayo.
Isishwankathelo
- Yintoni uhlalutyo lwamaqela kwaye kutheni lufuneka?
- Uwenza njani amaqela ngenyanga yobhaliso lwabasebenzisi kwiSQL.
- Indlela yokudlulisela amaqela kwi
IGrafana .
Ukuba sele uyazi ukuba yintoni uhlalutyo lweqela kunye nendlela yokwenza kwi-SQL, tsiba ngqo kwicandelo lokugqibela.
1. Yintoni uhlalutyo lweqela kwaye kutheni luyimfuneko?
Uhlalutyo lweqela yindlela esekelwe ekuthelekiseni amaqela ahlukeneyo (amaqela) abasebenzisi. Amaxesha amaninzi, amaqela ethu enziwa yiveki okanye inyanga umsebenzisi aqale ngayo ukusebenzisa inkonzo. Ukusuka apha ubomi bomsebenzisi bubalwa, kwaye esi sisalathisi ngesiseko apho uhlalutyo olunzima lunokwenziwa. Umzekelo, qonda:
- ingaba ijelo lokufumana libuchaphazela njani ubomi bomsebenzisi;
- indlela ukusetyenziswa kwalo naluphi na uphawu okanye inkonzo echaphazela ubomi bonke;
- Ukuphehlelelwa kwenqaku X kubuchaphazele njani ubomi xa kuthelekiswa nonyaka ophelileyo.
2. Ukwenza njani amaqela kwiSQL?
Ubungakanani benqaku kunye nengqiqo engasivumeli ukuba sibonise idatha yethu yokwenyani apha - kwindawo yokulahla uvavanyo, izibalo zonyaka kunye nesiqingatha: abasebenzisi be-1200 kunye ne-53 yokuthengiselana. Ukuze ukwazi ukudlala ngale datha, silungiselele umfanekiso we-docker kunye ne-MySQL kunye neGrafana apho unokufumana khona konke ngokwakho. Ikhonkco kwi-GitHub ekupheleni kwenqaku.
Kwaye apha siza kubonisa ukudalwa kwee-cohorts usebenzisa umzekelo owenziwe lula.
Masicinge ukuba sinenkonzo. Abasebenzisi babhalisa apho kwaye bachithe imali kwiinkonzo. Ngokuhamba kwexesha, abasebenzisi bayayeka. Sifuna ukufumanisa ukuba abasebenzisi bahlala ixesha elingakanani, kwaye bangaphi kubo abawa emva kwe-1st kunye ne-2nd inyanga yokusebenzisa inkonzo.
Ukuphendula le mibuzo, kufuneka sakhe i-cohorts ngokusekelwe kwinyanga yokubhalisa. Siya kujonga umsebenzi ngokweendleko kwinyanga nganye. Endaweni yeendleko, kusenokubakho iiodolo, iintlawulo zomrhumo, okanye nawuphi na omnye umsebenzi osekelwe kwixesha.
Idatha yemvelaphi
Imizekelo yenziwe kwi-MySQL, kodwa kwezinye ii-DBMS akufuneki kubekho umahluko obalulekileyo.
Itheyibhile yomsebenzisi - abasebenzisi:
Isazisi somsebenzisi
Umhla woBhaliso
1
2019-01-01
2
2019-02-01
3
2019-02-10
4
2019-03-01
Itheyibhile yeendleko-ityala:
Isazisi somsebenzisi
umhla
ISity
1
2019-01-02
11
1
2019-02-22
11
2
2019-02-12
12
3
2019-02-11
13
3
2019-03-11
13
4
2019-03-01
14
4
2019-03-02
14
Khetha lonke ixesha lokucinywa komsebenzisi kunye nomhla wobhaliso:
SELECT
b.userId,
b.Date,
u.RegistrationDate
FROM billing AS b LEFT JOIN users AS u ON b.userId = u.userId
Isiphumo:
Isazisi somsebenzisi
umhla
Umhla woBhaliso
1
2019-01-02
2019-01-02
1
2019-02-22
2019-01-02
2
2019-02-12
2019-02-01
3
2019-02-11
2019-02-10
3
2019-03-11
2019-02-10
4
2019-03-01
2019-03-01
4
2019-03-02
2019-03-01
Sakha amaqela ngenyanga; ukwenza oku, siguqula yonke imihla ibe ziinyanga:
DATE_FORMAT(Date, '%Y-%m')
Ngoku kufuneka sazi ukuba zingaphi iinyanga ezisetyenziswa ngumsebenzisi - lo ngumahluko phakathi kwenyanga yokutsalwa kwemali kunye nenyanga yobhaliso. I-MySQL inomsebenzi PERIOD_DIFF () - umahluko phakathi kweenyanga ezimbini. Yongeza PERIOD_DIFF() kwisicelo:
SELECT
b.userId,
DATE_FORMAT(b.Date, '%Y-%m') AS BillingMonth,
DATE_FORMAT(u.RegistrationDate, '%Y-%m') AS RegistrationMonth,
PERIOD_DIFF(DATE_FORMAT(b.Date, '%Y%m'), DATE_FORMAT(u.RegistrationDate, '%Y%m')) AS MonthsDiff
FROM billing AS b LEFT JOIN users AS u ON b.userId = u.userId
Isazisi somsebenzisi
BillingMonth
Umhla woBhaliso
MonthsDiff
1
2019-01
2019-01
0
1
2019-02
2019-01
1
2
2019-02
2019-02
0
3
2019-02
2019-02
0
3
2019-03
2019-02
1
4
2019-03
2019-03
0
4
2019-03
2019-03
0
Sibala abasebenzisi abavusiweyo kwinyanga nganye - siqokelela iirekhodi ngeBillingMonth, RegistrationMonth kunye neMonthsDiff:
SELECT
COUNT(DISTINCT(b.userId)) AS UsersCount,
DATE_FORMAT(b.Date, '%Y-%m') AS BillingMonth,
DATE_FORMAT(u.RegistrationDate, '%Y-%m') AS RegistrationMonth,
PERIOD_DIFF(DATE_FORMAT(b.Date, '%Y%m'), DATE_FORMAT(u.RegistrationDate, '%Y%m')) AS MonthsDiff
FROM billing AS b LEFT JOIN users AS u ON b.userId = u.userId
GROUP BY BillingMonth, RegistrationMonth, MonthsDiff
Isiphumo:
UsersCount
BillingMonth
Inyanga yoBhaliso
MonthsDiff
1
2019-01
2019-01
0
1
2019-02
2019-01
1
2
2019-02
2019-02
0
1
2019-03
2019-02
1
1
2019-03
2019-03
0
NgoJanuwari, ngoFebruwari nangoMatshi, kwavela umsebenzisi omtsha ngamnye - MonthsDiff = 0. Umsebenzisi omnye kaJanuwari ubesebenza ngoFebruwari-RegistrationMonth = 2019-01, BillingMonth = 2019-02, kunye nomsebenzisi omnye kaFebruwari ubesebenza ngoMatshi.
Ngokwemvelo, iipateni zibonakala ngcono kwiseti yedatha enkulu.
Uwatshintshela njani amaqela abantu eGrafana
Sifundile ukwenza amaqela, kodwa xa kukho iirekhodi ezininzi, akusekho lula ukuzihlalutya. Iirekhodi zinokuthunyelwa ngaphandle kwi-Excel kwaye zenziwe zibe ziitafile ezintle, kodwa ayisiyondlela yethu le!
Amaqela angaboniswa njengegrafu esebenzayo kwi
Ukwenza oku, songeza omnye umbuzo ukuguqula idatha kwifomathi efanelekileyo kwiGrafana:
SELECT
DATE_ADD(CONCAT(s.RegistrationMonth, '-01'), INTERVAL s.MonthsDiff MONTH) AS time_sec,
SUM(s.Users) AS value,
s.RegistrationMonth AS metric
FROM (
## ΡΡΠ°ΡΡΠΉ Π·Π°ΠΏΡΠΎΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠΉ ΠΊΠΎΠ³ΠΎΡΡΡ
SELECT
COUNT(DISTINCT(b.userId)) AS Users,
DATE_FORMAT(b.Date, '%Y-%m') AS BillingMonth,
DATE_FORMAT(u.RegistrationDate, '%Y-%m') AS RegistrationMonth,
PERIOD_DIFF(DATE_FORMAT(b.Date, '%Y%m'), DATE_FORMAT(u.RegistrationDate, '%Y%m')) AS MonthsDiff
FROM billing AS b LEFT JOIN users AS u ON b.userId = u.userId
WHERE
u.RegistrationDate BETWEEN '2018-01-01' AND CURRENT_DATE
GROUP BY
BillingMonth, RegistrationMonth, MonthsDiff
) AS s
GROUP BY
time_sec, metric
Kwaye ulayishe idatha eGrafana.
Umzekelo wegrafu ukusuka
Bamba ngezandla zakho:
Ukuba unqwenela, unokulayisha idatha yakho kulo mfanekiso.
Amanqaku e-PS malunga nohlalutyo lweqela kwi-SQL:
umthombo: www.habr.com