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

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

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

מטרות

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

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

בעזרת מחשבון העלויות אתם יכולים להעריך את העלויות בהתאם לשימוש הצפוי.

משתמשים חדשים של Google Cloud ? יכול להיות שאתם זכאים לתקופת ניסיון בחינם.

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

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

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. מוודאים שהחיוב מופעל בפרויקט ב- Google Cloud .

  3. מפעילים את BigQuery API, אם הוא עדיין לא מופעל.

    התפקידים שנדרשים כדי להפעיל ממשקי API

    כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים?

    להפעלת ה-API

  4. מוודאים שיש לכם את ההרשאות הנדרשות כדי לבצע את המשימות שמפורטות במסמך הזה.

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

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

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

המסוף

  1. נכנסים לדף BigQuery.

    כניסה ל-BigQuery

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

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

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

  3. בחלונית Explorer, לצד הפרויקט שבו רוצים ליצור את מערך הנתונים, לוחצים על View actions > Create dataset.

  4. בדף Create dataset, מבצעים את הפעולות הבאות:

    1. בשדה Dataset ID, מזינים github_source_data.

    2. בשדה Location type, מוודאים שהאפשרות Multi-region מסומנת.

    3. בקטע Multi-region, בוחרים באפשרות US או EU. כל המשאבים שתיצרו במדריך הזה צריכים להיות באותו מיקום במספר אזורים.

    4. לוחצים על Create dataset.

SQL

משתמשים בהצהרת ה-DDL‏ CREATE SCHEMA:

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

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    CREATE SCHEMA github_source_data;

  3. לוחצים על הפעלה.

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

Java

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

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

// Create a source dataset to store your table.
Dataset sourceDataset = bigquery.create(DatasetInfo.of(sourceDatasetId));

Python

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

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

from google.cloud import bigquery
from google.cloud.bigquery.enums import EntityTypes

client = bigquery.Client()
source_dataset_id = "github_source_data"
source_dataset_id_full = "{}.{}".format(client.project, source_dataset_id)


source_dataset = bigquery.Dataset(source_dataset_id_full)
# Specify the geographic location where the dataset should reside.
source_dataset.location = "US"
source_dataset = client.create_dataset(source_dataset)  # API request

יצירת טבלה וטעינה של נתוני המקור

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

המסוף

  1. נכנסים לדף BigQuery.

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את השאילתה הבאה:

    SELECT
      commit,
      author,
      committer,
      repo_name
    FROM
      `bigquery-public-data.github_repos.commits`
    LIMIT
      1000;
    
  3. לוחצים על עריכה > הגדרות השאילתה.

  4. בשדה Destination, בוחרים באפשרות Set a destination table for query results.

  5. בשדה Dataset, מזינים PROJECT_ID.github_source_data.

    מחליפים את PROJECT_ID במזהה הפרויקט.

  6. בשדה Table Id, מזינים github_contributors.

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

  8. לוחצים על Run.

  9. כשהשאילתה מסתיימת, בחלונית Explorer לוחצים על Datasets ואז על מערך הנתונים github_source_data.

  10. לוחצים על Overview > Tables ואז על הטבלה github_contributors.

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

Java

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

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

// Populate a source table
String tableQuery =
    "SELECT commit, author, committer, repo_name"
        + " FROM `bigquery-public-data.github_repos.commits`"
        + " LIMIT 1000";
QueryJobConfiguration queryConfig =
    QueryJobConfiguration.newBuilder(tableQuery)
        .setDestinationTable(TableId.of(sourceDatasetId, sourceTableId))
        .build();
bigquery.query(queryConfig);

Python

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

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

source_table_id = "github_contributors"
job_config = bigquery.QueryJobConfig()
job_config.destination = source_dataset.table(source_table_id)
sql = """
    SELECT commit, author, committer, repo_name
    FROM `bigquery-public-data.github_repos.commits`
    LIMIT 1000
"""
client.query_and_wait(
    sql,
    # Location must match that of the dataset(s) referenced in the query
    # and of the destination table.
    location="US",
    job_config=job_config,
)  # API request - starts the query and waits for query to finish

יצירת מערך נתונים לאחסון התצוגה המורשית

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

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

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

