ניהול טבלאות מחולקות למחיצות

במאמר הזה מוסבר איך לנהל טבלאות מחולקות למחיצות ב-BigQuery.

אחזור מטא-נתונים של מחיצה

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

אחזור מטא-נתונים של מחיצות באמצעות תצוגות INFORMATION_SCHEMA

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

SELECT table_name, partition_id, total_rows
FROM `mydataset.INFORMATION_SCHEMA.PARTITIONS`
WHERE partition_id IS NOT NULL

מידע נוסף זמין במאמר INFORMATION_SCHEMA.PARTITIONS.

אחזור מטא-נתונים של מחיצות באמצעות טבלאות מטא

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

מריצים שאילתה על טבלת המטא __PARTITIONS_SUMMARY__ באופן הבא:

#legacySQL
SELECT
  column
FROM
  [dataset.table$__PARTITIONS_SUMMARY__]

טבלת המטא __PARTITIONS_SUMMARY__ כוללת את העמודות הבאות:

ערך תיאור
project_id שם הפרויקט.
dataset_id השם של מערך הנתונים.
table_id השם של הטבלה שמחולקת למחיצות לפי זמן.
partition_id השם (התאריך) של המחיצה.
creation_time השעה שבה המחיצה נוצרה, במילישניות מאז 1 בינואר 1970 לפי שעון UTC.
last_modified_time השעה שבה המחיצה שונתה בפעם האחרונה, באלפיות השנייה מאז 1 בינואר 1970 לפי שעון UTC.

כדי להריץ משימת שאילתה שמשתמשת בטבלת המטא __PARTITIONS_SUMMARY__, אתם צריכים לקבל לפחות את ההרשאות bigquery.jobs.create ו-bigquery.tables.getData.

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

הגדרת תפוגה של המחיצה

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

זמן התפוגה של מחיצה מחושב מהגבול של המחיצה לפי שעון UTC. לדוגמה, במחיצות יומיות, גבול המחיצה הוא בחצות (00:00:00 UTC). אם תוקף המחיצה בטבלה הוא 6 שעות, כל מחיצה תפוג בשעה 06:00:00 UTC ביום שלמחרת. כשמחיצה מסוימת מגיעה לתאריך התפוגה שלה, BigQuery מוחק את הנתונים במחיצה הזו.

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

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

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

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

עדכון תאריך התפוגה של המחיצה

כדי לעדכן את תוקף המחיצות של טבלה מחולקת למחיצות:

המסוף

אי אפשר לעדכן את תאריך התפוגה של המחיצה ב Google Cloud מסוף.

SQL

משתמשים בהצהרה ALTER TABLE SET OPTIONS. בדוגמה הבאה, תאריך התפוגה מתעדכן ל-5 ימים. כדי להסיר את תאריך התפוגה של מחיצה בטבלה, מגדירים את partition_expiration_days ל-NULL.

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

    כניסה ל-BigQuery

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

    ALTER TABLE mydataset.mytable
      SET OPTIONS (
        -- Sets partition expiration to 5 days
        partition_expiration_days = 5);

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

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

BQ

מריצים את הפקודה bq update עם הדגל --time_partitioning_expiration. אם אתם מעדכנים טבלה מחולקת למחיצות (Partitions) בפרויקט שאינו פרויקט ברירת המחדל שלכם, אתם צריכים להוסיף את מזהה הפרויקט לשם של מערך הנתונים בפורמט הבא: project_id:dataset.

bq update \
--time_partitioning_expiration integer_in_seconds \
--time_partitioning_type unit_time \
project_id:dataset.table

כאשר:

  • integer הוא משך החיים שמוגדר כברירת מחדל (בשניות) למחיצות של הטבלה. אין ערך מינימלי. זמן התפוגה מוערך לפי התאריך של המחיצה בתוספת הערך השלם. אם תציינו 0, תוקף המחיצה יוסר והמחיצה לא תפוג לעולם. צריך למחוק ידנית מחיצות ללא תאריך תפוגה.
  • unit_time הוא DAY,‏ HOUR,‏ MONTH או YEAR, בהתאם לרמת הפירוט של החלוקה למחיצות של הטבלה. הערך הזה צריך להיות זהה לגרנולריות שהגדרתם כשיצרתם את הטבלה.
  • project_id הוא מזהה הפרויקט.
  • dataset הוא שם מערך הנתונים שמכיל את הטבלה שאתם מעדכנים.
  • table הוא השם של הטבלה שאתם מעדכנים.

