PracticU

Qlik Join - חלק 6

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

Qlik Join - חלק 6
בשיעור הזה מבינים מתי מאחדים טבלאות לטבלה אחת, ולמה זה מתאים למודל שנקרא Star Schema.
מודל הכוכב
1. טבלת פקט: הטבלה המרכזית, שמצטברת בקצב יומי. בדוגמה היא טבלת ההזמנות או הפוליסות.
2. טבלאות מימד: לקוחות, מוצרים וספקים. הן מתעדכנות לעיתים רחוקות יותר, ומקיפות את טבלת הפקט מכל הכיוונים.
למה לאחד
1. נתוני הזמנה מפוצלים: orders ו-order items מתארים את אותה הזמנה, ורק ההפרדה ברמת השורה גורמת לבעיה. לכן ראוי לאחד אותם לטבלה אחת.
2. החזרות בעלות אותו מבנה: החזרה כוללת לקוח, תאריך, מוצר וכמות כמו הזמנה. אם מאחדים אותה לאותה טבלה, מסמנים את סוג הרשומה ולא בונים מבנה מסובך עם עוד טבלאות.
איך מאחדים
1. Inner Join: מחברים את orders עם order items. רק הזמנות שיש להן שורות נשמרות, וזה מתאים כאן כי הזמנה בלי שורות אינה מעניינת.
2. מחיקת הטבלה המקורית: אחרי החיבור מוחקים את order items עם drop table, כדי שלא יישארו מפתחות סינתטיים ולא יישאר מידע מיותר בזיכרון.
ההמלצה היא למחוק טבלה מיד כשלא צריך אותה. בשיעור הבא מוסיפים את טבלת ההחזרות לטבלה המאוחדת.
השיעור הבא בקורס: Qlik Join - חלק 7

פרקי ההרצאה: Qlik Join - חלק 6

  1. 00:00

    מבנה Star Schema: טבלת פאקט ומימד

  2. 00:59

    דוגמה: פוליסות, לקוחות ומוצרים

  3. 01:42

    טבלת הפוליסות כטבלת הפאקט

  4. 02:37

    הפרדת Orders ו-Order Items

  5. 03:30

    בעיית מודל עם שתי טבלאות פאקט

  6. 04:06

    איחוד Orders ו-Order Items לטבלה אחת

  7. 04:59

    הוספת שדות ההחזרות לטבלה המאוחדת

תמלול ההרצאה: Qlik Join - חלק 6

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

  1. 00:02

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

  2. 00:14

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

  3. 00:36

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

  4. 01:02

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

  5. 01:33

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

  6. 01:53

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

  7. 02:05

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

  8. 02:17

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

  9. 02:31

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

  10. 02:54

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

  11. 03:13

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

  12. 03:27

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

  13. 03:42

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

  14. 03:58

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

  15. 04:17

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

  16. 04:42

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

  17. 04:59

    כי זה בעצם המוצר שהחזירו. באותו שדה, באותו שדה של Customer ID של ה-Orders, יהיה לי בעצם גם את הלקוח שהחזיר. באותו שדה של תאריך של הרכישה, יהיה לי גם תאריך של ההחזרה.

  18. 05:13

    באותו שדה של Quantity, יהיה לי גם את ה-Quantity של ההחזרה. נכון שיהיו שדות שיהיו רלוונטיים רק לרשומות מסוג הזמנה, ושדות שרלוונטיים רק לרשומות מסוג החזר.

  19. 05:25

    למשל, סיבת ההחזר. סיבת ההחזר לא יהיה לי ברשומות של אורדרס, אבל עדיין, זה יהיה חלק מהטבלה. ברשומות של האורדרס זה יהיה ריק, זה יהיה נ"ל.

  20. 05:34

    ברשומות של ההחזרות תהיה רשום לי מה סיבת

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

ההרצאה הקודמת: Qlik Join - חלק 5

ההרצאה הבאה: Qlik Join - חלק 7

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

  • פקודת Select עם Join
  • שליפת קטגוריה עם כל המוצרים שלה - MongoDB Join

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

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