Showing posts with label Tips and Tricks. Show all posts
Showing posts with label Tips and Tricks. Show all posts

Sunday, November 11, 2012

Exists or not exists- that is the answer


Using more complex queries that can answer simple question like who bought product A but didn't bought product B? Or in another Case: which customers from the customer’s table don’t have an order in the order table ,is one of the abilities that we would like to give for the users and allow them to use it simply and freely as we can.

In order to do that we can use in some cases the sub query method which is good and solid, but in some cases using the Exist \ not exist would be better.
And why is that?

There are first of all performance differences that makes the exists operator make a better work of evaluating which is the driving table and by doing so , use in some cases the appropriate index ,there is also the ability to work with nulls.
For a better understanding of the differences between Exists and subquery read here:





Using the Island resort we will use the Customer and the Sales tables in order to answer a simple question:

Who are the customers who haven’t paid so far?

  1. first we will build the following predefined condition using this syntax:



SELECT Customer.cust_id
FROM Customer

WHERE NOT EXISTS

(select Sales.cust_id from Sale where Customer.cust_id=Sales.cust_id)





  1. We will create a simple query that returns the customers ID’s :

  1. The result will be getting just those customers who don’t have any invoice :




Thursday, November 19, 2009

חישובים מתקדמים בדוחות Deski - אומנות התחביר המורחב

במצגות הבאות תמצאו דוגמאות והסברים רבים ומגוונים כיצד ליצור חישובים מתקדמים,לבנות להם הקשרים (באיזה רמה יערך החישוב...) וכן תכירו את תחביר ה- foreach וה- forall.
1.נושא התחביר המורחב,מצגת טובה שנכתבה ע"י Alan Mayer :

http://www.qdrive.net/yoavl/file/146486/5bf4c6655f072b11e942c44265f0470c

2.נושא ה foraech,forall :תת נושא של התחביר המורחב ובעל ג'ננה משל עצמו:

http://www.qdrive.net/yoavl/file/60949/cd4fdc69a3b83845fa03b87a67e800d4


Monday, November 16, 2009

טיפ בשקל לדיזיינר - איך לפלטר מידע משותף ל-2 שאילתות או יותר בקלי קלות...

כדי לפלטר את הרשומות המשותפות ל -2 שאילתות או יותר משתמשים בד"כ בפונקציית ה-not is null.
מאחר וזיהוי שורה משותפת מתבצע ע"י בדיקה המוודאת שיש ערכים בכל השדות המשותפים הנוסחא הנ"ל מתבקשת
אם כי אפשר להחליפה גם ב- not is number,date,string.
כדי לחסוך ולהקל על המשתמש בסינון ניתן ליצור אובייקט Dummy בעולם שה-select שלו הוא 1 (לא לשייך אותו לטבלה!).
השדה יחזיר כמובן את הערך 1 ואם נגרור אותו יחד עם שדה משאילתא אחת ושדה משאילתא שניה הוא יציג את ערכי ה-1 רק לצד הרשומות המשותפות והמשתמש יוכל לעמוד על השדה ולבחור מתוך הרשימה (1 או empty) את הערך 1 ולפלטר בפשטות את הרשומות המשותפות ללא צורך בנוסחא...

Thursday, November 12, 2009

Smart Universe Design לפי Steve Krandel

Steve Krandel  נחשב לאחד מהגורואים הגדולים והוותיקים
 של Sap Business Objects ובמצגת הבאה שמגיעה הישר מוועידת
Sap Business Objects 2009 הוא מראה כיצד ליצור Universe
חכם ,קל לפיתוח,זמין למשתמשים וכזה שפותר בעיות מורכבות בדרכים קלות,בין הנושאים שהוא מתייחס אליהם:
בניית טבלת זמן חכמה,טיפול ב- Contexts ו -Aliases ועוד:




Wednesday, November 11, 2009

Monday, November 9, 2009

מתיחת פנים לדוחות