דוגמאות:

מזינים את הפקודה הבאה כדי לעדכן את תאריך התפוגה של המחיצות ב-mydataset.mytable ל-5 ימים (432000 שניות). ‫mydataset נמצא בפרויקט ברירת המחדל.

bq update --time_partitioning_expiration 432000 mydataset.mytable

מזינים את הפקודה הבאה כדי לעדכן את תאריך התפוגה של המחיצות ב-mydataset.mytable ל-5 ימים (432000 שניות). ‫mydataset נמצא ב-myotherproject, ולא בפרויקט ברירת המחדל.

bq update \
--time_partitioning_expiration 432000 \
myotherproject:mydataset.mytable

API

קוראים לשיטה tables.patch ומשתמשים במאפיין timePartitioning.expirationMs כדי לעדכן את תאריך התפוגה של המחיצה באלפיות השנייה. מומלץ להשתמש ב-method‏ tables.patch כי ה-method‏ tables.update מחליפה את כל משאב הטבלה.

הגדרת הדרישות למסנן מחיצה

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

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

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

Cannot query over table 'project_id.dataset.table' without a filter that can be used for partition elimination.

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

עדכון הדרישה של מסנן המחיצות

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

המסוף

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

SQL

כדי לעדכן את הדרישה לסינון מחיצות, משתמשים בהצהרת ALTER TABLE SET OPTIONS. בדוגמה הבאה, הדרישה מעודכנת ל-true:

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

    כניסה ל-BigQuery

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

    ALTER TABLE mydataset.mypartitionedtable
      SET OPTIONS (
        require_partition_filter = true);

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

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

BQ

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

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

לדוגמה:

כדי לעדכן את mypartitionedtable ב-mydataset בפרויקט ברירת המחדל, מזינים:

bq update --require_partition_filter mydataset.mytable

כדי לעדכן את mypartitionedtable ב-mydataset ב-myotherproject, מזינים:

bq update --require_partition_filter myotherproject:mydataset.mytable

API

מבצעים קריאה ל-method‏ tables.patch ומגדירים את המאפיין requirePartitionFilter לערך true כדי לדרוש מסנני מחיצות. מומלץ להשתמש בשיטה tables.patch כי השיטה tables.update מחליפה את כל משאב הטבלה.

Java

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

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

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

// Sample to update require partition filter on a table.
public class UpdateTableRequirePartitionFilter {

  public static void runUpdateTableRequirePartitionFilter() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    updateTableRequirePartitionFilter(datasetName, tableName);
  }

  public static void updateTableRequirePartitionFilter(String datasetName, String tableName) {
    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();

      Table table = bigquery.getTable(datasetName, tableName);
      table.toBuilder().setRequirePartitionFilter(true).build().update();

      System.out.println("Table require partition filter updated successfully");
    } catch (BigQueryException e) {
      System.out.println("Table require partition filter was not updated \n" + e.toString());
    }
  }
}

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

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

כשמעתיקים טבלה מחולקת למחיצות (Partitions), חשוב לשים לב לדברים הבאים:

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

    אם מעתיקים כמה טבלאות מקור לטבלה מחולקת למחיצות באותו ג'וב, טבלאות המקור לא יכולות להכיל שילוב של טבלאות מחולקות למחיצות וטבלאות שלא חולקו למחיצות.

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

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

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

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

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

העתקה של מחיצות נפרדות

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

המסוף

העתקת מחיצות אינה נתמכת על ידי המסוף Google Cloud .

BQ

