ייבוא מטא-נתונים מ-Snowflake Horizon

כדי לפרק את סילו הנתונים ולא לעבור בין כלים, אתם יכולים להשתמש במחבר של Knowledge Catalog (לשעבר Dataplex Universal Catalog) כדי לייבא מטא-נתונים מ-Snowflake Horizon ישירות אל Google Cloud.

המחבר הזה תומך במכונות של Snowflake Horizon שמתארחות ב-Google Cloud, ב-Microsoft Azure או ב-Amazon Web Services ‏ (AWS).

בטבלה הבאה מפורטים המטא-נתונים שהמחבר של Snowflake Horizon מתעד:

קטגוריה המטא-נתונים שתועדו
טכני
  • מטא-חנות (חשבון Snowflake)
  • קטלוג (מסד נתונים)
  • סכימה
  • טבלה (כולל טבלאות זמניות, חיצוניות, דינמיות, אינטראקטיביות, היברידיות ו-Apache Iceberg) ועמודות
  • תצוגה (רגילה, מהותית ומאובטחת)
  • שלבים (פנימיים וחיצוניים), מיובאים כקבוצות קבצים
  • פונקציות בהגדרת המשתמש (UDF) ותהליכים מאוחסנים
תפעולי
  • מדדי שימוש (צפיות, קריאות וכתיבות במשך 30 ו-90 ימים; משתמשים תכופים וטבלאות שהצטרפו אליהן לעיתים קרובות במשך 30 ימים)
  • מפתחות ראשיים ומפתחות זרים
עסקי
  • תגים (תגים של אובייקטים, עמודות ורכיבים של תצוגה סמנטית)
  • איכות הנתונים (ציפיות לגבי פונקציות של מדדי נתונים, זיהוי אנומליות ותוצאות של מעקב אוטומטי אחרי איכות הנתונים)
  • יצירת פרופיל נתונים (מדידות של פונקציות של מדדי נתונים ותוצאות של סיווג נתונים)
  • צירופים וקשרים (שמסיקים מהיסטוריית השאילתות, מוצהרים בתצוגות סמנטיות ותלויות בתצוגה לטבלה)
  • הבעלים (תפקיד הבעלות), זמן היצירה וזמן השינוי האחרון
סמנטי
  • תצוגה סמנטית (טבלאות לוגיות, מאפיינים, עובדות, מדדים, קשרים, מילים נרדפות, ערכים לדוגמה והוראות מותאמות אישית)
  • הבעלים של התצוגה הסמנטית
  • שימוש בתצוגה סמנטית (צפיות וקריאות במשך 30 ו-90 ימים, משתמשים תכופים וטבלאות שמצטרפים אליהן לעיתים קרובות במשך 30 ימים)

מגבלות

למחבר Snowflake Horizon יש את המגבלות הבאות:

  • אין תמיכה בשושלת נתונים.
  • המחבר מייבא את המטא-נתונים של טבלאות Iceberg, אבל לא מקשר אותם באופן אוטומטי לטבלאות הפיזיות הבסיסיות ב-Iceberg REST Catalog ‏ (IRC).
  • כדי להשתמש בתגים, בתוצאות של בדיקת איכות הנתונים והפרופיילינג, בתוצאות הסיווג, בצירופים של היסטוריית השאילתות ובתובנות לגבי השימוש שקוראות את ACCESS_HISTORY (משתמשים תכופים וטבלאות שמצטרפים אליהן לעיתים קרובות), צריך להשתמש ב-Snowflake Enterprise Edition או בגרסה מתקדמת יותר.

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

לפני שתוכלו לייבא מטא-נתונים מ-Snowflake Horizon, תצטרכו לבצע את הפעולות הבאות:

  1. נותנים את התפקידים וההרשאות הנדרשים.
  2. מפעילים את Dataplex API ואת שירות העברת נתונים ל-BigQuery API.
  3. לעמוד בדרישות המוקדמות של Snowflake Horizon.
  4. עומדים בדרישות המוקדמות של הרשת.

תפקידים והרשאות של IAM

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

כדי לקבל את ההרשאות שדרושות להגדרת מחבר Snowflake Horizon, צריך לבקש מהאדמין להקצות לכם את התפקידים הבאים ב-IAM:

