![Si sihte përdorin për të mbledhur grupe përdoruesish në forma grafike në Grafana [+docker-imazhi me shembuj]](/wp-content/uploads/2019/08/293a4d703ef9e7e69ee414be16217f1d.jpeg)
Si e zgjidhëm çështjen e vizualizimit të grupeve të përdoruesve në shërbimin Promopult me ndihmën e Grafana.
â njĂ« shĂ«rbim i fuqishĂ«m me njĂ« numĂ«r tĂ« madh pĂ«rdoruesish. GjatĂ« 10 viteve tĂ« funksionimit, numri i regjistrimeve nĂ« sistem ka kaluar njĂ« milion. Ata qĂ« janĂ« pĂ«rballur me shĂ«rbime tĂ« ngjashme e dinĂ« se kjo masĂ« pĂ«rdoruesish Ă«shtĂ« shumĂ« e ndryshme.
Disa janĂ« regjistruar dhe kanĂ« 'fjetur' pĂ«rjetĂ«sisht. Disa kanĂ« harruar fjalĂ«kalimin dhe janĂ« regjistruar disa herĂ« brenda gjashtĂ« muajve. Disa sjellin para nĂ« kasĂ«, ndĂ«rsa disa kanĂ« ardhur pĂ«r mjetet falas . NĂ« masat e tilla tĂ« mĂ«dha tĂ« tĂ« dhĂ«nave si tonat, analizimi i sjelljes sĂ« njĂ« pĂ«rdoruesi tĂ« vetĂ«m dhe marrja e mikro-vendimeve Ă«shtĂ« pa kuptim. Por kapja e trendeve dhe puna me grupe tĂ« mĂ«dha â mund dhe duhet. KĂ«tĂ« ne, nĂ« fakt, e bĂ«jmĂ«.
Përmbledhje
ĂfarĂ« Ă«shtĂ« analiza e grupeve dhe pĂ«r çfarĂ« Ă«shtĂ« e nevojshme.
- Si të bëni grupe sipas muajit të regjistrimit të përdoruesve në SQL.
- Si të transferoni grupet në
- Grafana .
1. ĂfarĂ« Ă«shtĂ« analiza e grupeve dhe pĂ«r çfarĂ« Ă«shtĂ« e nevojshme
Analiza e grupeve Ă«shtĂ« njĂ« metodĂ« e bazuar nĂ« krahasimin e grupeve tĂ« ndryshme (grupimeve) tĂ« pĂ«rdoruesve. Ădo herĂ« formojmĂ« grupe sipas javĂ«s ose muajit nĂ« tĂ« cilin pĂ«rdoruesi filloi tĂ« pĂ«rdorĂ« shĂ«rbimin. Prej kĂ«tej llogaritet koha e jetĂ«s sĂ« pĂ«rdoruesit, dhe kjo Ă«shtĂ« njĂ« tregues mbi tĂ« cilin mund tĂ« kryhen analiza tĂ« ndĂ«rlikuara. PĂ«r shembull, tĂ« kuptojmĂ«:
si ndikon kanali i tërheqjes në kohën e jetës së përdoruesit;
- si përdorimi i ndonjë funksioni ose shërbimi ndikon në kohën e jetës;
- si përmbyllja e karakteristikës X ndikon në kohën e jetës krahasuar me vitin e kaluar.
- 2. Si të bëni grupe në SQL?
Shkalla e artikullit dhe shĂ«ndeti i arsyes nuk lejojnĂ« qĂ« tĂ« paraqesim tĂ« dhĂ«nat tona reale â nĂ« dump-in testues, statistika pĂ«r njĂ« mundĂ«si prej njĂ« viti dhe gjysmĂ«: 1200 pĂ«rdorues dhe 53,000 transaksione. QĂ« ju tĂ« mund tĂ« luani me kĂ«to tĂ« dhĂ«na, ne kemi pĂ«rgatitur njĂ« docker-imazh me MySQL dhe Grafana, ku mund tĂ« eksperimentoni me gjithçka vetĂ«. Lidhja nĂ« GitHub nĂ« fund tĂ« artikullit.
Dhe këtu ne do të tregojmë krijimin e grupeve me një shembull të thjeshtuar.
Këtu do të tregojmë krijimin e kohortave me një shembull të thjeshtë.
Supozoni se që kemi një shërbim. Në të regjistrohen përdoruesit dhe shpenzojnë para për shërbime. Me kalimin e kohës, përdoruesit largohen. Ne duam të dimë sa gjatë qëndrojnë përdoruesit dhe sa prej tyre largohen pas muajit të parë dhe të dytë të përdorimit të shërbimit.
Për të përgjigjur këtyre pyetjeve, na nevojitet të hartojmë koorta sipas muajit të regjistrimit. Aktiviteti do të matet sipas shpenzimeve në çdo muaj. Në vend të shpenzimeve, mund të përdoren porosi, abonime ose ndonjë aktivitet tjetër të lidhur me kohën.
Të dhënat burimore
Shembujt janë bërë në MySQL, por nuk duhet të ketë dallime të theksuara për sistemet e tjera të menaxhimit të bazës së të dhënave.
Tabela e pĂ«rdoruesve â users:
userId
Data e Regjistrimit
1
2019-01-01
2
2019-02-01
3
2019-02-10
4
2019-03-01
Tabela e shpenzimeve â billing:
userId
Data
Shuma
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
Zgjedhim të gjitha shpenzimet e përdoruesve dhe datën e regjistrimit:
SELECT
b.userId,
b.Data,
u.RegistrationDate
FROM billing AS b LEFT JOIN users AS u ON b.userId = u.userId
Rezultati:
userId
Data
Data e Regjistrimit
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
Ndërtojmë koortat sipas muajve, për këtë konvertojmë të gjitha datat në muaj:
DATE_FORMAT(Data, '%Y-%m')Tani na nevojitet tĂ« dimĂ« sa muaj ka qenĂ« aktiv pĂ«rdoruesi â kjo Ă«shtĂ« diferenca midis muajit tĂ« shpenzimit dhe muajit tĂ« regjistrimit. NĂ« MySQL ka funksionin PERIOD_DIFF() â diferenca midis dy muajve. ShtojmĂ« PERIOD_DIFF() nĂ« pyetje:
SELECT
b.userId,
DATE_FORMAT(b.Data, '%Y-%m') AS BillingMonth,
DATE_FORMAT(u.RegistrationDate, '%Y-%m') AS RegistrationMonth,
PERIOD_DIFF(DATE_FORMAT(b.Data, '%Y%m'), DATE_FORMAT(u.RegistrationDate, '%Y%m')) AS MonthsDiff
FROM billing AS b LEFT JOIN users AS u ON b.userId = u.userId
userId
BillingMonth
Data e Regjistrimit
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
NumĂ«rojmĂ« pĂ«rdoruesit e aktivizuar nĂ« çdo muaj â grupllojmĂ« tĂ« dhĂ«nat sipas BillingMonth, RegistrationMonth dhe MonthsDiff:
SELECT
COUNT(DISTINCT(b.userId)) AS UsersCount,
DATE_FORMAT(b.Data, '%Y-%m') AS BillingMonth,
DATE_FORMAT(u.RegistrationDate, '%Y-%m') AS RegistrationMonth,
PERIOD_DIFF(DATE_FORMAT(b.Data, '%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
Rezultati:
UsersCount
BillingMonth
RegistrationMonth
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
NĂ« janar, shkurt dhe mars erdhĂ«n nga njĂ« pĂ«rdorues i ri â MonthsDiff = 0. NjĂ« pĂ«rdorues i janarit ishte aktiv edhe nĂ« shkurt â RegistrationMonth = 2019-01, BillingMonth = 2019-02, ashtu siç ishte njĂ« pĂ«rdorues i shkurtit aktiv nĂ« mars.
Në një grup të madh të dhënash, natyrisht, tendencat duken më mirë.
Si të transferoni koortat në Grafana
Ne mësuam të formojmë koorta, por kur numri i shënimeve rritet, analizimi i tyre nuk është më i lehtë. Shënimet mund të eksportohet në Excel dhe të formohen tabela të bukura, por kjo nuk është metoda jonë!
Koortat mund të shfaqen në formën e një grafiku interaktiv në .
Për këtë, shtojmë edhe një kërkesë tjetër për të konvertuar të dhënat në një format të përshtatshëm për Grafana:
SELECT
DATE_ADD(CONCAT(s.RegistrationMonth, '-01'), INTERVAL s.MonthsDiff MONTH) AS time_sec,
SUM(s.Users) AS value,
s.RegistrationMonth AS metric
FROM (
## kërkesa e vjetër që kthen kohrat
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
Dhe nxjerrim të dhënat në Grafana.
Shembulli i grafikës nga :
![Si sihte përdorin për të mbledhur grupe përdoruesish në forma grafike në Grafana [+docker-imazhi me shembuj]](/wp-content/uploads/2019/08/9aa161a1d0e8fd7790875d4f12202d56.jpeg)
Ta prekësh me dorë:
â Ă«shtĂ« njĂ« imazh docker me MySQL dhe Grafana, i cili mund tĂ« aktivizohet nĂ« kompjuterin tuaj. NĂ« bazĂ« ka tĂ« dhĂ«na demo pĂ«r njĂ« gjysmĂ« viti, nga janari 2018 deri nĂ« korrik 2019.
Nëse dëshironi, mund të ngarkoni të dhënat tuaja në këtë imazh.
P.S. Artikuj mbi analizën e kohrave në SQL:
Burimi: habr.com