כדי להעתיק מחיצה, משתמשים בפקודה bq cp (העתקה) של כלי שורת הפקודה bq עם מעצב מחיצה ($date), כמו $20160201.

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

  • -a או --append_table מוסיפים את הנתונים מהמחיצה של המקור לטבלה או למחיצה קיימת במערך הנתונים של היעד.
  • -f או --force מחליפים טבלה או מחיצה קיימת במערך הנתונים של היעד, ולא מוצגת בקשה לאישור.
  • הפונקציות -n או --no_clobber מחזירות את הודעת השגיאה הבאה אם הטבלה או המחיצה קיימות במערך הנתונים של היעד: Table '<var>project_id:dataset.table</var> or <var>table$date</var>' already exists, skipping. אם לא מציינים את -n, ברירת המחדל היא הצגת בקשה לבחור אם להחליף את טבלת היעד או המחיצה.
  • --destination_kms_key הוא מפתח Cloud KMS בניהול הלקוח שמשמש להצפנה של טבלת היעד או המחיצה.

הפקודה cp לא תומכת בדגלים --time_partitioning_field או --time_partitioning_type. אי אפשר להשתמש בעבודת העתקה כדי להמיר טבלה מחולקת למחיצות (Partitions) לפי זמני כתיבת הנתונים לטבלה מחולקת למחיצות.

השימוש ב---destination_kms_key לא מודגם כאן. מידע נוסף מופיע במאמר הגנה על נתונים באמצעות מפתחות Cloud KMS.

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

(אופציונלי) מציינים את הדגל --location ומגדירים את הערך למיקום.

bq --location=location cp \
-a -f -n \
project_id:dataset.source_table$source_partition \
project_id:dataset.destination_table$destination_partition

כאשר:

  • location הוא השם של המיקום. הדגל --location הוא אופציונלי. לדוגמה, אם אתם משתמשים ב-BigQuery באזור טוקיו, אתם יכולים להגדיר את הערך של הדגל ל-asia-northeast1. אפשר להגדיר ערך ברירת מחדל למיקום באמצעות הקובץ ‎.bigqueryrc.
  • project_id הוא מזהה הפרויקט.
  • dataset הוא השם של מערך הנתונים של המקור או היעד.
  • source_table היא הטבלה שרוצים להעתיק.
  • source_partition הוא מעצב המחיצה של מחיצת המקור.
  • destination_table הוא שם הטבלה במערך נתוני היעד.
  • destination_partition הוא קישוט המחיצה של מחיצת היעד.

דוגמאות:

העתקת מחיצה לטבלה חדשה

מזינים את הפקודה הבאה כדי להעתיק את המחיצה של 30 בינואר 2018 מ-mydataset.mytable לטבלה חדשה – mydataset.mytable2. ‫mydataset נמצא בפרויקט ברירת המחדל שלכם.

bq cp -a 'mydataset.mytable$20180130' mydataset.mytable2

העתקת מחיצה לטבלה לא מחולקת

מזינים את הפקודה הבאה כדי להעתיק את המחיצה מ-30 בינואר 2018 מ-mydataset.mytable לטבלה לא מחולקת – mydataset2.mytable2. מקש הקיצור -a משמש לצירוף הנתונים של המחיצה לטבלת היעד שלא חולקה למחיצות. שני מערכי הנתונים נמצאים בפרויקט ברירת המחדל.

bq cp -a 'mydataset.mytable$20180130' mydataset2.mytable2

מזינים את הפקודה הבאה כדי להעתיק את המחיצה מ-30 בינואר 2018 מ-mydataset.mytable לטבלה לא מחולקת – mydataset2.mytable2. מקש הקיצור -f משמש להחלפת טבלת היעד שלא חולקה למחיצות, בלי להציג הנחיה.

bq --location=US cp -f 'mydataset.mytable$20180130' mydataset2.mytable2

העתקת מחיצה לטבלה מחולקת למחיצות

מזינים את הפקודה הבאה כדי להעתיק את המחיצה מ-30 בינואר 2018 מ-mydataset.mytable לטבלה מופרדת אחרת – mydataset2.mytable2. מקש הקיצור -a משמש לצירוף הנתונים של המחיצה לטבלת היעד. מכיוון שלא צוין מעצב מחיצות בטבלת היעד, מפתח המחיצה של המקור נשמר והנתונים מועתקים למחיצה של 30 בינואר 2018 בטבלת היעד. אפשר גם לציין מעצב מחיצות בטבלת היעד כדי להעתיק נתונים למחיצה ספציפית. ‫mydataset נמצא בפרויקט ברירת המחדל שלכם. mydataset2 נמצא ב-myotherproject, ולא בפרויקט ברירת המחדל שלכם.

