מעבר ידני למילון מונחים עסקי ב-Knowledge Catalog

במאמר הזה מוסבר איך לבצע מיגרציה מגרסת טרום-השקה (Preview) של מילון המונחים הארגוני, שתמכה במטא-נתונים של Data Catalog, לגרסה הזמינה לכלל המשתמשים (GA) של מילון המונחים הארגוני, שתומכת במטא-נתונים של Knowledge Catalog (לשעבר Dataplex Universal Catalog). תהליך המעבר כולל ייצוא של מילונים, קטגוריות, מונחים וקישורים מ-Data Catalog, ולאחר מכן ייבוא שלהם ל-Knowledge Catalog.

כדי לעבור למילון מונחים עסקי ב-Knowledge Catalog באופן ידני:

  1. ייצוא מילונים וקישורים לרשומות מ-Data Catalog.
  2. ייבוא מילוני מונחים, קטגוריות ומונחים אל Knowledge Catalog.
  3. ייבוא קישורים בין מונחים ל-Knowledge Catalog.
  4. ייבוא קישורים בין מונחים ועמודות אל Knowledge Catalog.

לפני שמתחילים

כדי להפעיל ייצוא ממילונים ב-Data Catalog, צריך להירשם באמצעות טופס ההרשמה.

מתקינים את gcloud או חבילות Python.

התפקידים הנדרשים

כדי לייצא מילון מונחים מ-Data Catalog, צריך להיות לכם תפקיד roles/datacatalog.glossaryOwner בפרויקטים שבהם מופיע מילון המונחים. ההרשאות שנדרשות לתפקיד הזה

כדי לקבל את ההרשאות שנדרשות לייבוא מילון המונחים הארגוני ל-Knowledge Catalog, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ Dataplex Administrator (roles/dataplex.admin) בפרויקטים. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

ההרשאות הנדרשות

כדי לייבא מילון המונחים הארגוני ל-Knowledge Catalog, נדרשות ההרשאות הבאות:

  • dataplex.glossaries.import במשאב מילון המונחים
  • dataplex.entryGroups.import בקבוצת הרשומות של Knowledge Catalog שצוינה בשדה entry_groups ובקבוצות הרשומות שבהן נמצאות הרשומות של Data Catalog שמקושרות למונחים במילון
  • dataplex.entryGroups.useSynonymEntryLink בקבוצת הרשומות של Knowledge Catalog שצוינה בשדה entry_groups ובקבוצות הרשומות שבהן נמצאות הרשומות של Data Catalog שמקושרות למונחים במילון
  • dataplex.entryGroups.useRelatedEntryLink בקבוצת הרשומות של Knowledge Catalog שצוינה בשדהentry_groups ובקבוצות הרשומות שבהן נמצאות הרשומות של Data Catalog שמקושרות למונחים במילון
  • dataplex.entryLinks.reference בכל הפרויקטים שצוינו בשדה referenced_entry_scopes

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

ייצוא מילונים, קטגוריות ומונחים מ-Data Catalog

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

  1. משכפלים את מאגר dataplex-labs ואז משנים את הספריות לספריית המשנה business-glossary-import:

    git clone https://github.com/GoogleCloudPlatform/dataplex-labs.git
    cd dataplex-labs
    cd dataplex-quickstart-labs/00-resources/scripts/python/business-glossary-import
    
  2. מקבלים את טוקן הגישה:

    export GCLOUD_ACCESS_TOKEN=$(gcloud auth print-access-token)
    
  3. מריצים את סקריפט הייצוא:

    python3 bg_import/business_glossary_export_v2.py \
    --project="PROJECT_ID" \
    --url="DATA_CATALOG_GLOSSARY_URL"

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט שמכיל את המילון. הפרויקט הזה משמש גם לחיוב ולמכסות.
    • DATA_CATALOG_GLOSSARY_URL: כתובת ה-URL המלאה של מילון המונחים הארגוני של Data Catalog, כפי שהיא מופיעה במסוףGoogle Cloud .

    לדוגמה: https://console.cloud.google.com/datacatalog/glossaries/projects/my-project/locations/us-central1/entryGroups/my-entry-group/glossaries/my-glossary

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

    • מילון מונחים: projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/@dataplex/entries/projects/{PROJECT_ID{"</var>"}}/locations/LOCATION_ID/glossaries/GLOSSARY_ID
    • תקופה: projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/@dataplex/entries/projects/PROJECT_ID/locations/LOCATION_ID/glossaries/GLOSSARY_ID/terms/TERM_ID
    • קטגוריה: projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/@dataplex/entries/projects/PROJECT_ID/locations/LOCATION_ID/glossaries/GLOSSARY_ID/categories/CATEGORY_ID

    הערכים GLOSSARY_ID, ‏ CATEGORY_ID, ‏ TERM_ID, ‏ PROJECT_ID ו-LOCATION_ID זהים לערכים ממילון המונחים של קטלוג הנתונים.

