ניהול מערכי נתונים

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

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

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

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

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

העתקת מערך נתונים

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

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

  • אדמין של BigQuery‏ (roles/bigquery.admin) – פרויקט היעד
  • צפייה בנתוני BigQuery‏ (roles/bigquery.dataViewer) – מערך הנתונים של המקור
  • עריכה של נתוני BigQuery‏ (roles/bigquery.dataEditor) – מערך הנתונים של היעד

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

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

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

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

  • bigquery.transfers.update בפרויקט היעד
  • bigquery.jobs.create בפרויקט היעד
  • bigquery.datasets.get במערך נתוני המקור והיעד
  • bigquery.tables.list במערך נתוני המקור והיעד
  • bigquery.datasets.update במערך נתוני היעד
  • bigquery.tables.create במערך נתוני היעד

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

מחיקה של מערך נתונים

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

כדי לקבל את ההרשאות שנדרשות למחיקת מערכי נתונים, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד הבעלים של נתוני BigQuery (roles/bigquery.dataOwner) בפרויקט. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

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

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

  • bigquery.datasets.delete בפרויקט
  • bigquery.tables.delete בפרויקט

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

העתקת מערכי נתונים

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

לכל הגדרה של העתקת מערך נתונים יכולה להיות הפעלה אחת של העברה בכל פעם. ריצות העברה נוספות מתווספות לתור. אם אתם משתמשים במסוף Cloud de Confiance , אתם יכולים לתזמן העתקות חוזרות ולהגדיר הודעות באימייל או ב-Pub/Sub באמצעות שירות העברת הנתונים ל-BigQuery.

מגבלות

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

  • אי אפשר להעתיק את המשאבים הבאים ממערך נתוני מקור:

    • צפיות.
    • שגרות, כולל פונקציות מוגדרות על ידי המשתמש (UDF).
    • טבלאות חיצוניות.
    • טבלאות של סימון נתונים שהשתנו (CDC) אם עבודת ההעתקה מתבצעת בין אזורים. יש תמיכה בהעתקה של טבלאות CDC באותו אזור.
    • לא ניתן להשתמש במשימת העתקה של טבלה בין אזורים עבור טבלאות שמוצפנות באמצעות מפתחות הצפנה בניהול הלקוח (CMEK), אם מערך הנתונים של היעד לא מוצפן באמצעות CMEK ולא סופק CMEK. אפשר להעתיק טבלאות עם הצפנה כברירת מחדל בין אזורים.

      אפשר להעתיק את כל הטבלאות המוצפנות באותו אזור, כולל טבלאות שהוצפנו באמצעות CMEK.

  • אי אפשר להשתמש במקורות המידע הבאים כערכות נתונים ליעד של עבודות העתקה:

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

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

  • התדירות המינימלית בין עבודות העתקה היא 12 שעות.

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

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

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

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

  • העתקה של מערך נתונים לא נתמכת באזורי BigQuery Omni.

  • כדי להעתיק קבוצת נתונים לפרויקט בגבולות גזרה לשירות אחר של VPC Service Controls, צריך להגדיר את כללי התעבורה היוצאת הבאים:

    • בהגדרת גבולות הגזרה לשירות של VPC Service Controls בפרויקט היעד, ל-IAM principal צריכות להיות ה-methods הבאות:

      • bigquery.datasets.get
      • bigquery.tables.list
      • bigquery.tables.get,
      • bigquery.tables.getData
    • בהגדרות של גבולות הגזרה לשירות ב-VPC Service Controls בפרויקט המקור, שיטת ההגדרה של נציג ה-IAM שבו נעשה שימוש צריכה להיות All Methods.

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

    Cannot modify restricted parameters without taking ownership of the transfer configuration.

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

    הפרמטרים שהבעלים הגביל לגבי עותקים של מערכי נתונים הם:

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

העתקת מערך נתונים

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

