שימוש בתבניות של שאילתות
תבניות השאילתות של חדר נקי לנתונים ב-BigQuery מאפשרות להגיע לתובנות מהר יותר, ומספקות שכבות נוספות של אבטחה ובקרה כדי למזער את החששות לגבי זליגת נתונים. הגדרת שאילתות מראש והגבלת השאילתות שאפשר להריץ בחדרים נקיים לנתונים מאפשרת לכם:
עזרה במניעת דליפה של מידע אישי רגיש. כשמנויי חדר נקי לנתונים מריצים שאילתות בחדר נקי, גמישות רבה יותר בחיפוש יכולה להגדיל את הסיכון לחשיפה מקרית או מכוונת של מידע רגיש לבעלי הנתונים.
לפשט את תהליך ההצטרפות וההטמעה למשתמשים עם פחות ידע טכני. ספקי נתונים רבים מצפים שמנויי חדר נקי לנתונים יהיו בעלי מיומנויות טכניות פחותות, במיוחד בכל הנוגע לכתיבת שאילתות SQL שמתמקדות בפרטיות ולהקצאת מכסות פרטיות.
הבטחת תוצאות ניתוח עקביות למנויים של חדר נקי לנתונים. אם לא שולטים בשאילתות שמופעלות בחדר נקי לנתונים, קשה יותר לאכוף כללים ספציפיים לניתוח נתונים ולאמת את התאימות לתקנות בנושא פרטיות.
תבניות של שאילתות מאפשרות לבעלי נתונים ולמשתמשים עם הרשאת גישה ליצור שאילתות מוגדרות מראש ומאושרות, שמותאמות לתרחישי השימוש בחדר הנקי לנתונים. הם יכולים גם לפרסם את השאילתות האלה כדי שהמנויים יוכלו להשתמש בהן. שאילתות מוגדרות מראש משתמשות בפונקציות שמחזירות טבלה (TVF) ב-BigQuery כדי להעביר טבלה שלמה או שדות ספציפיים כפרמטרים של קלט ולהחזיר טבלה כפלט.
מגבלות
- תבניות של שאילתות תומכות רק בשני הפניות לנתונים לכל היותר – כלומר, הנתונים שמשמשים להגדרת השאילתה של TVF והקלט של פרמטר הנתונים שה-TVF מקבל.
- אפשר להפנות לכמה טבלאות או תצוגות בהגדרת השאילתה של TVF, אבל כולן צריכות להיות שייכות לאותו בעל נתונים או לאותו צד.
- פונקציות TVF של תבניות שאילתה תומכות רק בסוגים הקבועים
TABLEו-VIEW. - הגדרות של תבניות שאילתות כפופות לאותן מגבלות כמו TVF.
לפני שמתחילים
כדי להפעיל את Analytics Hub API בפרויקט ב- Google Cloud :
המסוף
עוברים לדף Analytics Hub API.
בסרגל הכלים של המסוף Google Cloud , בוחרים את הפרויקט.
אם ה-API עדיין לא מופעל, לוחצים על הפעלה.
BQ
מריצים את הפקודה gcloud services enable:
gcloud services enable analyticshub.googleapis.com
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לביצוע המשימות שמתוארות במאמרי עזרה הזה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
-
כדי ליצור או למחוק TVF בחדר נקי לנתונים:
-
Analytics Hub Publisher (
roles/analyticshub.publisher) on the project -
Analytics Hub Subscriber (
roles/analyticshub.subscriber) on the project
-
Analytics Hub Publisher (
-
נותנים הרשאה ל-TVF:
BigQuery Data Owner (
roles/bigquery.dataOwner) on the project -
הוספה, עדכון או מחיקה של רשימת TVF בחדר נקי לנתונים:
-
Analytics Hub Publisher (
roles/analyticshub.publisher) on the project -
Analytics Hub Subscriber (
roles/analyticshub.subscriber) on the project
-
Analytics Hub Publisher (
-
יוצרים תבנית של שאילתה:
-
Analytics Hub Publisher (
roles/analyticshub.publisher) on the project -
Analytics Hub Subscriber (
roles/analyticshub.subscriber) on the project
-
Analytics Hub Publisher (
-
אישור תבנית של שאילתה:
-
Analytics Hub Publisher (
roles/analyticshub.publisher) on the project -
BigQuery Data Owner (
roles/bigquery.dataOwner) בפרויקט
-
Analytics Hub Publisher (
-
הרשמה לחדר נקי לנתונים עם תבניות לשאילתות:
-
Analytics Hub Subscriber (
roles/analyticshub.subscriber) on the project -
בעלים של מינוי ל-Analytics Hub (
roles/analyticshub.subscriptionOwner) בפרויקט שבו רוצים להירשם לחדר נקי לנתונים
-
Analytics Hub Subscriber (
-
הפעלת השאילתות שמוגדרות בתבניות של שאילתות:
-
BigQuery Data Viewer (
roles/bigquery.dataViewer) בפרויקט -
BigQuery User (
roles/bigquery.user) בפרויקט
-
BigQuery Data Viewer (
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות לביצוע המשימות שמתוארות במסמך הזה. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי לבצע את המשימות שמתוארות במסמך הזה, צריך את ההרשאות הבאות:
-
יצירה או מחיקה של TVF בחדר נקי לנתונים:
-
bigquery.routines.createבפרויקט -
bigquery.routines.updateבפרויקט -
bigquery.routines.deleteבפרויקט
-
-
מתן הרשאה ל-TVF:
bigquery.datasets.updateבמערכי הנתונים שהשגרה ניגשת אליהם -
יוצרים תבנית של שאילתה:
-
analyticshub.listings.subscribeבפרויקט -
analyticshub.queryTemplates.createבפרויקט
-
-
אישור תבנית של שאילתה:
-
bigquery.routines.createבפרויקט -
bigquery.datasets.updateבמערכי הנתונים שהתרחיש ניגש אליהם -
analyticshub.listings.createבפרויקט -
analyticshub.queryTemplates.approveבפרויקט
-
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
הוספה של פונקציית TVF קיימת לחדר נקי לנתונים
אפשר להוסיף TVF קיים לחדר נקי לנתונים באמצעות Analytics Hub API.
משתמשים בשיטה projects.locations.dataExchanges.listings.create.
בדוגמה הבאה מוצג איך להפעיל את השיטה projects.locations.dataExchanges.listings.create באמצעות הפקודה curl:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H 'x-goog-user-project:DCR_PROJECT_ID' -X POST https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/CLEAN_ROOM_ID/listings?listingId=LISTING_ID -d '{"bigqueryDataset":{"dataset":"projects/PROJECT_ID/datasets/DATASET_ID","selectedResources":[{"routine":"projects/PROJECT_ID/datasets/DATASET_ID/tables/ROUTINE_ID"}],},"displayName":LISTING_NAME"}'
מחליפים את מה שכתוב בשדות הבאים:
-
DCR_PROJECT_ID: מזהה הפרויקט שבו נוצר חדר נקי לנתונים. -
PROJECT_ID: מזהה הפרויקט שבו נכלל מערך הנתונים של המקור. -
DATASET_ID: המזהה של מערך הנתונים של המקור. LOCATION: המיקום של החדר הנקי לנתונים.-
CLEAN_ROOM_ID: המזהה של החדר הנקי לנתונים. -
LISTING_ID: מזהה כרטיס המוצר. -
LISTING_NAME: שם כרטיס המוצר. -
ROUTINE_ID: מזהה התרחיש.
תפקידים בתבניות של שאילתות
יש שלושה תפקידים עיקריים לשימוש בתבניות של שאילתות בחדר נקי לנתונים. לכל תפקיד יש תהליכי עבודה ספציפיים, שמתוארים בהמשך המאמר.
יוצר התבנית: משתמש שמגדיר את השאילתות שיבוצעו בחדר הנקי. התפקיד הזה מקביל לכל אחד מהתפקידים הבאים ב-IAM: Analytics Hub Admin, Analytics Hub Publisher, או Analytics Hub Listing Admin. מידע נוסף זמין במאמר בנושא תהליכי עבודה של יוצרי תבניות.
מאשר התבנית: הבעלים של הנתונים שצריך לאשר את ההפניות של תבנית השאילתה לפני שהתבנית זמינה לשימוש. התפקיד הזה מקביל לכל אחד מתפקידי ה-IAM הבאים: Analytics Hub Admin, Analytics Hub Publisher או Analytics Hub Listing Admin. מידע נוסף זמין במאמר בנושא תהליכי עבודה לאישור תבניות.
מנוי לתבנית: משתמש שנרשם לחדר הנקי ויכול להריץ רק את השאילתות שאושרו בתבנית. התפקיד הזה מקביל לתפקיד IAM Analytics Hub Subscriber. מידע נוסף זמין במאמר בנושא תבניות של תהליכי עבודה למנויים.
תהליכי עבודה של יוצרי תבניות
בתור יוצרי תבניות של שאילתות, אתם יכולים:
הוספת כרטיס מוצר לחדר נקי לנתונים
לפני שיוצרים תבנית שאילתה, צריך להוסיף נתונים לחדר נקי לנתונים. כדי ליצור דף עסקי בחדר הנקי לנתונים, פועלים לפי השלבים הבאים:
עוברים לדף שיתוף (מרכז Analytics).
לוחצים על השם המוצג של חדר נקי לנתונים שבו רוצים ליצור את תבנית השאילתה.
לוחצים על הוספת נתונים ופועלים לפי השלבים ליצירת תצוגה עם כללי ניתוח מוגדרים. הוראות מפורטות זמינות במאמר יצירת כרטיס מוצר (הוספת נתונים).
- כדי להוסיף נתונים מצדדים אחרים, משתפים את החדר הנקי עם שותף מהימן נוסף. כדי שיהיה אפשר להשתמש בתבנית שאילתה, תורם הנתונים צריך גם להוסיף נתונים לחדר הנקי.
הגדרת אמצעי בקרה לתעבורת נתונים יוצאת (egress) לכרטיס המוצר.
מגדירים את אמצעי הבקרה על המטא-נתונים של כרטיס המוצר. אם רוצים לשתף רק את הסכימות והתיאורים של הנתונים שהוספתם בשלב הקודם (ולא את הנתונים עצמם), בוחרים באפשרות החרגת הגישה לכרטיס המוצר ממערך הנתונים המקושר.
בודקים את פרטי הכרטיס.
לוחצים על הוספת נתונים. המטא-נתונים של התצוגה שנוצרה עבור הנתונים שלכם נוספים עכשיו לחדר הנקי.
יצירת תבנית שאילתה
בוחרים באחת מהאפשרויות הבאות:
המסוף
עוברים לדף שיתוף (מרכז Analytics).
לוחצים על השם המוצג של חדר נקי לנתונים שבו רוצים ליצור תבנית שאילתה.
בחדר הנקי, עוברים לכרטיסייה Templates (תבניות).
לוחצים על יצירת תבנית.
מזינים שם ותיאור לתבנית.
לוחצים על הבא.
אתם יכולים לראות את הסכימות של התצוגות שנוספו לחדר הנקי, ויכולים להציע הגדרת שאילתה.
- חשוב להגדיר את השאילתה באמצעות התחביר הנתמך של
CREATE TABLE FUNCTION. העברת הטבלה או התצוגה כולה עם הגדרות קבועות. צריך להגדיר את הנתיב המלא של הטבלה, כולל מזהה הפרויקט ומזהה מערך הנתונים, מהנתונים שנוספו לחדר הנקי. לדוגמה:
query_template1(t1 TABLE<year INT64>) AS (SELECT * FROM `project_id.dataset_id.table_id` WHERE year = table_id.year)אם החלתם על הנתונים כללים לניתוח פרטיות, ודאו ש-TVF הזה כולל תחביר SQL שספציפי לפרטיות, למשל,
SELECT WITH AGGREGATION_THRESHOLD.
- חשוב להגדיר את השאילתה באמצעות התחביר הנתמך של
בודקים את פרטי התבנית.
כדי לשמור את התבנית בלי לשלוח אותה לבדיקה, לוחצים על שמירה. סטטוס תבנית השאילתה הוא עכשיו טיוטה.
אפשר לעדכן את תבנית השאילתה או לשלוח את תבנית השאילתה לבדיקה.
API
בדוגמה הבאה מוצג אופן היצירה של תבנית שאילתה באמצעות הפקודה curl:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H 'x-goog-user-project:DCR_PROJECT_ID' -X POST https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/CLEAN_ROOM_ID/queryTemplates?queryTemplateId=QUERY_TEMPLATE_ID -d 'query_template { display_name: "DISPLAY_NAME", routine { definition_body: "QUERY_TEMPLATE_ID(TVF arguments) AS (TVF_DEFINITION)" } }'
מחליפים את מה שכתוב בשדות הבאים:
-
DCR_PROJECT_ID: מזהה הפרויקט שבו נוצר חדר נקי לנתונים. LOCATION: המיקום של החדר הנקי לנתונים.-
CLEAN_ROOM_ID: המזהה של החדר הנקי לנתונים. -
DISPLAY_NAME: השם המוצג של תבנית השאילתה. אי אפשר לערוך את השם המוצג אחרי שיוצרים את תבנית השאילתה. -
QUERY_TEMPLATE_ID: מזהה תבנית השאילתה. -
TVF_DEFINITION: ההגדרה של TVF.
בדוגמת הקוד הבאה מוצגת דוגמה של definition_body לקריאה ל-API.
צריך להגדיר את ההפניה המלאה לנתיב הטבלה, כולל מזהה הפרויקט ומזהה מערך הנתונים, מהנתונים שנוספו לחדר הנקי.
query_template1(t1 TABLE<year INT64>) AS (SELECT * FROM `project_id.dataset_id.table_id` WHERE year = table_id.year)
הפונקציה definition_body דומה להגדרת שגרה. הקוד definition_body שמופיע למעלה מתורגם לשגרה הבאה:
CREATE OR REPLACE TABLE FUNCTION <approvers_dataset>.query_template1(t1 TABLE, y INT64)
AS (SELECT * FROM t1 WHERE year > y)
אפשר לעדכן את תבנית השאילתה או לשלוח את תבנית השאילתה לבדיקה.
עדכון של תבנית שאילתה
אפשר לעדכן תבנית שאילתה רק אם הסטטוס שלה הוא טיוטה. אם תבנית השאילתה כבר נשלחה לבדיקה, אי אפשר לשנות אותה יותר.
כדי לעדכן תבנית של שאילתה, בוחרים באחת מהאפשרויות הבאות:
המסוף
עוברים לדף שיתוף (מרכז Analytics).
לוחצים על השם לתצוגה של חדר נקי לנתונים שמכיל את תבנית השאילתה.
בחדר הנקי, עוברים לכרטיסייה Templates (תבניות).
בשורה של התבנית שרוצים לעדכן, לוחצים על פעולות > עריכת התבנית.
מעדכנים את התיאור ואת איש הקשר הראשי לפי הצורך.
- לוחצים על הבא.
- בודקים את תבנית השאילתה ולוחצים על שמירה כדי לשמור את השינויים בלי לשלוח את התבנית לבדיקה.
API
בדוגמה הבאה אפשר לראות איך מעדכנים תבנית שאילתה באמצעות פקודה curl:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H 'x-goog-user-project:DCR_PROJECT_ID' \ -X PATCH "https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/CLEAN_ROOM_ID/queryTemplates/QUERY_TEMPLATE_ID?updateMask=description" \ -d '{ "query_template": { "description": "New query template" } }'
מחליפים את מה שכתוב בשדות הבאים:
-
DCR_PROJECT_ID: מזהה הפרויקט שבו נוצר חדר נקי לנתונים. LOCATION: המיקום של החדר הנקי לנתונים.-
CLEAN_ROOM_ID: המזהה של החדר הנקי לנתונים. -
QUERY_TEMPLATE_ID: מזהה תבנית השאילתה.
שליחת תבנית שאילתה לבדיקה
בוחרים באחת מהאפשרויות הבאות:
המסוף
עוברים לדף שיתוף (מרכז Analytics).
לוחצים על השם לתצוגה של חדר נקי לנתונים שמכיל את תבנית השאילתה.
בחדר הנקי, עוברים לכרטיסייה Templates (תבניות).
בשורה של התבנית שרוצים לשלוח לבדיקה, לוחצים על פעולות > שליחה לבדיקה. הסטטוס של התבנית הוא עכשיו נדרשת בדיקה.
API
בדוגמה הבאה אפשר לראות איך שולחים תבנית שאילתה לבדיקה באמצעות הפקודה curl:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H 'x-goog-user-project:DCR_PROJECT_ID' -X POST https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/CLEAN_ROOM_ID/queryTemplates/QUERY_TEMPLATE_ID:submit
מחליפים את מה שכתוב בשדות הבאים:
-
DCR_PROJECT_ID: מזהה הפרויקט שבו נוצר חדר נקי לנתונים. LOCATION: המיקום של החדר הנקי לנתונים.-
CLEAN_ROOM_ID: המזהה של החדר הנקי לנתונים. -
QUERY_TEMPLATE_ID: מזהה תבנית השאילתה.
מחיקה של תבנית שאילתה
אפשר למחוק תבנית שאילתה רק אם הסטטוס שלה הוא טיוטה. אם תבנית השאילתה כבר נשלחה לבדיקה, אי אפשר למחוק אותה יותר.
בוחרים באחת מהאפשרויות הבאות:
המסוף
עוברים לדף שיתוף (מרכז Analytics).
לוחצים על השם לתצוגה של חדר נקי לנתונים שמכיל את תבנית השאילתה.
בחדר הנקי, עוברים לכרטיסייה Templates (תבניות).
בשורה של התבנית שרוצים למחוק, לוחצים על פעולות > מחיקת התבנית.
API
בדוגמה הבאה אפשר לראות איך מוחקים תבנית שאילתה באמצעות הפקודה curl:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H 'x-goog-user-project:DCR_PROJECT_ID' -X DELETE https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/CLEAN_ROOM_ID/queryTemplates?queryTemplateId=QUERY_TEMPLATE_ID
מחליפים את מה שכתוב בשדות הבאים:
-
DCR_PROJECT_ID: מזהה הפרויקט שבו נוצר חדר נקי לנתונים. LOCATION: המיקום של החדר הנקי לנתונים.-
CLEAN_ROOM_ID: המזהה של החדר הנקי לנתונים. -
QUERY_TEMPLATE_ID: מזהה תבנית השאילתה.
תהליכי עבודה של מאשרים בתבניות
אם אתם גורמים מאשרים של תבניות שאילתות, אתם יכולים לאשר תבנית שאילתה.
אם פונקציית TVF מפנה לנתונים שאתם לא הבעלים שלהם (לדוגמה, נתונים של תורם אחר), רק הבעלים של הנתונים האלה יכול לאשר את תבנית השאילתה. אם אתם יוצרים TVF שמפנה רק לנתונים שלכם (לשיתוף בכיוון אחד), אתם יכולים לאשר את תבנית השאילתה בעצמכם.
אישור תבנית של שאילתה
בוחרים באחת מהאפשרויות הבאות:
המסוף
עוברים לדף שיתוף (מרכז Analytics).
לוחצים על השם לתצוגה של חדר נקי לנתונים שמכיל את תבנית השאילתה.
בחדר הנקי, עוברים לכרטיסייה Templates (תבניות).
בשורה של התבנית שצריך לבדוק, לוחצים על סטטוס האישור > נדרשת בדיקה.
לוחצים על אישור.
בוחרים את מיקום התבנית. זה המיקום שבו נוצר ה-TVF לשיתוף.
בודקים את תבנית השאילתה המוצעת.
אם תבנית השאילתה אושרה לשימוש בחדר הנקי, לוחצים על אישור.
API
יוצרים את השגרה מתבנית השאילתה באמצעות קריאה
jobserver.queryלפונקציה:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -L -X POST https://bigquery.googleapis.com/bigquery/v2/projects/ROUTINE_PROJECT_ID/queries --data '{"query":"ROUTINE_CREATION_QUERY","useLegacySql":false}'
מחליפים את מה שכתוב בשדות הבאים:
-
ROUTINE_PROJECT_ID: מזהה הפרויקט שבו נוצרה הפרוצדורה. -
ROUTINE_CREATION_QUERY: השאילתה ליצירת הפונקציה.
-
מוסיפים את השגרה שיצרתם לחדר הנקי לנתונים:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H 'x-goog-user-project:DCR_PROJECT_ID' -X POST https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/CLEAN_ROOM_ID/listings?listingId=LISTING_ID -d '{"bigqueryDataset":{"dataset":"projects/PROJECT_ID/datasets/DATASET_ID","selectedResources":[{"routine":"projects/PROJECT_ID/datasets/DATASET_ID/tables/ROUTINE_ID"}],},"displayName":"LISTING_NAME"}'
מחליפים את מה שכתוב בשדות הבאים:
-
DCR_PROJECT_ID: מזהה הפרויקט שבו נוצר חדר נקי לנתונים. LOCATION: המיקום של החדר הנקי לנתונים.-
CLEAN_ROOM_ID: המזהה של החדר הנקי לנתונים. -
LISTING_ID: מזהה כרטיס המוצר. -
PROJECT_ID: מזהה הפרויקט שבו נמצא מערך נתוני המקור. -
DATASET_ID: המזהה של מערך הנתונים של המקור. -
ROUTINE_ID: מזהה התרחיש. -
LISTING_NAME: שם כרטיס המוצר.
-
עדכון הסטטוס של תבנית השאילתה ל
APPROVED:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -L -X POST https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/CLEAN_ROOM_ID/queryTemplates/QUERY_TEMPLATE_ID:approve --data '{}'
מחליפים את מה שכתוב בשדות הבאים:
-
DCR_PROJECT_ID: מזהה הפרויקט שבו נוצר חדר נקי לנתונים. LOCATION: המיקום של החדר הנקי לנתונים.-
CLEAN_ROOM_ID: המזהה של החדר הנקי לנתונים. -
QUERY_TEMPLATE_ID: מזהה תבנית השאילתה.
-
דחיית תבנית של שאילתה
במסוף Google Cloud , אפשר לדחות תבנית של שאילתה על ידי אי-אישור של תבנית השאילתה שנשלחה לבדיקה.
תבניות של תהליכי עבודה למנויים
מנוי לתבנית שאילתה יכול לצפות בחדר נקי לנתונים ולהירשם אליו. אם רק תבנית השאילתה נוספת לחדר הנקי, ההרשמה לחדר הנקי מעניקה גישה רק לפונקציה התואמת של טבלה וירטואלית, ולא לנתונים המשותפים הבסיסיים.
הרשמה לתבנית שאילתה
בוחרים באחת מהאפשרויות הבאות:
המסוף
כדי להירשם לתבנית שאילתה, צריך להירשם לחדר הנקי לנתונים. הגישה ניתנת לכל כרטיסי המוצר שההגדרה Exclude access to listing from linked dataset (החרגת הגישה לכרטיס המוצר ממערך הנתונים המקושר) מושבתת.
כדי להירשם לתבנית שאילתה:
עוברים לדף BigQuery.
עוברים אל מערך הנתונים המקושר שיצרתם כשנרשמתם לחדר הנקי.
פותחים את השגרה או את פונקציית הטבלה הווירטואלית ששותפו במערך הנתונים המקושר.
לוחצים על הפעלת פונקציית טבלה.
מחליפים את הפרמטר בקלט המקובל, שהוא שם הטבלה או שדה.
לוחצים על Run.
אם לא רואים את הפונקציה TVF כרכיב צאצא של מערך הנתונים המקושר בחלונית Explorer, אפשר לשלוח שאילתה לפונקציה TVF ישירות במערך הנתונים המקושר:
SELECT * FROM `myproject.dcr_linked_dataset.mytvf`(TABLE myTable);
API
משתמשים בשיטה projects.locations.dataExchanges.subscribe.
בדוגמה הבאה מוצג איך להפעיל את השיטה projects.locations.dataExchanges.subscribe באמצעות הפקודה curl:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -L -X POST https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/CLEAN_ROOM_ID:subscribe --data '{"destination":"projects/SUBSCRIBER_PROJECT_ID/locations/LOCATION","subscription":"SUBSCRIPTION"}'
מחליפים את מה שכתוב בשדות הבאים:
-
DCR_PROJECT_ID: מזהה הפרויקט שבו נוצר חדר נקי לנתונים. LOCATION: המיקום של החדר הנקי לנתונים.-
CLEAN_ROOM_ID: המזהה של החדר הנקי לנתונים. -
SUBSCRIBER_PROJECT_ID: מזהה הפרויקט של פרויקט המנוי של התבנית. -
SUBSCRIPTION: שם המינוי.
אחרי שנרשמים לתבנית השאילתה, אפשר להריץ שאילתה על ה-TVF ישירות במערך הנתונים המקושר:
SELECT * FROM `myproject.dcr_linked_dataset.mytvf`(TABLE myTable);
תרחישים לדוגמה
אפשר להשתמש בתבניות של שאילתות כדי להקל על סוגים שונים של שיתוף פעולה בנתונים בתוך חדר נקי לנתונים. בקטעים הבאים מתוארים תרחישים לדוגמה.
תרחיש של שיתוף חד-כיווני
בעל תוכן דיגיטלי שפרסם נתונים יוצר תבנית שאילתה כדי לוודא ששותפים שנרשמו כמנויים יכולים להריץ רק את השאילתות שהוגדרו על ידי בעל התוכן הדיגיטלי. יוצרי תבניות השאילתות מאשרים בעצמם את תבניות השאילתות, כי לא נוסף אף משתתף אחר לחדר הנקי.
בתרחיש הזה, משתמש א' הוא בעלים של חדר נקי לנתונים שיוצר חדר נקי לנתונים בשם campaign_analysis ומוסיף מערך נתונים בשם my_campaign עם טבלה campaigns. משתמש א' מגדיר מדיניות של הסף לצבירת נתונים ואמצעי בקרה של מטא-נתונים כדי לוודא שרק סכימת המטא-נתונים גלויה ושמנויי התבנית לא יכולים לגשת לנתוני המקור. משתמש א' יוצר תבנית שאילתה על ידי הגדרת פונקציה שמחזירה טבלה מהטבלה campaigns, ומגביל את המנויים של מערך הנתונים המקושר כך שיוכלו להריץ רק את הפונקציה שמחזירה טבלה.
זהו התחביר של TVF:
campaigns_template(t1 TABLE campaign_ID <STRING> ) AS (
SELECT WITH AGGREGATION_THRESHOLD company_id, company, sum(impressions) FROM myproject.my_campaign.campaigns
group by company_id, company
);
למשתמש א' יש את ההרשאות המתאימות לטבלת הקמפיינים עם הרשאה 'בעלים של נתונים' ב-BigQuery, ולכן הוא יכול לאשר בעצמו את תבנית השאילתה מיד אחרי שהוא שולח אותה לבדיקה.
שיתוף פעולה עם כמה גורמים
הבעלים של החדר הנקי מזמין משתתף מהימן להציע שאילתות להרצה על הנתונים של כל אחד מהם. שני הצדדים יכולים להציע שאילתות באופן בטוח על ידי צפייה בסכימות של מטא-נתונים בלבד, בלי לגשת לנתונים המשותפים הבסיסיים. אם הגדרת שאילתה מפנה לנתונים שלא שייכים למי שהציע את התבנית, רק הבעלים של הנתונים האלה יכול לאשר את התבנית.
בתרחיש הזה, משתמש א' מזמין את משתמש ב', שהוא משתתף בcampaign_analysis חדר נקי לנתונים. משתמש ב' רוצה להציע תבנית שאילתה כדי לצרף את הנתונים שלו לטבלה campaigns על ידי צפייה בסכימת המטא-נתונים של הטבלה.
זהו התחביר של TVF:
campaigns_template(t1 TABLE campaign_ID <STRING> ) AS (
SELECT WITH AGGREGATION_THRESHOLD company_id, company, sum(impressions) FROM my_project.my_campaign.campaigns
group by company_id, company
);
משתמש ב' לא הוסיף את הטבלה campaigns או שהוא לא הבעלים שלה, ולכן רק משתמש א' יכול לאשר את תבנית השאילתה אחרי שהיא נשלחת לאישור. כדי להשתמש בתבנית השאילתה, משתמש ב' צריך להירשם לחדר הנקי ולהפעיל את פונקציית ה-TVF. משתמש ב' מעביר טבלה משלו עם שדה בשם campaign_ID כפרמטר של הטבלה, והוא יכול להריץ את ה-SQL הפרטי שמוגדר בתבנית השאילתה. משתמש ב' לא צריך להוסיף את הנתונים שלו לחדר הנקי.
משתמש ב' מוסיף גם הוא מערך נתונים בשם my_transactions לחדר הנקי, עם טבלה transactions וטבלה products. משתמש ב' מגדיר מדיניות של סף צבירה ואמצעי בקרה על מטא-נתונים כדי לוודא שרק סכימת המטא-נתונים גלויה, ושמנויי התבנית לא יכולים לגשת לנתוני המקור.
משתמש א' יכול עכשיו להציע תבניות שונות של שאילתות כדי לצרף את הנתונים שלו לטבלת העסקאות, על ידי צפייה בסכימת המטא-נתונים של הטבלה. אלה דוגמאות לתחביר של כללי תמחור לפי ערך:
transactions_template(t1 TABLE user_ID <STRING> ) AS (
SELECT WITH AGGREGATION_THRESHOLD company_id, company, campaign_id, sku, category, date, sum(amount) FROM my_project.my_transactions.transactions
group by company_id, company, campaign_id, sku, category, date
);
transactions_template_with_join(t1 TABLE user_ID <STRING> ) AS (
SELECT WITH AGGREGATION_THRESHOLD t.company_id, t.company, t.campaign_id, t.sku, t.date, p.product_name, p.product_category, sum(t.amount) FROM myproject.my_transactions.transactions t
left join my_project.my_transactions.products p
on t.product_id = p.product_id
group by t.company_id, t.company, t.campaign_id, t.sku, t.date, p.product_name, p.product_category
);
משתמש א' לא הוסיף את הטבלאות transactions ו-products ולא נמצא בבעלותו, ולכן רק משתמש ב' יכול לאשר את תבנית השאילתה אחרי שהיא נשלחת לאישור. כדי להשתמש בתבנית השאילתה, משתמש א' צריך להירשם לחדר הנקי ולהפעיל את הפונקציה TVF. משתמש א' מעביר טבלה משלו עם שדה בשם user_ID
כפרמטר של הטבלה, והוא יכול להריץ את ה-SQL של הפרטיות שהוגדר בתבנית השאילתה. משתמש א' לא צריך להוסיף את הנתונים שלו לחדר הנקי.
תמחור
משתמשים שמוסיפים נתונים באמצעות תבניות שאילתה מחויבים רק על אחסון נתונים.
מנויים לתבניות שמשתמשים בתבניות של שאילתות מחויבים רק על החישוב (ניתוח) כשהם מריצים שאילתות.
המאמרים הבאים
- מידע נוסף על חדרים נקיים לנתונים זמין במאמר שיתוף מידע אישי רגיש באמצעות חדרים נקיים לנתונים.
- מידע נוסף על מינויים זמין במאמר הרשמה למינוי לחדר נקי לנתונים.
- מידע נוסף על TVF זמין במאמר בנושא פונקציות של טבלאות.
- מידע נוסף על תעבורת נתונים יוצאת (egress) זמין במאמר בנושא אפשרויות יציאת נתונים (מערכי נתונים משותפים של BigQuery בלבד).