תוצאות

הרשימה הבאה מתארת דברים שכדאי לשים לב אליהם בתוצאות:

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

  • הקבצים המיוצאים נמצאים בתיקייה Exported_Files ב-dataplex-quickstart-labs/00-resources/scripts/python/business-glossary-import. שם הקובץ הוא glossary_GLOSSARY_ID.json.

  • פקודת הייצוא יוצרת באופן אוטומטי את המילון ב-Knowledge Catalog עם אותם GLOSSARY_ID ו-PROJECT_ID במיקום הגלובלי.

  • הסקריפט יוצר קובץ JSON שמכיל את המילים הנרדפות ואת הקישורים הרלוונטיים בין המונחים. הקבצים המיוצאים נמצאים בתיקייה Exported_Files ב-dataplex-quickstart-labs/00-resources/scripts/python/business-glossary-import. שם הקובץ הוא entrylinks_related_synonym_GLOSSARY_ID.json.

  • הקישורים המיוצאים נמצאים בתיקייה Exported_Files ב-dataplex-quickstart-labs/00-resources/scripts/python/business-glossary-import.

  • המונחים במילון המונחים יכולים להיות מקושרים להרבה רשומות בהרבה קבוצות של רשומות. כשמייצאים קישורים בין מונחים ועמודות, נוצר קובץ לכל entryGroup. הפורמט של שם הקובץ הוא: entrylinks_definition_export_GLOSSARY_ID_ENTRY_PROJECT_ID_ENTRY_LOCATION_ID_ENTRY_GROUP_ID.json.

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

ייבוא מילונים, קטגוריות ומונחים

צריך לייבא את מילוני המונחים, הקטגוריות והמונחים של Knowledge Catalog שיוצאו בשלב הקודם. בקטע הזה מוסבר איך לייבא באמצעות metadata job API.

  1. יוצרים קטגוריה של Cloud Storage ואז מעלים את הקובץ לקטגוריה.

  2. נותנים לחשבון השירות של Knowledge Catalog הרשאת קריאה לקטגוריה של Cloud Storage.

  3. מריצים משימה לייבוא מטא-נתונים כדי לייבא את המילון.

    # Set GCURL alias
    alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
    # Import CURL Command
    gcurl "https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/global/metadataJobs\?metadata_job_id=JOB_ID" -X POST -H "Content-Type: application/json" -d "$(cat<<EOF
    {
    "type":"IMPORT",
    "import_spec":{
        "log_level": "DEBUG",
        "source_storage_uri": "gs://STORAGE_BUCKET/",
        "entry_sync_mode": "FULL",
        "aspect_sync_mode": "INCREMENTAL",
        "scope": {
          "glossaries": ["projects/PROJECT_ID/locations/global/glossaries/GLOSSARY_ID"]
        }
    }
    }
    EOF
    )"

    מחליפים את מה שכתוב בשדות הבאים:

    • JOB_ID: (אופציונלי) מזהה של משימת ייבוא מטא-נתונים, שאפשר להשתמש בו כדי לעקוב אחרי סטטוס המשימה. אם לא מספקים מזהה, הפקודה gcurl יוצרת מזהה ייחודי.
    • STORAGE_BUCKET: ה-URI של ה-bucket או התיקייה ב-Cloud Storage שמכילים את קובץ המילון המונחים המיוצא.
    • PROJECT_ID: מספר הפרויקט שמכיל את המילון.
  4. אופציונלי: כדי לעקוב אחרי הסטטוס של משימת ייבוא המטא-נתונים, משתמשים בשיטת metadataJobs.get:

    gcurl -X GET https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/global/metadataJobs/JOB_ID

    אם יתקבלו שגיאות בעבודת הייבוא של המטא-נתונים, הן יופיעו ביומנים.

