
הטקסט המלא של הדקות הראשונות בהרצאה «Qlik Join - חלק 2» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אז ראינו שימוש בג'וין כדי להציג לכל תוכן, כדי לשמור לכל לקוח את הקנייה הראשונה שלו, את השנה של הקנייה הראשונה.
יש עוד שימוש לג'וין בתוך הסקריפט כשבעצם רוצים לעשות חישוב שמובסס על שתי עמודות שלא נמצאות באותה טבלה. למשל, נגיד שיש לי פה באמת את טבלת פודקט ואני יכול לראות בכל מוצר מה המחיר הקטלוגי שלו, הקטלוגי, ובנוסף, גם ב-order items בהזמנה יש את המחיר,
ה-order price הוא unit price תכף אין order ההבדל הוא שזה בעצם המחיר בעת המכירה שהקטלוג היא בעצם המחיר המתעדכן אז נגיד מפותח הזמנה לפני שנה עם מוצר מסוים מוצר מספר 4 נניח יכול להיות שבהזמנה או בשורת הזמנה המחיר היה 3 לולר ובהתאם היה הסכום לתשלום אבל אם אני אלך לאותו מוצר בקטלוג אני
נראה שבעצם העלות שלו היא, המחיר שלו הוא שלוש ועשרים. למה? כי זה מאז עלה. לכן בעצם צריכים לשמור את שני המחירים, את המחיר הקטלוגי שמתעדכן בטבלת הפודקט, ואת המחיר באותו זמן של המחירה.
טוב ויפה. עכשיו, מה קורה אם נניח שאנחנו רוצים בעצם לנתח עבור כל שורת הזמנה את הפער, שימו לב, את הפער בין המחיר שבעת המכירה לבין המחיר הקטלוגי.
למה? כל מיני סיבות יכולות להיות לדבר הזה, נניח שאנחנו נותנים הנחה ללקוחות על ההזמנות שלהם בשנה האחרונה, שיכולים לרכוש אותם באותו מחיר גם אם המחיר עלה, אנחנו כן רוצים לנתח בעצם מה היה, מה גובה ההטבה.
זאת אומרת, אנחנו צריכים לחשב את הפער בין המחיר הקטלוגי שמופיע בטבלת פרודקט למחיר בעת המכירה שמופיע בהזמנה. אפשר לעשות את זה גם בשכבת התצוגה, אבל גם פה יש מקרים שאני רוצה לעשות את זה ברמת הסקריפט כשניתן אולי לעשות איזה עוד כל מיני חישובים ועוד שיקולים כאלו ואחרים אז אנחנו בעצם במצב הנוכחי לא יכולים להפעיל בכלל את החישוב הזה
בסקריפט אם נזכר בחישובים שכן עשינו עשינו את החישוב של הקוונטיטים אם אני לא טועה במונט סליחה קוונטיטי הכמות כפול מחיר לחידה יצא לנו סך הכל לשורה זה התאפשר מכיוון ששני השדות האלו קוונטיטי ו-unit price היו באותה טבלה.
אבל אני לא יכולתי לשים לחשב להכניס לחישוב שדות מטבלאות אחרות. בתצוגה אני כן יכול והשכירת אני לא יכול. אז מה עושים? גם במקרה הזה בעצם אנחנו פשוט עושים join ומעתיקים את השדה מטבלה א' לשדה בטבלת ב'.
כן חשוב להגיד שצריך לשנות לו את השם אחרת ייווצר לנו קשר בין שני השדות ואנחנו לא רוצים ליצור לנו כל מיני גלולאות וכל מיני דברים. בעצם רוצים להעתיק אותו ולתת לו שם אחר ואז נוכל לעשות את החישוב על השדות שאנחנו רוצים.
אז בוא נעשה בעצם את מה שאמרנו, אני מזכיר, כשרוצים להעתיק את המחיר הקטלוגי מתוות פרודקט ל order item ליד המחיר בעת המכירה להעתיק גם את המחיר הקטלוגי ואחר כך גם לעשות את החישוב של הפער ביניהם.
זה טיפה מורכב אבל זה דוגמה טובה. אז אני מזכיר אנחנו עושים את זה, תהיה המלצה במקום שבו אפשר לראשונה לעשות את החישוב אז אני חייב שיהיה לי בעצם את product ואת order item ולפני supplier אני יכול גם אחרי אבל הפעם אני מעדיף לעשות את זה מיד כשאפשר אז בעצם מה אני רוצה לעשות אני אומר left join לעדת הבא אני רוצה לתרס לטבלת order item אליה אני רוצה לצרף מה
אני רוצה לצרף אז אני עושה פה load משהו ששכחתי להדגיש ואני אדגיש אותו עכשיו כשאנחנו מבצעים load אנחנו חייבים כמובן להביא ללואוד את השדה שעל בסיסו אנחנו מקשרים, אני אחזור רגע אחורה.
אנחנו רצינו לקשר פה בין טבלת קאסטומרס ואורדרס בעצם להביא לכל לקוח את ההזמנה הראשונה, אז אם הייתי שם רק את הדייט מינימום, זה שגם החישוב לא היה מתבצע נכון, אבל בעצם הוא גם לא היה יכול לבצע את הקישור כי בעצם לא היה לי שום שדה מקשר בין שתי הטבלאות.
שדה שמקשר בשתי הטבלאות בין קאסטומרס לאורדרס זה הקאסטומר איידי ולכן הוא חייב להיות חלק מהג'וינט אחרת בעצם ישראל היא מכפלה קרטזית, מי שמכיר את המושג, הווילנו מוודא שבג'וינט אנחנו בעצם מכניסים את השדה שעל בסיסו התבצע הג'וינט, במקרה הזה זה קסטומר אי-די, במקרה החדש זה בעצם יהיה הפרודקט אי-די, נכון?
זה השדה שמקשר בין אורדר אייטמס לפרודקט. אז מה אני אומר לו? אני אומר לו לואוד של פרודקט אי-די, ונעזוב רגע, מאיפה אני רוצה להביא את זה? מרזידנט עוד פעם, כי זו טבלה שכבר קיימת, מהאורדר אייטמס.
את השייר להביא לטבלת סליחה טעות אני רוצה להביא מפרודקס את המחיר הקטלוגי אל טבלת אורדר אייטמס אז הבאתי את הפרודקס הנבצרי שזה השדה שבסופו של דבר יבצע הדברים ואני צריך להביא גם את יוניט פרייס ואמרנו שניתן לו שם חדש כדי שלא ייווצר לי השייר אני נותן לו קטלוג יוניט פרייס אוקיי אז זה מה שאנחנו עושים
בוא נריץ נבדוק פאונד למה לא פאונד אותם כאילו זה עם דיק גדולה במקום עם דיק קטנה, לכן עדיף להעתיק. שנוצר לנו בטבלת order item, הנה catalog unit price.
שימו לב אגב דוגמה מעניינת, הפריט הזה, הפריט זה 11, בעצם המחיר הקטלוגי זה 21 דולר, פה הוא נמכר ב-16.80, כנראה ניתנה פה איזושהי הנחה.
אוקיי, הנה באמת אותו פריט שחוזר על עצמו גם בשורות הבאות, באמת בדרך כלל נמכר ב-21, אבל יש מקרים שהוא נמכר ב-16.80 פה וגם פה, אז יש לנו מקום להשוואה הזו. אז יופי אז קודם כל החיבור הצליח נוצר לנו שדה ועכשיו אנחנו בעצם רוצים לעשות את הפער בין הקטלוג יוניט פרייס לבין יוניט פרייס סליחה
לבין יוניט פרייס אין אורדר. עכשיו יש פה עוד בעיה פה אנחנו לא יכולים לעשות את זה כיוון שאם אני אנסה לעשות פה נגיד עוד פעם את היוניט פרייס פחות יוניט פרייס אין אורדר זה לא ילך כי אני רץ על טבלת פרודקט בפרודקט אין שדה כזה בעצם רק אחרי שנגמר הג'וין הזה ובטבלת
אורדר אייטמס יש גם