PracticU

בניית מודל

בלי כתוביותעם כתוביות
PracticU › קורס BI - ניתוח מסדי נתונים - Qlik Sense › בניית מודל
מילון מושגים:
מודל - רכיב שמייצג את הנתונים ואת הלוגיקה העסקית באפליקציה. גם ייצוג מופשט של מערכת או תהליך.
Qlik - פלטפורמה לניתוח נתונים ולהצגתם בלוחות מחוונים אינטראקטיביים (Business Intelligence).
טבלה - מבנה במסד נתונים שמאחסן נתונים בשורות ועמודות. כל שורה היא רשומה וכל עמודה היא שדה.
סקריפט - קובץ המכיל רצף פקודות שמבוצעות על ידי מפרש, לרוב כדי להפוך משימות לאוטומטיות.

בניית מודל
בשיעור זה נתחיל לבנות את מודל הנתונים ב-Qlik Sense: נבדוק את הקשרים בין הטבלאות, נספור לקוחות לפי מוצר, ונבין מתי צריך ספירה ייחודית.
ספירת לקוחות לפי מוצר
1. גרף לפי מוצר: מציגים גרף עמודות שבו המימד הוא שם המוצר, והמדד הוא ספירת הלקוחות שרכשו אותו.
2. הבעיה בספירה רגילה: לקוח שרכש את אותו מוצר בכמה הזמנות נספר בכל הזמנה. בדוגמה, ספירה רגילה נתנה 54, אבל הטבלה המיוצאת הציגה 43 לקוחות ייחודיים.
3. הפתרון: משתמשים ב-count distinct על מזהה הלקוח, כדי לספור כל לקוח פעם אחת בלבד.
מבנה הסקריפט
1. שלבי העבודה: בשלב Extract טוענים את הנתונים מהמסד בצורה גולמית, ללא לוגיקה וללא שינויי שמות. בשלב Transform מבצעים את העיבוד: שינויי שמות, נוסחאות וקשרים.
2. למה להפריד: כך לא נוצרים קשרים לא רצויים בין הטבלאות, והסקריפט נשאר ברור.
3. הכנה לשמירה: בסוף שלב Extract כל טבלה נשמרת לקובץ, כדי שאפשר יהיה לטעון אותה מחדש בשלב Transform.
השיעור הבא יעסוק בשמירת הטבלאות לקבצי QVD.
השיעור הבא בקורס: שמירת נתונים בתוך קובץ QVD

פרקי ההרצאה: בניית מודל

  1. 00:00

    גרף עמודות של לקוחות לכל מוצר

  2. 01:28

    הוספת טבלת לקוחות לבדיקה

  3. 02:12

    סינון לפי מוצר וייצוא לאקסל

  4. 03:04

    למה הספירה מראה כפילויות

  5. 04:18

    תיקון הביטוי עם Count Distinct

  6. 05:29

    סקירת הסקריפט והטאב Load

  7. 06:04

    שלבי ETL בבניית מודל BI

תמלול ההרצאה: בניית מודל

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

  1. 00:02

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

  2. 00:14

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

  3. 00:38

    זה את שם המוצר, אוקיי והמז'ר זה לספור את הלקוחות עוד פעם אני רוצה דוח שמראה לי כל מוצר כמה לקוחות קנו אותו אז אני אספור את קסטומר איידי קסטומר איידי וקאונט אוקיי בוא ניתן לזה כותרת number of customers for each product ולמשל אני יכול לראות פה לכאורה של המוצר הזה יש 54 אבל אם אני אביא בשביל הבדיקה טבלה ובוא נביא לטבלה נניח את טבלת

  4. 01:31

    אני רוצה להביא קצת נתונים על הלקוחות, אני מביא את Customer ID ואת Customer Name, אין לי Name שלי, סליחה, Last Name ו-First Name ונגיד גם מאיזה מדינה הוא, בסדר? זה משהו שעוד לא עשינו טבלה אבל אורייקט מאוד מאוד פשוט, אפשר לראות כל מיני נתונים בצורה טבלאית.

  5. 02:05

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

  6. 02:34

    שהיו מסוננים על המוצר הזה ולכן גם הטבלה הזאת כמובן צריכה לשקף את אותם לקוחות שקנו את אותו מוצר שלחצתי אז אם אני אעשה קליק ימני אקספורט אקספורט דאטה הוא בעצם מייצג את זה לאקסל ועם האקסל שלי ושימו לב שיש לי פה רק 44 לקוחות בעייתי לא הרי פה ראינו עוד פעם אני חוזר 54 לקוחות ספרתי customer ID

  7. 03:07

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

  8. 03:27

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

  9. 03:39

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

  10. 04:00

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

  11. 04:29

    במקום count ID אני אכנס לפה אני אלך לנוסחה אחרי ה-account, אחרי הסוגריים ולפני ה-customer ID אני מוסיף את המילה Distinct.

  12. 04:40

    בדרך כלל אתם אמורים כבר להכיר מרמת ה-SQL, וגם ב-SQL יש את המילה Distinct, אבל פה זה לא SQL, זה ביטוי פנימי של ה-Click Sense.

  13. 04:48

    היא אומרת תספור את ה-customer ID אבל באופן ייחודי, זאת אומרת אם הלקוח מופיע כמה פעמים, תספור אותו אך ורק פעם אחת. והנה עכשיו אתם רואים שזה צנח וזה 43. 43 הוא 44 כי אני ספרתי גם את שורת הכותרת.

  14. 05:03

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

  15. 05:19

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

  16. 05:35

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

  17. 05:52

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

  18. 06:04

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

  19. 06:27

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

  20. 06:41

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

  21. 07:01

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

לקורס המלא: קורס BI אונליין עם Qlik Sense

ההרצאה הקודמת: קשרים בין הטבלאות בתוך Qlik Sense - חלק 3

ההרצאה הבאה: שמירת נתונים בתוך קובץ QVD

הרצאות קשורות מקורסים אחרים

  • מודל שכבות
  • בניית שלב - חלק 1
  • בניית צ'אט באתר
  • מודל שכבות - DAL

קורסים נוספים במסלול

  • קורס DBA אפליקטיבי - שפת SQL למתחילים
  • קורס NoSQL - MongoDB
  • קורס SSIS
  • קורס Power BI