המסוף

  1. נכנסים לדף BigQuery.

    כניסה ל-BigQuery

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

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

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

  4. מרחיבים את האפשרות View actions ולוחצים על Create dataset.

  5. בדף Create dataset, מבצעים את הפעולות הבאות:

    1. בשדה Dataset ID, מזינים shared_views.

    2. בשדה Location type, מוודאים שהאפשרות Multi-region מסומנת.

    3. בקטע Multi-region, בוחרים באפשרות US או EU. כל המשאבים שתיצרו במדריך הזה צריכים להיות באותו מיקום במספר אזורים.

    4. לוחצים על Create dataset.

SQL

משתמשים בהצהרת ה-DDL‏ CREATE SCHEMA:

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

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    CREATE SCHEMA shared_views;

  3. לוחצים על הפעלה.

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

Java

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

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

// Create a separate dataset to store your view
Dataset sharedDataset = bigquery.create(DatasetInfo.of(sharedDatasetId));

Python

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

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

shared_dataset_id = "shared_views"
shared_dataset_id_full = "{}.{}".format(client.project, shared_dataset_id)


shared_dataset = bigquery.Dataset(shared_dataset_id_full)
shared_dataset.location = "US"
shared_dataset = client.create_dataset(shared_dataset)  # API request

יצירת התצוגה המורשית בקבוצת הנתונים החדשה

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

טבלת המקור github_contributors מכילה שני שדות מסוג RECORD: author ו-committer. במדריך הזה, התצוגה המורשית לא כוללת את כל נתוני המחבר, חוץ מהשם שלו, והיא לא כוללת את כל נתוני מבצע השינוי, חוץ מהשם שלו.

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

המסוף

  1. נכנסים לדף BigQuery.

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את השאילתה הבאה.

    SELECT
    commit,
    author.name AS author,
    committer.name AS committer,
    repo_name
    FROM
    `PROJECT_ID.github_source_data.github_contributors`;

    מחליפים את PROJECT_ID במזהה הפרויקט.

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

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

    1. מוודאים שהפרויקט שלכם נבחר בשדה Project.

    2. בשדה Dataset, מזינים shared_views.

    3. בשדה Table, מזינים github_analyst_view.

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

SQL

משתמשים בהצהרת ה-DDL‏ CREATE VIEW:

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

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    CREATE VIEW shared_views.github_analyst_view
    AS (
      SELECT
        commit,
        author.name AS author,
        committer.name AS committer,
        repo_name
      FROM
        `PROJECT_ID.github_source_data.github_contributors`
    );

    מחליפים את PROJECT_ID במזהה הפרויקט.

  3. לוחצים על הפעלה.

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

Java

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

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

// Create the view in the new dataset
String viewQuery =
    String.format(
        "SELECT commit, author.name as author, committer.name as committer, repo_name FROM %s.%s.%s",
        projectId, sourceDatasetId, sourceTableId);

ViewDefinition viewDefinition = ViewDefinition.of(viewQuery);

Table view =
    bigquery.create(TableInfo.of(TableId.of(sharedDatasetId, sharedViewId), viewDefinition));

Python

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

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

shared_view_id = "github_analyst_view"
view = bigquery.Table(shared_dataset.table(shared_view_id))
sql_template = """
    SELECT
        commit, author.name as author,
        committer.name as committer, repo_name
    FROM
        `{}.{}.{}`
"""
view.view_query = sql_template.format(
    client.project, source_dataset_id, source_table_id
)
view = client.create_table(view)  # API request

מתן הרשאה למנתחי הנתונים להריץ משימות של שאילתות

כדי לשלוח שאילתות לתצוגה, מנתחי הנתונים צריכים את ההרשאה bigquery.jobs.create כדי שיוכלו להריץ משימות של שאילתות. ההרשאה הזו נדרשת רק בפרויקט שבו פועלת משימת השאילתה (הפרויקט לחיוב או הפרויקט להרצה), שיכול להיות שונה מהפרויקט שמכיל את התצוגה.

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