בנוסף, צריך להקצות לסוכן השירות של שירות העברת הנתונים ל-BigQuery (service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com) את שני התפקידים הבאים:

  • Dataplex Entry Group Importer (roles/dataplex.entryGroupImporter), בקבוצת הרשומות של היעד או בפרויקט שמכיל אותה. התפקיד הזה מאפשר לסוכן השירות לייבא מטא-נתונים לקבוצת הרשומות (dataplex.entryGroups.import).
  • ‫Dataplex Entry and EntryLink Owner ‏(roles/dataplex.entryOwner), בפרויקט שמכיל את קבוצת הרשומות של היעד. התפקיד הזה מאפשר לסוכן השירות לייבא מטא-נתונים וקישורים לרשומות של שימוש, עסק ואיכות נתונים. הוא כולל את ההרשאות הבאות:

    • dataplex.entryGroups.useDataProfileAspect
    • dataplex.entryGroups.useDataQualityScorecardAspect
    • dataplex.entryGroups.useManagedConnectorTypes
    • dataplex.entryGroups.useReferenceEntryLink
    • dataplex.entryGroups.useSchemaAspect
    • dataplex.entryGroups.useSchemaJoinAspect
    • dataplex.entryGroups.useSchemaJoinEntryLink
    • dataplex.entryGroups.useUsageAspect
    • dataplex.entryLinks.reference

    צריך להקצות את התפקיד הזה בפרויקט, ולא רק בקבוצת הרשומות, כי הייבוא בודק את ההרשאה dataplex.entryLinks.reference בפרויקט. אם לסוכן השירות אין את ההרשאה הזו בפרויקט, הפעלת ההעברה נכשלת ומוצגת שגיאה כמו Permission 'dataplex.entryLinks.reference' denied, ולא מיובאים מטא-נתונים.

במקום להקצות את שני התפקידים האלה, אתם יכולים להקצות את התפקיד בעלים של קבוצת רשומות ב-Dataplex (roles/dataplex.entryGroupOwner) בפרויקט שמכיל את קבוצת הרשומות של היעד. התפקיד הזה כולל את ההרשאות של שני התפקידים, והוא גם מאפשר לסוכן השירות ליצור, למחוק ולנהל את הגישה לכל קבוצות הרשומות בפרויקט.

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

הפעלת ממשקי ה-API

מפעילים את Dataplex API ואת שירות העברת נתונים ל-BigQuery API.

הפעלת ממשקי ה-API

דרישות מוקדמות ל-Snowflake Horizon

אם אתם רוצים גם להריץ שאילתות SQL או משימות Spark בקטלוג Snowflake המרוחק, קראו את המאמר הגדרת חיבור חוצה-עננים ל-Snowflake Horizon Catalog.

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

  1. יוצרים תפקיד למחבר ונותנים לו גישה אל ACCOUNT_USAGE ואל מחסן נתונים שמריץ את שאילתות לקבלת מטא נתונים:

    CREATE ROLE IF NOT EXISTS DATAPLEX_CATALOG_READER;
    GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE
      TO ROLE DATAPLEX_CATALOG_READER;
    GRANT USAGE ON WAREHOUSE WAREHOUSE_NAME
      TO ROLE DATAPLEX_CATALOG_READER;
    

    מחליפים את WAREHOUSE_NAME בשם של מחסן הנתונים ב-Snowflake שמריץ את שאילתות לקבלת מטא נתונים.

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

    CREATE USER IF NOT EXISTS USERNAME
      TYPE = SERVICE
      DEFAULT_ROLE = DATAPLEX_CATALOG_READER
      DEFAULT_WAREHOUSE = WAREHOUSE_NAME;
    GRANT ROLE DATAPLEX_CATALOG_READER TO USER USERNAME;
    

    מחליפים את USERNAME בשם של משתמש Snowflake למחבר.

  3. יוצרים זוג מפתחות RSA עם המפתח הפרטי בפורמט PKCS#8:

    openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
    openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
    

    כדי להצפין את המפתח הפרטי, מחליפים את -nocrypt ב--v2 aes-256-cbc ומזינים את ביטוי הסיסמה כשמגדירים את המחבר. חשוב לשמור על האבטחה של קובץ המפתח הפרטי (rsa_key.p8), כי צריך לספק אותו כשמגדירים את המחבר.

  4. מקצים את המפתח הציבורי למשתמש ב-Snowflake:

    ALTER USER USERNAME SET RSA_PUBLIC_KEY='PUBLIC_KEY';
    

    מחליפים את PUBLIC_KEY בתוכן של rsa_key.pub, בלי השורות -----BEGIN PUBLIC KEY----- ו------END PUBLIC KEY-----.

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

    • פרופילי נתונים ותוצאות של איכות הנתונים: מקצים את תפקיד האפליקציה SNOWFLAKE.DATA_QUALITY_MONITORING_VIEWER:

      GRANT APPLICATION ROLE SNOWFLAKE.DATA_QUALITY_MONITORING_VIEWER
        TO ROLE DATAPLEX_CATALOG_READER;
      

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

    • מפתחות ראשיים ומפתחות זרים: נותנים הרשאת USAGE למסד הנתונים ולסכימה, והרשאת SELECT או REFERENCES לטבלאות.

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

כדי למצוא את מזהה החשבון שצריך להזין כשמגדירים את המחבר, מריצים את השאילתה הבאה ב-Snowflake:

SELECT CURRENT_ORGANIZATION_NAME() || '-' || CURRENT_ACCOUNT_NAME();

דרישות מוקדמות לרשת

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

אם אתם מתחברים לסביבה מקומית או למכונה שמתארחת בענן באמצעות כתובת IP ציבורית, אתם לא צריכים חיבור לרשת.

הגדרת מחבר ל-Snowflake Horizon

מגדירים מחבר של Snowflake Horizon באמצעות מסוףGoogle Cloud או ה-API בארכיטקטורת REST.

המסוף

  1. נכנסים לדף Knowledge Catalog במסוף Google Cloud .

    מעבר אל Knowledge Catalog

  2. בתפריט הניווט, בקטע Manage, לוחצים על Connectors ואז על Add connection.

  3. ברשימה Connectors, בוחרים בכרטיס Snowflake Horizon.

  4. בקטע Data source details, מזינים את פרטי החיבור לחשבון Snowflake:

    • בשדה Network attachment, בוחרים חיבור רשת קיים או יוצרים חיבור חדש.
    • בשדה Account Identifier, מזינים את מזהה החשבון ב-Snowflake בלי .snowflakecomputing.com (לדוגמה, myorg-myaccount). אפשר גם להזין מאתר חשבון, כמו xy12345.us-east-2.aws.
    • בשדה Username, מזינים את המשתמש ב-Snowflake שהגדרתם לאימות באמצעות זוג מפתחות.
    • בשדה Private Key, מזינים את המפתח הפרטי בפורמט PKCS#8 של המשתמש, למשל התוכן של הקובץ rsa_key.p8.
    • אופציונלי: אם המפתח הפרטי מוצפן, מזינים את ביטוי הסיסמה שלו בשדה Private Key Passphrase.
    • אופציונלי: עבור Warehouse, מזינים את המחסן שמריץ את שאילתות לקבלת מטא נתונים. אם לא מציינים מחסן, המחבר משתמש במחסן שמוגדר כברירת מחדל למשתמש.
    • אופציונלי: בשדה Role, מזינים את התפקיד שבו משתמש המחבר, למשל DATAPLEX_CATALOG_READER. אם לא מציינים תפקיד, המחבר משתמש בתפקיד ברירת המחדל של המשתמש.
    • בשדה Snowflake objects to transfer, לוחצים על Browse כדי לבחור את מסדי הנתונים, הסכימות או האובייקטים הספציפיים (טבלאות, תצוגות, תצוגות סמנטיות, שלבים, פונקציות ופרוצדורות) שרוצים לייבא. אם בוחרים מסד נתונים או סכימה, כל האובייקטים שבהם מיובאים. הפונקציות והפרוצדורות מופיעות עם סוגי הארגומנטים שלהן, כמו CALC(NUMBER, VARCHAR).

      אפשר גם להזין אובייקטים באופן ידני בפורמט TYPE:ACCOUNT/DATABASE[/SCHEMA[/OBJECT]], כאשר TYPE הוא CATALOG (או DATABASE), SCHEMA, TABLE, VIEW, SEMANTIC-MODEL, FILESET, FUNCTION או PROCEDURE (לדוגמה, SCHEMA:myorg-myaccount/SALES/PUBLIC). מזינים את ACCOUNT בפורמט ORG_NAME-ACCOUNT_NAME באותיות קטנות, כפי שמוצג בעיון. השמות של מסד הנתונים, הסכימה והאובייקט הם תלויי אותיות רישיות. אין תמיכה בתבניות של שמות.

  5. בקטע הגדרות היעד:

    • לוחצים על Browse ובוחרים קבוצת רשומות קיימת ב-Knowledge Catalog כדי לאחסן את המטא-נתונים המיובאים, או לוחצים על Create new entry group.
    • בוחרים אם להגדיר הרשאות לקבוצת הרשומות עכשיו או מאוחר יותר. כדי לאפשר למשתמשים לראות את המטא-נתונים שיובאו, צריך להגדיר הרשאות בקבוצת הרשומות. אם לא נתתם את התפקיד Dataplex Entry Group Importer (roles/dataplex.entryGroupImporter) או את ההרשאה dataplex.entryGroups.import לסוכן השירות של שירות העברת הנתונים ל-BigQuery ברמת הפרויקט, תנו אותם בקבוצת הרשומות הזו. עדיין צריך להקצות את התפקיד בעלים של רשומה ו-EntryLink ב-Dataplex (roles/dataplex.entryOwner) בפרויקט, כי ההרשאה dataplex.entryLinks.reference נבדקת ברמת הפרויקט. מידע נוסף זמין במאמר תפקידים והרשאות ב-IAM.
  6. בקטע Transfer config name, בשדה השם המוצג, מזינים שם למשימת הייבוא של המטא-נתונים.

  7. בקטע Schedule options, מגדירים את התדירות של משימת ייבוא המטא-נתונים. אם בוחרים באפשרות On-demand, המשימה תפעל רק כשמפעילים אותה באופן ידני.

  8. אופציונלי: בקטע Notification options, מגדירים התראה באימייל או ב-Pub/Sub על משימות שנכשלו.

  9. אופציונלי: בקטע Advanced options, מגדירים את ההצפנה. אם בוחרים במפתח הצפנה בניהול הלקוח (CMEK), המפתח מצפין את כל הנתונים הזמניים שנוצרו לפני שהתחילו משימות הייבוא של המטא-נתונים של Knowledge Catalog. המפתח לא מצפין את המטא-נתונים בקבוצת הרשומות של Knowledge Catalog ביעד.

  10. לוחצים על Save.

REST

משתמשים ב-method‏ projects.locations.transferConfigs.create. במשאב TransferConfig, מגדירים את השדות הבאים:

  • מגדירים את השדה dataSourceId לערך "snowflake_horizon".
  • בשדה metadataDestination, ממלאים את השדה dataplexConfiguration.entryGroup בנתיב המשאב של קבוצת הרשומות ב-Knowledge Catalog: ‏projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID.
  • בשדה params, מגדירים את הפרמטרים הבאים:
    • ‫connector.accountIdentifier (חובה): מזהה החשבון ב-Snowflake בלי .snowflakecomputing.com (לדוגמה, myorg-myaccount) או מאתר חשבון (כמו xy12345.us-east-2.aws).
    • connector.authentication.username (חובה): המשתמש ב-Snowflake.
    • ‫connector.authentication.privateKey (חובה): המפתח הפרטי של המשתמש בפורמט PKCS#8 PEM.
    • ‫connector.authentication.privateKeyPassphrase (אופציונלי): ביטוי הסיסמה של המפתח הפרטי, אם המפתח מוצפן.
    • ‫connector.warehouse (אופציונלי): המחסן שמריץ את שאילתות לקבלת מטא נתונים. אם משמיטים את הפרמטר הזה, המחבר משתמש במחסן ברירת המחדל של המשתמש.
    • ‫connector.role (אופציונלי): התפקיד שבו משתמש המחבר. אם לא תציינו את הפרמטר הזה, המחבר ישתמש בתפקיד ברירת המחדל של המשתמש.
    • ‫connector.networkAttachment (אופציונלי): מחבר הרשת בפורמט projects/PROJECT_ID/regions/REGION/networkAttachments/NETWORK_ATTACHMENT_ID.
    • ‫assets (חובה): רשימת האובייקטים של Snowflake שרוצים לייבא, בפורמט TYPE:ACCOUNT/DATABASE[/SCHEMA[/OBJECT]], למשל ["SCHEMA:myorg-myaccount/SALES/PUBLIC"].
  • אופציונלי: כדי שהמפתח הפרטי לא ייכלל בהגדרות ההעברה, אפשר לאחסן אותו ב-Secret Manager:
    1. מגדירים את connector.authentication.privateKey (ואת connector.authentication.privateKeyPassphrase, אם משתמשים בו) לשם המשאב של גרסת הסוד בפורמט projects/SECRET_PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID, ומוסיפים את שמות הפרמטרים האלה לשדה paramConfig.secretManagerManagedParams.
    2. מקצים את התפקיד Secret Manager Secret Accessor (roles/secretmanager.secretAccessor) בכל סוד לסוכן השירות של שירות העברת הנתונים ל-BigQuery בפרויקט שמכיל את הגדרות ההעברה (service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com). הסודות יכולים להיות בפרויקט אחר. אם סוכן השירות לא יכול לקרוא סוד, ההרצה נכשלת לפני שהיא מתחילה ומופיעה שגיאה כמו Failed to retrieve secret ... Permission 'secretmanager.versions.access' denied. שירות העברת הנתונים ל-BigQuery קורא את הסודות בתחילת כל הרצה, כך שאם מגדירים את VERSION_ID ל-latest, המערכת משתמשת במפתח שעבר רוטציה החל מההרצה הבאה.

בדוגמה הבאה מוצג גוף בקשה של TransferConfig:

{
  "displayName": "snowflake-metadata-import",
  "dataSourceId": "snowflake_horizon",
  "schedule": "every 24 hours",
  "params": {
    "connector.accountIdentifier": "myorg-myaccount",
    "connector.authentication.username": "USERNAME",
    "connector.authentication.privateKey": "PRIVATE_KEY",
    "connector.warehouse": "WAREHOUSE_NAME",
    "connector.role": "DATAPLEX_CATALOG_READER",
    "assets": [
      "SCHEMA:myorg-myaccount/SALES/PUBLIC"
    ]
  },
  "metadataDestination": {
    "dataplexConfiguration": {
      "entryGroup": "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID"
    }
  }
}

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

מעקב אחרי משימת קישור ב-Snowflake Horizon

אפשר לעקוב אחרי משימת קישור של Snowflake Horizon באמצעות מסוףGoogle Cloud או ה-API בארכיטקטורת REST.

המסוף

  1. במסוף Google Cloud , בדף Connectors, לוחצים על השם המוצג של משרת ההעברה מ-Snowflake Horizon.
  2. בכרטיסייה היסטוריית הפעלות, לוחצים על הצגת פרטים כדי לראות את היומנים.
  3. כדי לראות את הרשומות שנוצרו, לוחצים על הכרטיסייה Details ואז על הקישור לקבוצת הרשומות Metadata destination.

REST

  • כדי להציג את ההפעלות של הגדרת העברה ואת המצב שלהן, משתמשים ב-method‏ projects.locations.transferConfigs.runs.list.
  • בכל הפעלה, המטא-נתונים שנאספו מיובאים אל Knowledge Catalog באמצעות משימת ייבוא מטא-נתונים עם המזהה dts-run-RUN_ID. כדי לראות את תוצאת הייבוא, כמו מספר הרשומות שנוצרו, מסננים את יומני המשימה ב-Logging באמצעות השאילתה הבאה:

    logName="projects/PROJECT_ID/logs/dataplex.googleapis.com%2Fmetadata_job"
    AND resource.labels.metadata_job_id="dts-run-RUN_ID"
    
  • כדי לראות את תוצאת הייבוא בלי להשתמש ב-Logging, מפעילים את ה-method‏ projects.locations.metadataJobs.get ב-projects/PROJECT_ID/locations/LOCATION/metadataJobs/dts-run-RUN_ID. בשדה importResult מוצג מספר הרשומות והקישורים לרשומות שנוצרו, עודכנו, נמחקו או לא השתנו.

חיפוש וצפייה במטא-נתונים של Snowflake Horizon

  1. נכנסים לדף Search ב-Knowledge Catalog במסוף Google Cloud .

    מעבר לחיפוש

  2. בחלונית Filters, מסננים את הנכסים של Snowflake Horizon באמצעות הקטעים Project,‏ Systems ו-Type aliases. כדי לסנן את כל המטא-נתונים של Snowflake Horizon, בקטע Systems בוחרים באפשרות Imported Context, ובסעיף המשנה Managed Connectors בוחרים באפשרות Snowflake Horizon.

  3. בשדה החיפוש, מזינים מילת מפתח או שאילתת חיפוש בשפה טבעית. לדוגמה, כדי לראות את כל הנכסים של Snowflake Horizon באמצעות חיפוש של מילות מפתח, מזינים system=SNOWFLAKE.

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

אפשר גם להשתמש ב-API של LookupContext כדי לאחזר הקשר של LLM למשאבים ספציפיים של Snowflake Horizon. מידע נוסף זמין במאמר אחזור הקשר לנכסי נתונים.

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