Grafana တွင် အသုံးပြုသူအုပ်စုတစ်စုကို ဂရပ်များအဖြစ် စုဆောင်းနည်း [+ docker ပုံနှင့်အတူ ဥပမာ]

Grafana တွင် အသုံးပြုသူအုပ်စုတစ်စုကို ဂရပ်များအဖြစ် စုဆောင်းနည်း [+ docker ပုံနှင့်အတူ ဥပမာ]

Grafana ကို အသုံးပြု၍ Promopult ဝန်ဆောင်မှုတွင် အသုံးပြုသူအုပ်စုများကို မြင်ယောင်ခြင်းဆိုင်ရာ ပြဿနာကို ကျွန်ုပ်တို့ မည်သို့ဖြေရှင်းခဲ့သနည်း။

နှိုးဆော်သည်။ - အသုံးပြုသူအများအပြားနှင့်အတူ အားကောင်းသည့်ဝန်ဆောင်မှု။ လည်ပတ်မှု 10 နှစ်ကျော်၊ စနစ်တွင်မှတ်ပုံတင်သူအရေအတွက်သည်တစ်သန်းကျော်သွားပြီဖြစ်သည်။ အလားတူ ဝန်ဆောင်မှုများကို ကြုံတွေ့ဖူးသူများသည် ဤအခင်းအကျင်းသည် အသုံးပြုသူများ တစ်သားတည်းဖြစ်ရန် ဝေးကွာကြောင်း သိပါသည်။

တစ်စုံတစ်ယောက်သည် စာရင်းသွင်းပြီး ထာဝရ "အိပ်ပျော်သွားသည်" ။ တစ်စုံတစ်ယောက်သည် စကားဝှက်ကို မေ့သွားကာ ခြောက်လအတွင်း နောက်ထပ် နှစ်ကြိမ် မှတ်ပုံတင်ခဲ့သည်။ တစ်စုံတစ်ယောက်က ငွေရှင်းကောင်တာထံ ပိုက်ဆံယူလာပြီး တစ်စုံတစ်ယောက်က အလကားလာပေးသည်။ ကိရိယာများ. တစ်ခုချင်းဆီကနေ အမြတ်နည်းနည်းရရင်ကောင်းမယ်။

ကျွန်ုပ်တို့ကဲ့သို့ ကြီးမားသော ဒေတာအတွဲများဖြင့်၊ သုံးစွဲသူတစ်ဦးချင်းစီ၏ အပြုအမူကို ပိုင်းခြားစိတ်ဖြာပြီး အသေးစား ဆုံးဖြတ်ချက်များချခြင်းသည် အဓိပ္ပာယ်မရှိပေ။ သို့သော် ခေတ်ရေစီးကြောင်းများကို ဖမ်းစားပြီး အုပ်စုကြီးများနှင့် လုပ်ဆောင်ရန်မှာ ဖြစ်နိုင်ပြီး လိုအပ်ပါသည်။ ဒါ ကျွန်တော်တို့ တကယ်လုပ်တာပါ။

အကျဉ်းချုပ်

  1. အစုလိုက်ခွဲခြမ်းစိတ်ဖြာမှုဆိုတာ ဘာလဲ၊ ဘာကြောင့် လိုအပ်တာလဲ။
  2. SQL တွင် အသုံးပြုသူမှတ်ပုံတင်သည့်လအလိုက် အစုအဝေးများပြုလုပ်နည်း။
  3. အတွဲများကို မည်သို့လွှဲပြောင်းရမည်နည်း။ Grafana.

ခွဲခြမ်းစိတ်ဖြာခြင်းဟူသည် အဘယ်နည်းနှင့် SQL တွင် ၎င်းကို မည်သို့လုပ်ဆောင်ရမည်ကို သင်သိပြီးပါက နောက်ဆုံးအပိုင်းသို့ ကျော်သွားပါ။

၁။ အစုလိုက်ခွဲခြမ်းစိတ်ဖြာခြင်းဟူသည် အဘယ်နည်း၊ အဘယ်ကြောင့် လိုအပ်သနည်း။

အစုအဖွဲ့ခွဲခြမ်းစိတ်ဖြာခြင်းသည် သုံးစွဲသူများ၏ မတူညီသောအုပ်စုများ (အုပ်စုများ) ကို နှိုင်းယှဉ်ခြင်းအပေါ် အခြေခံသည့် နည်းလမ်းတစ်ခုဖြစ်သည်။ အများစုမှာ၊ သုံးစွဲသူက ဝန်ဆောင်မှုကို စတင်အသုံးပြုသည့် ရက်သတ္တပတ် သို့မဟုတ် လအလိုက် အုပ်စုများဖွဲ့လေ့ရှိသည်။ ဤနေရာမှ၊ အသုံးပြုသူ၏ သက်တမ်းကို တွက်ချက်ထားပြီး၊ ၎င်းသည် ရှုပ်ထွေးသော ခွဲခြမ်းစိတ်ဖြာမှုကို လုပ်ဆောင်နိုင်သည့်အပေါ် အခြေခံသည့် ညွှန်ပြချက်တစ်ခု ဖြစ်နေပါပြီ။ ဥပမာအားဖြင့် နားလည်ရန်၊

  • ဝယ်ယူမှုချန်နယ်သည် အသုံးပြုသူ၏သက်တမ်းကို မည်သို့အကျိုးသက်ရောက်စေသနည်း။
  • အင်္ဂါရပ် သို့မဟုတ် ဝန်ဆောင်မှုတစ်ခုခုကို အသုံးပြုခြင်းသည် တစ်သက်တာအပေါ် မည်သို့အကျိုးသက်ရောက်သည်၊
  • Feature X သည် ယခင်နှစ်နှင့် နှိုင်းယှဉ်ပါက ၎င်း၏ သက်တမ်းကို မည်သို့အကျိုးသက်ရောက်ခဲ့သနည်း။

