הצטרפו לקבוצות שלנו לקבלת עדכונים מרוכזים פעם בשבוע:

ווטסאפ:
http://wa.dwh.co.il
טלגרם:
http://telegram.dwh.co.il

צריך עזרה בלוגיקה לבניית דוח ב BOXI

More
16 years 9 hours ago #5710 by ohad23
אני צריך עזרה בבניית הדוח הבא:

קיימת טבלה המכילה את כל הכניסות והיציאות ברמת יוזר לאתר החברה
המטרה היא להציג בטבלה החל מחודש ינואר 2010 כמה משתמשים כבדים קיימים נכון לכל חודש.
כאשר משתמש כבד מוגדר כאחד שנכנס לאתר לפחות פעם אחת בחודש בשנה האחרונה
כלומר משהו כזה:
חודש ינואר - 1000 יוזרים (כאשר הבדיקה מתייחסת כל מי שיש לו 12 כניסות החל מ פברואר 2009 עד ינואר 2010)
חודש פברואר - 1100 יוזרים (כאשר הבדיקה מתייחסת כל מי שיש לו 12 כניסות החל מ מרץ 2009 עד פברואר 2010)
חודש מרץ - 1050 יוזרים (כאשר הבדיקה מתייחסת כל מי שיש לו 12 כניסות החל מ אפריל 2009 עד מרץ 2010)
וכו'
המטרה היא לבנות את הדוח ב boxi מבחינתי בכתיבת sql חופשית
אני צריך עזרה רק בלוגיקה של הדברים..איך להתחיל לבנות דבר כזה.. מה הטכניקה...מה לשלוף קודם וכו'
כמובן שאני יכול לבנות שאילתא פשוטה שתיתן לי את התוצאה עבור כל חודש בנפרד אבל אני רוצה משהו שירוץ וייתן לי טבלה אחת המציגה את כל החודשים...
אפשרי?

תודה

Please התחברות to join the conversation.

More
15 years 11 months ago #5711 by Yoav
1.אתה מחפש מי נכנס לפחות פעם בחודש בכל החודשים של השנה האחרונה או את מי שנכנס לפחות פעם בחודש באחד מחודשי השנה האחרונה ?

2.האם יש עולם רלוונטי לשאלתך העסקית ?

Best Regards

Yoav Yahav

BI & DWH & SAP Business Objects

+972-52-3562982

bi.bobjects@gmail.com
thebobaba.blogspot.com/
www.bics.co.il/193657/sapbicoeeng
www.bo.dwh.co.il

Please התחברות to join the conversation.

More
15 years 11 months ago - 15 years 11 months ago #5712 by ohad23
1. אני מחפש מי נכנס לפחות פעם אחת בכל חודש בשנה האחרונה
כלומר ספירה של החודשים של אותו הלקוח בתקופה הרלוונטית = 12
2. לא כל כל הבנתי את שאלתך השנייה.
לצורך הענייין יש לי עולם ב BO המכיל טבלה אחת המרכזת את כל הכניסות של הלקוחות לאתר האינטרנט של החברה
כלומר:
יוזר
תאריך כניסה
חודש כניסה
זמן שהייה במערכת (פר כניסה)
כתובת IP
וכו
זו דוגמא לשאילתא שתציג לי את הנתון המובקש לחודש ינואר 2010
אני כמובן יכול להריץ אותה מחדש לכל חודש בנפרד תוך שינוי טווח החודשים ב where אבל אני רוצה להימנע מזה
select
count(distinct dwh_1234.user_ID)
from
dwh_1234
where
dwh_1234.month between 20090200 and 20100100
group by
dwh_1234.user_id
having
count(distinct dwh_1234.month)=12

יוזר שאני מקבל עבורו 12 חודשים מבחינתי נכנס לפחות פעם אחת בחודש בתקופה שהגדרתי
Last edit: 15 years 11 months ago by ohad23.

Please התחברות to join the conversation.

More
15 years 11 months ago #5713 by Yoav
אם אני קורא שוב את הפוסט הראשון שלך אתה מתייחס ל-3 תקופות זמן שונות=3 שאילתות=3 משפטי SQL נפרדים,תבנה אותם ואז תחבר אותם ברמת התצוגה ע"י לינק ובאמצעות הבאת שדה מימד משותף=חודש.

Best Regards

Yoav Yahav