כדי להקצות לקבוצת מנתחי הנתונים את התפקיד bigquery.user בפרויקט שבו הם משתמשים להרצת המשימות:

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

    כניסה לדף IAM

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

  3. לוחצים על Grant access.

  4. בתיבת הדו-שיח Grant access to:

    1. בשדה New principals, מזינים את הקבוצה שמכילה את מנתחי הנתונים. לדוגמה, data_analysts@example.com.

    2. בשדה Select a role, מחפשים את התפקיד BigQuery User ובוחרים אותו.

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

מתן הרשאה למנתחי הנתונים להריץ שאילתות על התצוגה המורשית

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

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

כדי לתת למנתחי הנתונים bigquery.dataViewer גישה לקבוצת הנתונים שמכילה את התצוגה המורשית:

המסוף

  1. נכנסים לדף BigQuery.

    כניסה ל-BigQuery

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

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

  3. בחלונית Explorer, לוחצים על Datasets ובוחרים את קבוצת הנתונים shared_views כדי לפתוח את הכרטיסייה Details.

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

  5. בחלונית Share permissions, לוחצים על Add principal.

  6. בשדה New principals, מזינים את הקבוצה שמכילה את מנתחי הנתונים, לדוגמה data_analysts@example.com.

  7. לוחצים על Select a role ובוחרים באפשרות BigQuery > BigQuery Data Viewer.

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

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

Java

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

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

// Assign access controls to the dataset containing the view
List<Acl> viewAcl = new ArrayList<>(sharedDataset.getAcl());
viewAcl.add(Acl.of(new Acl.Group("example-analyst-group@google.com"), Acl.Role.READER));
sharedDataset.toBuilder().setAcl(viewAcl).build().update();

Python

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

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

# analyst_group_email = 'data_analysts@example.com'
access_entries = shared_dataset.access_entries
access_entries.append(
    bigquery.AccessEntry("READER", EntityTypes.GROUP_BY_EMAIL, analyst_group_email)
)
shared_dataset.access_entries = access_entries
shared_dataset = client.update_dataset(
    shared_dataset, ["access_entries"]
)  # API request

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

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

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

המסוף

  1. נכנסים לדף BigQuery.

    כניסה ל-BigQuery

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

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

  3. בחלונית Explorer, לוחצים על Datasets ובוחרים את קבוצת הנתונים github_source_data כדי לפתוח את הכרטיסייה Details.

  4. לוחצים על שיתוף > הרשאת תצוגות.

  5. בחלונית Authorized views, בשדה Authorized view מזינים את הערך PROJECT_ID.shared_views.github_analyst_view.

    מחליפים את PROJECT_ID במזהה הפרויקט.

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

Java

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

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

// Authorize the view to access the source dataset
List<Acl> srcAcl = new ArrayList<>(sourceDataset.getAcl());
srcAcl.add(Acl.of(new Acl.View(view.getTableId())));
sourceDataset.toBuilder().setAcl(srcAcl).build().update();

Python

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

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

access_entries = source_dataset.access_entries
access_entries.append(
    bigquery.AccessEntry(None, EntityTypes.VIEW, view.reference.to_api_repr())
)
source_dataset.access_entries = access_entries
source_dataset = client.update_dataset(
    source_dataset, ["access_entries"]
)  # API request

אימות ההגדרות האישיות

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

כדי לאמת את ההגדרה, מנתח נתונים צריך להריץ את השאילתה הבאה:

  1. נכנסים לדף BigQuery.

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    SELECT
      *
    FROM
      `PROJECT_ID.shared_views.github_analyst_view`;

    מחליפים את PROJECT_ID במזהה הפרויקט.

  3. לוחצים על הפעלה.

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

תוצאות השאילתה אחרי שליחת שאילתה לתצוגה המורשית

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

קוד מקור מלא

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

Java

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

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

// Create a source dataset to store your table.
Dataset sourceDataset = bigquery.create(DatasetInfo.of(sourceDatasetId));

// Populate a source table
String tableQuery =
    "SELECT commit, author, committer, repo_name"
        + " FROM `bigquery-public-data.github_repos.commits`"
        + " LIMIT 1000";
QueryJobConfiguration queryConfig =
    QueryJobConfiguration.newBuilder(tableQuery)
        .setDestinationTable(TableId.of(sourceDatasetId, sourceTableId))
        .build();