2. SQL တွင် အစုအဝေးများ မည်သို့ပြုလုပ်ရမည်နည်း။

ဆောင်းပါး၏ အရွယ်အစားနှင့် သာမန်အသိတရားသည် ဤနေရာတွင် ကျွန်ုပ်တို့၏ အချက်အလက်အစစ်အမှန်ကို ပေးဆောင်ရန် ခွင့်မပြုပါ - စမ်းသပ်အမှိုက်ပုံးတွင် တစ်နှစ်ခွဲအတွက် စာရင်းအင်းများပါရှိသည်- သုံးစွဲသူ 1200 နှင့် 53 အရောင်းအ၀ယ်များ။ ဤဒေတာဖြင့် သင်ကစားနိုင်စေရန်အတွက်၊ သင်ကိုယ်တိုင်ခံစားနိုင်သည့် MySQL နှင့် Grafana ဖြင့် docker ပုံတစ်ခုကို ကျွန်ုပ်တို့ ပြင်ဆင်ထားပါသည်။ GitHub သို့လင့်ခ်သည် ဆောင်းပါး၏အဆုံးတွင်ဖြစ်သည်။

ဤနေရာတွင် ကျွန်ုပ်တို့သည် ရိုးရှင်းသော ဥပမာကို အသုံးပြု၍ အစုအဖွဲ့များ ဖန်တီးခြင်းကို သရုပ်ပြပါမည်။

ကျွန်ုပ်တို့တွင် ဝန်ဆောင်မှုတစ်ခုရှိသည်ဟု ယူဆကြပါစို့။ အသုံးပြုသူများသည် ဝန်ဆောင်မှုများပေါ်တွင် မှတ်ပုံတင်ပြီး ငွေသုံးစွဲကြသည်။ အချိန်ကြာလာသည်နှင့်အမျှ သုံးစွဲသူများ ရပ်တန့်သွားပါသည်။ သုံးစွဲသူများသည် မည်မျှကြာကြာ ဝန်ဆောင်မှုနှင့် ဝန်ဆောင်မှုကို အသုံးပြုသည့် ပထမလနှင့် ဒုတိယလတွင် မည်မျှ ပျက်သွားသည်ကို ကျွန်ုပ်တို့ သိလိုပါသည်။

ဤမေးခွန်းများကိုဖြေဆိုရန်၊ မှတ်ပုံတင်သည့်လတွင် အစုအဖွဲ့များတည်ဆောက်ရန် လိုအပ်ပါသည်။ လစဉ်လတိုင်း ကုန်ကျစရိတ်ဖြင့် လုပ်ဆောင်မှုများကို တိုင်းတာပါမည်။ ကုန်ကျစရိတ်များအစား၊ အော်ဒါများ၊ စာရင်းသွင်းခများ သို့မဟုတ် အချိန်နှင့်ဆက်စပ်နေသည့် အခြားလုပ်ဆောင်မှုတစ်ခုခု ရှိနိုင်ပါသည်။

ကနဦးဒေတာ

နမူနာများကို MySQL တွင် ပြုလုပ်ထားသော်လည်း အခြားသော DBMS အတွက် သိသာထင်ရှားသော ခြားနားမှုများ မရှိသင့်ပါ။

အသုံးပြုသူများဇယား — အသုံးပြုသူများ

သုံးစွဲသူအိုင်ဒီ
မှတ်ပုံတင်ရက်စွဲ

1
2019-01-01

2
2019-02-01

3
2019-02-10

4
2019-03-01

ကုန်ကျစရိတ်ဇယား - ငွေပေးချေမှု-

သုံးစွဲသူအိုင်ဒီ
နေ့စှဲ
ငှေပေါငျး

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

ကျွန်ုပ်တို့သည် အသုံးပြုသူ နုတ်ထွက်မှုများနှင့် မှတ်ပုံတင်မည့်ရက်အားလုံးကို ရွေးချယ်သည်-

SELECT 
  b.userId, 
  b.Date,
  u.RegistrationDate
FROM billing AS b LEFT JOIN users AS u ON b.userId = u.userId

ရလဒ်:

သုံးစွဲသူအိုင်ဒီ
နေ့စှဲ
မှတ်ပုံတင်ရက်စွဲ

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

