לדלג לתוכן

מילון עסקי

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

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

אוצר המילים המשותף הזה מחבר בין שפת העסק לנתונים הפיזיים. סוכן AI שיודע ש-"customer" מציין כל עמודה שנושאת מזהה לקוח לא צריך לנחש איזו מבין cust_id, customerId ו-CUSTOMER_KEY היא הנכונה. כולן ממופות לאותו מונח, והמונח נושא את ההגדרה.

כיצד מונחים נגזרים

Provisa גוזרת מונח מכל שם עמודה באופן אוטומטי, באמצעות כלל נורמליזציה דטרמיניסטי: קיפול רישיות, טוקניזציה של מפרידים ושל camelCase, הרחבת קיצורים, וקיצוץ של אסימוני proxy נגררים.

הרחבת קיצורים ממפה קיצורים נפוצים בארגונים לצורתם המלאה: cust → customer, txn → transaction, qty → quantity וכן הלאה. גם id וגם key מורחבים ל-identifier. הטבלה קבועה וזהירה: קיצורים דו-משמעיים כמו st, min ו-no נשארים כמו שהם, כדי לא לנחש לא נכון.

קיצוץ אסימוני proxy מסיר אסימון נגרר של identifier, code, index או reference. עמודה בשם cust_id אינה נוקבת בשם המזהה עצמו; היא נוקבת בשם לקוח דרך ערך חלופי. קיצוץ ה-proxy מנחית הן את cust_id והן את customerId על המונח customer. רק אסימונים נגררים מקוצצים, ולעולם לא האסימון האחרון שנותר: עמודת id חשופה מתרחבת ל- identifier ונשארת שם.

ביטול כפילויות הוא העיקר. כלל הנרמול דטרמיניסטי, ולכן cust_id, customerId ו-CUSTOMER_KEY כולם נותנים customer. כל עמודה מקבלת הפניה למונח היחיד הזה, ולאוצרות יש מקום אחד להוסיף בו את ההגדרה במקום שלושה.

ביטויים גנריים

חלק מהביטויים המנורמלים כלליים מדי כדי להיות מושג בפני עצמו. עמודה name, date או identifier לבדה מציינת תכונה של המושג של הטבלה שלה, שאינה קיימת בנפרד מהטבלה הזו. לעובדים יש שמות ולמוצרים יש שמות, אבל זה לא אותו דבר.

כשביטוי נופל בקבוצה הגנרית והקשר טבלה זמין, המונח מסויג ל- <table concept> <phrase>: employees.first_name מתנרמל ל-employee first name, ו- orders.id מתנרמל ל-order, משום שקיצוץ ה-proxy מקריס אז את הביטוי המסויג על המושג שהוא מזהה. המקרה האחרון הזה חשוב: המפתח הראשי של orders וכל מפתח זר order_id בטבלאות אחרות נוחתים כולם על order, ללא כל אצירה נוספת.

הקבוצה הגנרית מכסה שמות עצם של תכונות (name, date, status, type, amount, quantity), ביטויי מסלול ביקורת (created_at, modified_by, submitted_timestamp), וקומץ אחרים המופיעים כמעט בכל טבלה.

השם העסקי, לא השם הפיזי

מונח נגזר הולך לפי השם העסקי של העמודה: הכינוי שלה כשהממדל הגדיר כזה, ואחרת השם הפיזי שלה. כש-usr_nm מקבל את הכינוי user name, המונח הנגזר הוא user name, בעוד שהרחבה של usr_nm הייתה עלולה לתת user number.

מתן כינוי לעמודה הוא התיקון החזק יותר. כינוי מגיע לכל משטח שקורא את העמודה (SQL, GraphQL, סוכני AI, הקטלוג), כך שהמודל מתאר את עצמו נכון בכל מקום. שינוי שם המונח מתקן רשומה אחת בקטלוג ומשאיר את העמודה בשם usr_nm לקורא הבא. באנר המונח המוצע בממשק אומר זאת: קודם תנו לעמודה כינוי, ושנו את שם המונח רק כששם העמודה נכון ואוצר המילים לא.

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

שמות טבלה של נתיב גישה