המסוף

  1. מפעילים את שירות העברת הנתונים ל-BigQuery למערך הנתונים של היעד.

    הפעלת ממשק ה-API של שירות העברת נתונים ל-BigQuery

  2. ודאו שיש לכם את התפקידים הנדרשים.

    אם אתם מתכוונים להגדיר התראות על הפעלת העברה ל-Pub/Sub (אפשרות 2 בהמשך השלבים האלה), אתם צריכים את ההרשאה pubsub.topics.setIamPolicy.

    אם הגדרתם רק התראות באימייל, לא נדרשות הרשאות Pub/Sub. מידע נוסף זמין במאמר בנושא הפעלת התראות בשירות העברת נתונים ל-BigQuery.

  3. יוצרים מערך נתונים ב-BigQuery באותו אזור או באזור אחר ממערך הנתונים של המקור.

אפשרות 1: שימוש בפונקציית ההעתקה של BigQuery

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

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

    כניסה ל-BigQuery

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

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

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

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

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

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

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

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

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

    3. כדי להעתיק את מערך הנתונים, לוחצים על Copy (העתקה).

אפשרות 2: שימוש בשירות העברת נתונים ל-BigQuery

כדי לתזמן העתקות חוזרות ולהגדיר התראות באימייל או ב-Pub/Sub, משתמשים בשירות העברת הנתונים ל-BigQuery במסוף של פרויקט היעד: Cloud de Confiance

  1. עוברים לדף העברות נתונים.

    מעבר אל 'העברות נתונים'

  2. לוחצים על יצירת העברה.

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

  4. בשדה שם תצוגה, מזינים שם להרצת ההעברה.

  5. בקטע Schedule options:

    1. בקטע תדירות החזרה, בוחרים אפשרות לתדירות ההפעלה של ההעברה:

      אם בוחרים באפשרות בהתאמה אישית, מזינים תדירות מותאמת אישית – לדוגמה, every day 00:00. מידע נוסף מופיע במאמר בנושא עיצוב לוח הזמנים.

    2. בשדה תאריך ושעת ההתחלה של ההרצה, מזינים את התאריך והשעה שבהם רוצים להתחיל את ההעברה. אם בוחרים באפשרות Start now (התחלה מיידית), האפשרות הזו מושבתת.

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

  7. בקטע פרטי מקור הנתונים, מזינים את הפרטים הבאים:

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

  9. בתפריט Service Account, בוחרים חשבון שירות מתוך חשבונות השירות שמשויכים לCloud de Confiance פרויקט. אפשר לשייך חשבון שירות להעברה במקום להשתמש בפרטי הכניסה של המשתמש. מידע נוסף על שימוש בחשבונות שירות בהעברות נתונים זמין במאמר שימוש בחשבונות שירות.

  10. אופציונלי: בקטע אפשרויות התראות, מבצעים את הפעולות הבאות:

    • כדי להפעיל התראות באימייל, לוחצים על המתג. אם מפעילים את האפשרות הזו, הבעלים של הגדרת ההעברה מקבלים התראה באימייל כשהרצת ההעברה נכשלת.
    • כדי להפעיל התראות Pub/Sub, לוחצים על המתג ואז בוחרים שם של נושא מהרשימה או לוחצים על יצירת נושא. באמצעות האפשרות הזו אפשר להגדיר התראות על הפעלת Pub/Sub להעברה.
  11. לוחצים על Save.