ייבוא קישורים בין מונחים ל-Knowledge Catalog

צריך לייבא את הקישורים בין המונחים שיוצאו בשלב הקודם. בקטע הזה מוסבר איך לייבא באמצעות metadata job API.

  1. יוצרים קטגוריה חדשה ב-Cloud Storage, ואז מעלים אליה את קובץ הקישורים של הרשומות שייצאתם בשלב הקודם.

  2. נותנים לחשבון השירות של Knowledge Catalog הרשאת קריאה לקטגוריה של Cloud Storage.

  3. מריצים משימת ייבוא של מטא-נתונים כדי לייבא את הקישורים לרשומות:

    # Import CURL Command
    gcurl "https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/global/metadataJobs?metadata_job_id=JOB_ID" -X POST -H "Content-Type: application/json" -d "$(cat<<EOF
    {
    "type": "IMPORT",
    "import_spec": {
      "log_level": "DEBUG",
      "source_storage_uri": "gs://STORAGE_BUCKET/",
      "entry_sync_mode": "FULL",
      "aspect_sync_mode": "INCREMENTAL",
      "scope": {
        "entry_groups": ["projects/GLOSSARY_PROJECT_ID/locations/global/entryGroups/@dataplex"],
        "entry_link_types": [
          "projects/dataplex-types/locations/global/entryLinkTypes/synonym",
          "projects/dataplex-types/locations/global/entryLinkTypes/related"
        ],
        "referenced_entry_scopes": ["projects/GLOSSARY_PROJECT_ID","projects/LINKED_GLOSSARY_PROJECT_ID_1","projects/LINKED_GLOSSARY_PROJECT_ID_2"]
      }
    }
    }
    EOF
    )"

    מחליפים את מה שכתוב בשדות הבאים:

    • GLOSSARY_PROJECT_ID: המזהה של הפרויקט שמכיל את המילון
    • אופציונלי: LINKED_GLOSSARY_PROJECT_ID_1: אם מונחים מקושרים בין מילונים בפרויקטים שונים, צריך לציין את מזהה הפרויקט.
    • אופציונלי: LINKED_GLOSSARY_PROJECT_ID_2: אם מונחים מקושרים בין מילונים בפרויקטים שונים, צריך לציין את מזהה הפרויקט.

    שימו לב לנקודות הבאות:

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

      • מילים נרדפות: projects/dataplex-types/locations/global/entryLinkTypes/synonym
      • מונחים קשורים: projects/dataplex-types/locations/global/entryLinkTypes/related
    • אובייקט referenced_entry_scopes כולל את מזהי הפרויקט של קישורי הערכים שמקשרים בין מונחים ממילונים שונים.

ייבוא קישורים בין מונחים ועמודות

צריך לייבא קישורים בין מונחים ועמודות שיוצאו בשלב הקודם. בקטע הזה מוסבר איך לייבא באמצעות metadata job API.

  1. מעלים כל קובץ שיוצא בשלב הקודם לקטגוריה של Cloud Storage.

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

gcurl "https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/ENTRY_GROUP_LOCATION_ID/metadataJobs?metadata_job_id=JOB_ID" -X POST -H "Content-Type: application/json" -d "$(cat<<EOF
{
"type": "IMPORT",
"import_spec": {
    "log_level": "DEBUG",
    "source_storage_uri": "gs://STORAGE_BUCKET/",
    "entry_sync_mode": "FULL",
    "aspect_sync_mode": "INCREMENTAL",
    "scope": {
        "entry_groups": ["projects/ENTRY_GROUP_PROJECT_ID/locations/ENTRY_GROUP_LOCATION_ID/entryGroups/ENTRY_GROUP_ID"],
        "entry_link_types": ["projects/dataplex-types/locations/global/entryLinkTypes/definition"],
        "referenced_entry_scopes": ["projects/ENTRY_GROUP_PROJECT_ID", "projects/GLOSSARY_PROJECT_ID"]
    }
}
}
EOF
)"

המאמרים הבאים