ကျွန်ုပ်တို့သည် အစုအဝေးများကို လများအလိုက် တည်ဆောက်ကာ ရက်စွဲများအားလုံးကို လများအဖြစ် ပြောင်းလဲပေးပါသည်။

DATE_FORMAT(Date, '%Y-%m')

ယခုအသုံးပြုသူသည် လမည်မျှတက်ကြွခဲ့သည်ကို ကျွန်ုပ်တို့သိလိုသည် - ဤသည်မှာ ငွေထုတ်သည့်လနှင့် မှတ်ပုံတင်သည့်လကြား ကွာခြားချက်ဖြစ်သည်။ MySQL တွင် လုပ်ဆောင်ချက် PERIOD_DIFF() ပါရှိသည် - နှစ်လကြား ကွာခြားချက်။ မေးမြန်းမှုသို့ PERIOD_DIFF() ကို ထည့်ပါ-

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

သုံးစွဲသူအိုင်ဒီ
ငွေတောင်းခံသည့်လ
မှတ်ပုံတင်ရက်စွဲ
လပိုင်းခြားနားမှု

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

လစဉ်အသုံးပြုသူများကို ကျွန်ုပ်တို့ရေတွက်သည် - BillingMonth၊ RegistrationMonth နှင့် MonthsDiff ဖြင့် မှတ်တမ်းများကို အုပ်စုဖွဲ့ပါသည်။

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

ရလဒ်:

အသုံးပြုသူအရေအတွက်
ငွေတောင်းခံသည့်လ
မှတ်ပုံတင်လ
လပိုင်းခြားနားမှု

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

ဇန်န၀ါရီ၊ ဖေဖော်ဝါရီနှင့် မတ်လတို့တွင် အသုံးပြုသူအသစ်တစ် ဦး ပေါ်လာသည် - MonthsDiff = 0။ ဇန်နဝါရီမှ သုံးစွဲသူတစ်ဦးသည် ဖေဖော်ဝါရီတွင် တက်ကြွစွာပါဝင်ခဲ့သည် - RegistrationMonth = 2019-01၊ BillingMonth = 2019-02 နှင့် ဖေဖော်ဝါရီလမှ အသုံးပြုသူတစ်ဦးသည်လည်း မတ်လတွင် အသုံးပြုခဲ့သည်။

ကြီးမားသောဒေတာအတွဲတွင်၊ ပုံစံများကို သဘာဝအတိုင်း ပို၍မြင်နိုင်သည်။

Grafana သို့ အစုအဝေးများကို မည်သို့ပြောင်းရွှေ့ရမည်နည်း။

အစုအဝေးများဖွဲ့နည်းကို ကျွန်ုပ်တို့လေ့လာခဲ့ပြီးဖြစ်သော်လည်း မှတ်တမ်းများစွာရှိသောအခါ ၎င်းတို့ကိုခွဲခြမ်းစိတ်ဖြာရန် မလွယ်ကူတော့ပါ။ မှတ်တမ်းများကို Excel သို့ တင်ပို့နိုင်ပြီး လှပသောဇယားများကို ဖွဲ့စည်းနိုင်သော်လည်း၊ ဤသည်မှာ ကျွန်ုပ်တို့၏နည်းလမ်းမဟုတ်ပါ။

အစုအဝေးများကို အပြန်အလှန်အကျိုးသက်ရောက်သော ဂရပ်အဖြစ် ပြသနိုင်ပါသည်။ Grafana.

၎င်းကိုလုပ်ဆောင်ရန်၊ ကျွန်ုပ်တို့သည် 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

ပြီးတော့ ဒေတာတွေကို Grafana မှာ တင်တယ်။

ဂရပ်တစ်ခု၏ဥပမာ သရုပ်ပြ:

Grafana တွင် အသုံးပြုသူအုပ်စုတစ်စုကို ဂရပ်များအဖြစ် စုဆောင်းနည်း [+ docker ပုံနှင့်အတူ ဥပမာ]

သင်၏လက်ဖြင့်ထိပါ-

ဥပမာနှင့်အတူ GitHub သိုလှောင်မှု — သင့်ကွန်ပြူတာပေါ်တွင် သင်သုံးနိုင်သော MySQL နှင့် Grafana ပါသော docker ပုံဖြစ်သည်။ ဒေတာဘေ့စ်တွင် 2018 ဇန်နဝါရီမှ 2019 ခုနှစ် ဇူလိုင်လအထိ တစ်နှစ်ခွဲကြာ သရုပ်ပြဒေတာပါရှိပြီးဖြစ်သည်။

ဆန္ဒရှိပါက ဤပုံတွင် သင့်ဒေတာကို တင်နိုင်ပါသည်။

P.S. SQL ရှိ အစုအဝေးခွဲခြမ်းစိတ်ဖြာခြင်းဆိုင်ရာ ဆောင်းပါးများ-

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

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

source: www.habr.com

DDoS ကာကွယ်ရေး၊ VPS VDS ဆာဗာများပါသည့် ဆိုက်များအတွက် ယုံကြည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကွယ်မှု၊ VPS VDS ဆာဗာများပါရှိသော ယုံကြည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster