כדי לפרק את סילו הנתונים ולא לעבור בין כלים, אתם יכולים להשתמש במחבר של Knowledge Catalog (לשעבר Dataplex Universal Catalog) כדי לייבא מטא-נתונים מ-Snowflake Horizon ישירות אל Google Cloud.
המחבר הזה תומך במכונות של Snowflake Horizon שמתארחות ב-Google Cloud, ב-Microsoft Azure או ב-Amazon Web Services (AWS).
בטבלה הבאה מפורטים המטא-נתונים שהמחבר של Snowflake Horizon מתעד:
| קטגוריה | המטא-נתונים שתועדו |
|---|---|
| טכני |
|
| תפעולי |
|
| עסקי |
|
| סמנטי |
|
מגבלות
למחבר Snowflake Horizon יש את המגבלות הבאות:
- אין תמיכה בשושלת נתונים.
- המחבר מייבא את המטא-נתונים של טבלאות Iceberg, אבל לא מקשר אותם באופן אוטומטי לטבלאות הפיזיות הבסיסיות ב-Iceberg REST Catalog (IRC).
- כדי להשתמש בתגים, בתוצאות של בדיקת איכות הנתונים והפרופיילינג, בתוצאות הסיווג, בצירופים של היסטוריית השאילתות ובתובנות לגבי השימוש שקוראות את
ACCESS_HISTORY(משתמשים תכופים וטבלאות שמצטרפים אליהן לעיתים קרובות), צריך להשתמש ב-Snowflake Enterprise Edition או בגרסה מתקדמת יותר.
לפני שמתחילים
לפני שתוכלו לייבא מטא-נתונים מ-Snowflake Horizon, תצטרכו לבצע את הפעולות הבאות:
- נותנים את התפקידים וההרשאות הנדרשים.
- מפעילים את Dataplex API ואת שירות העברת נתונים ל-BigQuery API.
- לעמוד בדרישות המוקדמות של Snowflake Horizon.
- עומדים בדרישות המוקדמות של הרשת.
תפקידים והרשאות של IAM
כדי ליצור ולנהל משימה של מחבר Knowledge Catalog, אתם צריכים תפקידים בניהול זהויות והרשאות גישה (IAM) שמעניקים הרשאות ל-Knowledge Catalog ולשירות העברת הנתונים ל-BigQuery.
כדי לקבל את ההרשאות שדרושות להגדרת מחבר Snowflake Horizon, צריך לבקש מהאדמין להקצות לכם את התפקידים הבאים ב-IAM:
- כדי ליצור ולנהל קבוצות של רשומות:
אדמין של Dataplex Catalog
(
roles/dataplex.catalogAdmin), עריכה של Dataplex Catalog (roles/dataplex.catalogEditor) או בעלים של קבוצת רשומות ב-Dataplex (roles/dataplex.entryGroupOwner) בפרויקט. - כדי לצפות במטא-נתונים של Snowflake Horizon: התפקיד Dataplex Catalog Viewer (
roles/dataplex.catalogViewer) בפרויקט. - כדי ליצור ולנהל משימות העברה של שירות העברת הנתונים ל-BigQuery:
אדמין ב-BigQuery
(
roles/bigquery.admin) בפרויקט. - כדי לצפות ביומנים ב-Cloud Logging: התפקיד צפייה ביומנים (
roles/logging.viewer) בפרויקט.
בנוסף, צריך להקצות לסוכן השירות של שירות העברת הנתונים ל-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.useDataProfileAspectdataplex.entryGroups.useDataQualityScorecardAspectdataplex.entryGroups.useManagedConnectorTypesdataplex.entryGroups.useReferenceEntryLinkdataplex.entryGroups.useSchemaAspectdataplex.entryGroups.useSchemaJoinAspectdataplex.entryGroups.useSchemaJoinEntryLinkdataplex.entryGroups.useUsageAspectdataplex.entryLinks.reference
צריך להקצות את התפקיד הזה בפרויקט, ולא רק בקבוצת הרשומות, כי הייבוא בודק את ההרשאה
dataplex.entryLinks.referenceבפרויקט. אם לסוכן השירות אין את ההרשאה הזו בפרויקט, הפעלת ההעברה נכשלת ומוצגת שגיאה כמוPermission 'dataplex.entryLinks.reference' denied, ולא מיובאים מטא-נתונים.
במקום להקצות את שני התפקידים האלה, אתם יכולים להקצות את התפקיד בעלים של קבוצת רשומות ב-Dataplex (roles/dataplex.entryGroupOwner) בפרויקט שמכיל את קבוצת הרשומות של היעד. התפקיד הזה כולל את ההרשאות של שני התפקידים, והוא גם מאפשר לסוכן השירות ליצור, למחוק ולנהל את הגישה לכל קבוצות הרשומות בפרויקט.
במאמר ניהול הגישה תוכלו לקרוא מידע נוסף על מתן תפקידים.
הפעלת ממשקי ה-API
מפעילים את Dataplex API ואת שירות העברת נתונים ל-BigQuery API.
דרישות מוקדמות ל-Snowflake Horizon
אם אתם רוצים גם להריץ שאילתות SQL או משימות Spark בקטלוג Snowflake המרוחק, קראו את המאמר הגדרת חיבור חוצה-עננים ל-Snowflake Horizon Catalog.
המחבר נכנס ל-Snowflake כמשתמש Snowflake עם אימות של זוג מפתחות, וקורא מטא-נתונים מהסכימה SNOWFLAKE.ACCOUNT_USAGE. אין תמיכה באימות באמצעות סיסמה. אדמין ב-Snowflake, כמו משתמש עם התפקיד ACCOUNTADMIN, צריך לבצע את השלבים הבאים:
יוצרים תפקיד למחבר ונותנים לו גישה אל
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 שמריץ את שאילתות לקבלת מטא נתונים.יוצרים משתמש שירות למחבר, או משתמשים במשתמש קיים, ונותנים לו את התפקיד:
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 למחבר.יוצרים זוג מפתחות 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), כי צריך לספק אותו כשמגדירים את המחבר.מקצים את המפתח הציבורי למשתמש ב-Snowflake:
ALTER USER USERNAME SET RSA_PUBLIC_KEY='PUBLIC_KEY';מחליפים את
PUBLIC_KEYבתוכן שלrsa_key.pub, בלי השורות-----BEGIN PUBLIC KEY-----ו------END PUBLIC KEY-----.אופציונלי: כדי לייבא מטא-נתונים נוספים, צריך לתת לתפקיד של המחבר את ההרשאות הבאות:
פרופילי נתונים ותוצאות של איכות הנתונים: מקצים את תפקיד האפליקציה
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.
המסוף
נכנסים לדף Knowledge Catalog במסוף Google Cloud .
בתפריט הניווט, בקטע Manage, לוחצים על Connectors ואז על Add connection.
ברשימה Connectors, בוחרים בכרטיס Snowflake Horizon.
בקטע 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באותיות קטנות, כפי שמוצג בעיון. השמות של מסד הנתונים, הסכימה והאובייקט הם תלויי אותיות רישיות. אין תמיכה בתבניות של שמות.
בקטע הגדרות היעד:
- לוחצים על 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.
בקטע Transfer config name, בשדה השם המוצג, מזינים שם למשימת הייבוא של המטא-נתונים.
בקטע Schedule options, מגדירים את התדירות של משימת ייבוא המטא-נתונים. אם בוחרים באפשרות On-demand, המשימה תפעל רק כשמפעילים אותה באופן ידני.
אופציונלי: בקטע Notification options, מגדירים התראה באימייל או ב-Pub/Sub על משימות שנכשלו.
אופציונלי: בקטע Advanced options, מגדירים את ההצפנה. אם בוחרים במפתח הצפנה בניהול הלקוח (CMEK), המפתח מצפין את כל הנתונים הזמניים שנוצרו לפני שהתחילו משימות הייבוא של המטא-נתונים של Knowledge Catalog. המפתח לא מצפין את המטא-נתונים בקבוצת הרשומות של Knowledge Catalog ביעד.
לוחצים על 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:
- מגדירים את
connector.authentication.privateKey(ואתconnector.authentication.privateKeyPassphrase, אם משתמשים בו) לשם המשאב של גרסת הסוד בפורמטprojects/SECRET_PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID, ומוסיפים את שמות הפרמטרים האלה לשדהparamConfig.secretManagerManagedParams. - מקצים את התפקיד 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.
המסוף
- במסוף Google Cloud , בדף Connectors, לוחצים על השם המוצג של משרת ההעברה מ-Snowflake Horizon.
- בכרטיסייה היסטוריית הפעלות, לוחצים על הצגת פרטים כדי לראות את היומנים.
- כדי לראות את הרשומות שנוצרו, לוחצים על הכרטיסייה 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
נכנסים לדף Search ב-Knowledge Catalog במסוף Google Cloud .
בחלונית Filters, מסננים את הנכסים של Snowflake Horizon באמצעות הקטעים Project, Systems ו-Type aliases. כדי לסנן את כל המטא-נתונים של Snowflake Horizon, בקטע Systems בוחרים באפשרות Imported Context, ובסעיף המשנה Managed Connectors בוחרים באפשרות Snowflake Horizon.
בשדה החיפוש, מזינים מילת מפתח או שאילתת חיפוש בשפה טבעית. לדוגמה, כדי לראות את כל הנכסים של Snowflake Horizon באמצעות חיפוש של מילות מפתח, מזינים
system=SNOWFLAKE.איך מחפשים משאבים ב-Knowledge Catalog כדי לקרוא מידע נוסף על הביטויים שאפשר להשתמש בהם בשדה החיפוש, ראו תחביר חיפוש עבור Knowledge Catalog.
אפשר גם להשתמש ב-API של LookupContext כדי לאחזר הקשר של LLM למשאבים ספציפיים של Snowflake Horizon. מידע נוסף זמין במאמר אחזור הקשר לנכסי נתונים.