חלק משמות הטבלאות מתארים נתיב גישה ולא מושג: user_by_name הוא משתמש שמגיעים אליו דרך חיפוש לפי שם, ולא סוג נפרד של ישות. כש-Provisa גוזר את מושג הטבלה כדי להבהיר ביטויים כלליים, הוא חותך את השם במילת הקישור, כך ש-user_by_name הופך ל-user ו-orders_by_customer הופך ל-order.

בלי החיתוך, המפתח החלופי של user_by_name היה מנורמל ל-user name ומתנגש עם התכונה האמיתית users.name, כך שמונח אחד היה מחזיק גם דבר וגם אחד מהשדות שלו עצמו. החיתוך חל רק על מושגי טבלאות. בשם עמודה, by הוא חלק משם העצם המורכב, ולכן pet_by_name ו-pet_name מנורמלים לאותו מונח, pet name.

מה הופך מונח לאצור

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

  • הגדרה נשמרה.
  • קשת קשר נוספה.
  • מומחה תוכן הוקצה.
  • אוצר הוציא אותו ידנית מכלל שירות.

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

סנכרון מחדש מטבלאות

בכל פעם שטבלה נשמרת או נטענת מחדש, sync_table_refs מיישב את עמודות הטבלה הזו מול ה-refs הקיימים. עמודות חדשות יוצרות-או-מקשרות מונחים; עמודות שעזבו מפילות את ה-refs שלהן; וכלל ההסרה-או-ההוצאה-משימוש מסדיר כל מונח שמאבד את ה-ref האחרון שלו.

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

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

קשרים

מונחים מתקשרים למונחים אחרים דרך קשתות מוקלדות. סוגי הקשרים הנתמכים הם:

סוג משמעות
KIND_OF מונח המקור הוא סוג של מונח היעד.
PART_OF מונח המקור הוא רכיב של מונח היעד.
SYNONYM_OF שני המונחים ניתנים להחלפה זה בזה בדומיין הזה.
RELATED_TO אסוציאציה רופפת — שום טענה חזקה יותר אינה מתאימה.
VALID_VALUE_OF המקור הוא ערך מותר של מניית או דומיין היעד.
DERIVED_FROM המקור מחושב מתוך היעד או נשאב ממנו.
REPLACES המקור מחליף את היעד שהוצא משימוש.
PREFERRED_TERM_FOR המקור הוא המונח המועדף על פני היעד שאינו מעודד.
TRANSLATION_OF המקור הוא תרגום לוקאל או שפה של היעד.
ANTONYM_OF המקור הוא ההיפך הסמנטי של היעד.

הקשרים כיווניים. ממשק המשתמש מציג הן קשתות יוצאות (המונח הזה ← מונח אחר) והן קשתות נכנסות (מונח אחר ← המונח הזה), ומתייג כל כיוון בביטוי בשפה פשוטה משלו.

הקשתות נמצאות ב-glossary_term_edges, טבלת שיוך (associative) המוצהרת כקשר junction: העמודה rel_type שלה היא המבחין (discriminator), כך שכל אחד מהטיפוסים שלמעלה הוא סוג קשר Cypher נפרד בין שני צמתי GlossaryTerm, ולא מאפיין על צומת מוחצן (reified). הטבלה מסופקת יחד עם שאר סכמת המטא-דאטה ואינה מוצגת כצומת בלקוחות גרף: היא הקשת. שום דבר בה אינו ייחודי לגלוסר: היא מוצהרת באותו אופן שבו הייתם מצהירים על junction מעל הטבלאות שלכם, והיא נקראת על ידי אותו קוד.

מונחים מופשטים

למונח מופשט אין refs לעמודות פיזיות משלו. השתמשו בכזה עבור מושג עסקי הפרוש על פני כמה מונחים קונקרטיים: מטרייה שאותה אתם מחווטים אחר כך למונחים הספציפיים שכן מחזיקים עמודות. ‏revenue, למשל, יכול להיות מופשט, עם קשתות PART_OF מ-order amount, adjustment amount ו-refund amount המצביעות אליו.

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

כלל הקבילות למשטחים צורכים

