770 likes | 1.2k Views
בינה עסקית. Business Intelligence. בינה עסקית: מה היא ?. What is “Business Intelligence”?. בינה עסקית: מה היא?.
E N D
בינה עסקית Business Intelligence
בינה עסקית: מה היא? What is “Business Intelligence”?
בינה עסקית: מה היא? בינה עסקית (באנגלית:Business intelligence,בראשי תיבות: BI)עוסקת בבניית מערכות העוזרות לארגון להפיק מידע משמעותי מבחינה עסקית מתוך מכלול הנתונים הנאספים על ידיו לצורך תמיכה בקבלת החלטות.
מרכיבים של מערכת BI • מערכת BI כוללת חמישה חלקים: • מקורות נתונים, העברת נתונים או אנליזה בזמן אמת, מחסן נתונים, מנועי אנאליזה ואפליקציות התמונה מהמאמר: http://cacm.acm.org/magazines/2011/8/114953-an-overview-of-business-intelligence-technology/fulltext
מקורות נתונים • נתונים השייכים לקבלת החלטות יכולים לנבוע מ: • בסיסי נתונים תפעוליים • הם בסיסי נתונים שמשתמשים בהם לפעולות יומיומיים של החברה • שימו לב שיכולים להיות הרבה בסיסי נתונים (של סניפים בינלאומיים, של מחלקות שונות) בעלי סכמות שונות • מקורות חיצוניים כגון: • מידע על חברות מתחרות • מן האינטרנט או מקבצים שחיברו אנשי מחקר • אירועים בשוק (כגון שינוי במכיר ניירות ערך)
העברת נתונים • העברת נתונים (בעזרת כלים בשם ETL) הנה תהליך שבה: • מפיקים את הנתונים מן המקורות הנ"ל • מכינים את הנתונים לאנליזה העתידית • מאחדים את הפורמט של כל הנתונים (אטריביוטים, טיפוסים) • שלא יהיו נתונים עם טעויות (כגון רשומות חלקיות) • שלא יהיו נתונים עבור מקרים יוצאי דופן (אבל זה יכול גם לחכות עד שלב האנליזה) • מכניסים את הנתונים למחסן הנתונים לצורך אנליזה עתידית
אנליזה בזמן אמת • לפעמים יש צורך לאנליזה של נתונים בזמן אמת. דוגמאות: • ירידה במחיר ניירות ערך (אולי צריך לקנות מהר!) • מציאת פריט פגום – אולי יש צורך להחזיר את כל המוצרים של כמה שעות אחרונות • ירידת פעילות באתר – יש לחפש סיבה • במקרים כאלה יש צורך לנתח את זרם הנתונים בזמן אמת. • זאת עושים בעזרת Complex Event Processing (עיבוד מורכב של עירוים). • מידע נוסף: • http://en.wikipedia.org/wiki/Complex_event_processing • http://esper.codehaus.org/ • http://esper.codehaus.org/tutorials/tutorial/feedmonitor_casestudy.html
מחסן הנתונים בקצרה • מחסן הנתונים – הנו אוסף נתונים בפורמט, המתאים לאנליזה בעזרת כל הכלים הללו. • בהמשך נדבר הן על הפורמט והן על הכלים
יתרונות של הפרדה בין בסיס הנתונים התפעולי ובין מחסן הנתונים • ההפרדה בין בסיס הנתונים התפעולי ובין מחסן הנתונים מאפשרת: • שתהליכי האנליזה הצורכים כמות גדולה של משאבים חישוביים, לא יאטו את הפעילויות היום-יומיות של החברה • שמירת נתונים בפורמט המיועד לקריאה מהירה לצורך אנליזה • בדרך כלל לא מוחקים ולא מעדכנים נתונים במחסן הנתונים
כלי אנליזה • קיימים מספר סוגים של כלי אנליזה: • מנוע OLAP – Online Analytical Processing • מאפשר לבצע אנליזה של הנתונים השמורים במחסן הנתונים ע"י שימוש במודל הקובייה(נלמד בהמשך) • מנוע כריית מידע • מאפשר ללמוד דברים חדשים מהמידע הקיים (נלמד בהמשך) • מנוע חיפוש (מסוג Google) • כלים לייצור דיווחים
OLAP מול OLTP • יש להבדיל בין שני כלים שונים: • OLTP – Online Transaction Processing הנו טכנולוגיה כדי להפיק מידע מבסיסי נתונים תפעוליים • דוגמה: משיכת מזומן מכספומט. כלי OLTP כוללים כלי תוכנה בכספומט וכו' עד בסיס הנתונים בשרת הבנק • רוב יישומי OLTP מסתמכים על DBMS • מנוע OLAP -- Online Analytical Processing • מבצע שאילתות מול מחסן נתונים
אפליקציות • משתמשי BI נגשים לכלים הנ"ל דרך אפליקציות: • חיפוש • ממשק למנוע חיפוש • גיליון אלקטרוני • המשך עיבוד פלט שאילתות, כריית מידע ודיווחים • לוח מחוונים • וויזואליזציה של דיווחי סיכום • שאילתות אד הוק • ממשק להגשת שאילתות ל OLAP
מה נלמד בהמשך • בהמשך ההרצאה נלמד: • אנליזת נתונים השמורים במחסן נתונים בעזרת מודל ה "קובייה" • כיצד מאורגנת מידע במחסן נתונים • שפת שאילתות MDX עבור הקובייה • תפקיד של כריית מידע ב BI
קובייה ואופרטורים עליה The CUBE and Operators on It
מושג הקובייה 1999 זמן $29,358 $0 $0 • קובייה הנה ייצוג לוגי רב ממדי של נתונים השמורים במחסן נתונים. ייצוג זה מאפשר יישום שיטות אנליטיות בעלות עוצמה • בדוגמה, הקובייה עבור מרכול היא בעלת שלושה ממדים: • לקוח, מוצרו זמן • יכולים להיות מספר רב של ממדים 1998 1997 כוהלי $245,764 $0 $0 שתייה משקה חלבי $64,487 $0 $0 מוצר אוכל אחרים ארה"ב מקסיקו קנדה לקוח
הממדים 1999 זמן $29,358 $0 $0 • כל ממד מורכב מחברי הממד • לדוגמה, בממד מוצר ישנם חברים: • שתייה, כוהלי, משקה, חלבי, אוכל ועוד • חברים בממדים יכולים להיות מאורגנים בהיררכיות • לדוגמה, החברים כוהלי, משקה וחלבי הינם בנים של החבר שתייה (מכנים לו אבא או הורה) 1998 1997 כוהלי $245,764 $0 $0 שתייה משקה חלבי $64,487 $0 $0 מוצר אוכל אחרים ארה"ב מקסיקו קנדה לקוח
המידות והעובדות 1999 זמן $29,358 $0 $0 • בתוך הבלוקים (הקוביות הקטנות) רשומות מידות • דוגמאות של מידות: רווח ממכירות, מספר המוצרים שנמכרו וכו' • כל בלוק מקבילה לרשומה של חברים – חבר אחד עבור כל ממד • הבלוק בדוגמה שכתוב עליו 29,358$ מקביל לחברים ארה"ב, שתייה, 1997 • למידות מכנים גם עובדות: • נסביר את הכינוי בעזרת הדוגמה: • העובדה היא שכל השתייה שנמכרה בארה"ב בשנת 1997 עלתה ל 29,358$ 1998 1997 כוהלי $245,764 $0 $0 שתייה משקה חלבי $64,487 $0 $0 מוצר אוכל אחרים ארה"ב מקסיקו קנדה לקוח
כמה בלוקים יש בקובייה? 1999 זמן $29,358 $0 $0 • כמה בלוקים יש בקובייה? • תלוי, כי אפשר להסתכל על כל היררכיה במפלסים שונים • נניח שבדוגמה רק ממד המוצר מאורגן בהיררכיה ורק מתחת לחבר שתייה יש בנים • אם נסתכל במפלס של שתייה, אז ישנם 3*3*3=27 בלוקים • אם נסתכל במפלס של סוגי שתייה, אזי ישנם 3*5*3=45 בלוקים 1998 1997 כוהלי $245,764 $0 $0 שתייה משקה חלבי $64,487 $0 $0 מוצר אוכל אחרים ארה"ב מקסיקו קנדה לקוח
אופרטורים על קובייה • Drill Down/Up • Slice/Dice • Pivot
Drill Down 1999 1999 $29,358 $8,452 $0 $0 $0 $0 • אופרטור Drill Down נכנס למפלס יותר מפורט בחבר מסוים של ממד מסוים של הקובייה • בדוגמה ירדנו בהיררכיה בחבר ה שתייה של ממד ה מוצר • יש לשים לב בדוגמה לתלות בין הסכומים בשתי הקוביות 1998 1998 1997 1997 $16,679 $245,764 $0 $0 $0 $0 כוהלי שתייה $4,227 $64,487 $0 $0 $0 $0 משקה אוכל חלבי אחרים $245,764 $0 $0 ארה"ב מקסיקו קנדה אוכל $64,487 $0 $0 אחרים ארה"ב קנדה מקסיקו
Drill Up 1999 1999 $29,358 $8,452 $0 $0 $0 $0 • אופרטור Drill Upהנו ההפך מ Drill Down • הוא מעלה אותנו למפלס כללי יותר • בדוגמה: עלינו בחזרה בחבר ה שתייה של ממד ה מוצר 1998 1998 1997 1997 $16,679 $245,764 $0 $0 $0 $0 כוהלי שתייה $4,227 $64,487 $0 $0 $0 $0 משקה אוכל חלבי אחרים $245,764 $0 $0 ארה"ב מקסיקו קנדה אוכל $64,487 $0 $0 אחרים ארה"ב קנדה מקסיקו
Slice/Dice 1999 $29,358 • $29,358 $0 $0 $0 $0 • אופרטור Slice/Dice פורס את הקובייה עבור חבר אחד או עבור מספר חברים בממד מסוים • בדוגמה פרסנו עבור חבר 1997 של ממד הזמן 1998 1997 1997 • $245,764 $245,764 $0 $0 $0 $0 שתייה שתייה אוכל $64,487 • $64,487 $0 $0 $0 $0 אוכל אחרים אחרים ארה"ב ארה"ב מקסיקו מקסיקו קנדה קנדה • שימו לב שבתוצאה יכולים להישאר פחות ממדים ממה שהיו בקובייה המקורית • אם נשארים פחות מ 3 ממדים, אזי האופרטור נכנה Slice ולא – Dice • בדוגמה נשארו רק שני ממדים • למעשה תמיד אומרים Slice
דוגמת Dice 1999 1998 $8,452 $29,358 $29,358 $0 $0 $0 $0 $0 $0 • בדוגמה זאת פרסנו עבור חברים 1997 ו 1998 של ממד הזמן 1998 1997 1997 $245,764 $16,679 $245,764 $0 $0 $0 $0 $0 $0 שתייה שתייה אוכל $64,487 $64,487 $4,227 $0 $0 $0 $0 $0 $0 אוכל אחרים אחרים ארה"ב ארה"ב מקסיקו מקסיקו קנדה קנדה
Pivot 1999 1999 $29,358 $0 $0 $0 $0 $0 • אופרטור Pivot מחליף ממדים • בדוגמה החלפנו ממדי המוצר והלקוח 1998 1998 1997 1997 $245,764 $0 $0 $0 $0 $0 קנדה שתייה $64,487 • $64,487 • $245,764 $0 $0 • $29,358 מקסיקו אוכל ארה"ב אחרים שתייה ארה"ב אחרים אוכל מקסיקו קנדה
ארגון מידע במחסן הנתונים Organization of Data in the Data Warehouse
שלושה סוגי OLAP • קיימים שלושה סוגי OLAP • ההבדלים מתבטאים באופן שמירת הנתונים: • ROLAP – מבוסס על מודל היחסים • MOLAP – מבוסס על מודל הקובייה • יתרון: ביצוע שאילתות באופן מהיר • חסרון: שטח דיסק מבוזבז • דוגמה: הלקוח יוסי קנה רק בשנת 1997 ורק חלב, אבל יש עבורו בלוקים בקובייה עבור כל המוצרים בכל השנים • HOLAP – חלקי יחסים וחלקי קובייה • רוב המערכות BI של היום משתמשות ב HOLAP • אנחנו נלמד רק על חלק היחסים (ROLAP)
סכמה עבור מחסן נתונים ב ROLAP • אפשר להשתמש באחד משתי הסכמות • הפשוטה שביניהם נקראת סכמת Star • העובדות שמורות בטבלת העובדות • טבלת העובדות מקושרת לטבלאות הממדים התמונה מהמאמר: http://en.wikipedia.org/wiki/Star_schema
טבלאות אינם מנורמלות! • האם שיכפול נתונים זה גורם לבעיות? • בזבוז שטח דיסק? כן! • אנומליות? לא! • תרגיל: מדוע לא? (רמז: עיין בסוף שקופית 9) • יתרון: ביצוע שאילתות על הקובייה בצורה מהירה • כי לא צריכים לצרף טבלאות • טבלאות הממדים אינם מנורמלות • אינם ב BCNF! • האם קיים שיכפול נתונים? כן!
סכמת Snowflake עבור הדוגמה • אם לא יכולים לעמוד בצריכת שטח דיסק של סכמת Star, אזי משתמשים בסכמת Snowflake • בסכמת Snowflake טבלאות הממדים מנורמלות (לא עד BCNF) להיררכיה התמונה מהמאמר: http://en.wikipedia.org/wiki/Snowflake_schema
שפת שאילתות MDX The MDX Query Language
מה זה MDX? • MDX – Multi-Dimensional eXpressions • היא שפה מיוחדת בעלת עוצמה רבה לשאילתות על הקובייה • MDX הנה בעלת דמיון עם SQL, אך קיימים הבדלים מהותיים • Microsoft חידשו את השפה והיא נהיית לסטנדרט בעולם BI • אנחנו נלמד תוכנת icCube, אפשר להוריד אותה: • http://www.iccube.com/download • יש צורך להתקין JRE 1.7 (או חדש יותר) מקודם
פסיעות ראשונות ב icCube • אחרי ההתקנה יש להריץ icCubeServer • נגשים לתוכנה על ידי ריצת icCube Web (Local) • משאירים שם המשתמש והסיסמה ריקים • יש לבחור סכמת "Sales"שהיא הקובייה המגיעה ביחד עם icCube
קובייה לדוגמה • “Sales” הנה קובייה של מכירות של תוכנת icCube • נעיין בממד Customers • מפלסים (Levels) מאורגנים בהיררכיות (Hierarchies): • מידות (Measures): • ממדים (Dimensions):
קובייה לדוגמה • ארגון חברים של ממד Customers:
קובייה לדוגמה • בדוגמאות של ביטויי MDX נשתמש בשלושה ממדים: • שימו לב שלכל ממד יכולים להיות כמה היררכיות • בקוביית מכירות יש עוד היררכיות לממד זמן • נסתפק בהיררכיות בתמונה בשביל הדוגמאות
המבנה הבסיסי של שאילתות MDX • המבנה הבסיסי של שאילתות MDX: SELECTחברים של ממדים עבור שורות ועמודות של טבלת פלט FROMקובייה WHEREפריסה • לשורות ועמודות מכנים צירים (באנגלית: axes) • SELECT מקביל ל Pivot ו Drill Down/Up • WHERE מקביל לSlice/Dice • סדר ביצוע של השאילתה הנו כמו ב SQL: • FROM, WHERE, SELECT (בסדר משמאל לימין)
השאילתה הראשונה • יש להציג סכום המכירות בקנדה בשנת 2009 • שימו לב שהצבירה (כלומר, חישוב סכום) נעשתה עבורנו! SELECT[Customers].[Canada] on Rows, [Measures].[Amount] on Columns FROM [Sales] WHERE [Time].[2009]
חברים בהיעדרות • עבור אילו מוצרים היה מחושב הרווח? • עבור החבר בהעדרות! • Default member SELECT[Customers].[Canada] on Rows, [Measures].[Amount] on Columns FROM [Sales] WHERE [Time].[2009]
סטים של חברים • יש להציג סכום ומספר המכירות בקנדה וארה"ב. יש להציג מידע רק עבור שנת 2009. • שימו לב שמנוע OLAP ידע לפרש חברים בלי שנפרש אנחנו: • [Customers].[Geography].[All Regions].[North America].[Canada] SELECT {[Canada], [United States]} on Rows, {[Measures].[Count], [Measures].[Amount]} on Columns FROM [Sales] WHERE [Time].[2009]
חישוב סטים בעזרת פונקציות • יש להציג את כל המידות עבור כל המדינות של צפון אמריקה. יש להציג מידע רק עבור שנת 2009. • Members– כל החברים של היררכיה או מפלס מסוים • Descendants – כל הצאצאים של החבר במפלס מסוים SELECT Descendants([North America],[Country]) on Rows, [Measures].members on Columns FROM [Sales] WHERE [Time].[2009]
סטים בעלי שם • לפעמים נוח לתת לסט שם. הנה השאילתה כמו בשקופית הקודמת WITH SET [Amer.Countries] AS Descendants([North America],[Country]) SELECT [Amer.Countries] on Rows, [Measures].members on Columns FROM [Sales] WHERE [Time].[2009]
פריסה מול סינון • יש להציג את כל המידות עבור מכירות במדינות של צפון אמריקה. יש להציג מידע רק עבור שנת 2009. יש להציג מידע רק עבור מדינות בעלות מכירות עולות על 13,000$ • ב MDX לא מסננים ב WHERE. שם רק פורסים את הקובייה. WITH SET [Amer.Countries] AS Descendants([North America],[Country]) SELECT Filter([Amer.Countries],[Measures].[Amount]>13000) on Rows, [Measures].members on Columns FROM [Sales] WHERE [Time].[2009]
עוד דוגמה של סינון • יש להציג את סכום המכירות (של כל השנים) עבור כל המדינה בעלת סכום המכירות בשנת 2010 שעולה על 80,000$ WITH SET [myset] AS Filter([Country].members, ([Measures].[Amount], [2010])>80000) select [myset] on rows, [Measures].[Amount] on columns from [sales] /* select order([Country].members, [measures].[amount], bdesc) on Rows, [measures].[Amount] on Columns from [sales] where [2010] */
סינון לפי שם החבר • יש להציג את כל המידות עבור המדינות של אמריקה שהאות השלישית בשמם היא “n”. יש להציג מידע רק עבור שנת 2009. • member_value – שם של חבר הנוכחי בהיררכיה • instr– איפה נמצאת מחרוזת השנייה בתוך מחרוזת הראשונה • מחזירה 0 עם לא נמצאת WITH SET [Amer.Countries] AS Descendants([North America],[Country]) SELECT Filter([Amer.Countries], instr([Geography].member_value, "n")=3) on Rows, [Measures].members on Columns FROM [Sales] WHERE [Time].[2009]
פריסה לפי רשומה של כמה חברים • יש להציג את כל המידות עבור המכירות בקנדה. יש לחשב רק מכירות של רישיונות (license) icCube בשנת 2009 • חברים ברשומות צריכים להיות מהיררכיות שונות (אפילו של אותו ממד) • חברים ברשומות צריכים להיות מהיררכיות שלא מופיעות בצירים (כלומר, שורות ועמודות) SELECT [Canada] on Rows, [Measures].members on Columns FROM [Sales] WHERE ([Time].[2009], [Product].[License])
פריסה לפי רשומה של סטים • הרשומה היא באמת רשומה של סטים! • רק שעד עכשיו התעסקנו עם סט של פריט אחד • יש להציג את כל המידות עבור המכירות בקנדה. יש לחשב רק מכירות של רישיונות (license) המוצרים בשנות 2009 ו 2010 SELECT [Canada] on Rows, [Measures].members on Columns FROM [Sales] WHERE ({[Time].[2009], [Time].[2010]}, [Product].[License])
פריסה לפי סטים של רשומות (של סטים) • יש להציג את כל המידות עבור המכירות בקנדה. יש לחשב רק מכירות של • רישיונות (license) המוצרים בשנות 2009/2010 ו • תמיכת המוצרים בשנת 2010 SELECT [Canada] on Rows, [Measures].members on Columns FROM [Sales] WHERE {({[Time].[2009], [Time].[2010]}, [Product].[License]), ([Time].[2010], [Product].[Support])}
סטים של רשומות בצירים • כל נקודה על הציר היא באמת רשומה! • הציר מוגדר כסט של רשומות • יש להציג את כל המידות עבור המכירות בקנדה בשנת 2009 ובארה"ב בשנת 2010. SELECT {([Canada],[2009]), ([United States],[2010])} on Rows, [Measures].members on Columns FROM [Sales]
סטים של רשומות בצירים • מה קרה כאן? • היררכיות של הפריטים בסט לא דומות • אבל זה בסדר: SELECT {([Canada],[2009]), ([United States],[License])} on Rows, [Measures].members on Columns FROM [Sales] SELECT {([Ottawa],[2009]), ([United States],[Feb 2010])} on Rows, [Measures].members on Columns FROM [Sales]