BQ

  1. מפעילים את שירות העברת הנתונים ל-BigQuery למערך הנתונים של היעד.

  2. ודאו שיש לכם את התפקידים הנדרשים.

  3. כדי ליצור מערך נתונים ב-BigQuery, משתמשים בפקודה bq mk עם הדגל ליצירת מערך נתונים --dataset והדגל location:

    bq mk \
      --dataset \
      --location=LOCATION \
      PROJECT:DATASET

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

    • LOCATION: המיקום שאליו רוצים להעתיק את מערך הנתונים
    • PROJECT: מזהה הפרויקט של מערך הנתונים של היעד
    • DATASET: השם של מערך הנתונים של היעד
  4. כדי להעתיק קבוצת נתונים, משתמשים בפקודה bq mk עם דגל יצירת ההעברה --transfer_config והדגל --data_source. צריך להגדיר את הדגל --data_source לערך cross_region_copy. רשימה מלאה של ערכים תקפים לדגל --data_source זמינה במאמר דגלים של transfer-config בהפניה לכלי שורת הפקודה של BigQuery.

    bq mk \
      --transfer_config \
      --project_id=PROJECT \
      --data_source=cross_region_copy \
      --target_dataset=DATASET \
      --display_name=NAME \
     --service_account_name=SERCICE_ACCOUNT \
      --params='PARAMETERS'

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

    • NAME: השם המוצג של עבודת ההעתקה או של הגדרות ההעברה

    • SERVICE_ACCOUNT: השם של חשבון השירות שמשמש לאימות ההעברה. חשבון השירות צריך להיות בבעלות אותו project_id ששימש ליצירת ההעברה, וצריכות להיות לו כל ההרשאות הנדרשות.

    • PARAMETERS: הפרמטרים של הגדרות ההעברה בפורמט JSON

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

      • source_dataset_id: המזהה של מערך נתוני המקור שרוצים להעתיק
      • source_project_id: מזהה הפרויקט שבו נמצא מערך הנתונים של המקור
      • overwrite_destination_table: דגל אופציונלי שמאפשר לחתוך את הטבלאות של עותק קודם ולרענן את כל הנתונים

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

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

    • Linux: משתמשים במירכאות בודדות כדי לתחום את מחרוזת ה-JSON – לדוגמה:

      '{"source_dataset_id":"mydataset","source_project_id":"mysourceproject","overwrite_destination_table":"true"}'
      
    • שורת הפקודה של Windows: משתמשים במירכאות כפולות כדי להקיף את מחרוזת ה-JSON, ומסמנים בתו בריחה (escape) את המירכאות הכפולות במחרוזת באמצעות קו נטוי הפוך – לדוגמה:

      "{\"source_dataset_id\":\"mydataset\",\"source_project_id\":\"mysourceproject\",\"overwrite_destination_table\":\"true\"}"
      
    • PowerShell: משתמשים בגרש כדי לתחום את מחרוזת ה-JSON, ומסמנים בתו בריחה (escape) את המירכאות הכפולות במחרוזת באמצעות קו נטוי הפוך – לדוגמה:

      '{\"source_dataset_id\":\"mydataset\",\"source_project_id\":\"mysourceproject\",\"overwrite_destination_table\":\"true\"}'
      

    לדוגמה, הפקודה הבאה יוצרת הגדרת העתקה של מערך נתונים בשם My Transfer עם מערך נתונים יעד בשם mydataset ופרויקט עם מזהה myproject.

    bq mk \
      --transfer_config \
      --project_id=myproject \
      --data_source=cross_region_copy \
      --target_dataset=mydataset \
      --display_name='My Transfer' \
      --params='{
          "source_dataset_id":"123_demo_eu",
          "source_project_id":"mysourceproject",
          "overwrite_destination_table":"true"
          }'

API

  1. מפעילים את שירות העברת הנתונים ל-BigQuery למערך הנתונים של היעד.

  2. ודאו שיש לכם את התפקידים הנדרשים.

  3. כדי ליצור מערך נתונים ב-BigQuery, קוראים לשיטה datasets.insert עם משאב מוגדר של מערך נתונים.

  4. כדי להעתיק מערך נתונים, משתמשים בשיטה projects.locations.transferConfigs.create ומספקים מופע של המשאב TransferConfig.

Java

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

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

לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

// Sample to copy dataset from another gcp project
public class CopyDataset {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String destinationProjectId = "MY_DESTINATION_PROJECT_ID";
    final String destinationDatasetId = "MY_DESTINATION_DATASET_ID";
    final String sourceProjectId = "MY_SOURCE_PROJECT_ID";
    final String sourceDatasetId = "MY_SOURCE_DATASET_ID";
    Map<String, Value> params = new HashMap<>();
    params.put("source_project_id", Value.newBuilder().setStringValue(sourceProjectId).build());
    params.put("source_dataset_id", Value.newBuilder().setStringValue(sourceDatasetId).build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(destinationDatasetId)
            .setDisplayName("Your Dataset Copy Name")
            .setDataSourceId("cross_region_copy")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .setSchedule("every 24 hours")
            .build();
    copyDataset(destinationProjectId, transferConfig);
  }

  public static void copyDataset(String projectId, TransferConfig transferConfig)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      CreateTransferConfigRequest request =
          CreateTransferConfigRequest.newBuilder()
              .setParent(parent.toString())
              .setTransferConfig(transferConfig)
              .build();
      TransferConfig config = dataTransferServiceClient.createTransferConfig(request);
      System.out.println("Copy dataset created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("Copy dataset was not created." + ex.toString());
    }
  }
}

