ניתוח קוהורט הוא אחד הכלים החזקים והפשוטים להבנת מוצר או התנהגות לקוחות. ניתוח קוהורט הוא ניתוח מידע על ידי חלוקה של הנבדקים (במקרה שלנו – לקוחות) לקבוצות הומוגניות, “קוהורטים” ובדיקה מה קורה לכל קבוצה, לאורך זמן.

קוהורטים אפשריים (רשימה פתוחה):

מבוסס זמן – למשל, שבוע הצטרפות של הלקוח.

מבוסס מוצר – למשל, לקוחות שהשתמשו או רכשו מוצר או שירות מסויים אותו אנחנו מנסים לנתח.

מבוסס גודל הלקוח – למשל, חלוקת לקוחות לחברות קטנות, בינוניות ותאגידים.

הטכניקה הזו מאפשרת לשאול שאלה עסקית בנוגע לאינטראקציה של הלקוחות עם המוצר. למשל, מתי הלקוחות נוטשים את השירות או המוצר churn, או כמה מכניסה כל קבוצה במונחים של מחזור מכירות על פני זמן.

בפוסט הזה אני אבנה מודל טאבלו אוטומטי לניתוח קוהורטים של שבוע הצטרפות לאורך זמן, ובחינה שלהם בשלושה היבטים: מחזור מכירות, הזמן בחודשים עד לרכישה חוזרת, ואחוז הלקוחות שנותרו ,בכל קוהורט ,על פני זמן.

זהו הדשבורד הסופי. זהו דשבורד “חי”, אז תרגישו חופשי להחליף תצוגת גרף כדי לראות את כל שלושת ההיבטים שהמודל מנתח. ניתן גם להצביע עם העכבר ולקבל טול-טיפ מפורט שמסביר את המספרים בכל תצוגה (המלצה: תלחצו על כפתור “מסך מלא” מצד ימין למטה בדשבורד, כדי לראות אותו במלואו באופן ברור):

מסד הנתונים הרלוונטי למודל מורכב משלוש טבלאות: Sales by Store, Customer Lookup ו Calendar. להלן החיבורים בין טבלאות ה – “פאקט”, כשכמובן התאריכון מחובר מול Sales by Store בעמודת תאריך עסקה:

 

במודל הזה אעשה שימוש בפונקציית LOD –  Level of Detail

פונקציות LOD קיימות כדי שאנו המפתחים, נוכל לשלוט ב”פירוט” (granularity) של השדה המחושב שהגדרנו. במקרה הזה נשתמש בסוג FIXED.

LOD – תזכורת מהירה
ישנן שלוש סוגים של LOD:

FIXED: מתעלמת מכל רמות הפירוט (Dimension) המוצגות בגרף (מלבד הרמה המצויינת בפונקציה) ומכל פילטר בגרף ,מרמת פילטר קונטקסטואלי ומעלה (לא כולל).

EXCLUDE: מתעלמת מכל רמת פירוט המוצגת בפונקציה ומכל פילטר בגרף (מושפעת מרמות הפירוט בגרף).

INCLUDE: מכבדת כל רמת פירוט נבחרת בפונקציה, גם אם היא אינה מוצגת בגרף, בהתעלמות מכל פילטר בגרף (מושפעת מרמות הפירוט בגרף).

הבדל ראשון מהותי בין הראשונה לשתיים האחרונות הוא שבעוד EXCLUDE/INCLUDE בהכרח מתייחסות לרמות הפירוט בגרף, FIXED מתעלמת מהם לחלוטין ומתייחסת רק לרמת הפירוט שציינו בתוכה.

ניתן לגרום ל FIXED להתנהג כמו EXCLUDE/INCLUDE אבל נצטרך תמיד לציין את רמות הפירוט בתוכה.

הבדל מהותי נוסף הוא ש INCLOUDE/EXCLUDE הן תמיד Measurs, בעוד FIXED יכולה להיות גם Dimension.

הבדל אחרון שאציין הוא שניתן לבנות FIXED גם ללא ציון רמת פירוט כלשהי.  כלומר לעטוף אגרגציה כלשהי בסוגריים {}. זה יתן אגרגציה המתעלמת מכל הפילטרים על הגרף.

 

אוקיי, נתחיל לבנות את הדשבורד. נתחיל מתצוגת נפח המכירות של כל קוהורט:

ניתוח קוהורט בהיבט של נפח מכירות 

כאמור, הקוהורט אותו אני מנתח הוא שבוע ההצטרפות של כל לקוח. הלקוחות במודל הם של חברה קמעונאית אז ההיבט של נפח המכירות לכל קבוצה הוא חשוב מאד להבנת התנהגות הלקוחות.

זה הגליון של הויזואל (“ויז”) הראשון (ניתן להקליק על התמונה להגדלה):

העמודות הן פשוט תאריך העסקה בחיתוך חודשי. השורות הן סכום המכירות.

הנוסחה הראשונה שלנו היא שדה מחושב calculated field שיתן לנו את התאריך של העסקה הראשונה של כל לקוח. ניתן לו את השם – Customer Acquistion Date:

{ FIXED [Customer Id]: MIN([Transaction Date])}

 

הערת אגב:

הפונקציה FIXED בה השתמשתי אומרת כך: מהו תאריך העסקה המוקדם ביותר בהתעלמות מכל הפילטרים מלבד מספר הלקוח. והיא מקבילה לפקודה ALLEXCEPT של POWER BI. למעשה הפונקציה המקבילה ב DAX תהיה:

