ייצוא מטא-נתונים

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

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

היקף המשרה

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

  • ארגון: ייצוא של המטא-נתונים ששייכים לארגון.
  • Projects: מייצא את המטא-נתונים ששייכים לפרויקטים שצוינו.
  • קבוצות של רשומות: ייצוא של המטא-נתונים ששייכים לקבוצות הרשומות שצוינו.

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

VPC Service Controls

‫Knowledge Catalog משתמש ב-VPC Service Controls כדי לספק אבטחה נוספת לעבודות ייצוא של מטא-נתונים. הפרויקט שאליו שייך הג'וב קובע את גבולות הגזרה של VPC Service Controls, באופן הבא:

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

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

לפני שמייצאים מטא-נתונים, צריך להשלים את המשימות שבקטע הזה.

התפקידים הנדרשים למשתמשי קצה

כדי לקבל את ההרשאות שדרושות לניהול של משימות ייצוא מטא-נתונים, אתם צריכים לבקש מהאדמין לתת לכם את תפקידי ה-IAM הבאים:

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

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

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

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

  • ייצוא מטא-נתונים:
    • dataplex.metadataJobs.create
    • dataplex.entryGroups.export
    • dataplex.entryGroups.get
    • resourcemanager.projects.get
    • resourcemanager.projects.list
  • גישה לתוצאות המיוצאות: storage.objects.get

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

תפקידים נדרשים לחשבון השירות של Knowledge Catalog

כדי לוודא שלחשבון השירות של Knowledge Catalog יש את ההרשאות הנדרשות לגישה לקטגוריית Cloud Storage, צריך לבקש מהאדמין לתת לחשבון השירות של Knowledge Catalog את ההרשאות הבאות בקטגוריה: storage.buckets.get,‏ storage.objects.get ו-storage.objects.create.

הגדרת Google Cloud משאבים

  1. התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

    gcloud init

    אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  2. יוצרים קטגוריה של Cloud Storage כדי לאחסן את התוצאות המיוצאות.

    הקטגוריה צריכה להיות באותו המיקום ובאותו מתחם היקפי של VPC Service Controls כמו עבודת המטא-נתונים.

הפעלת משימת ייצוא של מטא-נתונים

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

ייצוא מטא-נתונים מהארגון

כדי לייצא את המטא-נתונים מהארגון, משתמשים בשיטה metadataJobs.create ומגדירים את הערך הבוליאני organizationLevel ל-true.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • JOB_PROJECT: הפרויקט Google Cloud שבו מריצים את עבודת המטא-נתונים. מזינים מספר פרויקט או מזהה פרויקט.
  • LOCATION_ID: ה Google Cloud מיקום, כמו us-central1.
  • METADATA_JOB_ID: אופציונלי. מזהה משימת המטא-נתונים.
  • BUCKET: קטגוריית Cloud Storage שאליה רוצים לייצא את המטא-נתונים.

    אפשר גם לכלול קידומת בהתאמה אישית אחרי שם הקטגוריה, בפורמט gs://BUCKET/PREFIX/. האורך המקסימלי של הקידומת המותאמת אישית הוא 128 תווים.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://dataplex.googleapis.com/v1/projects/JOB_PROJECT/locations/LOCATION_ID/metadataJobs?metadataJobId=METADATA_JOB_ID

תוכן בקשת JSON:

