התצוגה SEARCH_INDEXES

התצוגה INFORMATION_SCHEMA.SEARCH_INDEXES מכילה שורה אחת לכל אינדקס חיפוש בקבוצת נתונים.

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

כדי לראות את המטא-נתונים של אינדקס החיפוש, צריך לקבל את ההרשאה bigquery.tables.get או bigquery.tables.list לניהול זהויות והרשאות גישה (IAM) בטבלה עם האינדקס. כל אחד מתפקידי ה-IAM המוגדרים מראש הבאים כולל לפחות אחת מההרשאות האלה:

  • roles/bigquery.admin
  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.dataViewer
  • roles/bigquery.metadataViewer
  • roles/bigquery.user

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

סכימה

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

לתצוגה INFORMATION_SCHEMA.SEARCH_INDEXES יש את הסכימה הבאה:

שם העמודה סוג נתונים ערך
index_catalog STRING שם הפרויקט שמכיל את מערך הנתונים.
index_schema STRING השם של מערך הנתונים שמכיל את האינדקס.
table_name STRING השם של טבלת הבסיס שעליה נוצר האינדקס.
index_name STRING שם האינדקס.
index_status STRING סטטוס האינדקס: ACTIVE,‏ PENDING DISABLEMENT,‏ TEMPORARILY DISABLED או PERMANENTLY DISABLED.
  • ACTIVE מציין שאפשר להשתמש באינדקס או שהוא נמצא בתהליך יצירה. אפשר לעיין בcoverage_percentage כדי לראות את התקדמות היצירה של האינדקס.
  • PENDING DISABLEMENT מציין שהגודל הכולל של טבלאות הבסיס שעברו אינדוקס חורג מהמגבלה של הארגון, והאינדקס הוכנס לתור למחיקה. במצב הזה, אפשר להשתמש באינדקס בשאילתות חיפוש, ותחויבו על אחסון אינדקס החיפוש.
  • TEMPORARILY DISABLED מציין שהגודל הכולל של טבלאות הבסיס שעברו אינדוקס חורג מהמגבלה של הארגון, או שטבלת הבסיס שעברה אינדוקס קטנה מ-10GB. במצב הזה, האינדקס לא משמש לשאילתות חיפוש ולא מחויבים על נפח האחסון של אינדקס החיפוש.
  • PERMANENTLY DISABLED מציין שיש שינוי לא תואם בסכימה בטבלת הבסיס, כמו שינוי הסוג של עמודה עם אינדקס מ-STRING ל-INT64.
creation_time TIMESTAMP השעה שבה נוצר האינדקס.
last_modification_time TIMESTAMP הפעם האחרונה שבה שונתה הגדרת האינדקס. לדוגמה, מחיקה של עמודה עם אינדקס.
last_refresh_time TIMESTAMP הפעם האחרונה שבה נתוני הטבלה נוספו לאינדקס. הערך NULL מציין שהאינדקס עדיין לא זמין.
disable_time TIMESTAMP השעה שבה הוגדר סטטוס האינדקס ל-DISABLED. הערך הוא NULL אם סטטוס האינדקס הוא לא DISABLED.
disable_reason STRING הסיבה להשבתת האינדקס. NULL אם סטטוס האינדקס הוא לא DISABLED.
DDL STRING הצהרת ה-DDL ששימשה ליצירת האינדקס.
coverage_percentage INTEGER האחוז המשוער של נתוני הטבלה שעברו אינדוקס. הערך 0% מציין שלא ניתן להשתמש באינדקס בשאילתת SEARCH, גם אם חלק מהנתונים כבר עברו אינדוקס.
unindexed_row_count INTEGER מספר השורות בטבלת הבסיס שלא נוספו לאינדקס.
total_logical_bytes INTEGER מספר הבייטים הלוגיים לחיוב באינדקס.
total_storage_bytes INTEGER מספר הבייטים של נפח האחסון שחויבו עבור האינדקס.
analyzer STRING כלי לניתוח טקסט שמשמש ליצירת טוקנים לאינדקס החיפוש.

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

היקף ותחביר

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

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

דוגמה

-- Returns metadata for search indexes in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.SEARCH_INDEXES;

דוגמה

בדוגמה הבאה מוצגים כל אינדקסים החיפוש הפעילים בטבלאות של מערך הנתונים my_dataset, שנמצא בפרויקט my_project. הוא כולל את השמות שלהם, את הצהרות ה-DDL ששימשו ליצירתם, את אחוז הכיסוי שלהם ואת כלי הניתוח של הטקסט שלהם. אם טבלת בסיס באינדקס קטנה מ-10GB, האינדקס שלה לא יאוכלס, ובמקרה כזה הערך של coverage_percentage יהיה 0.

SELECT table_name, index_name, ddl, coverage_percentage, analyzer
FROM my_project.my_dataset.INFORMATION_SCHEMA.SEARCH_INDEXES
WHERE index_status = 'ACTIVE';

התוצאות צריכות להיראות כך:

+-------------+-------------+--------------------------------------------------------------------------------------+---------------------+----------------+
| table_name  | index_name  | ddl                                                                                  | coverage_percentage | analyzer       |
+-------------+-------------+--------------------------------------------------------------------------------------+---------------------+----------------+
| small_table | names_index | CREATE SEARCH INDEX `names_index` ON `my_project.my_dataset.small_table`(names)      | 0                   | NO_OP_ANALYZER |
| large_table | logs_index  | CREATE SEARCH INDEX `logs_index` ON `my_project.my_dataset.large_table`(ALL COLUMNS) | 100                 | LOG_ANALYZER   |
+-------------+-------------+--------------------------------------------------------------------------------------+---------------------+----------------+