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

במאמר הזה מוסבר איך להעתיק טבלה לשיבוט טבלה באמצעות הצהרת 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. במסוף Google Cloud , עוברים לדף 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 הוא השם של שיבוט הטבלה שאתם יוצרים.

בקרת גישה

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

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

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

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

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