שימוש בתבניות של שאילתות

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

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

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

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

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

מגבלות

  • תבניות של שאילתות תומכות רק בשני הפניות לנתונים לכל היותר – כלומר, הנתונים שמשמשים להגדרת השאילתה של TVF והקלט של פרמטר הנתונים שה-TVF מקבל.
    • אפשר להפנות לכמה טבלאות או תצוגות בהגדרת השאילתה של TVF, אבל כולן צריכות להיות שייכות לאותו בעל נתונים או צד.
  • פונקציות TVF של תבניות שאילתה תומכות רק בסוגים הקבועים TABLE ו-VIEW.
  • הגדרות של תבניות שאילתות כפופות לאותן מגבלות כמו TVF.

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

כדי להפעיל את Analytics Hub API בפרויקט ב- Google Cloud :

המסוף

  1. עוברים לדף Analytics Hub API.

    מעבר אל Analytics Hub API

  2. בסרגל הכלים של המסוף Google Cloud , בוחרים את הפרויקט.

  3. אם ה-API עדיין לא מופעל, לוחצים על הפעלה.

BQ

מריצים את הפקודה gcloud services enable:

gcloud services enable analyticshub.googleapis.com

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

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

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

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

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

כדי לבצע את המשימות שמתוארות במסמך הזה, צריך את ההרשאות הבאות:

  • יצירה או מחיקה של 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 בפרויקט
  • כדי לעדכן תבנית שאילתה קיימת: analyticshub.queryTemplates.update בתבנית השאילתה
  • אחזור פרטים של תבנית שאילתה: analyticshub.queryTemplates.get בתבנית השאילתה
  • הצגת רשימה של כל תבניות השאילתות בחבילת גלישה: analyticshub.queryTemplates.list בחבילת הגלישה
  • כדי למחוק תבנית של שאילתה: analyticshub.queryTemplates.delete בתבנית של השאילתה

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

הוספה של פונקציית 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: מזהה התרחיש.

תפקידים בתבניות של שאילתות

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

תהליכי עבודה של יוצרי תבניות

בתור יוצרי תבניות של שאילתות, אתם יכולים:

הוספת כרטיס מוצר לחדר נתונים נקי

לפני שיוצרים תבנית שאילתה, צריך להוסיף נתונים לחדר נתונים. כדי ליצור דף עסקי בחדר הנקי לנתונים:

  1. עוברים לדף שיתוף (מרכז Analytics).

    מעבר אל 'שיתוף' (Analytics Hub)

  2. לוחצים על השם המוצג של מרחב נקי הנתונים שבו רוצים ליצור את תבנית השאילתה.

  3. לוחצים על הוספת נתונים ופועלים לפי השלבים ליצירת תצוגה עם כללי ניתוח מוגדרים. הוראות מפורטות זמינות במאמר יצירת כרטיס מוצר (הוספת נתונים).

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

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

  6. בודקים את פרטי הכרטיס.

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

יצירת תבנית שאילתה

בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. עוברים לדף שיתוף (מרכז Analytics).

    מעבר אל 'שיתוף' (Analytics Hub)

  2. לוחצים על השם המוצג של מרחב נקי לנתונים שבו רוצים ליצור תבנית שאילתה.

  3. בחדר הנקי, עוברים לכרטיסייה Templates (תבניות).

  4. לוחצים על יצירת תבנית.

  5. מזינים שם ותיאור לתבנית.

  6. לוחצים על הבא.

  7. אתם יכולים לראות את הסכימות של התצוגות שהוספתם לחדר הנקי, ויכולים להציע הגדרת שאילתה.

    1. חשוב להגדיר את השאילתה באמצעות התחביר הנתמך של CREATE TABLE FUNCTION.
    2. העברת הטבלה או התצוגה כולה עם הגדרות קבועות. צריך להגדיר את הנתיב המלא של הטבלה, כולל מזהה הפרויקט ומזהה מערך הנתונים, מהנתונים שנוספו לחדר הנקי. לדוגמה:

      query_template1(t1 TABLE<year INT64>) AS (SELECT * FROM `project_id.dataset_id.table_id` WHERE year = table_id.year)
      
    3. אם החלתם על הנתונים כללי ניתוח של פרטיות, ודאו ש-TVF הזה כולל תחביר SQL ספציפי לפרטיות, למשל, SELECT WITH AGGREGATION_THRESHOLD.

  8. בודקים את פרטי התבנית.

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

