יצירת שיבוטים של טבלאות

במאמר הזה מוסבר איך להעתיק טבלה לשיבוט טבלה באמצעות הצהרת SQL של CREATE TABLE CLONE, פקודה של bq cp או קריאה ל-API של jobs.insert. המסמך הזה מיועד למשתמשים שמכירים את השיבוטים של הטבלאות.

הרשאות ותפקידים

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

הרשאות

כדי ליצור שיבוט של טבלה, צריך את ההרשאות הבאות:

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

bigquery.tables.get
bigquery.tables.getData
הטבלה שרוצים לשכפל.
bigquery.tables.create
bigquery.tables.updateData
מערך הנתונים שמכיל את שיבוט הטבלה.

תפקידים

התפקידים המוגדרים מראש ב-BigQuery שכוללים את ההרשאות הנדרשות הם:

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

bigquery.dataViewer
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
הטבלה שרוצים לשכפל.
אחת מהאפשרויות הבאות:

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
מערך הנתונים שמכיל את השיבוט החדש של הטבלה.

יצירת שיבוט של טבלה

כדי ליצור שיבוט של טבלה, משתמשים ב-GoogleSQL, בכלי שורת הפקודה של BigQuery או ב-BigQuery API.

SQL

כדי לשכפל טבלה, משתמשים בפקודה CREATE TABLE CLONE.

  1. במסוף Cloud de Confiance , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

    CREATE TABLE
    myproject.myDataset_backup.myTableClone
    CLONE myproject.myDataset.myTable;

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

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

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT הוא מזהה הפרויקט של פרויקט היעד. הפרויקט הזה צריך להיות באותו ארגון כמו הפרויקט שמכיל את הטבלה שאתם משכפלים.
  • DATASET הוא השם של קבוצת נתוני היעד. מערך הנתונים הזה צריך להיות באותו אזור שבו נמצא מערך הנתונים שמכיל את הטבלה שמשכפלים.
  • CLONE_NAME הוא שם השיבוט של הטבלה שאתם יוצרים.

BQ

משתמשים בפקודה bq cp עם הדגל --clone:

כניסה ל-Cloud Shell

bq cp --clone --no_clobber project1:myDataset.myTable PROJECT:DATASET.CLONE_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT הוא מזהה הפרויקט של פרויקט היעד. הפרויקט הזה צריך להיות באותו ארגון שבו נמצא הפרויקט שמכיל את הטבלה שאתם משכפלים.
  • DATASET הוא השם של קבוצת נתוני היעד. מערך הנתונים הזה צריך להיות באותו אזור שבו נמצא מערך הנתונים שמכיל את הטבלה שמשכפלים. אם מערך הנתונים לא נמצא באותו אזור כמו מערך הנתונים שמכיל את הטבלה שאתם משכפלים, הטבלה כולה תועתק.
  • CLONE_NAME הוא שם השיבוט של הטבלה שאתם יוצרים.

חובה להשתמש בדגל --no_clobber.

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

bq cp --clone --no_clobber myDataset.myTable DATASET.CLONE_NAME

API

מבצעים קריאה ל-jobs.insert עם השדה operationType שמוגדר ל-CLONE:

פרמטר ערך
projectId מזהה הפרויקט שבו מופעלת העבודה.
גוף הבקשה
{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "myProject",
          "datasetId": "myDataset",
          "tableId": "myTable"
        }
      ],
      "destinationTable": {
        "projectId": "PROJECT",
        "datasetId": "DATASET",
        "tableId": "CLONE_NAME"
      },
      "operationType": "CLONE",
      "writeDisposition": "WRITE_EMPTY",
    }
  }
}

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT הוא מזהה הפרויקט של פרויקט היעד. הפרויקט הזה צריך להיות באותו ארגון כמו הפרויקט שמכיל את הטבלה שאתם משכפלים.
  • DATASET הוא השם של קבוצת נתוני היעד. מערך הנתונים הזה צריך להיות באותו אזור שבו נמצא מערך הנתונים שמכיל את הטבלה שמשכפלים. אם מערך הנתונים לא נמצא באותו אזור כמו מערך הנתונים שמכיל את הטבלה שאתם משכפלים, הטבלה המלאה מועתקת.
  • CLONE_NAME הוא שם השיבוט של הטבלה שאתם יוצרים.

בקרת גישה

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

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

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

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

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