Showing posts with label Auditor. Show all posts
Showing posts with label Auditor. Show all posts

Monday, October 10, 2011

Impact Analysis in Auditor ?

Apparently you can get from the Auditor some Meta data information.

There are few drawbacks for this deal that makes the whole approach limited but for specific tests, general estimations and searches it can be most efficient.

First, what are the drawbacks?

1. The SQL data is documented but only for reports that have been edited through the query panel

if we are relating to Deski only then you can use the Rubik's cube as well.

therfore the result you will get won't be a full one.


Imagine we wouldn't have this drawback; we could make a full impact analysis on the reports.

2. This is more a basic line of the Auditor capabilities:

Auditor is only documenting live reports that have been activated during the audit, 'sleepy' reports, quarterly reports and reports that are used for single time purpose will not appear in the results, as we said it is a build in feature.

The data curve is simple:

The more you use Auditor and the more reports are being edited the more data you will get...

What reports can you write?

1. Reports Impact analysis:

This report can show you the report name, it's SQL ,it's owner and location in the repository.

By using the 'LIKE' operator we can make a search on the SQL field and ask questions like:

Which report is using a specific table, join, alias, SQL function, select clause, where clause...

2. Report select object:

This report will show you the result objects of the report.

You can ask questions like:

Are there objects that appear in different universes?

If I am about to change an object, which reports will be effected?

you have located an error in a calculated object, you want to

Locate the reports and their users in order to alert the users about this...

You can also write a complementary SDK script that will just perform the 'edit' function in all the reports in the repository,

By doing that you will achieve a much higher result of impact analysis and of course, if your company or organization can't afford a Third party tool, then script can do the job.

There are other ways how to achieve Impact analysis without buying any tools,on that i will discuss in a separate post.

Tuesday, July 5, 2011

Who moved my universe ?

One of the most unpleasant symptoms that can happen to a busy BI team are universe overrides by different designers.In general , universe overrides shouldn't happen and by determining simple working processes, keeping the team synchronized and updated and making sure that the universe life cycle is secured we should get a healthy environment . But what happens when someone exports the universe to production against the regulation?

As the team manger, finding out who exported the universe last can help you improve the change management and simply know who was the last person that updated the universe which can be a very important information. This information can be pulled out from the Activity universe and by crossing this information with the CMC, you can know for sure.

The following query is based on the Activity universe (Oracle based) and will pull out all the changes that were made in a particular universe in a specific date.  

Please note:   The changes are not necessarily describing export actions of the universe and therefore i recommend to Identify the last record of the export by looking in the CMC, under universes, you can find a column next to The name of the universe that shows the last update date, this date will also appear in the report and by crossing these records you will get the correct answer to "who exported the universe last?"  

Here is the query script:

 Table__37.DETAIL_TEXT,   AUDIT_EVENT.User_Name, AUDIT_EVENT.Start_Timestamp +( (3/24) )FROMAUDIT_EVENT,( SELECTAUDIT_DETAIL.Detail_Text,AUDIT_EVENT.Event_ID FROMAUDIT_DETAIL,AUDIT_EVENTWHEREAUDIT_DETAIL.Event_ID=AUDIT_EVENT.Event_ID AND AUDIT_EVENT.Event_Type_ID = 65544) Table__37WHERE( Table__37.EVENT_ID=AUDIT_EVENT.Event_ID )AND (( ( Table__37.DETAIL_TEXT ) LIKE '%' @Variable('enter teh universe name or part of the universe name ') '%' )AND Table__37.DETAIL_TEXT NOT LIKE '%Everyone%'AND Table__37.DETAIL_TEXT NOT LIKE '%/%'AND ( ( trunc(AUDIT_EVENT.Start_Timestamp) ) BETWEEN @Prompt('from action date','A','Action Time\Action Date',mono,free)AND @Prompt(' till action date','A','Action Time\Action Date',mono,free) ))

Thursday, November 19, 2009

עוד קצת על Auditor...

