תצוגות מורשות

במאמר הזה מוסבר איך ליצור תצוגות מורשות ותצוגות מורשות מגובות בחומר ב-BigQuery.

סקירה כללית

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

סוגי צפייה

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

תצוגה מורשית של תצוגה לוגית נקראת תצוגה מורשית, אבל תצוגה מורשית של תצוגה מהותית נקראת תצוגה מהותית מורשית.

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

מידע נוסף זמין במקורות המידע הבאים:

שלבים כלליים ליצירת תצוגות מורשות

כדי ליצור ולשתף תצוגה, צריך לעיין בשלבים הכלליים הבאים, שזהים לתצוגות לוגיות מורשות ולתצוגות מהותיות מורשות.

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

חלופות

למרות שהתצוגות המורשות הן גמישות וניתנות להרחבה, יכול להיות שאחת מהשיטות הבאות תתאים יותר לתרחיש השימוש שלכם:

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

שימוש באבטחה ברמת השורה או ברמת העמודה, או בטבלאות נפרדות

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

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

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

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

שיתוף כל התצוגות במערך נתונים

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

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

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

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

מגבלות

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

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

מקצים תפקידים בניהול הזהויות והרשאות הגישה (IAM) שנותנים למשתמשים את ההרשאות הנדרשות לשליחת שאילתות לתצוגות המורשות או לתצוגות חומריות מורשות ששיתפתם.

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

כדי ליצור או לעדכן תצוגה מורשית, צריך הרשאות למערך הנתונים שמכיל את התצוגה ולמערך הנתונים שמאפשר גישה לתצוגה.

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

הרשאות אדמין במערך הנתונים שמכיל את התצוגה

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

כדי ליצור תצוגה מפורטת, צריך bigquery.tables.createהרשאת IAM. תפקיד ה-IAM המוגדר מראש roles/bigquery.dataEditor כולל את ההרשאות שנדרשות ליצירת תצוגה.

בנוסף, אם יש לכם הרשאה bigquery.datasets.create, אתם יכולים ליצור תצוגות במערכי הנתונים שאתם יוצרים. כדי ליצור תצוגה של נתונים שלא בבעלותכם, אתם צריכים bigquery.tables.getData הרשאה לטבלה הזו.

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

הרשאות אדמין במערך הנתונים השני שמעניקות גישה לתצוגה

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

  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy (נדרשת רק כשמעדכנים את אמצעי בקרת הגישה למערך נתונים ב Google Cloud מסוף)

תפקיד ה-IAM המוגדר מראש roles/bigquery.dataOwner כולל את ההרשאות שנדרשות לעדכון מאפיינים של מערך נתונים.

בנוסף, אם יש לכם הרשאה bigquery.datasets.create, אתם יכולים לעדכן את המאפיינים של מערכי הנתונים שאתם יוצרים.

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

הרשאות משתמש בפרויקט ובמערך הנתונים לתצוגה

כדי לשתף תצוגה מורשית עם משתמשים או קבוצות, צריך לתת למשתמשים או לקבוצות את הרשאות ה-IAM הבאות:

  • תפקיד ה-IAM‏ roles/bigquery.jobUser בפרויקט שמכיל את התצוגה המפורטת המורשית. התפקיד הזה מעניק את ההרשאה bigquery.jobs.create שנדרשת להרצת שאילתות על התצוגה.
  • תפקיד ה-IAM‏ roles/bigquery.dataViewer במערך הנתונים שמכיל את התצוגה המפורטת המורשית. התפקיד הזה מעניק את ההרשאה bigquery.tables.getData, שנדרשת כדי לשלוח שאילתה לתצוגה.

עבודה עם תצוגות מורשות

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

יצירת תצוגה מורשית

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