Python

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

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

לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.

מתקינים את לקוח Python עבור BigQuery Data Transfer API באמצעות pip install google-cloud-bigquery-datatransfer. לאחר מכן, יוצרים הגדרת העברה כדי להעתיק את מערך הנתונים.
from google.cloud import bigquery_datatransfer

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

destination_project_id = "my-destination-project"
destination_dataset_id = "my_destination_dataset"
source_project_id = "my-source-project"
source_dataset_id = "my_source_dataset"
transfer_config = bigquery_datatransfer.TransferConfig(
    destination_dataset_id=destination_dataset_id,
    display_name="Your Dataset Copy Name",
    data_source_id="cross_region_copy",
    params={
        "source_project_id": source_project_id,
        "source_dataset_id": source_dataset_id,
    },
    schedule="every 24 hours",
)
transfer_config = transfer_client.create_transfer_config(
    parent=transfer_client.common_project_path(destination_project_id),
    transfer_config=transfer_config,
)
print(f"Created transfer config: {transfer_config.name}")

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

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

כדי לראות את הסטטוס ואת הפרטים של עבודת העתקה של מערך נתונים במסוףCloud de Confiance :

  1. נכנסים לדף Data transfers במסוף Cloud de Confiance .

    מעבר אל 'העברות נתונים'

  2. בוחרים העברה שרוצים לראות את הפרטים שלה, ואז מבצעים את הפעולות הבאות:

    1. בדף פרטי ההעברה, בוחרים בהרצת העברה.

    2. כדי לרענן, לוחצים על רענון.

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

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

  1. מייצאים את הנתונים מטבלאות BigQuery לקטגוריה של Cloud Storage.

    אין חיובים על ייצוא נתונים מ-BigQuery, אבל יש חיובים על אחסון הנתונים המיוצאים ב-Cloud Storage. הייצוא ל-BigQuery כפוף למגבלות על משימות חילוץ.

  2. מעתיקים או מעבירים את הנתונים מקטגוריית Cloud Storage של הייצוא לקטגוריה חדשה שיצרתם במיקום היעד. לדוגמה, אם אתם מעבירים את הנתונים מUS אזור מרובה לאזור asia-northeast1 טוקיו, תעבירו את הנתונים לקטגוריה שיצרתם בטוקיו. מידע על העברת אובייקטים ב-Cloud Storage זמין במאמר העתקה, שינוי שם והעברה של אובייקטים במסמכי Cloud Storage.

    העברת נתונים בין אזורים כרוכה בחיובים על תעבורת נתונים יוצאת (egress) ברשת ב-Cloud Storage.

  3. יוצרים מערך נתונים חדש ב-BigQuery במיקום החדש, ואז טוענים את הנתונים ממאגר Cloud Storage למערך הנתונים החדש.

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

אפשר גם להשתמש ב- Managed Service for Apache Airflow כדי להעביר ולהעתיק מערכי נתונים גדולים באופן פרוגרמטי.

למידע נוסף על שימוש ב-Cloud Storage לאחסון ולהעברה של מערכי נתונים גדולים, אפשר לעיין במאמר בנושא שימוש ב-Cloud Storage עם Big Data.

אבטחת מערכי נתונים

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

מחיקה של מערכי נתונים

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

אם מנסים למחוק מערך נתונים לא ריק בלי הדגלים או הפרמטרים המתאימים, הפעולה נכשלת ומוצגת השגיאה הבאה: Dataset project:dataset is still in use.

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

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

המסוף

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

    כניסה ל-BigQuery

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

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

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

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

  5. בתיבת הדו-שיח מחיקת מערך נתונים, מקלידים delete בשדה ולוחצים על מחיקה.

SQL

כדי למחוק קבוצת נתונים, משתמשים בהצהרת DDL‏ DROP SCHEMA.

בדוגמה הבאה נמחקת קבוצת נתונים בשם mydataset:

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

    כניסה ל-BigQuery

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

    DROP SCHEMA IF EXISTS mydataset;

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

    DROP SCHEMA IF EXISTS mydataset CASCADE;

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

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

BQ