bigquery.query(queryConfig);

// Create a separate dataset to store your view
Dataset sharedDataset = bigquery.create(DatasetInfo.of(sharedDatasetId));

// Create the view in the new dataset
String viewQuery =
    String.format(
        "SELECT commit, author.name as author, committer.name as committer, repo_name FROM %s.%s.%s",
        projectId, sourceDatasetId, sourceTableId);

ViewDefinition viewDefinition = ViewDefinition.of(viewQuery);

Table view =
    bigquery.create(TableInfo.of(TableId.of(sharedDatasetId, sharedViewId), viewDefinition));

// Assign access controls< to> the dataset containing <>the view
ListAcl viewAcl = new ArrayList(sharedDataset.getAcl());
viewAcl.add(Acl.of(new Acl.Group("example-analyst-group@google.com"), Acl.Role.READER));
sharedDataset.toBuilder().setAcl(viewAcl).build().update();

// Au<tho>rize the view to access<> the source dataset
ListAcl srcAcl = new ArrayList(sourceDataset.getAcl());
srcAcl.add(Acl.of(new Acl.View(view.getTableId())));
sourceDataset.toBuilder().setAcl(srcAcl).build().update();

Python

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

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

# Create a source dataset
from google.cloud import bigquery
from google.cloud.bigquery.enums import EntityTypes

client = bigquery.Client()
source_dataset_id = "github_source_data"
source_dataset_id_full = "{}.{}".format(client.project, source_dataset_id)


source_dataset = bigquery.Dataset(source_dataset_id_full)
# Specify the geographic location where the dataset should reside.
source_dataset.location = "US&quot;
source_dataset = client.create_dataset(source_dataset)  # API request

# Populate a source table
source_table_id = ";github_contributors&quot;
job_config = bigquery.QueryJobConfig()
job_config.destination = source_dataset.table(source_table_id)
sql = """
    SELECT commit, author, committer, repo_name
    FROM `bigquery-public-data.github_repos.commits`
    LIMIT 1000
"""
client.query_and_wait(
    sql,
    # Location must match that of the dataset(s) referenced in the query
    # and of the destination table.
    location="US",
    job_config=job_config,
)  # API request - starts the query and waits for query to finish

# Create a separate dataset to store your view
shared_dataset_id = "shared_views"
shared_dataset_id_full = "{}.{}".format(client.project, shared_dataset_id)


shared_dataset = bigquery.Dataset(shared_dataset_id_full)
shared_dataset.location = "US"
shared_dataset = client.create_dataset(shared_dataset)  # API request

# Create the view in the new dataset
shared_view_id = "github_analyst_view"
view = bigquery.Table(shared_dataset.table(shared_view_id))
sql_template = ""&quot;
    SELECT
        commit, author.name as author,
        committer.name as committer, repo_name
    FROM
        `{}.{}.{}`
"""
view.view_query = sql_template.format(
    client.project, source_dataset_id, source_table_id
)
view = client.create_table(view)  # API request

# Assign access controls to the dataset containing the view
# analyst_group_email = 'data_analysts@example.com'
access_entries = shared_dataset.access_entries
access_entries.append(
    bigquery.AccessEntry("READER", EntityTypes.GROUP_BY_EMAIL, analyst_group_email)
)
shared_dataset.access_entries = access_entries
shared_dataset = client.update_dataset(
    shared_dataset, [&quot;access_entries"]
)  # API request

# Authorize the view to access the source dataset
access_entries = source_dataset.access_entries
access_entries.append(
    bigquery.AccessEntry(None, EntityTypes.VIEW, view.reference.to_api_repr())
)
source_dataset.access_entries = access_entries
source_dataset = client.update_dataset(
    source_dataset, ["access_entries"]
)  # API request

הסרת המשאבים

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

מחיקת הפרויקט

המסוף

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

gcloud

    כדי למחוק פרויקט ב- Google Cloud :

    gcloud projects delete PROJECT_ID

מחיקת משאבים ספציפיים

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

  1. מחיקת התצוגה המורשית.

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

  3. מוחקים את הטבלה במערך הנתונים המקורי.

  4. מוחקים את מערך הנתונים המקורי.

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

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