המסוף

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

    כניסה ל-BigQuery

  2. בעורך השאילתות, מקלידים את השאילתה שעליה רוצים לבסס את התצוגה המורשית.

  3. לוחצים על שמירה > שמירת התצוגה.

  4. בתיבת הדו-שיח Save view:

    1. בשדה פרויקט, מקלידים את הפרויקט שבו רוצים לשמור את התצוגה.

    2. בשדה Dataset (מערך נתונים), מקלידים את מערך הנתונים שבו רוצים לשמור את התצוגה. הנתונים האלה חייבים להיות שונים ממערך הנתונים שמשמש בשאילתת המקור.

    3. בשדה Table, מקלידים את שם התצוגה.

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

  5. נותנים הרשאות נדרשות למשתמשים שיכולים להשתמש בתצוגה המורשית.

  6. בחלונית Explorer, בוחרים את מערך הנתונים שבו נעשה שימוש בשאילתת המקור.

  7. בחלונית פרטים, לוחצים על שיתוף > הרשאת צפייה.

  8. בחלונית תצוגות מורשות, בשדה תצוגה מורשית, מקלידים את השם המוגדר במלואו של התצוגה, בפורמט PROJECT_ID.DATASET_ID.VIEW_NAME.

  9. לוחצים על הוספת הרשאה.

Terraform

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

# Creates an authorized view.

# Create a dataset to contain the view.
resource "google_bigquery_dataset" "view_dataset" {
  dataset_id  = "view_dataset"
  description = "Dataset that contains the view"
  location    = "us-west1"
}

# Create the view to authorize.
resource "google_bigquery_table" "movie_view" {
  project     = google_bigquery_dataset.view_dataset.project
  dataset_id  = google_bigquery_dataset.view_dataset.dataset_id
  table_id    = "movie_view"
  description = "View to authorize"

  view {
    query          = "SELECT item_id, avg(rating) FROM `movie_project.movie_dataset.movie_ratings` GROUP BY item_id ORDER BY item_id;"
    use_legacy_sql = false
  }
}


# Authorize the view to access the dataset
# that the query data originates from.
resource "google_bigquery_dataset_access" "view_authorization" {
  project    = "movie_project"
  dataset_id = "movie_dataset"

  view {
    project_id = google_bigquery_table.movie_view.project
    dataset_id = google_bigquery_table.movie_view.dataset_id
    table_id   = google_bigquery_table.movie_view.table_id
  }
}

# Specify the IAM policy for principals that can access
# the authorized view. These users should already
# have the roles/bigqueryUser role at the project level.
data "google_iam_policy" "principals_policy" {
  binding {
    role = "roles/bigquery.dataViewer"
    members = [
      "group:example-group@example.com",
    ]
  }
}

# Set the IAM policy on the authorized  view.
resource "google_bigquery_table_iam_policy" "authorized_view_policy" {
  project     = google_bigquery_table.movie_view.project
  dataset_id  = google_bigquery_table.movie_view.dataset_id
  table_id    = google_bigquery_table.movie_view.table_id
  policy_data = data.google_iam_policy.principals_policy.policy_data
}

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

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud

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

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

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

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

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

ניהול משתמשים או קבוצות בתצוגות מורשות

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

  • עיון במדיניות הגישה.
  • נותנים גישה.
  • ביטול הגישה.
  • מניעת גישה.

מידע נוסף זמין במאמר שליטה בגישה למשאבים באמצעות IAM.

הסרת ההרשאה לתצוגה

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

המסוף

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

    כניסה ל-BigQuery

  2. בחלונית הימנית, לוחצים על כלי הניתוחים:

    כפתור מודגש לחלונית הסייר.

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

  3. בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ואז בוחרים מערך נתונים.

  4. לוחצים על סקירה כללית > טבלאות ובוחרים טבלה.

  5. לוחצים על שיתוף > הרשאת צפייה.

  6. לוחצים על הסרת ההרשאה.

  7. לוחצים על Close.

BQ

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

    bq rm \
    project_id:dataset:table_id
    

API

קוראים למתודה tables.delete ומשתמשים במאפיינים projectID,‏ datasetID ו-tableID כדי להסיר את התצוגה המורשית של קבוצת הנתונים. מידע נוסף מופיע במאמר בנושא טבלאות.

מכסות ומגבלות

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

נושאים מתקדמים

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

שילוב של אבטחה ברמת השורה עם תצוגות מורשות

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

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

שילוב של אבטחה ברמת העמודה עם תצוגות מורשות

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

לתיאור מפורט של אופן החלת ההרשאות, אפשר לעיין במאמר בנושא תצוגות שאילתה לאבטחה ברמת העמודה.

שימוש ב-BigQuery sharing עם תצוגות מורשות

שיתוף ב-BigQuery (לשעבר Analytics Hub) הוא פלטפורמה להחלפת נתונים עם היכולות הבאות:

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

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

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

מידע נוסף זמין במאמר בנושא מבוא לשיתוף.

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