BI & DWH & SAP Business Objects

+972-52-3562982

bi.bobjects@gmail.com
thebobaba.blogspot.com/
www.bics.co.il/193657/sapbicoeeng
www.bo.dwh.co.il

Please התחברות to join the conversation.

More
15 years 11 months ago #5715 by ohad23
תודה. חשבתי גם על הפתרון הזה,
האמת שבמחשבה שנייה השאלה הזו מתאימה יותר לפורום SQL ולא לפורום BO (עם ה BO רציתי רק להריץ את התוכנית בממשק של הSQL החופשי)

חיפשתי רעיון ליצור משתנה שבעזרתו אוכל לחשב את התקופות בצורה אוטומטית לכל חודש מחדש במקום להוסיף SQL נפרד לכל חודש מחדש

קצת מסובך להסביר כאן בע"פ
בכל מקרה תודה

Please התחברות to join the conversation.

More
15 years 11 months ago #5716 by Yoav
את יכול להוסיף את פונקציית ה-@variable או @prompt כדי לאפשר לעצמך בחירה דינאמית של החודשים.

Best Regards

Yoav Yahav

BI & DWH & SAP Business Objects

+972-52-3562982

bi.bobjects@gmail.com
thebobaba.blogspot.com/
www.bics.co.il/193657/sapbicoeeng
www.bo.dwh.co.il

Please התחברות to join the conversation.

More
15 years 11 months ago #5719 by aviv
סע לשלום..
תניח ש Fact_Entrances זאת טבלת הכניסות שלך
ושמתי לב שיש לך שדה Month_ID אז שים לב שהוא בצורה
של 201001 לינואר 2010 201002 לפבואר 2010 201003
עד 201012 דצמבר 2010
(כבר שמעתי על מספיק שטויות ככה שזה לא כזה ברור)
שים לב שהגדרתי שהשוואה לא תהיה יותר משנה כלומר החודשים
בשנת 2011 החודשים ישוו רק מול 2010 וככה החוקיות הזאת נשמרת
במידה ואתה משתמש באורקל אז תגדיר את ה Mod
עם פונקציית Mod
במקום ה- % של sql server
* אם יש לך מימד זמן עם Month_Id אז תחליף אותו אותו בתת שאילתא איפה שה-* וככה תשפר ביצועים באופן משמעותי
(ואם אין אז הגיע הזמן..)

יכול להיות שניתן לייעל את השאילתא(לא היה לי זמן להריץ אותה או ולייעל אותה ) אבל מה שחשוב זה הרעיון

select Month_ID,count(User_ID) as No_of_Users
from
select Months.Month_ID,User_ID
from
(
*
select distinct Month_ID
from Fact_Entrances
from Month =>201001
)Months
left join
Fact_Entrances E
on(
Months.Months_ID > E.Months_ID
and
(Months.Months_ID % 100) < (E.Month_ID % 100)
and
((Months.Months_ID/100) - (E.Month_ID/100))<=1
)
where E.Month_ID > 200901
group by Months.Month_ID,User_ID
having count(distinct E.Month_ID) =12
)temp

Please התחברות to join the conversation.

More
15 years 11 months ago - 15 years 11 months ago #5722 by ohad23
שיחקת אותה בגדול! ממש יפה!
בדיוק הכיוון שחיפשתי... לקח לי קצת זמן לקלוט את הרעיון אבל אחרי שהבנתי זה פשוט אחלה!

אבל אני חושב שיש לך טעות קטנה
החיבור של טבלת הכניסות לטבלת Months צריך להיות ככה:
on
Months.Months_ID > E.Months_ID
and
((Months.Months_ID/100) - (E.Month_ID/100)) between 0 and 0.999
התנאי של ה mod מיותר
אני רוצה 12 חודשים אחורה כולל החודש הנוכחי

בכל מקרה בניתי את זה בצורה זו וזה נראה שעובד יופה ומדוייק.
רק אין לי מושג כמה זה הולך להיות כבד. עוד לא הרצתי על כל הטבלה... זה נראה כבד כי הכל מוכפל ובסוף יש עוד count distinct :dizzy:
Last edit: 15 years 11 months ago by ohad23.

Please התחברות to join the conversation.

More
15 years 11 months ago #5882 by aviv

Please התחברות to join the conversation.

Moderators: Yoav
Time to create page: 0.276 seconds