Si sihte përdorin për të mbledhur grupe përdoruesish në forma grafike në Grafana [+docker-imazhi me shembuj]

Si sihte përdorin për të mbledhur grupe përdoruesish në forma grafike në Grafana [+docker-imazhi me shembuj]

Si e zgjidhëm çështjen e vizualizimit të grupeve të përdoruesve në shërbimin Promopult me ndihmën e Grafana.

Promopult — 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 tĂ« cilat do tĂ« ishte mirĂ« tĂ« pĂ«rfitonim diçka prej tyre.. 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.

  1. Si të bëni grupe sipas muajit të regjistrimit të përdoruesve në SQL.
  2. Si të transferoni grupet në
  3. Grafana Nëse tashmë e dini se çfarë është analiza e grupeve dhe se si ta bëni në SQL, kaloni menjëherë në seksionin e fundit..

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ë Nëse tashmë e dini se çfarë është analiza e grupeve dhe se si ta bëni në SQL, kaloni menjëherë në seksionin e fundit..

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 demo:

Si sihte përdorin për të mbledhur grupe përdoruesish në forma grafike në Grafana [+docker-imazhi me shembuj]

Ta prekësh me dorë:

Repo GitHub me shembullin — Ă«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:

https://chartio.com/resources/tutorials/performing-cohort-analysis-using-mysql/

https://www.holistics.io/blog/calculate-cohort-retention-analysis-with-sql/

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster