![Ahoana ny fanangonana ny mpampiasa ho toy ny grafika ao amin'ny Grafana [+ sary docker miaraka amin'ny ohatra]](/wp-content/uploads/2019/08/293a4d703ef9e7e69ee414be16217f1d.jpeg)
Ahoana no namaha ny olana amin'ny fijerena sary an-tsary ireo vondron'ny mpampiasa amin'ny serivisy Promopult mampiasa Grafana.
- serivisy mahery vaika misy mpampiasa marobe. Tao anatin'ny 10 taona niasana dia nihoatra ny iray tapitrisa ny isan'ny fisoratana anarana ao amin'ny rafitra. Ireo izay nihaona tamin'ny serivisy mitovy amin'izany dia mahafantatra fa tsy mitovy ny isan'ireo mpampiasa ity.
Nisy nisoratra anarana ary "natory" mandrakizay. Nisy nanadino ny tenimiafina ary nisoratra anarana im-betsaka tao anatin'ny enim-bolana. Misy olona mitondra vola any amin'ny kaontin'ny kaontin'ny kaontin'ny kaontin'ny kaontinanta, ary nisy olona tonga nanome vola maimaim-poana . Ary tsara ny mahazo tombony amin'ny rehetra.
Amin'ny angon-drakitra lehibe toy ny anay, ny famakafakana ny fihetsiky ny mpampiasa tsirairay sy ny fandraisana fanapahan-kevitra madinika dia tsy misy dikany. Saingy ny fisamborana fironana sy ny fiaraha-miasa amin'ny vondrona lehibe dia azo atao ary ilaina. Izay indrindra no ataontsika.
famintinana
- Inona no atao hoe analyse cohort ary nahoana no ilaina izany?
- Ahoana ny fomba fanaovana cohorts amin'ny volana fisoratana anarana mpampiasa amin'ny SQL.
- Ahoana ny famindrana cohorts amin'ny .
Raha efa fantatrao ny atao hoe famakafakana cohort sy ny fomba hanaovana izany amin'ny SQL dia midira mankany amin'ny fizarana farany.
1. Inona no atao hoe analyse cohort ary nahoana no ilaina izany?
Ny famakafakana ny vondrona dia fomba iray mifototra amin'ny fampitahana vondrona samihafa (cohorts) mpampiasa. Matetika indrindra, ny vondronay dia miforona amin'ny herinandro na volana izay nanombohan'ny mpampiasa ny serivisy. Avy eto dia kajy ny androm-piainan'ny mpampiasa, ary izany dia famantarana izay azo anaovana fanadihadiana somary sarotra. Ohatra, fantaro:
- ahoana no fiantraikan'ny fantsona fahazoana amin'ny androm-piainan'ny mpampiasa;
- ny fiantraikan'ny fampiasana ny endri-javatra na serivisy rehetra mandritra ny androm-piainany;
- ny fiantraikan'ny fandefasana ny endri-javatra X teo amin'ny fiainana raha oharina tamin'ny taon-dasa.
2. Ahoana no hanaovana cohorts amin'ny SQL?
Ny haben'ny lahatsoratra sy ny saina mahazatra dia tsy mamela antsika haneho ny tena angonay eto - amin'ny fanariam-panadinana, antontan'isa mandritra ny herintaona sy tapany: mpampiasa 1200 ary fifanakalozana 53. Mba hahafahanao milalao amin'ity data ity dia nanomana sary docker miaraka amin'ny MySQL sy Grafana izay ahafahanao miaina izany rehetra izany. Rohy mankany GitHub amin'ny faran'ny lahatsoratra.
Ary eto dia hasehontsika ny famoronana cohorts mampiasa ohatra notsorina.
Aoka hatao hoe manana serivisy isika. Misoratra anarana ao ny mpampiasa ary mandany vola amin'ny serivisy. Rehefa mandeha ny fotoana dia miala ny mpampiasa. Te-hahafantatra ny halavan'ny androm-piainan'ny mpampiasa izahay, ary firy amin'izy ireo no lavo taorian'ny volana voalohany sy faha-1 nampiasana ny serivisy.
Mba hamaliana ireo fanontaniana ireo dia mila manangana vondrona mifototra amin'ny volana fisoratana anarana isika. Handrefesana ny asa amin'ny fandaniana isam-bolana. Raha tokony ho fandaniam-bola, dia mety hisy baiko, saram-pamandrihana, na hetsika hafa mifototra amin'ny fotoana.
Data matevina
Ny ohatra dia natao tao amin'ny MySQL, fa ho an'ny DBMS hafa dia tsy tokony hisy fahasamihafana lehibe.
latabatra mpampiasa - mpampiasa:
Anara-mpampiasa
Daty fisoratana anarana
1
2019-01-01
2
2019-02-01
3
2019-02-10
4
2019-03-01
Tabilao sarany - faktiora:
Anara-mpampiasa
Date
Sum
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
Safidio ny fanafoanana ny mpampiasa rehetra sy ny daty fisoratana anarana:
SELECT
b.userId,
b.Date,
u.RegistrationDate
FROM billing AS b LEFT JOIN users AS u ON b.userId = u.userId
vokany:
Anara-mpampiasa
Date
Daty fisoratana anarana
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
Manangana vondrona isam-bolana izahay;
DATE_FORMAT(Date, '%Y-%m')Ankehitriny dia mila mahafantatra hoe firy volana ny mpampiasa no mavitrika - izany no maha samy hafa ny volana ny debit sy ny volana fisoratana anarana. MySQL dia manana fiasa PERIOD_DIFF() - ny fahasamihafana eo amin'ny roa volana. Ampio PERIOD_DIFF() amin'ny fangatahana:
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
Anara-mpampiasa
BillingMonth
Daty fisoratana anarana
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
Isainay ny mpampiasa mavitrika isam-bolana - atambatra amin'ny BillingMonth, RegistrationMonth ary MonthsDiff ny firaketana:
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
vokany:
UsersCount
BillingMonth
Volana fisoratana anarana
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
Tamin'ny Janoary, Febroary ary Martsa, mpampiasa vaovao iray no niseho tsirairay - MonthsDiff = 0. Mpisera iray tamin'ny Janoary no navitrika tamin'ny Febroary - RegistrationMonth = 2019-01, BillingMonth = 2019-02, ary mpampiasa iray tamin'ny Febroary no navitrika tamin'ny Martsa.
Mazava ho azy, ny lamina dia hita tsara kokoa amin'ny angon-drakitra lehibe.
Ahoana ny famindrana cohorts mankany Grafana
Nianatra namorona vondrona izahay, saingy rehefa be dia be ny rakitra dia tsy mora ny mamakafaka azy ireo. Ny rakitra dia azo aondrana amin'ny Excel ary amboarina ho latabatra tsara tarehy, saingy tsy izany no fombantsika!
Ny cohorts dia azo aseho ho toy ny graphe interactive in .
Mba hanaovana izany, manampy fanontaniana hafa izahay hamadika ny angona ho endrika mety amin'ny 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 (
## старый запрос, возвращающий когорты
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
Ary ampidiro ao amin'ny Grafana ny angona.
Ohatra grafika avy amin'ny :
![Ahoana ny fanangonana ny mpampiasa ho toy ny grafika ao amin'ny Grafana [+ sary docker miaraka amin'ny ohatra]](/wp-content/uploads/2019/08/9aa161a1d0e8fd7790875d4f12202d56.jpeg)
Mikasika amin'ny tananao:
dia sary docker miaraka amin'ny MySQL sy Grafana izay azonao atao amin'ny solosainao. Ny angon-drakitra dia efa misy angona demo mandritra ny herintaona sy tapany, nanomboka ny Janoary 2018 hatramin'ny Jolay 2019.
Raha tianao dia azonao atao ny mampiditra ny angonao amin'ity sary ity.
Lahatsoratra PS momba ny famakafakana cohort amin'ny SQL:
Source: www.habr.com