אתם יכולים לעדכן את תבנית השאילתה או לשלוח את תבנית השאילתה לבדיקה.

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)

אתם יכולים לעדכן את תבנית השאילתה או לשלוח את תבנית השאילתה לבדיקה.

עדכון של תבנית שאילתה

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

כדי לעדכן תבנית של שאילתה, בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. עוברים לדף שיתוף (מרכז Analytics).

    מעבר אל 'שיתוף' (Analytics Hub)

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

  3. בחדר הנקי, עוברים לכרטיסייה Templates (תבניות).

  4. בשורה של התבנית שרוצים לעדכן, לוחצים על פעולות > עריכת התבנית.

  5. מעדכנים את התיאור ואת איש הקשר הראשי לפי הצורך.

  1. לוחצים על הבא.
  2. בודקים את תבנית השאילתה ולוחצים על שמירה כדי לשמור את השינויים בלי לשלוח את התבנית לבדיקה.

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: מזהה תבנית השאילתה.

שליחת תבנית של שאילתה לבדיקה

בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. עוברים לדף שיתוף (מרכז Analytics).

    מעבר אל 'שיתוף' (Analytics Hub)

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

  3. בחדר הנקי, עוברים לכרטיסייה Templates (תבניות).

  4. בשורה של התבנית שרוצים לשלוח לבדיקה, לוחצים על פעולות > שליחה לבדיקה. הסטטוס של התבנית הוא עכשיו נדרשת בדיקה.

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: מזהה תבנית השאילתה.

מחיקה של תבנית שאילתה

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

בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. עוברים לדף שיתוף (מרכז Analytics).

    מעבר אל 'שיתוף' (Analytics Hub)

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

  3. בחדר הנקי, עוברים לכרטיסייה Templates (תבניות).

  4. בשורה של התבנית שרוצים למחוק, לוחצים על פעולות > מחיקת התבנית.

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 שמפנה רק לנתונים שלכם (לשיתוף בכיוון אחד), אתם יכולים לאשר את תבנית השאילתה בעצמכם.

אישור תבנית של שאילתה

בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. עוברים לדף שיתוף (מרכז Analytics).

    מעבר אל 'שיתוף' (Analytics Hub)

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

  3. בחדר הנקי, עוברים לכרטיסייה Templates (תבניות).

  4. בשורה של התבנית שצריך לבדוק, לוחצים על סטטוס האישור > נדרשת בדיקה.

  5. לוחצים על אישור.

  6. בוחרים את המיקום של התבנית. זה המיקום שבו נוצר ה-TVF לשיתוף.

  7. בודקים את תבנית השאילתה המוצעת.

  8. אם תבנית השאילתה אושרה לשימוש בחדר הנקי, לוחצים על אישור.

API

  1. יוצרים את התרחיש מתבנית השאילתה באמצעות קריאה ל-jobserver.query API:

    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: השאילתה ליצירת הפרוצדורה.
  2. מוסיפים את השגרה שיצרתם לחדר הנקי לנתונים:

    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: שם כרטיס המוצר.
  3. עדכון הסטטוס של תבנית השאילתה ל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 , אפשר לדחות תבנית של שאילתה על ידי אי-אישור של תבנית השאילתה שנשלחה לבדיקה.

תהליכי עבודה של מנויים לתבניות

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

הרשמה לתבנית שאילתה

בוחרים באחת מהאפשרויות הבאות:

המסוף

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

כדי להירשם לתבנית שאילתה:

  1. עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. עוברים אל מערך הנתונים המקושר שיצרתם כשנרשמתם לחדר הנקי.

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

  4. לוחצים על הפעלת פונקציית טבלה.

  5. מחליפים את הפרמטר בקלט המקובל, שהוא שם הטבלה או שדה.

  6. לוחצים על 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. משתמש ב' מגדיר מדיניות של סף צבירה ואמצעי בקרה על מטא-נתונים כדי לוודא שרק סכימת המטא-נתונים גלויה ושמנויי התבנית לא יכולים לגשת לנתוני המקור.

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

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 של הפרטיות שהוגדר בתבנית השאילתה. משתמש א' לא צריך להוסיף את הנתונים שלו לחדר הנקי.

תמחור

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

מנויים לתבניות באמצעות תבניות של שאילתות משלמים רק על חישוב (ניתוח) כשהם מריצים שאילתות.

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