דוחות שמציגים גרפים שנראים כמו רמזורים ?
עיצוב מותנה שמחזיר חיצים המורים למטה או למעלה לפי התוצאה ?
צפו במצגת (כולל דוחות לדוגמא) של Gregg Zollinger המדגימה כיצד לבצע מתיחת פנים עיצובית לדוחות Deski.

Wednesday, October 21, 2009

2009 Sap Business Objects User Confereance -אתם הראשונים לדעת!

וועידת Sap Business Objects User הסתיימה ב-11 לאוקטובר ב- Dallas Texas ואתם מקבלים כאן כמעט בזמן אמת
גישה למבחר מהמצגות המעניינות שהועברו שם.

אז קודם כל נושאי הוועידה העיקריים שנבחרו השנה להוביל את הוועידה הם Xcelsius,Web Intelligence וה- Designer
 במצגת הראשונה תקבלו סקירה מעניינת שנכתבה ע"י Norm Rosen
אודות שימוש בפונקציות ה-Rank ב- Designer,טבלאות View,
LOV חכם וטיפים לזירוז זמני הביצוע,שום דבר מהפכני אבל תמיד מעניין ופרקטי.

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

Tuesday, October 20, 2009

כל ערכי הפרומפטים שורה תחת שורה

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



"First prompt:" & Fill(Char(32) ,10) & Replace(UserResponse (DataProvider((object )) , " First prompt:";" ,Char(13) & Fill(Char(32) ,10) ) & Char(13) & Char(13) &" Secound prompt " & Fill(Char(32) ,10) & Replace(UserResponse (DataProvider((object)) , " Secound prompt:") ,";" ,Char(13) & Fill(Char(32) ,10) ) & Char(13) & Char(13)

מומלץ ליצור templates עם תצוגה זו.
שימו לב שהסוגריים אדומים הם למעשה הסוגריים המרובעים הרגילים,פלטפורמת האתר פשוט לא תומכת בתו זה...

Tuesday, September 22, 2009

Prompt לבחירת join באופן דינמי באורקל: outer או equal

במידה ואתם מעוניינים לאפשר למשתמש לבחור Outer או Equal Join בעת הרצת הדוח ניתן לארגן זאת כך:
ראשית בואו ונתאר מצב תיאורטי ,כאשר יש לי 2 טבלאות :טבלת לקוחות וטבלת הזמנות ואנו מעוניינים שהקשר בין טבלת הלקוחות לטבלת ההזמנות יהיה דינאמי:בחירת Outer להצגת גם לקוחות ללא הזמנה או בחירת Equal Join להצגת לקוחות עם הזמנה בלבד,טוב ל-Oracle:

CUSTOMERS.CUST_ID =@Prompt('Outer join (choose (+)) or equi join?','N',
{ 'ORDERS.CUST_ID (+)', 'ORDERS.CUST_ID' '},mono,constrained)

שימו לב למיקום ה + הקובע אל איזה טבלה יתבצע ה -Outer Join.

Friday, September 4, 2009

Sunday, August 30, 2009

שילוב LOV על בסיס טבלה מעולם בשאילתת- Free Hand.

בעת כתיבת Free Hand והרצתו ב- BO אנו מאבדים את יכולת השימוש ברשימת ערכים מובנית,כלומר את היכולת לבחור ערכים מתוך טבלה ל"טובת" רשימה שאנו יוצרים..
כיצד להתגבר על מגבלה זו כשמדובר על רשימות ערכים גדולות,ארוכות והזקוקות לעדכון יומי?
כיצד לאפשר בחירת ערכים מטבלה על אף מגבלת ה- free hand ? הורידו מכאן את המצגת בעברית:

 http://www.qdrive.net/yoavl/file/39365/8c2151b645bc0b31d049aaa86fc70341

Saturday, August 22, 2009

תיקון האקסל לאחר התקנת Xceslius 2008

אחת הבעיות שנוצרות לאחר התקנת Xceslius 2008 היא השתבשות האקסל במבחר דרכים מגניבות:
קבצים לא נפתחים יותר כראוי....
לאחר שנמלא את הדלי בדמעות ,נסור אל הלינק הבא בו נלמד איך מחזירים עטרה ליושנה,דהינו איך פותרים את הבאג:
http://dallasmarks.blogspot.com/2009/07/tips-and-tricks-excel-fix-after.html

Thursday, July 16, 2009

דוח להורדה: שבירה מותנית על מס' שורות

הדוח הבא מדגים כיצד ניתן לשבור את הטבלה למקטעים לפי טווחי שורות לא קבועים;למשל:משורה1-10,משורה 11-15 וכו'... הדוגמא על גרסא Deski :

http://www.qdrive.net/yoavl/file/16341/6d0e74e4079cb919c4829e34817bc24e


Wednesday, July 8, 2009

מאיזה תיקיות בעולם הגיעו אובייקטי התוצאה ?

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

 http://www.qdrive.net/yoavl/file/11799/7e6e6716dac8497610c23e7274c3b0eb

Thursday, June 25, 2009

שיפור רשימות ערכים עייפות

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

http://www.qdrive.net/yoavl/file/5645/15bdc862c0f1fe0f255408c151b41d5a


2.ומי שרוצה לרדת ממש לעומק מוזמן לקרוא כאן את המצגת שנכתבה ע"י Michael Aarons ומכילה גםכמה טריקים מגניבים של Prompts:

http://www.qdrive.net/yoavl/file/5646/2090aedef6783a97b8d618015a11653b


Tuesday, June 23, 2009

Prompt לבחירת טבלה באופן דינמי

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

http://www.qdrive.net/yoavl/file/4509/2f4b0810d97cff2d9f9a708d0190938b

Sunday, June 7, 2009

DB Hints ב - Designer

Hints הינו אמצעי המגיע מכיוון ה- DB וה- SQL ומאפשר ע"י יצירתו השפעה מיטבית על תוכנית האופטימיזצייה של ה- SQL הנשלח ל- DB :לפי ה- Index ,לפי ה- Join לפי ה- Access paths
כיצד לשלבם בעולם באופן חכם אשר יתאים לג'ננה הפרטית של כל שאילתא ?

A database hint is a keyword that developers can use to influence the database optimizer’s plan for a query ,Join methods,Index usage,Access paths Many times indexes exist, but for many reasons the database optimizer chooses not to use them Hints are required to be placed at the beginning of the SQL string Hints can be implemented in Business Objects by creating dimension objects to store the hint

אובייקט ה-HINT חייב להיות האובייקט הראשון בבניית השאילתא:

Saturday, May 30, 2009

טיפ לקיצור זמן ייבוא העולם:פרמטר COMPARE_CONTEXTS_WITH_JOINS

פרמטר COMPARE_CONTEXTS_WITH_JOINS הוא אחד מהפרמטרים שניתן לשנות ב- Designer
והוא משווה joins עם contexts על מנת לבדוק שהם באותו/לא באותו ה- context .
מה זה מעניין ? הפרמטר מוגדר כ- yes באופן דיפולטיבי וכאשר אתם מייבאים את העולם אתם עשויים לחכות זמן רק (כמה דקות) אם מדובר בעולם גדול מאחר ומתסבר שמדובר בבדיקה כבדה.
אפשר לשנות את הפרמטר מ- yes ל-no ואז בעת הייבוא הבא,הזמן יתקצר פלאים...נסו ותהנו.

Sunday, May 10, 2009

הפרש ימים בין תאריכים ללא סופ"ש

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

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

Number of Weekends: =Truncate((DayNumberOfWeek([Start Date])+DaysBetween([Start Date>] ,[End Date])) /7 ,0)


2.ניצור חישוב שיכפיל את הסופי שבוע במספר הימים (*2 ) בכל סוף שבוע כזה ואז נחסר את הסכום מהפרש הימים (פונקציית ה- days between ),הנה:

Non Working Days: = [Number of Weekends]*2

3.ניצור חישוב של הפרש הימים ללא סופ"ש:
Number of days : =Floor((DaysBetween([Start Date] ,[End Date])-[Non Working Days]))

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

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