
Left Join (Customers) LOAD CustomerID, Min(OrderDate) As FirstOrderDate Resident Orders Group By CustomerID;. Resident טוענת מטבלה שכבר נטענה, ו-Group By נדרש כי יש פונקציה אגרגטיבית.הטקסט המלא של הדקות הראשונות בהרצאה «Qlik Join - חלק 1» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אוקיי נלמד על ג'וינים משהו מאוד מאוד חשוב אולי אתם תדעו איך זה יכול להיות שרק עכשיו אנחנו לומדים הרי כל מה שאנחנו רואים פה לכאורה זה ג'וינים לכאורה זה קשרים התשובה היא לא בדיוק בקליקסנס מה שאתם רואים פה זה לא ג'וין זה אסוסייט או אסוסייט זאת אומרת קישור שיצרנו בין טבלאות נפרדות הטבלאות עדיין נפרדות יש
ביניהם קישור זה אסוסייציה או אסוסיישן ג'וין זה משהו אחר ג'וין בעצם מאוד דומה לsql כשבsql אנחנו כותבים join בתוך השאילתה אנחנו למעשה יוצרים טבלה חדשה שמחוברת משתי השאילתות ביחד לכדי טבלה אחת גם בקליקסנס בעצם אפשר לעשות join ולחבר שתי טבלאות ואז
התוצאה של הג'וין תהיה טבלה אחת ולא טבלאות נפרדות עם קשר ביניהם כמו שמה שאנחנו רואים עכשיו כמובן שאת הג'וין אפשר לעשות גם ברמת הsql עצמו ולפעמים זה שימושי זאת אומרת בשלב האקסטרקט יכולתי פה לעשות join לכל דבר שרציתי ממש כמו sql רגיל וזה היה עובד לפעמים עושים את זה ברמת לא ברמת ה sql אלא ברמת
הקליקסנס בשלב הטרנספורם בעצם לא ניכנס כרגע לשיקולים מתי עושים את זה מתי זה כרגע אני פשוט אדגים איך עושים את זה ברמת הקליקסנס אני כן אגיד שזה שימושי מאוד כשבעצם אנחנו עובדים על טבלאות שכבר עיבדנו אותן כשבעצם אנחנו צריכים לקשר בין טבלאות
שכבר עיבדנו שהפעלנו לנו כבר טרנספורמציה ואחרי זה רק אנחנו רוצים לעשות ג'וין למשל שדה חדש שיצרנו שחילצנו מתוך איזשהו מחרוזת ועל בסיס השדה החדש אנחנו רוצים לעשות ג'וין אז כמובן שאנחנו חייבים לעשות את זה ברמת הקליק ולא ברמת ההשקיעות. בואו ניקח דוגמה בעצם שכבר עשינו בעבר הראינו באחד הגיליונות לכל לקוח תכף נמצא את זה את הקנייה הראשונה
והאחרונה שלו אוקיי אם אתם זוכרים customer ID first name last name הראינו כל מיני אגרגציות ביניהם הקנייה הראשונה והאחרונה.
הכל טוב ויפה, אבל אם אני רוצה לסנן לפי לקוח שקנה ב-2012 לאחרונה, קצת בעייתי, זאת אומרת, אני לא אבוא ואבחור כל ה-2012.
אני גם לא רוצה להציג את זה פה, אני רוצה להציג את זה כאיזשהו סינון בצד קבוע, זה גם בעיה, כי פה זה מחושב ביחס לקסטומר שמוצג לי פה, ואני רוצה סתם פשוט סינון שנה האחרונה של לקוח.
זה למשל חלק מהשיקולים שיכולים לגרום לנו ליצור ג'ויין אז איך הג'ויין פותר את זה? בעצם מה שאני אעשה בטבלת קסטומר בוא נראה אותה רגע במודל אני רוצה להצמיד לכל לקוח את תאריך הקנייה האחרונה שלו אוקיי טבלת קסטומר אני רוצה פשוט יהיה לי שדה נוסף בטבלת קסטומר שנקרא קסטומר לאסט שופינג או איך קראנו לזה לאסט אורדר אוקיי
ואז ברגע שיהיה לי כשדה נפרד זה ממש מוכן כבר בסקריפט, אני יכול בקלות לעשות עליו סינון כמו כל שדה אחר. וזה אומר שאני צריך באמת לעשות join על בסיס האורדרס או האורדר דייט, ולשים את השדה, לקשר אותו לתוך טבלת קסטומרס.
בואו נראה איך עושים את זה. נחזור לסקריפט, יש לי קסטומרס, יש לי אורדרס, בעצם המקום הכי טוב לדעתי לעשות את זה, זה אחרי שיש לי כבר שתי הטבלאות, לא לחכות לסוף, כל דבר במקומו.
אוקיי, אז אחרי שיש לי קאסטומרס, יש לי אורדר ואני יכול לקשר ביניהם. מה שאני עושה, אני כותב ככה left join, תכף נדבר על מה זה left, למה דווקא left join, ולמה אני רוצה לצרף, אני רוצה לצרף לפונקציית קאסטומרס, נכון? אני רוצה
שבה יהיה עוד שדה, לכן אני צריך לפתוח סוגריים ולהגיד לצרף לטבלת קאסטומרס. לא הייתי שם סוגרים והוא היה מצרף לטבלה האחרונה לטבלת orders וזה לא מה שאני רוצה לכן אני כן צריך להגיד לו במפורש לצרף לטבלת קסטומר זה פשוט משפט לואוד בפני עצמו לואוד אז בשביל לבצע את הג'וינט צריך בעצם שני שדות צריך שדה המקשר
בטבלת orders שזה קסטומר איידי בעצם יוצר פה לואוד חדש קסטומר איידי ומה שאני עושה אני עושה מין שזה פונקציה אגרגטיבית בתוך הסקריפט לא בתצוגה כמו שאמרנו קודם מין של order date ועכשיו שימו לב עוד
משהו שאנחנו לומדים רזידנט רזידנט זה בעצם כמו from אבל רזידנט בעצם טוען מטבלה שכבר נוצרה וקיימת בזיכרון מכיוון שטבלת customers נוצרה וorders נוצרה ולא מחקתי אותה אז יש לי את שתי הטבלאות האלה ואני יכול גם לצרף לטבלת customers וגם למשוך מטבלת orders זאת פקודת רזידנט פשוט מטבלה קיימת orders והדבר שאני צריך
לעשות זה group by אתם יודעים sql אז אתם יודעים שכשעושים פונקציה אגרגטיבית צריכים group by ולכן אני עושה group by customer id שימו לב הג'ויין לא ייצור לי טבלה למרות שיש פה load הוא לא ייצור לי טבלה נפרדת הוא יצרף לטבלת customer את המינימום של order לא ירעיר סליחה אני רציתי order date מה שלא עשיתי זה לא נתתי לזה שם בוא נקרא לזה first order date אוקיי מתוך טבלת אורדר שהייתה קיימת לי גו ביי כמובן קסטומר
איי די ובוא נראה את התוצאה של זה ופה שים לב שבתבלת קסטומר נוצר לי שדה חדש בשם פירסט אורדר דייט והוא מופיע לי פה כמספר אוקיי אז זאת הזדמנות לחזור על עניין הפורמטינג של תאריכים של שדות אני פשוט אעטוף את המין בפונקציית דייט עם הפורמט האהוב עליי וזה אמור לפתור את
הבעיה אני בעצם מזכיר מה זה המספר הזה? זה בעצם כל תאריך נשמר כמספר גם אם הוא מוצג כתאריך, לפעמים הוא גם בטעות מוצג כתאריך ומפעילים עליו פונקציה דייט כדי לפרמט אותו להציג אותו כתאריך, אגב המספר זה בעצם מספר ימים מ-1900, מ-1-1-1900 זה בעצם המספר