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

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

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

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

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

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

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

#standardSQL
SELECT
  partition_id
FROM
  `DATASET_ID.INFORMATION_SCHEMA.PARTITIONS`
WHERE
  table_name = 'TABLE_NAME'
  AND partition_id IS NOT NULL --filter out non-partitioned tables

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

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

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

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

#legacySQL
SELECT
  partition_id
FROM
  [DATASET_ID.TABLE_NAME$__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 מסמן אותה למחיקה, אבל היא לא נמחקת מיד. תהליך ברקע מטפל במחיקה בפועל באופן אסינכרוני, והוא יכול להימשך כמה ימים. עד שהתהליך ברקע מוחק את המחיצה, המחיצה ממשיכה להיכלל במכסות הטבלה. כדי למחוק מחיצה באופן מיידי, אפשר למחוק אותה ידנית.

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

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

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

המסוף

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

SQL

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

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

    כניסה ל-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 ימים (432,000 שניות). ‫mydataset נמצא בפרויקט ברירת המחדל.

bq update --time_partitioning_expiration 432000 mydataset.mytable

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

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

API

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

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

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

במאמר יצירת טבלאות מחולקות למחיצות מוסבר איך מוסיפים את האפשרות Require partition filter כשיוצרים טבלה מחולקת למחיצות.

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

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

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

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

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

המסוף

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

SQL

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

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

    כניסה ל-BigQuery

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

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

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

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

BQ

כדי לעדכן טבלה מחולקת למחיצות כך שתדרוש מסנני מחיצות באמצעות כלי שורת הפקודה של 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 כדי לדרוש מסנני מחיצות. ה-method ‏tables.update מחליפה את כל משאב הטבלה, ולכן עדיף להשתמש ב-method ‏tables.patch.

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)

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

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

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

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

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

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

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

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

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

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

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

המסוף

אי אפשר להעתיק מחיצות במסוף Google Cloud .

BQ

כדי להעתיק מחיצה, משתמשים בפקודה bq cp (העתקה) של כלי שורת הפקודה של BigQuery עם מעטר מחיצה ($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__.

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

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

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

המסוף

אי אפשר למחוק מחיצות במסוף Google Cloud .

SQL

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

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

    כניסה ל-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 בטבלה שמחולקת למחיצות יומיות בשם 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

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

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

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