טבלאות ומבנה המודל

נושאים

עקבו אחרינו

טבלאות וסכימת כוכב

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

למה להקדיש פרק שלם לטבלאות? הרי זה רק טבלאות.

אז זהו שלא…

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

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

ולכן אחד הדברים הכי חשובים שיש לעשות לפני שמסתערים על הטבלאות וטוענים אותם לתוך ה POWER BI, צריך לעצור שניה ולהבין איזה תוכן יש בכל טבלה, מה נשמר שם ואיך

מטרת העל שלנו – לייצר טבלאות בצורת סכימת כוכב

אז מהי סכימת כוכב? ולמה זה חשוב לייצר טבלאות בצורה כזו. נתחיל בהגדרה מהי סכימת כוכב – כמו שמייקרוסופט כתבו:

Star schema is a mature modeling approach widely adopted by relational data warehouses.

 It requires modelers to classify their model tables as either dimension or fact.

 

"סכימת כוכב הינה גישה מידולית בוגרת של טבלאות המודל והקשרים במחסן הנתונים. היא מצריכה שיוך של כל טבלה לאחד משתי הטבלאות הבאות Fact או Dimension"

כל טבלה צריכה להיות מסווגת לאחת משני הסוגים – FACT או DIMENSION ורק לאחר מכן נוכל להתוות קשרים תקינים בין הטבלאות ולהרכיב מודל כשר למהדרין.

אז בואו נפרט של על שני הסוגים השונים:

 

טבלאות מסוג FACT

אלו טבלאות שמכילות מידע המתאר פעולות תקופתיות או אירועים שמתרחשים באופן שוטף. 

כלומר אלו טבלאות שמתארות התרחשות או אירוע רגעי שקרה – כמו מכירה של מוצר (טבלת מכירות) או כניסת עובד למשרד (טבלת נוכחות עובדים).

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

הנה כמה דוגמאות של טבלות מסוג FACT:

  1. טבלת מכירות – כוללות עמודות כמו – תאריך מכירה, מספר מכירה, כמות, מחיר, קוד סוכן, קוד מוצר וכו'
  2. טבלת הזמנות מוצרים – כוללות עמודות כמו – תאריך הזמנה, מספר הזמנה, קוד מוצר, כמות
  3. טבלת נוכחות עובדים – כוללות עמודות כמו – תאריך כניסה, תאריך יציאה, קוד עובד.

 

טבלאות מסוג DIMANSION או בשמם המקוצר DIM.

אלו טבלאות תיאוריות שכל מטרתן לפרש ולהרחיב את מידע שנשמר בטבלאות ה FACT.

כלומר טבלאות אלו יכילו מידע תיאורי עם עמודות אינפורמטיביות אודות עולם התוכן שהן אוחזות.

בכל טבלת DIM תהיינה עמודת מפתח שתייצג באופן חד חד ערכי (ייחודי) את השורה – לדוגמא, בטבלת המוצרים תופיע עמודה של קוד המוצר. ובאמצעות קוד המוצר נוכל להתוות קשר לטבלת המכירות שלנו.

חשוב לציין כי כל שורה מייצגת מוצר אחד ולא ייתכן שאותו המוצר יחזור על עצמו פעמיים.

בניגוד לטבלאות מסוג FACT, טבלאות מסוג DIM ישתנו באופן פחות תדיר ולא יכללו זמן ותאריך כמו שמתרחש בטבלת ה FACT.

דוגמאות לטבלאות DIM:

  1. טבלת מוצרים – תכלול עמודות כמו – קוד מוצר, שם המוצר, צבע מוצר, מלאי נוכחי, קטגוריית מוצר, משקל וכו'
  2. טבלת עובדים – תכלול עמודות כמו – קוד עובד, שם עובד, תאריך תחילת עבודה, מחלקה, שם מנהל וכו'

במאמר מוסגר זה אציין שקיימים עוד סוגים שונים של טבלאות כמו SLOWLY CHANGING DIMANTION שמייצגת הכלאה בין שני סוגי הטבלאות הנ"ל אבל בשלב הזה אני לא אפרט על סוג זה.

סיכום ההבדלים בין שתי הטבלאות

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

מודל שבנוי כהלכה יסווג תמיד את הטבלאות שלו לאחד משני הסוגים הנ"ל ולא יערבב בינהם – כלומר יש להימנע ממבנה טבלאות שמכיל אינפורמציה שייכת לשתי סוגי הטבלאות.

במידה וקיימות טבלאות משולבות יש להפריד אותן באופו סינטטי. 

אז למה הסברתי לכם על שני סוגי הטבלאות האלו?

בנייה נכונה עם הפרדה ברורה בין טבלאות מסוג FACT וטבלאות מסוג DIM תעזור לנו להציג את המידע בפשטות והמדדים שנבנה יחשבו מהיר את התוצאה ללא בעיות ביצועים.

החלוקה לשתי סוגי הטבלאות הללו בעצם מפרידה את הנתונים לפי קטגוריות שונות ומשרתת אותנו בהמשך הדרך כאשר נצטרך לבנות את הדוחות ביעילות.