{
  "type": "EXPORT",
  "export_spec": {
    "output_path": "gs://BUCKET/",
    "scope": {
      "organizationLevel": true,
    },
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

התגובה מזהה פעולה ממושכת. המטא-נתונים המיוצאים נשמרים בקטגוריה של Cloud Storage.

ייצוא מטא-נתונים מפרויקטים ספציפיים

כדי לייצא מטא-נתונים מפרויקט אחד או יותר, משתמשים בשיטה metadataJobs.create ומספקים רשימה של פרויקטים.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • JOB_PROJECT: הפרויקט Google Cloud שבו מריצים את עבודת המטא-נתונים. מזינים מספר פרויקט או מזהה פרויקט.
  • LOCATION_ID: ה Google Cloud מיקום, כמו us-central1.
  • METADATA_JOB_ID: אופציונלי. מזהה משימת המטא-נתונים.
  • BUCKET: קטגוריית Cloud Storage שאליה רוצים לייצא את המטא-נתונים.

    אפשר גם לכלול קידומת בהתאמה אישית אחרי שם הקטגוריה, בפורמט gs://BUCKET/PREFIX/. האורך המקסימלי של הקידומת המותאמת אישית הוא 128 תווים.

  • METADATA_SOURCE_PROJECT: פרויקט שרוצים לייצא את המטא-נתונים שלו. מזינים מספר פרויקט או מזהה פרויקט. הפרויקט צריך להיות באותו ארגון ובאותו היקף של VPC Service Controls כמו עבודת המטא-נתונים.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://dataplex.googleapis.com/v1/projects/JOB_PROJECT/locations/LOCATION_ID/metadataJobs?metadataJobId=METADATA_JOB_ID

תוכן בקשת JSON:

{
  "type": "EXPORT",
  "export_spec": {
    "output_path": "gs://BUCKET/",
    "scope": {
      "projects": [
        "projects/METADATA_SOURCE_PROJECT",
        # Additional projects
      ],
    },
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

התגובה מזהה פעולה ממושכת. המטא-נתונים המיוצאים נשמרים בקטגוריה של Cloud Storage.

ייצוא מטא-נתונים מקבוצות ספציפיות של רשומות

כדי לייצא מטא-נתונים מקבוצות ספציפיות של רשומות, משתמשים בשיטה metadataJobs.create ומספקים רשימה של קבוצות רשומות.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • JOB_PROJECT: הפרויקט Google Cloud שבו מריצים את עבודת המטא-נתונים. מזינים מספר פרויקט או מזהה פרויקט.
  • LOCATION_ID: ה Google Cloud מיקום, כמו us-central1.
  • METADATA_JOB_ID: אופציונלי. מזהה משימת המטא-נתונים.
  • BUCKET: קטגוריית Cloud Storage שאליה רוצים לייצא את המטא-נתונים.

    אפשר גם לכלול קידומת בהתאמה אישית אחרי שם הקטגוריה, בפורמט gs://BUCKET/PREFIX/. האורך המקסימלי של הקידומת המותאמת אישית הוא 128 תווים.

  • ENTRY_GROUP: שם המשאב היחסי של קבוצת רשומות שנמצאת בהיקף של העבודה, בפורמט projects/PROJECT_ID_OR_NUMBER/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID. קבוצת הרשומות צריכה להיות באותו פרויקט כמו משימת המטא-נתונים.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://dataplex.googleapis.com/v1/projects/JOB_PROJECT/locations/LOCATION_ID/metadataJobs?metadataJobId=METADATA_JOB_ID

תוכן בקשת JSON:

{
  "type": "EXPORT",
  "export_spec": {
    "output_path": "gs://BUCKET/",
    "scope": {
      "entryGroups": [
        "ENTRY_GROUP",
        # Additional entry groups
      ],
    },
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

התגובה מזהה פעולה ממושכת. המטא-נתונים המיוצאים נשמרים בקטגוריה של Cloud Storage.

ייצוא מטא-נתונים מסוגי רשומות או מסוגי היבטים ספציפיים

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

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ENTRY_TYPE: אופציונלי. השם של המשאב היחסי של סוג רשומה שנמצא בהיקף של העבודה, בפורמט projects/PROJECT_ID_OR_NUMBER/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID.

  • ASPECT_TYPE: אופציונלי. השם של המשאב היחסי של סוג הישות שנמצא בהיקף של המשרה, בפורמט projects/PROJECT_ID_OR_NUMBER/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://dataplex.googleapis.com/v1/projects/JOB_PROJECT/locations/LOCATION_ID/metadataJobs?metadataJobId=METADATA_JOB_ID

תוכן בקשת JSON:

{
  "type": "EXPORT",
  "export_spec": {
    "output_path": "gs://BUCKET/",
    "scope": {
      "organizationLevel": true,
      "entry_types": [
        "ENTRY_TYPE",
        # Additional entry types
      ],
      "aspect_types": [
        "ASPECT_TYPE",
        # Additional aspect types
      ]
    },
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

התגובה מזהה פעולה ממושכת. המטא-נתונים המיוצאים נשמרים בקטגוריה של Cloud Storage.

איך מקבלים פרטים על עבודת מטא-נתונים

כדי לקבל מידע על משימת מטא-נתונים, כמו הסטטוס של המשימה ומספר הרשומות שיוצאו, משתמשים בשיטה metadataJobs.get.

תוצאות ייצוא המטא-נתונים

משימת ייצוא המטא-נתונים מייצאת תמונת מצב של המטא-נתונים של Knowledge Catalog במועד שבו נוצרה משימת המטא-נתונים.

ייצוא תוכן הקובץ

התוכן של קובץ הפלט הוא באותו פורמט של קובץ ייבוא המטא-נתונים שמשמש למשימות ייבוא של מטא-נתונים. אפשר להשתמש בקובץ הפלט ישירות כקלט למשימת ייבוא של מטא-נתונים.

מיקום קובץ הייצוא

ב-Knowledge Catalog, קובצי התוצאות של הייצוא נשמרים כאובייקטים בקטגוריה של Cloud Storage.

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

gs://BUCKET/PREFIX/year=YYYY/month=MM/day=DD/consumer_project=JOB_PROJECT/job=METADATA_JOB_ID/project=METADATA_SOURCE_PROJECT/entry_group=ENTRY_GROUP/FILE_NUMBER.jsonl

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

  • הנתיב שנוצר על ידי המערכת מתחיל בפורמט המחיצה הסטנדרטי של Hive לתאריך היצירה של משימת הייצוא. הפורמט הזה נתמך על ידי BigQuery. מידע נוסף זמין במאמר בנושא טעינה של נתונים שחולקו למחיצות באופן חיצוני.
  • הפרמטר consumer_project הוא הפרויקט שבו מריצים את משימת ייצוא המטא-נתונים. הפרמטר project הוא הפרויקט שמכיל את המטא-נתונים שאתם מייצאים.
  • אפשר לעשות שימוש חוזר במזהה של משימת מטא-נתונים אם המשימה הקודמת נמחקה. עם זאת, כשמוחקים עבודה, הקבצים שיוצאו על ידי העבודה הזו לא נמחקים. כלומר, אם משתמשים מחדש במזהה של משימה שנמחקה, יכול להיות שיופיעו מזהים כפולים של משימות בנתיבי הקבצים של הפלט.
  • לכל קובץ פלט יש שם שכולל מספר קובץ, שהוא מספר שלם שמתחיל ב-1.

    אם משימת ייצוא של מטא-נתונים מכילה מספר גדול של רשומות, המשימה מפצלת את התוצאות לכמה קבצים כדי להגביל את הגודל של כל קובץ פלט. מספר הערכים המקסימלי בכל קובץ פלט הוא 1,000,000.

קבצים לדוגמה של פלט

הנה דוגמאות לקובצי פלט של משימת ייצוא מטא נתונים שכללה כמה פרויקטים:

gs://export-bucket/example-folder/year=2025/month=04/day=13/consumer_project=admin-project/job=example-job/project=metadata-project-1/entrygroup=entry-group-1/1.jsonl
gs://export-bucket/example-folder/year=2025/month=04/day=13/consumer_project=admin-project/job=example-job/project=metadata-project-2/entrygroup=entry-group-1/1.jsonl
gs://export-bucket/example-folder/year=2025/month=04/day=13/consumer_project=admin-project/job=example-job/project=metadata-project-3/entrygroup=entry-group-2/1.jsonl

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

gs://export-bucket/example-folder/year=2025/month=04/day=13/consumer_project=admin-project/job=another-example-job/project=example-metadata-project/entrygroup=big-entry-group/1.jsonl
gs://export-bucket/example-folder/year=2025/month=04/day=13/consumer_project=admin-project/job=another-example-job/project=example-metadata-project/entrygroup=big-entry-group/2.jsonl

ניתוח המטא-נתונים המיוצאים ב-BigQuery

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

צריך לבצע את הפעולות הבאות:

  • יצירת טבלה חיצונית לנתונים שחולקו למחיצות ב-Hive עליך לספק את הפרטים הבאים:

    • בחירת קובץ מקטגוריה של Cloud Storage: מציינים את הנתיב לתיקיית Cloud Storage שמכילה את קובצי המטא-נתונים המיוצאים. כדי לכלול את כל הקבצים בדלי, משתמשים בתו הכללי כוכבית (*). לדוגמה, gs://export-bucket/example-folder/*.
    • פורמט קובץ: בוחרים באפשרות JSONL (פורמט JSON שמופרד בתו שורה חדשה).
    • מסמנים את תיבת הסימון חלוקה למחיצות של נתוני המקור, ובשדה בחירת קידומת URI של מקור מציינים את קידומת ה-URI של Cloud Storage לטבלה ב-BigQuery כדי להגדיר מחיצות. לדוגמה: gs://export-bucket/example-folder/.
    • מצב הסקה של מחיצות: בוחרים באפשרות הסקת סוגים באופן אוטומטי.
    • סוג הטבלה: בוחרים באפשרות טבלה חיצונית.
    • סכימה: לוחצים על המתג עריכה כטקסט, ואז מזינים את הגדרת הסכימה הבאה עבור קובצי הייצוא:

      [
        {
          "name": "entry",
          "type": "RECORD",
          "mode": "NULLABLE",
          "fields": [
            {
              "mode": "NULLABLE",
              "name": "name",
              "type": "STRING"
            },
            {
              "mode": "NULLABLE",
              "name": "entryType",
              "type": "STRING"
            },
            {
              "mode": "NULLABLE",
              "name": "createTime",
              "type": "STRING"
            },
            {
              "mode": "NULLABLE",
              "name": "updateTime",
              "type": "STRING"
            },
            {
              "mode": "NULLABLE",
              "name": "aspects",
              "type": "JSON"
            },
            {
              "mode": "NULLABLE",
              "name": "parentEntry",
              "type": "STRING"
            },
            {
              "mode": "NULLABLE",
              "name": "fullyQualifiedName",
              "type": "STRING"
            },
            {
              "mode": "NULLABLE",
              "name": "entrySource",
              "type": "RECORD",
              "fields": [
                {
                  "mode": "NULLABLE",
                  "name": "resource",
                  "type": "STRING"
                },
                {
                  "mode": "NULLABLE",
                  "name": "system",
                  "type": "STRING"
                },
                {
                  "mode": "NULLABLE",
                  "name": "platform",
                  "type": "STRING"
                },
                {
                  "mode": "NULLABLE",
                  "name": "displayName",
                  "type": "STRING"
                },
                {
                  "mode": "NULLABLE",
                  "name": "description",
                  "type": "STRING"
                },
                {
                  "mode": "NULLABLE",
                  "name": "labels",
                  "type": "JSON"
                },
                {
                  "mode": "REPEATED",
                  "name": "ancestors",
                  "type": "RECORD",
                  "fields": [
                    {
                      "mode": "NULLABLE",
                      "name": "name",
                      "type": "STRING"
                    },
                    {
                      "mode": "NULLABLE",
                      "name": "type",
                      "type": "STRING"
                    }
                  ]
                },
                {
                  "mode": "NULLABLE",
                  "name": "createTime",
                  "type": "STRING"
                },
                {
                  "mode": "NULLABLE",
                  "name": "updateTime",
                  "type": "STRING"
                },
                {
                  "mode": "NULLABLE",
                  "name": "location",
                  "type": "STRING"
                }
              ]
            }
          ]
        }
      ]
      

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

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

SELECT entry.entryType FROM `example-project.example-dataset.example-table` LIMIT 1000

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