התצוגה CONSTRAINT_COLUMN_USAGE

התצוגה CONSTRAINT_COLUMN_USAGE מכילה את כל העמודות שמשמשות את האילוצים. עבור אילוצי PRIMARY KEY, אלה העמודות מהתצוגה KEY_COLUMN_USAGE. במגבלות FOREIGN KEY, אלה העמודות של הטבלאות שאליהן מתבצעת ההפניה.

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

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

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

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

כדי להריץ שאילתות בתצוגה INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE, נדרשות ההרשאות הבאות:

  • צפייה בהגדרות של מפתח ראשי ומפתח זר: bigquery.tables.get
  • צפייה בסכימות של מידע על טבלה: bigquery.tables.list

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

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

סכימה

לצפייה INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE יש את הסכימה הבאה:

שם עמודה סוג נתונים ערך

table_catalog

STRING

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

table_schema

STRING

שם מערך הנתונים שמכיל את הטבלה. נקרא גם datasetId.

table_name

STRING

שם הטבלה. נקרא גם tableId.

column_name

STRING

שם העמודה.

constraint_catalog

STRING

שם הפרויקט של האילוץ.

constraint_schema

STRING

שם מערך הנתונים של האילוץ.

constraint_name

STRING

שם האילוץ. יכול להיות שזה השם של המפתח הראשי אם העמודה משמשת את המפתח הראשי, או השם של מפתח זר אם העמודה משמשת מפתח זר.

כדי לשמור על יציבות, מומלץ לציין במפורש את העמודות בשאילתות של סכימת המידע, במקום להשתמש בתו כל כללי (SELECT *). ציון מפורש של העמודות מונע את השבירה של השאילתות אם הסכימה הבסיסית משתנה.

היקף ותחביר

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

שם התצוגה היקף המשאבים היקף האזור
[PROJECT_ID.]DATASET.INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE; רמת מערך הנתונים מיקום מערך הנתונים
מחליפים את מה שכתוב בשדות הבאים:
  • אופציונלי: PROJECT_ID: מזהה הפרויקט ב- Google Cloud . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל.

דוגמאות

השאילתה הבאה מציגה את האילוצים של טבלה אחת במערך נתונים:

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
WHERE table_name = TABLE;

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

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

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

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE;

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

+-----+---------------------+--------------+------------+-------------+---------------------+-------------------+-------------------------+
| row |    table_catalog    | table_schema | table_name | column_name | constraint_catalog  | constraint_schema |     constraint_name     |
+-----+---------------------+--------------+------------+-------------+---------------------+-------------------+-------------------------+
|   1 | myConstraintCatalog | myDataset    | orders     | o_okey      | myConstraintCatalog | myDataset         | orders.pk$              |
|   2 | myConstraintCatalog | myDataset    | orders     | o_okey      | myConstraintCatalog | myDataset         | lineitem.lineitem_order |
+-----+---------------------+--------------+------------+-------------+---------------------+-------------------+-------------------------+

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

+-----------------------------+
| There is no data to display |
+-----------------------------+