משתמשים בפקודה bq rm עם הדגל --dataset או -d (אופציונלי). אם מערך הנתונים מכיל טבלאות, צריך להשתמש בדגל -r כדי להסיר את כל הטבלאות במערך הנתונים. אם משתמשים בדגל -r, אפשר להשמיט את הדגל --dataset או -d.

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

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

bq rm -r -f -d PROJECT_ID:DATASET

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

  • PROJECT_ID: מזהה הפרויקט
  • DATASET: השם של מערך הנתונים שרוצים למחוק

לדוגמה:

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

bq rm -r -d mydataset

כשמופיעה בקשה, כותבים y ומקישים על Enter.

מזינים את הפקודה הבאה כדי להסיר את mydataset ואת כל הטבלאות שבו מ-myotherproject. בפקודה לא נעשה שימוש בדגל האופציונלי -d. הדגל -f משמש לדילוג על האישור.

bq rm -r -f myotherproject:mydataset

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

API

קוראים לשיטה datasets.delete כדי למחוק את מערך הנתונים, ומגדירים את הפרמטר deleteContents לערך true כדי למחוק את הטבלאות שבו.

C#‎

בדוגמת הקוד הבאה מוצג איך מוחקים מערך נתונים ריק.

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

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

לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.

מתקינים את לקוח Python עבור BigQuery Data Transfer API באמצעות pip install google-cloud-bigquery-datatransfer. לאחר מכן, יוצרים הגדרת העברה כדי להעתיק את מערך הנתונים.

using Google.Cloud.BigQuery.V2;
using System;

public class BigQueryDeleteDataset
{
    public void DeleteDataset(
        string projectId = "your-project-id",
        string datasetId = "your_empty_dataset"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        // Delete a dataset that does not contain any tables
        client.DeleteDataset(datasetId: datasetId);
        Console.WriteLine($"Dataset {datasetId} deleted.");
    }
}

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

// Copyright(c) 2018 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
//

using Google.Cloud.BigQuery.V2;
using System;

public class BigQueryDeleteDatasetAndContents
{
    public void DeleteDatasetAndContents(
        string projectId = "your-project-id",
        string datasetId = "your_dataset_with_tables"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        // Use the DeleteDatasetOptions to delete a dataset and its contents
        client.DeleteDataset(
            datasetId: datasetId,
            options: new DeleteDatasetOptions() { DeleteContents = true }
        );
        Console.WriteLine($"Dataset {datasetId} and contents deleted.");
    }
}

המשך

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

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

לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.

מתקינים את לקוח Python עבור BigQuery Data Transfer API באמצעות pip install google-cloud-bigquery-datatransfer. לאחר מכן, יוצרים הגדרת העברה כדי להעתיק את מערך הנתונים.
import (
	"context"
	"fmt"

	"cloud.google.com/go/bigquery"
)

// deleteDataset demonstrates the deletion of an empty dataset.
func deleteDataset(projectID, datasetID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	ctx := context.Background()

	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	// To recursively delete a dataset and contents, use DeleteWithContents.
	if err := client.Dataset(datasetID).Delete(ctx); err != nil {
		return fmt.Errorf("Delete: %v", err)
	}
	return nil
}

Java

בדוגמת הקוד הבאה מוצג איך מוחקים מערך נתונים ריק.

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

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

לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.

מתקינים את לקוח Python עבור BigQuery Data Transfer API באמצעות pip install google-cloud-bigquery-datatransfer. לאחר מכן, יוצרים הגדרת העברה כדי להעתיק את מערך הנתונים.
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQuery.DatasetDeleteOption;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.DatasetId;

public class DeleteDataset {

  public static void runDeleteDataset() {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String datasetName = "MY_DATASET_NAME";
    deleteDataset(projectId, datasetName);
  }

  public static void deleteDataset(String projectId, String datasetName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      DatasetId datasetId = DatasetId.of(projectId, datasetName);
      boolean success = bigquery.delete(datasetId, DatasetDeleteOption.deleteContents());
      if (success) {
        System.out.println("Dataset deleted successfully");
      } else {
        System.out.println("Dataset was not found");
      }
    } catch (BigQueryException e) {
      System.out.println("Dataset was not deleted. \n" + e.toString());
    }
  }
}

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

