תצוגת PARTITIONS
התצוגה INFORMATION_SCHEMA.PARTITIONS מכילה שורה אחת לכל מחיצה.
השאילתה של התצוגה INFORMATION_SCHEMA.PARTITIONS מוגבלת ל-1,000 טבלאות. כדי לקבל את הנתונים לגבי המחיצות ברמת הפרויקט, אפשר לפצל את השאילתה לכמה שאילתות ואז לצרף את התוצאות. אם חורגים מהמגבלה, יכול להיות שתופיע שגיאה דומה לזו שבהמשך. כדי לצמצם את התוצאות, אפשר להשתמש במסננים עם ההצהרה WHERE, לדוגמה, table_name = 'mytable' ו-total_logical_bytes IS NOT NULL.
INFORMATION_SCHEMA.PARTITIONS query attempted to read too many tables. Please add more restrictive filters.
ההרשאות הנדרשות
כדי לשלוח שאילתה לתצוגה INFORMATION_SCHEMA.PARTITIONS, צריך את ההרשאות הבאות בממשק לניהול זהויות והרשאות גישה (IAM):
bigquery.tables.getbigquery.tables.list
כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאות שצוינו למעלה:
roles/bigquery.adminroles/bigquery.dataEditorroles/bigquery.dataViewer
מידע נוסף על הרשאות ב-BigQuery זמין במאמר בקרת גישה באמצעות IAM.
סכימה
כשמבצעים שאילתה בתצוגה INFORMATION_SCHEMA.PARTITIONS, בדרך כלל תוצאות השאילתה מכילות שורה אחת לכל מחיצה. החריג הוא כשקיימת שילוב של נתונים ברמת אחסון פעילה ונתונים ברמת אחסון לטווח ארוך במחיצה __UNPARTITIONED__. במקרה כזה, התצוגה מחזירה שתי שורות עבור המחיצה __UNPARTITIONED__, אחת לכל רמת אחסון.
לתצוגה INFORMATION_SCHEMA.PARTITIONS יש את הסכימה הבאה:
| שם העמודה | סוג נתונים | ערך |
|---|---|---|
table_catalog |
STRING |
מזהה הפרויקט שמכיל את הטבלה. |
table_schema |
STRING |
השם של מערך הנתונים שמכיל את הטבלה, שנקרא גם datasetId. |
table_name |
STRING |
שם הטבלה, שנקרא גם tableId. |
partition_id |
STRING |
מזהה של מחיצה אחת. בטבלאות לא מחולקות, הערך הוא
NULL. בטבלאות עם חלוקה למחיצות שמכילות שורות עם
ערכים של NULL בעמודת החלוקה למחיצות, הערך הוא
__NULL__. |
total_rows |
INTEGER |
המספר הכולל של השורות במחיצה. |
total_logical_bytes |
INTEGER |
המספר הכולל של בייטים לוגיים במחיצה. |
total_billable_bytes |
INTEGER |
המספר הכולל של בייטים לחיוב במחיצה. אם החיוב על האחסון מבוסס על בייטים פיזיים (דחוסים), הערך הזה לא יהיה זהה למספר TOTAL_LOGICAL_BYTES. |
last_modified_time |
TIMESTAMP |
הפעם האחרונה שבה נכתבו נתונים למחיצה. הוא משמש לחישוב הזכאות של מחיצה לאחסון לטווח ארוך. אחרי 90 יום, המחיצה עוברת אוטומטית מאחסון פעיל לאחסון לטווח ארוך. מידע נוסף זמין במאמר בנושא תמחור של אחסון ב-BigQuery. השדה הזה מתעדכן כשנתונים מוכנסים, נטענים, מועברים בסטרימינג או משתנים במחיצה. יכול להיות ששינויים שכוללים מחיקות של רשומות לא יסונכרנו. |
storage_tier |
STRING |
רמת האחסון של המחיצה:
|
כדי לשמור על יציבות, מומלץ לציין במפורש את העמודות בשאילתות של סכימת המידע, במקום להשתמש בתו כל כללי (SELECT *). ציון מפורש של העמודות מונע את השבירה של השאילתות אם הסכימה הבסיסית משתנה.
היקף ותחביר
שאילתות שמופעלות על התצוגה הזו חייבות לכלול מסנן של מערך נתונים. לשאילתות עם מזהה מערך נתונים, צריכות להיות לכם הרשאות למערך הנתונים. מידע נוסף זמין במאמר בנושא תחביר. בטבלה הבאה מוסברות רמות הפירוט של האזור והמשאבים בתצוגה הזו:
| שם התצוגה | היקף המשאבים | היקף האזור |
|---|---|---|
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.PARTITIONS |
רמת מערך הנתונים | מיקום מערך הנתונים |
-
אופציונלי:
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל. -
DATASET_ID: המזהה של מערך הנתונים. מידע נוסף מופיע במאמר בנושא מאפיין מסנן של מערך נתונים.
דוגמאות
דוגמה 1
בדוגמה הבאה מחושב מספר הבייטים הלוגיים שמשמשים כל רמת אחסון בכל הטבלאות במערך נתונים בשם mydataset:
SELECT storage_tier, SUM(total_logical_bytes) AS logical_bytes FROM `mydataset.INFORMATION_SCHEMA.PARTITIONS` GROUP BY storage_tier;
INFORMATION_SCHEMA
התוצאות אמורות להיראות כך:
+--------------+----------------+ | storage_tier | logical_bytes | +--------------+----------------+ | LONG_TERM | 1311495144879 | | ACTIVE | 66757629240 | +--------------+----------------+
דוגמה 2
בדוגמה הבאה נוצרת עמודה שמחלצת את סוג המחיצה מהשדה partition_id ומצטברת מידע על המחיצה ברמת הטבלה עבור מערך הנתונים הציבורי bigquery-public-data.covid19_usafacts:
SELECT table_name, CASE WHEN regexp_contains(partition_id, '^[0-9]{4}$') THEN 'YEAR' WHEN regexp_contains(partition_id, '^[0-9]{6}$') THEN 'MONTH' WHEN regexp_contains(partition_id, '^[0-9]{8}$') THEN 'DAY' WHEN regexp_contains(partition_id, '^[0-9]{10}$') THEN 'HOUR' END AS partition_type, min(partition_id) AS earliest_partition, max(partition_id) AS latest_partition_id, COUNT(partition_id) AS partition_count, sum(total_logical_bytes) AS sum_total_logical_bytes, max(last_modified_time) AS max_last_updated_time FROM `bigquery-public-data.covid19_usafacts.INFORMATION_SCHEMA.PARTITIONS` GROUP BY 1, 2;
התוצאות אמורות להיראות כך:
+-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+ | table_name | partition_type | earliest_partition | latest_partition_id | partition_count | sum_total_logical_bytes | max_last_updated_time | +--------------+-------------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+ | confirmed_cases | DAY | 20221204 | 20221213 | 10 | 26847302 | 2022-12-13 00:09:25.604000 UTC | | deaths | DAY | 20221204 | 20221213 | 10 | 26847302 | 2022-12-13 00:09:24.709000 UTC | | summary | DAY | 20221204 | 20221213 | 10 | 241285338 | 2022-12-13 00:09:27.496000 UTC | +-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+