PracticU

Qlik Join - חלק 1

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

Qlik Join - חלק 1
השיעור פותח את נושא ה-Join ב-Qlik. הדוגמה מצרפת לטבלת הלקוחות את תאריך ההזמנה הראשונה של כל לקוח, בעזרת Left Join ו-Resident.
השלבים העיקריים
1. Association לעומת Join: הקשר שנוצר בין טבלאות ב-Qlik הוא Association, והטבלאות נשארות נפרדות. Join מחבר שתי טבלאות לטבלה אחת, בדומה ל-JOIN ב-SQL.
2. מתי משתמשים בג'וין: כשצריך לחבר נתונים שכבר עובדו בטרנספורמציה, או כשצריך שדה שנוצר בעיבוד ושאפשר לסנן או לחשב עליו.
3. הבעיה שנפתרת: רוצים לסנן לקוחות לפי תאריך הקנייה הראשונה שלהם. אי אפשר לקשר את התאריך לטבלת הלקוחות בלי שדה מחושב, ולכן מצרפים אותו כשדה נפרד.
4. Left Join עם Resident: Left Join (Customers) LOAD CustomerID, Min(OrderDate) As FirstOrderDate Resident Orders Group By CustomerID;. Resident טוענת מטבלה שכבר נטענה, ו-Group By נדרש כי יש פונקציה אגרגטיבית.
5. עיצוב התאריך: התוצאה מתקבלת כמספר, ולכן עוטפים אותה בפונקציית Date. הדובר מסביר שכל תאריך נשמר כמספר ימים מ-1.1.1900, ושעות הן שבר עשרוני.
6. שנה ראשונה: נוסף שדה First Order Year, בעזרת Year של התאריך הראשון, ואחר כך מסודר ברשימת השדות של Customers.
שימו לב
Left Join משאיר את כל הרשומות של הטבלה שמשמאל, גם לקוח שלא קנה מעולם, ומוסיף נתונים מימין רק כשיש להם התאמה. קיימים גם Right, Inner ו-Full Join, והדובר יכסה אותם בהמשך.
עכשיו אפשר לצרף לטבלה קיימת שדה שמחושב מטבלה אחרת, ולשמור אותו כחלק מהנתונים.
השיעור הבא בקורס: Qlik Join - חלק 2

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

  1. 00:00

    Join שונה מקשר בין טבלאות

  2. 01:16

    מתי לבצע Join בסקריפט

  3. 01:55

    דוגמה: הקנייה הראשונה והאחרונה

  4. 02:47

    הוספת שדה תאריך קנייה לטבלת הלקוחות

  5. 03:43

    Left Join לטבלת הלקוחות

  6. 04:34

    אגרגציית Min בתוך ה-Join

  7. 05:35

    Group By לפי מזהה לקוח

  8. 06:22

    עיצוב התאריך שהתקבל

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

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

  1. 00:02

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

  2. 00:28

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

  3. 00:51

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

  4. 01:16

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

  5. 01:38

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

  6. 02:04

    והאחרונה שלו אוקיי אם אתם זוכרים customer ID first name last name הראינו כל מיני אגרגציות ביניהם הקנייה הראשונה והאחרונה.

  7. 02:17

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

  8. 02:31

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

  9. 02:44

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

  10. 03:14

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

  11. 03:31

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

  12. 03:43

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

  13. 04:01

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

  14. 04:27

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

  15. 04:57

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

  16. 05:21

    לעשות זה group by אתם יודעים sql אז אתם יודעים שכשעושים פונקציה אגרגטיבית צריכים group by ולכן אני עושה group by customer id שימו לב הג'ויין לא ייצור לי טבלה למרות שיש פה load הוא לא ייצור לי טבלה נפרדת הוא יצרף לטבלת customer את המינימום של order לא ירעיר סליחה אני רציתי order date מה שלא עשיתי זה לא נתתי לזה שם בוא נקרא לזה first order date אוקיי מתוך טבלת אורדר שהייתה קיימת לי גו ביי כמובן קסטומר

  17. 06:03

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

  18. 06:43

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

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

ההרצאה הקודמת: Qlik - if-else - חלק 2

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

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

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

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

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