מבוא לחיפוש ב-BigQuery

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

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

מערכת BigQuery מאחסנת ומנהלת את האינדקסים, כך שכשהנתונים זמינים ב-BigQuery, אפשר לאחזר אותם באופן מיידי באמצעות הפונקציה SEARCH או אופרטורים ופונקציות אחרים, כמו האופרטורים שוויון (=), IN או LIKE, ופונקציות מסוימות של מחרוזות ו-JSON. כדי לבצע אופטימיזציה של החיפושים, כדאי לקרוא על שיטות מומלצות.

תרחישים לדוגמה

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

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

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

תמחור

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

תפקידים והרשאות

כדי ליצור אינדקס חיפוש, אתם צריכים את הרשאת ה-IAM‏ bigquery.tables.createIndex בטבלה שבה אתם יוצרים את האינדקס. כדי להסיר אינדקס חיפוש, צריך הרשאה מסוג bigquery.tables.deleteIndex. כל אחד מהתפקידים המוגדרים מראש הבאים ב-IAM כולל את ההרשאות שנדרשות לעבודה עם אינדקסים של חיפוש:

  • בעלים של נתונים ב-BigQuery‏ (roles/bigquery.dataOwner)
  • עריכה של נתוני BigQuery‏ (roles/bigquery.dataEditor)
  • אדמין של BigQuery‏ (roles/bigquery.admin)

מגבלות

  • אי אפשר ליצור אינדקס חיפוש ישירות בתצוגה או בתצוגה חומרית, אבל אפשר להשתמש באינדקס החיפוש הבסיסי על ידי קריאה לפונקציה SEARCH בתצוגה של טבלה עם אינדקס.
  • אי אפשר ליצור אינדקס חיפוש בטבלה חיצונית.
  • אם משנים את השם של טבלה אחרי שיוצרים בה אינדקס חיפוש, האינדקס הופך ללא תקף.
  • הפונקציה SEARCH מיועדת לחיפושים נקודתיים. אי אפשר לבצע חיפוש משוער, לתקן שגיאות הקלדה, להשתמש בתווים כלליים או לבצע סוגים אחרים של חיפושים במסמכים.
  • אם כיסוי האינדקס של החיפוש עדיין לא הגיע ל-100%, עדיין תחויבו על כל נפח האחסון של האינדקס שמדווח בתצוגה INFORMATION_SCHEMA.SEARCH_INDEXES.
  • שאילתות שמשתמשות בפונקציה SEARCH או שעברו אופטימיזציה באמצעות אינדקסים של חיפוש לא מואצות על ידי BigQuery BI Engine.
  • המערכת לא משתמשת באינדקסים של חיפוש כשמשנים את הטבלה שנוספה לאינדקס באמצעות פקודת DML, אבל היא יכולה להשתמש בהם כשהפרדיקט שאפשר לבצע אופטימיזציה שלו באמצעות אינדקסים של חיפוש הוא חלק משאילתת משנה בפקודת DML.

    • לא נעשה שימוש באינדקס חיפוש בשאילתה הבאה:
    DELETE FROM my_dataset.indexed_table
    WHERE SEARCH(user_id, '123');
    • אפשר להשתמש באינדקס חיפוש בשאילתה הבאה:
    DELETE FROM my_dataset.other_table
    WHERE
      user_id IN (
        SELECT user_id
        FROM my_dataset.indexed_table
        WHERE SEARCH(user_id, '123')
      );
  • לא נעשה שימוש באינדקסים של חיפוש כשהשאילתה מפנה אל תצוגות חומריות.

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

  • אינדקסים של חיפושים לא משמשים בשאילתות של מסע בזמן.

המאמרים הבאים