פונקציית XIRR לחישוב שיעור תשואה פנימי (שת"פ)

30/07/2010

IRR = Internal Rate Of Return (ובעברית- שת"פ) הוא מדד מקובל לחישוב כדאיות פרוייקט. פרוייקט כלכלי טיפוסי מורכב מהשקעות גדולות בתחילת הדרך וזרם הכנסות בעתיד, ואנחנו מחפשים את שער הריבית התיאורטי הגלום בפרוייקט; כלומר- אם הפרוייקט לא היה אלא תוכנית חסכון בה מפקידים הרבה כסף בהתחלה ונהנים מהכנסות בהמשך – מה היה שער הריבית של אותה תוכנית חסכון שאינה אלא בת דמותו של הפרוייקט הנ"ל. טכנית הכוונה לאותו שער ריבית שעבורו הענ"נ (הערך הנוכחי הנקי, NPV = Net Present Value) הוא 0. משחישבנו את השת"פ – עלינו להשוות אותו לריבית במשק: אם הוא גבוה יותר אזי ההשקעה כדאית (ביחס לאלטרנטיבה), ואם לא-...

כמה ימים יש בחודש נתון?

28/07/2010

במחשבה ראשונה- מוצאים את ההפרש בימים בין יום כלשהו באותו חודש והיום בחודש הבא. למשל- בין 28/07/2010 ל-28/08/2010 יש 31 ימים: Select DATEDIFF(D,'20100728',DATEADD(M,1,'20100728')); הבעייה היא שאם השיטה הזו תופעל על 31/08/2010 נקבל 30 ימים באוגוסט מכיוון שהמערכת תחשב את ההפרש בין 31/08/2010 ו-30/09/2010: Select DATEDIFF(D,'20100831',DATEADD(M,1,'20100831')); במחשבה שניה- נבצע את החישוב על ה-1 בחודש, כלומר- מ-28/07/2010 נפחית 27 ימים כדי להגיע ל-1 בחודש, לזה נוסיף חודש, ונמצא את ההפרש: Select DATEDIFF(D,DATEADD(D,1-DatePart(D,'20100728'),'20100728'),DateAdd(M,1,DATEADD(D,1-DatePart(D,'20100728'),'20100728'))); נכון אך מעט מסורבל: גם ארוך וגם התאריך מצוטט ארבע פעמים! במחשבה שלישית- נגיע ל-1 בחודש על ידי הוספת מספר החודשים מאז "בריאת העולם" ל-0, באופן דומה נגיע...
אין תגובות

השוואה בין SSIS ואינפורמטיקה

18/07/2010

כלי ETL (ראשי תיבות של Extract Transform Load) הפכו פופולריים מאוד בעשר השנים האחרונות, בעיקר בתחום ה-BI בכל מה שקשור להקמת Data Warehouse (להלן- DWH). למי שלא מכיר- מדובר בכלי פיתוח ויזואליים שנועדו בראש ובראשונה להעביר כמויות גדולות של נתונים מסביבה אחת לאחרת, ובאופן טבעי הם קשורים לבניית DWH שהוא בסיס נתונים המרכז נתונים ממערכות המידע השונות בארגון ומאפשר להפיק דוחות ניהוליים הפונים למקור אחד, ליצור "אמת אירגונית" אחת בשעה שהמערכות השונות אינן מסונכרנות זו עם זו. לפיכך לכלי ETL יש מספר מאפיינים: 1. אלו כלים ויזואליים בהם ניתן לראות מה...

מגדלי האנוי

15/07/2010

אתגר מגדלי האנוי שמוכר לכל מי שעסק ברקורסיה במסגרת מבוא למדעי המחשב: משחק שהומצא במערב וניתן לו שם בעל נופך מזרח אסיאתי מסתורי ולצידו אגדה על נזירים המחשבים את קיצו של העולם לאחור בעוד 64^2 שניות.. באופן מעורר חשד זה מזכיר אגדה אחרת – מופרכת לא פחות – על האיש שהמציא את משחק השחמט וביקש תמורת המצאתו גרגר חיטה כנגד המשבצת הראשונה, 2 גרגרים כנגד השניה, 4 כנגד השלישית וכך הלאה – טור הנדסי של מכפלות של 2, ובמקרה זה מספר גרגרי החיטה הוא 64^2 שזה הרבה מעבר למה שיש + מה שהיה + מה שיהיה.. ולענייננו- נתחיל עם הקוד (למי...

קיבוץ נתונים

14/07/2010

לא, לא מדובר בהתיישבות העובדת, אלא באופציות כדוגמת Group By והשימושים השונים בהן. השימוש ב-Group By אמור להיות מוכר לכל מי שמכיר SQL גם ברמה בסיסית: Use AdventureWorks; Go Select uid, type, parent_obj, sysstat, Max(crdate) Mx_crdate, Count(name) Cnt_name From sys.sysobjects --Where crdate>='20100101' Group By uid, type, parent_obj, ...

די.בי.איי עשיר די.בי.איי עני – סקירת הספר How to become an exceptional DBA

12/07/2010

הפוסט התפרסם לראשונה ב-www.SQLServer.co.il. לפני מספר שנים קראתי את הספר "אבא עשיר אבא עני" (רוברט קיוסאקי)– רב מכר גם בארה"ב בגרסתו המקורית, וגם בארץ בגרסתו העברית. הספר דומה לספרים רבים מסוג זה שפופולאריים מאוד בארה"ב- כיצד להתעשר, כיצד להיות מאושר, כיצד להצליח בחיי המשפחה, וכיצד לעשות כושר; ותמיד הדרך קלה וההצלחה בקצות האצבעות: הושט ידך וגע בה.. הספרים הללו לרוב אינם מופרכים מיסודם ואף יש בהם אמת גדולה, אלא שלרוב אותה אמת יכולה הייתה להיות מומחשת במאמר תמציתי מבלי להיעטף ביומרות פילוסופיות או להיכרך בתור ספר. כך גם הספר "אבא...
תגיות:
אין תגובות

שימוש ב- File Stream

אחת הבעיות שנתקלים אלו שרוצים לשמור בבסיס הנתונים קבצים כמו תמונות או וידאו וכו' בתוך שדות BLOB הוא שזה מנתח את קבצי הדטבייס, ומאוד לא שימושי מעשית בשל כך. ה-File Stream שהתווסף בגרסת 2008 מאפשר להוסיף קבצים כך שהם מאוחסנים כקבצים נפרדים במחיצה יעודית ואינם משפיעים על גודלו של הדטבייס. ניצור דטבייס חדש במחיצה מתאימה: Use Master Go If Exists (Select Name From sys.databases Where Name = 'FileStream') Drop Database FileStream Go xp_cmdshell 'If Exist C:\FileStream RD C:\FileStream/S/Q' Go xp_cmdshell 'MD C:\FileStream' Go Create Database FileStream On Primary(Name='FileStream', ...
אין תגובות

שליפה מטבלאות המתייחסות זו לזו

06/07/2010

ההיכרות הראשונה שלי עם עולם בסיסי הנתונים הרלציוניים הייתה לפני כחמש עשרה שנה בקורס אקסס – באחת מגרסאותיו הראשונות. אם לפני הקורס חשבתי שאקסס זה אקסל משופר, הרי לאחר השיעור הראשון בו הראו לנו איך יוצרים טבלה, מכניסים לתוכה נתונים, ממינים ומפלטרים אותה- התחלתי לחשוש שמדובר באקסל נחות ומנוון.. רק לאחר שהראו לנו איך עושים Join בין טבלאות אמרתי בליבי "אההה.." ארוך שפירושו הוא "עכשיו אני מבין..". לזכר ימי התום האלו אני אנסה לרכז בפוסט אחד את כל הדרכים לשלוף מטבלאות תוך שהן מתייחסות זו לזו. נתחיל ביצירת שתי טבלאות לצורך ההדגמות: Use tempdb; Go If Object_Id('T_Ovdim') Is Not Null Drop Table T_Ovdim Go Create Table T_Ovdim(ID Int...

פקודת Truncate Table

05/07/2010

במערכת של אוראקל נדרשתי להפעיל פרוצדורה גנרית על טבלה שבניתי (הכוונה שהפרוצדורה מקבלת את שם הטבלה כפרמטר וכך אותה פרוצדורה יכולה לטפל בכל הטבלאות), אולם היא נכשלה מכיוון שלעמודת התאריך לא נתתי את השם הסטנדרטי שהפרוצדורה אמורה למצוא אלא את השם שציין הלקוח באפיון. לשנות את שם העמודה כעת עלול להוביל לתקלות ב-ERP שמעביר אליה וממנה נתונים ואולי גם בדוחות, וכדי לחסוך מעצמי את כל כאב הראש חשבתי להתחכם, ליצור View על הטבלה שבו השמות יהיו כנדרש, ולהפעיל את הפרוצדורה עליו: ניתן לבצע פקודות Select, Delete, Update, Insert על View כאשר הוא מוגדר כ-Select על טבלה ללא סיבוכים כמו Group...

השימוש ב-Foreign Key

01/07/2010

Foreign Key נועד להגדיר קישורי 1:N (אחת לרבים) בין טבלאות. קיומו מהווה אבטחת איכות לנתונים, ובפוסט קודם ציינתי יתרון נוסף שנגזר מכך: אם נתעקש לבדוק שהנתונים בטבלאות המקושרות תקינים ומקיימים את ה-Foreign Key – המערכת לא תצטרך לבדוק ותודיע ללא בדיקה שהכל תקין. ניתן להגדיר על ה-Foreign Key גם Cascade של פעולות Update ו-Delete: 1. אם מעודכן המפתח בצד ה-1, הוא יתעדכן אוטומטית גם בצד ה-N (אחרת היינו צריכים לבטל את הרשומות בצד ה-N, לשנות בצד ה-1, וליצור מחדש בצד ה-N). 2. אם נמחקת שורה בצד ה-1, ימחקו כל השורות המקושרות אליה בצד ה-N. בנוסף יש לשים לב שהעמודה שבצד ה-1 צריכה להיות Primary...