אפשר להגיד שה"חסרון" הגדול של ה- Auditor הוא בכך שהוא מתעד אך ורק פעילות במערכת.
נשמע ברור אך המשמעות היא שדוחות "רדומים",כאלו שנכתבו בתקופתם למען מטרה רגעית,או דוחות תקופתיים שנותרו קפואים לא מתועדים מאחר ולא מתבצעת בהם פעילות,כך שאם אתם מעוניינים בסקירת מערכות מלאה(סה"כ דוחות פעילים ולא פעילים למשל) לא תוכלו להשיג את המידע הזה אלא אם כן תשתמשו ב - Query builder המעצבן,בסקריפט שתבנו,
בבדיקה רוחבית ב-CMC או שתשתמשו במוצר משלים נוסף,ה-Meta Data Manager המתעד את כל תכולת ה- Repositoty באשר היא ומכאן אפשר כבר להצליב מידע עם נתוני ה- Auditor ולגלות מתוך סה"כ הדוחות שיש בידי כמה באמת פעילים וכמה הם רק חלק ממאגר בדוחות שנוצר...

Saturday, November 7, 2009

רשמים מעבודה עם ה- Auditor

בזמן האחרון הזדמן לי לבצע מספר פרויקטים עם רכיב ה- Auditor והנה כמה מסקנות  :

1. הביצועים בעת הרצת דוחות על בסיס הנתונים של ה- Auditor עשויים להיות מחרידים ואף לייצר Deadlock בעת גישה לטבלאות שעסוקות בלקבל נתונים מה- Repository,ההמלצה שלי היא כמו בכל בסיס נתונים תפעולי ועל זה יושב ה- Auditor בסופו של דבר לייצר Data Mart קטן שיעביר את טבלאות ה- Auditor לסביבה יומית ולשם מומלץ
לטעון את טבלאות ה- View לטבלאות רגילות,לאנדקס ולפרטש את טבלאות ה- AUDIT_EVENT וה- AUDIT_DETAIL כדי לקבל ביצועים טובים , הנתונים הרי לא חייבים להיות Online.

2. מלבד סט הדוחות הבסיסי שה- Auditor מספק ניתן ליצור דוחות מעניינים כמו:
איזה משתמש לא פעיל מעל X זמן,איזה דוחות לא הורצו מעל –X זמן,כמה דוחות כפולים יש ב- Repository,איזה תקלות מכאניות (גישה ל-DB,הרשאה לא מתאימה,Login שגוי) נגרמות למשתמשים,מתי פעם אחרונה נכנס כל משתמש למערכת,מה אחוז השימוש במערכת.

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

4. נתון מעניין שגיליתי:ניתן לאתר דוחות כבדים למערכת שבד"כ מעידים גם על בנייה לא נכונה.

המשוואה אומרת שבערך 100MG =  חמש מליון רשומות,דוחות מעין אלו הם דוחות מהגיהינום שמעידים על צבירה אדירה של נתונים ושימוש לא נכון במחולל הדוחות,דוח "דוחות כבדים" סייע לי לאתר כמה "פושעי דוחות" שלא בנו דוחות כיאות והתייחסו למערכת ככלי לצבירת נתונים למקרה שיום הדין יגיע,הכי חשוב שה-DB יהיה אצלם....
מיותר לציין אך מצאתי דוחות ששוקלים מעל 700MG....את החשבון תעשו לבד...
מעבר לכך אם נתווכח האם הדוח אכן צריך להגיע למימדים אלו (המשתמש רוצה "להקפיא" את דוח הכנסות 2008)
ניקוי/איפוס הדוחות הנ"ל תיטיב עם ה- Repository מאחר והיא תצמצם את גודלו ואת העובדה שבעת שמושכים דוח גדול כזה נוצר כאמור עומס על המערכת.

5. נתון מעניין נוסף שמצאתי היה האפשרות לקבל חיווי על ה-SQL של הדוח מה שטורם רבות כמובן לניטור הדוח,הבעיה הגדולה שמצאתי בנתון זה שרק דוחות שבוצע להם Edit  ,ה-SQL שלהם מתועד.
ניתן בהחלט להשתמש בכלי אוטומטי או לכתוב סקריפט שיפתח את הדוחות וישלים את המשימה
אבל זה עשוי להיות מורכב ולא יציב (פתיחה של אלפי דוחות שחלקם כבדים,על חלקם יש הרשאות,Table Mapping ועוד)
ופה כבר עשוי להיכנס עוד כלי למשימה ה-MDM : Meta Data Manager שיכול להציג גם את ה-SQL של כל דוח לפי עולם.

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

7. מינוס נוסף הוא שתאריך הראשי המתעד הוא AUDIT_EVENT.Start_Timestamp והוא קיים ברמת שעה ודקה,אם יש לכם Prompts עם תאריכים (בלי LOV כמובן!) המשתמשים יצטרכו להכניס תאריך בפורמט של שעה ודקה – מומלץ לבצע Trunc על התאריך או להשתמש בשדה ה. Audit_Event.Start_date

8. לא שצריך כלי ניטור בשביל זה אבל : מ-8 עד 10 בלגן של דוחות משתמשים והרצות,ב-12 הכול נרגע ואחרי סעודת הצהרים מי שחוזר לעבוד עם דוחות הוא כנראה באמת משתמש רציני....

9.אם אתם מעוניינים לתחקר את כל הדוחות,לצפות ב-SQL שלהם ולראות דוחות שגדולים מ-X מגה תצטרכו לייצר Aliases או לשטח את טבלת ה-Audit_Detail מאחר והיא מחזיקה את הערכים הנ"ל באותה עמודה בטבלה.

10.מומלץ לטעון את ה-LOV של שדות ה-DETAIL_TYPE.Detail_Type_Description
וה-DETAIL_TYPE.Detail_Type_Description לטבלאות Dummy שטוחות ואז לבצע Nested LOV בינהם כך שתוכלו לבחור בסוג פעולה Universe Name ותחתיו לבחור את שם העולם הספציפי.