/*
 * Copyright 2020 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.example.bigquery;

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.DatasetId;

// Sample to delete dataset with contents.
public class DeleteDatasetAndContents {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String datasetName = "MY_DATASET_NAME";
    deleteDatasetAndContents(projectId, datasetName);
  }

  public static void deleteDatasetAndContents(String projectId, String datasetName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      DatasetId datasetId = DatasetId.of(projectId, datasetName);
      // Use the force parameter to delete a dataset and its contents
      boolean success = bigquery.delete(datasetId, BigQuery.DatasetDeleteOption.deleteContents());
      if (success) {
        System.out.println("Dataset deleted with contents successfully");
      } else {
        System.out.println("Dataset was not found");
      }
    } catch (BigQueryException e) {
      System.out.println("Dataset was not deleted with contents. \n" + e.toString());
    }
  }
}

Node.js

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

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

לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.

מתקינים את לקוח Python עבור BigQuery Data Transfer API באמצעות pip install google-cloud-bigquery-datatransfer. לאחר מכן, יוצרים הגדרת העברה כדי להעתיק את מערך הנתונים.
// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function deleteDataset() {
  // Deletes a dataset named "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = 'my_dataset';

  // Create a reference to the existing dataset
  const dataset = bigquery.dataset(datasetId);

  // Delete the dataset and its contents
  await dataset.delete({force: true});
  console.log(`Dataset ${dataset.id} deleted.`);
}

PHP

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

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

לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.

מתקינים את לקוח Python עבור BigQuery Data Transfer API באמצעות pip install google-cloud-bigquery-datatransfer. לאחר מכן, יוצרים הגדרת העברה כדי להעתיק את מערך הנתונים.
use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $datasetId = 'The BigQuery dataset ID';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->delete();
printf('Deleted dataset %s' . PHP_EOL, $datasetId);

Python

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

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

לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.

מתקינים את לקוח Python עבור BigQuery Data Transfer API באמצעות pip install google-cloud-bigquery-datatransfer. לאחר מכן, יוצרים הגדרת העברה כדי להעתיק את מערך הנתונים.

from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set model_id to the ID of the model to fetch.
# dataset_id = 'your-project.your_dataset'

# Use the delete_contents parameter to delete a dataset and its contents.
# Use the not_found_ok parameter to not receive an error if the dataset has already been deleted.
client.delete_dataset(
    dataset_id, delete_contents=True, not_found_ok=True
)  # Make an API request.

print("Deleted dataset '{}'.".format(dataset_id))

Ruby

בדוגמת הקוד הבאה מוצג איך מוחקים מערך נתונים ריק.

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

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

לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.

מתקינים את לקוח Python עבור BigQuery Data Transfer API באמצעות pip install google-cloud-bigquery-datatransfer. לאחר מכן, יוצרים הגדרת העברה כדי להעתיק את מערך הנתונים.
require "google/cloud/bigquery"

def delete_dataset dataset_id = "my_empty_dataset"
  bigquery = Google::Cloud::Bigquery.new

  # Delete a dataset that does not contain any tables
  dataset = bigquery.dataset dataset_id
  dataset.delete
  puts "Dataset #{dataset_id} deleted."
end

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

# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
require "google/cloud/bigquery"

def delete_dataset_and_contents dataset_id = "my_dataset_with_tables"
  bigquery = Google::Cloud::Bigquery.new

  # Use the force parameter to delete a dataset and its contents
  dataset = bigquery.dataset dataset_id
  dataset.delete force: true
  puts "Dataset #{dataset_id} and contents deleted."
end

שחזור טבלאות ממערכי נתונים שנמחקו

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

  1. יוצרים מערך נתונים עם אותו שם ובאותו מיקום כמו המערך המקורי.
  2. בוחרים חותמת זמן מלפני המחיקה של מערך הנתונים המקורי בפורמט של אלפיות השנייה מאז ראשית זמן יוניקס (Unix epoch) – לדוגמה, 1418864998000.
  3. מעתיקים את הטבלה originaldataset.table1 בשעה 1418864998000 למערך הנתונים החדש:

    bq cp originaldataset.table1@1418864998000 mydataset.mytable
    

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

שחזור של מערכי נתונים שנמחקו

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

מכסות

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

תמחור

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

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

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