bq --location=US cp \
-a \
'mydataset.mytable$20180130' \
myotherproject:mydataset2.mytable2

מזינים את הפקודה הבאה כדי להעתיק את המחיצה מ-30 בינואר 2018 מ-mydataset.mytable למחיצה מ-30 בינואר 2018 של טבלה מחולקת אחרת – mydataset2.mytable2. מקש הקיצור -f משמש להחלפת המחיצה של 30 בינואר 2018 בטבלת היעד ללא הנחיה. אם לא משתמשים במעצב מחיצות, כל הנתונים בטבלת היעד נמחקים. ‫mydataset נמצא בפרויקט ברירת המחדל שלכם. ‫mydataset2 נמצא ב-myotherproject, ולא בפרויקט ברירת המחדל.

bq cp \
-f \
'mydataset.mytable$20180130' \
'myotherproject:mydataset2.mytable2$20180130'

מזינים את הפקודה הבאה כדי להעתיק את המחיצה מ-30 בינואר 2018 מ-mydataset.mytable לטבלה מופרדת אחרת – mydataset2.mytable2. ‫mydataset נמצא בפרויקט ברירת המחדל שלכם. mydataset2 נמצא ב-myotherproject, ולא בפרויקט ברירת המחדל שלכם. אם יש נתונים בטבלת היעד, התנהגות ברירת המחדל היא להציג לכם הנחיה להחלפת הנתונים.

bq cp \
'mydataset.mytable$20180130' \
myotherproject:mydataset2.mytable2

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

bq cp \
'mydataset.mytable$20180130,mydataset.mytable$20180131' \
myotherproject:mydataset.mytable2

API

מבצעים קריאה לשיטה jobs.insert ומגדירים משימת copy. (אופציונלי) מציינים את האזור במאפיין location בקטע jobReference של משאב המשימה.

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

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

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

מחיקת מחיצה

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

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

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

כדי למחוק מחיצה בטבלה מחולקת למחיצות:

המסוף

מחיקת מחיצות אינה נתמכת על ידי המסוף Google Cloud .

SQL

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

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

    כניסה ל-BigQuery

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

    DELETE mydataset.mytable
    WHERE _PARTITIONDATE IN ('2076-10-07', '2076-03-06');

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

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

BQ

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

bq rm --table project_id:dataset.table$partition

כאשר:

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

הפורמט של קישוטי המחיצות משתנה בהתאם לסוג המחיצה:

  • חלוקה לפי שעות: yyyymmddhh. לדוגמה: $2016030100.
  • מחיצה יומית: yyyymmdd. לדוגמה: $20160301.
  • חלוקה חודשית: yyyymm. לדוגמה: $201603.
  • מחיצה שנתית: yyyy. לדוגמה: $2016.
  • חלוקה לטווח מספרים שלמים: תחילת טווח החלוקה. דוגמה: $20

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

דוגמאות:

מחיקת המחיצה של 1 במרץ 2016 בטבלה מחולקת למחיצות (Partitions) יומיות בשם mydataset.mytable בפרויקט שמוגדר כברירת מחדל:

bq rm --table 'mydataset.mytable$20160301'

כדי למחוק את המחיצה של מרץ 2016 בטבלה שמחולקת למחיצות חודשיות:

bq rm --table 'mydataset.mytable$201603'

מחיקת טווח המספרים השלמים שמתחיל ב-20 בטבלת מספרים שלמים מחולקת בשם mydataset.mytable:

bq rm --table 'mydataset.mytable$20'

API

מבצעים קריאה לשיטה tables.delete ומציינים את הטבלה ואת קישוט המחיצה באמצעות הפרמטר tableId.

אבטחה של טבלאות מחולקות למחיצות

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