מונח שמשטח צורך רשאי להציע חייב לקיים שלושה תנאים:

  1. בשירות — לא הוצא מכלל שירות (אוצר הסיר אותו מהשירות) ולא הוצא משימוש (הוא איבד את העמודה האחרונה שלו והוחזק רק משום שמחיקתו הייתה משאירה משהו תלוי באוויר).
  2. מוגדר — הוא נושא הגדרה. מונח הנגזר משם עמודה הוא אסימון, לא משמעות. ללא הגדרה, הוא הצעה הממתינה לאוצר, לעולם לא אוצר מילים שסוכן יכול לעגן עליו שאלה.
  3. מעוגן — מחובר, דרך מונחים שבשירות, לפחות למונח אחד המחזיק ref לעמודה פיזית. המילון הוא נקודת כניסה אל הנתונים, ולכן כל שרשרת חייבת להסתיים בעמודה.

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

ייצוא מטא-דאטה

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

קשתות קשר מתפרסמות רק כששני מונחי הקצה מתפרסמים.

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

הוצאת מונח מהייצוא

חלק מהעמודות נושאות אינסטלציה ולא נתונים עסקיים: מזהי אצווה של ETL, גרסאות שורה, חותמות זמן של הזרמה. מונח הנגזר מעמודה כזו עשוי להחזיק הגדרה מדויקת לחלוטין שפשוט אינה אוצר מילים עסקי. הפקד Exclude from metadata export מונע את המונח וכל קשת קשר המסתיימת עליו מהקטלוגים ש-Provisa מפרסמת אליהם, בעוד שהעמודות עצמן עדיין מתייצאות כנכסים.

מה שקובע הוא אם העסק משתמש במילה; עד כמה ההגדרה טובה לא מכריע. למזהה אצווה של ETL יש משמעות ברורה ששייכת למילון עבור מהנדסים, אבל היא לא שייכת לקטלוג עסקי לצד customer ו-revenue.

עבודה עם המילון

פתחו Admin ← Glossary בממשק המשתמש. הפאנל השמאלי מונה כל מונח; לחצו על אחד כדי לפתוח את תצוגת הפירוט שלו. משם:

  • שינוי שם של המונח כדי לשנות את ניסוחו מבלי להזיז את עמודותיו.
  • הוספת הגדרה על ידי הקלדתה או לחיצה על כפתור טיוטת ה-AI כדי לייצר נקודת פתיחה משם המונח, מעמודותיו הפיזיות ומקשריו. הטיוטה אינה נשמרת עד שתאשרו אותה.
  • הזזת ref כדי לאחד שני מונחים: בחרו את מונח היעד מהתפריט הנפתח שליד כל ref פיזי. אם מונח המקור מאבד את ה-ref האחרון שלו, הוא מוסדר תחת כלל ההסרה-או-ההוצאה-משימוש אוטומטית.
  • הוספת קשר בין המונח הזה לאחר, ובחירת הסוג מתוך הקבוצה הסגורה. הקלידו מחדש קשת קיימת במקומה במקום למחוק ולהוסיף אותה מחדש.
  • הקצאת מומחים לפי מזהה משתמש, עם סוג של expert או author.
  • הוצאה מכלל שירות של מונח כדי להוציאו מהשירות. הוא שומר על עמודותיו ונשאר ניתן לעריכה כאן, אבל חיפוש מונחים של סוכנים וייצוא מטא-דאטה מדלגים עליו שניהם. שחזרו אותו מאוחר יותר אם המושג חוזר.
  • ייצור הגדרות בכמות כדי למלא כל הגדרה ריקה בפעולה אחת. רק הגדרות ריקות נכתבות; טקסט אנושי לעולם אינו נדרס.
  • ייצור קשרים בכמות כדי להציע קשתות מוקלדות על פני רשימת המונחים המלאה. הצעות פגומות — שמות מונחים לא מוכרים, קשתות עצמיות, סוגים בלתי מזוהים — נופלות אוטומטית.

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

ראו גם

  • ייצוא מטא-דאטה — כיצד מונחים וקשרים מתפרסמים לקטלוגי נתונים חיצוניים, כולל אילו מונחים כלל קבילות הייצוא מקבל.
  • Column-Level Lineage — סייר ה-Data Lineage וכיצד columnDependents מדווח על קישורי מילון כתלויים של עמודה פיזית.