Saturday, December 8, 2012

OBIEE - Drill Through with unmatching columns

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

על פי רוב לא צריך את זה בOBIEE. בהנתן דוח A ודוח B, ניתן להפעיל את B מכל עמודה בA על ידי הפעלת Navigate to BI Content (B אגב יכול גם להיות דף דשבורד). כיוון שלרוב אני מפעיל את דוח B משורה מסויימת שאת ערכיה אני רוצה להעביר כפרמטר. לדוגמא, אם אני עומד בדוח A על שורת מכירות עגבניות בשנת 2011, ארצה להעביר לדוח B את הפרמטרים: מוצר=עגבניות AND שנה=2011.
כידוע, OBIEE עושה את זה אוטומטית. הוא לוקח את כל העמודות הנמצאות בקריטריון משמאל לעמודה עליה אני עושה תחקור ומעביר לדוח B את הרצף של Formula=value עבור כל אחת. אם בדוח B קיימת עבור אותה Formula בדיוק הכנה בדמות התנאי is prompted, הכל עובד מושלם.

איפה הבעיה? לעתים רחוקות הFormula בדוח A ובדוח B חייבת להיות שונה. אז צריך לעבוד יותר. הכרתי אפילו בחורה טובה שהתעוררה מוקדם בשבת בבוקר כדי לחשוב על הנושא. למענה ולמעני יש הסבר פשוט.
האופציות השונות  סוכמו יפה לפני כמה שנים בבלוג הזה, למשל. אבל גם שם יש פיספוס קטן, בעיני (הוא כותב URL מלא של השרת ולא מתחיל בsaw.dll בלבד, כמו שמאד מומלץ לעשות).

נתמקד באפשרות של שימוש בhref והפעלת דוח OBIEE באמצעות URL. על הפעלת דוח באמצעות URL וכמה אפשרויות חכמות יותר מהמתואר כאן, ניתן לקרוא למשל באתר של Gerard Nico.

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

'<a href=saw.dll?GO&OBIEE_URL||'>'||העמודה שרוצים להציג לצופה||'</a>'
עוד דבר לחשוב לעשות זה להמיר רווחים בסימן %20 המקובל, באמצעות
 REPLACE(THE_VALUE_PASSED, ' ', '%20')

לדוגמא: אם אני רוצה להפעיל מעמודה בדוח מסויים את הדוח בשם "Tiles Details" בנמצא בבמחיצת Visualization, ולהעביר לעמודה עם הפורמולה "Products"."Product Type" את הערך של "Products"."Product Type" בדוח הנוכחי. 
בנוסף אני מציג למשתמש משהו אחר, למשל קידומת The Product is, לפני שם קטגורית המוצרים (אחרת לא צריך את הפתרון הזה).
אכניס בפורמולה בעמודה עליה נעשה התחקור את התוכן הבא:
 '<a href=saw.dll?GO&path=/shared/Visualization/Tiles%20Details&Action=Navigate&P0=1&P1=eq&P2=%22Products%22.%22Product%20Type%22&P3='||REPLACE("Products"."Product Type", ' ', '%20')||'>'||
'the Product is - '||"Products"."Product Type"||'-xx'||'</a>'
וכמובן אזכור להגדיר את השדה בדוח כHTML ולא טקסט רגיל.

נ.ב.
1. אם מישהו מעתיק את התוכן למעלה, שימו לב שזו שורה אחת מלאה ולא כמה שורות.
2. אם לא ברור לכם מה זה כל הPx בURL...
     P0 - מספר הפרמטרים המועברים
     P1 -  התנאי בין P2 וP3.  למשל eq שבדוגמא פירושו שווה והוא הנפוץ ביותר.
     P2 - הפורמולה בדוח שבURL שמקבלת את הפרמטר.
     P3 - הערך המועבר.
רוצים יותר מפרמטר 1? תגדילו את P0 ותוסיפו עוד שלשה: P4-P6 היא הבאה.


No comments:

Post a Comment