CALCULATE(
    MIN('Table'[Transaction Date]), 
    ALLEXCEPT('Table', 'Table'[Customer ID])
)

את ה LOD נגרור למדף הצבע, ואז קליק ימני, נשנה משנה (YEAR), לחודש (WEEK NUMBER), כך אנו מגדירים את הקוהורטים שלנו לייצג את שבוע ההצטרפות של כל לקוח.

כמו כן נוודא שהLOD הוא מסוג discrete (כחול).

בשלב הזה כאשר העמודות ( תאריך העסקה) והשורות (סכום המכירות) במקומן , ה LOD החדש שלנו (Customer Acquistion Date) יצבע את העמודות האנכיות בצבע שונה לכל קוהורט.

ניתוח קוהורט בהיבט של מספר חודשים עד לרכישה שנייה

לפעמים נרצה לדעת כמה חודשים חולפים משבוע הצטרפות הלקוח (העסקה הראשונה שלו) ועד שהוא מבצע עסקה שנייה. הדרך לנתח זאת היא לבנות טבלת קוהורט שתציג כמה לקוחות רכשו בתוך חודש מיום ההצטרפות שלהם (חודש מספר אפס מיום ההצטרפות), כמה רכשו בתוך חודשיים (חודש מספר 1 מיום ההצטרפות), כמה בתוך שלושה וכן הלאה.

זה הגליון של הויז השני שנבנה (ניתן להקליק על התמונה להגדלה):

הבשורה הטובה היא שאנחנו נשתמש ב LOD שכתבנו בגרף הקודם ורק נעביר אותו למדף השורות.

הבשורה הרעה היא שנצטרך לבנות עוד כמה שדות מחושבים:

Customer repeat purchase

שדה מחושב שיתן לנו את כל הרכישות שקרו לאחר הרכישה הראשונה של הלקוח, בהתעלמות מכל מה שקרה קודם.

 

Customer 2nd purchase date

 

ה LOD הזה מחשב את תאריך הרכישה הראשון שמגיע לאחר הרכישה הראשונה. דהינו, הרכישה השנייה.

 

Customer Months to repeat purchase

 

השדה המחושב הזה סופר את מספר החודשים מהרכישה הראשונה לרכישה השנייה.

את השדה הזה נגרור תחילה למעלה ל – dimension, ומשם נגרור למדף העמודות. נשנה לחודש (MONTH).

מתחת לכרטיס ה – MARKS נבחר בריבוע (Square)

נבנה שדה מחושב נוסף – customer countd

ונוסיף אותו פעמיים, פעם אחת למדף הצבע ופעם אחת למדף הטקסט.

בכל אחד מהצמד customer countd נלחץ על המשולש הקטן מימין ונבחר “Add table calculation” ונשנה ל “Percent of Total” באופן הבא:

 

זה יחשב עבורנו את שיעור הלקוחות שרכשו בפעם השנייה באותו חודש מתוך כל קוהורט.

 

שיעור הלקוחות שנותרו בכל חודש – Customer retention

יהיו מקרים בהם נרצה לדעת כמה לקוחות נשארו מכל קוהורט, על פני זמן (תזכורת: כל קהורט שלנו הינו קבוצת הלקוחות שהצטרפו באותו שבוע). בגרף הבא נציג לכל קוהורט, מהו אחוז הלקוחות שנותרו כל חודש קדימה.

עמוד הגרף נראה כך בצורתו הסופית (ניתן להקליק על התמונה להגדלה):

 

מכיוון שמדובר במסד נתונים של חברה קמעונאית, אין לנו תאריך עזיבה של לקוח ( churn Date), נתון כזה יתן אינדיקציה מובהקת לעזיבת הלקוח, וקיים בחברות רבות. אבל במקרה שלנו , נניח לשם הפשטות שתאריך ה”עזיבה” הוא תאריך הרכישה האחרון של כל לקוח.

נחשב אותו – Customer Last Purchase Date

נחשב את מספר החודשים לרכישה האחרונה – Customer Months to Last purchase

נחשב את שיעור הלקוחות שנותרו מכל קוהורט – % Customer retention
שימו לב שכיוון שאנחנו מבצעים אגרגציה רוחבית על פני כל קוהורט (שורה) אנחנו חייבים להשתמש בשדה מחושב מסוג Table calculation. זה לא מסובך בכלל. פשוט לפתוח את איזור הבחירה מימין בשדה המחושב ולבחור למעלה ב Table calculation באופן הבא:

נקבל תזכורת בצהוב למעלה שמדובר בשדה מחושב שנעשה לרוחב הטבלה. נשמור ונסגור.

עכשיו נחסוך בזמן ונשכפל את הגרף הקודם שבנינו.
נחליף במדף העמודות את Customer Months to repeat purchase בשדה המחושב החדש שלנו – Customer Months to Last purchase.
במדף הצבע והטקסט נחליף את customer countd בשדה החדש שחישבנו – % Customer retention.

הערה: במידה ומקבלים עמודת “מספר חודש” בשם “NULL” זה אומר שנכללו לקוחות שלא חזרו מאז הרכישה הראשונה. ניתן לסנן אותם בקלות על ידי העתקת השדות המחשבים את מספר החודשים (אלו שיושבים במדף העמודות) לאיזור הפילטר, ולהסיר את את “NULL” מהאופציות.