מבוא ל-BI Engine
BigQuery BI Engine הוא שירות ניתוח מהיר בזיכרון שמאפשר להריץ במהירות רבות משאילתות SQL ב-BigQuery, באמצעות שמירת הנתונים שבהם אתם משתמשים הכי הרבה במטמון בצורה חכמה. השימוש במטמון מאפשר לשפר את ביצועי השאילתות בלי לבצע כוונון ידני או חלוקה לשכבות של נתונים. כדי לשפר את הביצועים של BI Engine בטבלאות גדולות, אפשר לקבץ טבלאות ולחלק טבלאות למחיצות.
לדוגמה, אם בלוח הבקרה מוצגים רק נתונים מהרבעון האחרון, אפשר לחלק את הטבלאות לפי זמן כך שרק המחיצות האחרונות ייטענו לזיכרון. אחר כך תוכלו להשתמש בתצוגות מהותיות כדי לאחד את הנתונים ולשטח אותם, ואז לסמן את התצוגה ואת מסד הנתונים הטבלאי שנוצרו כטבלה מועדפת כדי לוודא שההאצה של BI Engine תופעל רק על הנתונים שאתם צריכים.
היתרונות של BI Engine:
- תאימות ל-BigQuery API: BI Engine משתלב ישירות עם BigQuery API. כל פתרון BI או אפליקציה מותאמת אישית שפועלים עם BigQuery API באמצעות מנגנונים סטנדרטיים כמו API בארכיטקטורת REST או מנהלי התקנים של JDBC ו-ODBC יכולים להשתמש ב-BI Engine ללא שינוי.
- זמן ריצה וקטורי: שימוש בעיבוד וקטורי במנוע ביצוע מאפשר שימוש יעיל יותר בארכיטקטורת CPU מודרנית, על ידי פעולה על אצוות של נתונים בכל פעם. BI Engine משתמש גם בקידודים מתקדמים של נתונים, במיוחד בקידוד אורך רצף מילוני, כדי לדחוס עוד יותר את הנתונים שמאוחסנים בשכבת הזיכרון.
- שילוב חלק: BI Engine פועל עם התכונות והמטא-נתונים של BigQuery, כולל תצוגות מורשות, אבטחה ברמת העמודה והסתרת נתונים.
- הקצאות של הזמנות: הזמנות של BI Engine מנהלות בנפרד את הקצאת הזיכרון לכל פרויקט ואזור. BI Engine שומר במטמון רק את החלקים של העמודות והמחיצות שנכללו בשאילתה. אתם יכולים לציין אילו טבלאות יאיצו את השימוש ב-BI Engine באמצעות טבלאות מועדפות.
ברוב הארגונים, אדמין לחיוב מפעיל את BI Engine ומשתמש במהדורה מתאימה כדי לשריין קיבולת להאצת BI Engine. מידע נוסף זמין במאמר בנושא שמירת קיבולת של BI Engine.
הארכיטקטורה של BI Engine
BI Engine משתלב עם כלי BI – כמו Looker, Data Studio, Tableau ו-Power BI – וגם עם אפליקציות בהתאמה אישית דרך BigQuery API, כדי להאיץ את ניתוח הנתונים:

תרחישי שימוש ב-BI Engine
BI Engine יכול להאיץ באופן משמעותי הרבה שאילתות SQL, כולל שאילתות שמשמשות ללוחות בקרה של BI. ההאצה הכי יעילה אם מזהים את הטבלאות שחיוניות לשאילתות, ואז מגדירים אותן כטבלאות מועדפות. כדי להשתמש ב-BI Engine, צריך ליצור הזמנה באזור ולציין את הגודל שלה. אפשר לאפשר ל-BigQuery לקבוע אילו טבלאות יישמרו במטמון על סמך דפוסי השימוש בפרויקט, או לציין טבלאות כדי למנוע מתנועה אחרת להפריע להאצה שלהן.
BI Engine שימושי בתרחישי השימוש הבאים:
- אתם משתמשים בכלים לבינה עסקית כדי לנתח את הנתונים: BI Engine מאיץ שאילתות BigQuery, בין אם הן מופעלות במסוף BigQuery, בכלי לבינה עסקית כמו Data Studio או Tableau, בספריית לקוח, ב-API או במחבר ODBC או JDBC. האפשרות הזו יכולה לשפר משמעותית את הביצועים של לוחות בקרה שמחוברים ל-BigQuery דרך חיבור מובנה (API) או מחברים.
- יש לכם טבלאות שאתם מבצעים עליהן שאילתות לעיתים קרובות: BI Engine מאפשר לכם להגדיר טבלאות מועדפות להאצה. האפשרות הזו שימושית אם יש לכם קבוצת משנה של טבלאות שמתבצעות עליהן שאילתות בתדירות גבוהה יותר או שמשמשות ללוחות בקרה עם חשיפה גבוהה.
יכול להיות ש-BI Engine לא יתאים לצרכים שלכם במקרים הבאים:
- אתם משתמשים בתווים כלליים לחיפוש בשאילתות: שאילתות שמפנות לטבלאות עם תווים כלליים לחיפוש לא נתמכות על ידי BI Engine ולא נהנות מהאצה.
- אתם צריכים תכונות של BigQuery שלא נתמכות על ידי BI Engine: למרות ש-BI Engine תומך ברוב הפונקציות והאופרטורים של SQL, תכונות שלא נתמכות כוללות טבלאות חיצוניות, אבטחה ברמת השורה ופונקציות מוגדרות על ידי המשתמש שאינן SQL.
שיקולים לגבי BI Engine
כשמחליטים איך להגדיר את BI Engine, כדאי להביא בחשבון את הנקודות הבאות:
איך מוודאים שההאצה תפעל בשאילתות ספציפיות
כדי להבטיח שקבוצה של שאילתות תואץ, יוצרים פרויקט נפרד עם הקצאת מקום ייעודית ב-BI Engine. קודם, מעריכים את קיבולת המחשוב שנדרשת לשאילתות, ואז מגדירים את הטבלאות האלה כטבלאות מועדפות ל-BI Engine.
מצמצמים את מספר שאילתות האיחוד
BI Engine מתאים במיוחד לנתונים שעברו איחוד או צבירה מראש, ולשאילתות עם מספר קטן של איחודים. ההתנהגות הזו נכונה במיוחד כשצד אחד של הצירוף גדול והצדדים האחרים קטנים בהרבה, למשל כשמפעילים שאילתה על טבלת עובדות גדולה שמצורפת לטבלאות מאפיינים קטנות יותר. אפשר לשלב את BI Engine עם תצוגות חומריות, שמבצעות איחודים כדי ליצור טבלה גדולה ופשוטה. הגישה הזו מאפשרת להימנע מביצוע אותם צירופים לכל שאילתה. מומלץ להשתמש בתצוגות חומריות לא עדכניות כדי לשפר את הביצועים של שאילתות.
הסבר על ההשפעה של BI Engine
כדי להבין את השימוש ב-BI Engine, אפשר לעיין במאמר בנושא מעקב אחרי BI Engine באמצעות Cloud Monitoring, או לשלוח שאילתות לתצוגות INFORMATION_SCHEMA.BI_CAPACITIES ו-INFORMATION_SCHEMA.BI_CAPACITY_CHANGES. כדי לקבל את ההשוואה הכי מדויקת, חשוב להשבית את האפשרות שימוש בתוצאות שנשמרו במטמון ב-BigQuery. מידע נוסף זמין במאמר בנושא שימוש בתוצאות של שאילתות שנשמרו במטמון.
טבלאות מועדפות
טבלאות מועדפות של BI Engine מאפשרות לכם להגביל את ההאצה של BI Engine לקבוצה מסוימת של טבלאות. שאילתות לכל הטבלאות האחרות משתמשות במשבצות רגילות של BigQuery. לדוגמה, באמצעות טבלאות מועדפות אפשר להאיץ רק את הטבלאות ולוחות הבקרה שזיהיתם כחשובים לעסק שלכם.
אם אין מספיק זיכרון בפרויקט כדי להכיל את כל הטבלאות המועדפות, BI Engine מעביר מחיצות ועמודות שלא הייתה אליהן גישה לאחרונה. התהליך הזה מפנה זיכרון לשאילתות חדשות שצריכות האצה.
מגבלות על טבלאות מועדפות
לטבלאות מועדפות ב-BI Engine יש את המגבלות הבאות:
- אי אפשר להוסיף תצוגות לוגיות לרשימת ההזמנות המועדפות של שולחנות. טבלאות מועדפות של BI Engine תומכות רק בטבלאות.
- האצת שאילתות לתצוגות חומריות מתבצעת רק אם התצוגות החומריות וטבלאות הבסיס שלהן נמצאות ברשימת הטבלאות המועדפות.
- אין תמיכה בהגדרת מחיצות או עמודות להאצה.
- עמודות מסוג
JSONלא נתמכות ולא מואצות על ידי BI Engine. - שאילתות שמתבצעת בהן גישה לכמה טבלאות מואצות רק אם כל הטבלאות הן טבלאות מועדפות. לדוגמה, כדי להאיץ את כל הטבלאות בשאילתה עם
JOIN, צריך להוסיף אותן לרשימת הטבלאות המועדפות. אם אפילו טבלה אחת לא נמצאת ברשימה המועדפת, אי אפשר להשתמש ב-BI Engine בשאילתה. - אין תמיכה במערכי נתונים ציבוריים במסוף Google Cloud . כדי להוסיף טבלה ציבורית כטבלה מועדפת, צריך להשתמש ב-API או ב-DDL.
אופטימיזציה והאצה של שאילתות
BigQuery, ובהרחבה BI Engine, מחלקים תוכנית לביצוע שאילתה לכמה שאילתות משנה. שאילתת משנה מורכבת מפעולות כמו סריקה, סינון, חישוב או צבירה של נתונים, והיא משמשת כיחידת ביצוע.
כל שאילתות ה-SQL הנתמכות ב-BigQuery מופעלות בצורה תקינה ב-BI Engine, אבל BI Engine מבצע אופטימיזציה סלקטיבית של שלבים ספציפיים:
- שאילתות משנה ברמת העלה: BI Engine מותאם במיוחד לשאילתות משנה ברמת העלה שסורקות נתונים מהאחסון ומבצעות פעולות כמו סינון, חישוב, צבירה, מיון (
ORDER BY) וצירופים נתמכים. - ביצוע חלופי: שלבים בשאילתה או שאילתות משנה שלא ניתן להאיץ באמצעות BI Engine חוזרים אוטומטית ליחידות קיבולת (slots) רגילות של BigQuery לביצוע, בלי שהשאילתה תיכשל.
בגלל האופטימיזציה הסלקטיבית הזו, שאילתות פשוטות של בינה עסקית או שאילתות מסוג לוח בקרה מפיקות את התועלת המרבית מ-BI Engine, כי רוב הזמן שמוקדש להרצתן הוא לעיבוד נתונים גולמיים בשאילתות משנה ברמת העלה.
מגבלות
כדי להשתמש ב-BI Engine, הארגון שלכם צריך לשריין קיבולת של BI Engine במהדורה נתמכת. מידע נוסף זמין במאמר הסבר על מהדורות BigQuery.
בנוסף, יש ל-BI Engine מגבלות שמתוארות בקטעים הבאים.
הצטרפויות
BI Engine מאיץ סוגים מסוימים של שאילתות join. ההאצה מתרחשת בשאילתות משנה ברמת העלה עם הצטרפויות של INNER ו-LEFT OUTER, שבהן טבלת עובדות גדולה מצורפת לעד ארבע טבלאות ממדים קטנות יותר. ההגבלות הבאות חלות על טבלאות קטנות של מאפיינים:
- פחות מ-5 מיליון שורות
- מגבלות גודל:
- טבלאות לא מחולקות: עד 5 GiB
- טבלאות מחולקות למחיצות: מחיצות שההפניה אליהן היא 1 GiB או פחות
פונקציות חלון
פונקציות אנליטיות (window functions), שנקראות גם פונקציות חלון, מוגבלות באופן הבא כשמשתמשים בהן עם BI Engine:
- שלבי קלט ללא פונקציות חלון מואצים על ידי BI Engine. במקרה הזה, התצוגה המפורטת
INFORMATION_SCHEMA.JOBSbi_engine_statistics.acceleration_modeמדווחת עלFULL_INPUT. - שלבים של שאילתות עם פונקציות חלון מואצים על ידי BI Engine אם הם עומדים בדרישות של המגבלות של פונקציות חלון ב-BI Engine.
במקרה כזה, שלבי הקלט או השאילתה המלאה מופעלים ב-BI Engine, והדוחות של התצוגה המפורטת
INFORMATION_SCHEMA.JOBSbi_engine_statistics.acceleration_modeמוצגים כ-FULL_INPUTאו כ-FULL_QUERY.
מידע נוסף על השדה BiEngineStatistics זמין במאמר בנושא הפניה למשרה.
מגבלות על פונקציות אנליטיות (window functions) ב-BI Engine
שאילתות עם פונקציות חלון מופעלות ב-BI Engine רק אם מתקיימים כל התנאים הבאים:
- השאילתה סורקת טבלה אחת בדיוק.
- הטבלה לא מחולקת למחיצות.
- בטבלה יש פחות מ-5 מיליון שורות.
- לשאילתה אין אופרטורים של
JOIN. - הגודל של הטבלה שנסרקה כפול מספר האופרטורים של פונקציות אנליטיות (window function) לא חורג מ-300 MiB.
שתי פונקציות אנליטיות (window function) עם סעיפי OVER זהים ואותם קלטים ישירים יכולות לחלוק את אותו אופרטור של פונקציה אנליטית (window function). לדוגמה:
- למאפיין
SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (ORDER BY x) FROM my_tableיש רק אופרטור אחד של פונקציה אנליטית (window function). -
SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (PARTITION BY y ORDER BY x) FROM my_tablehas two window function operators because the two functions have differentOVERclauses. -
SELECT ROW_NUMBER() OVER (ORDER BY x) FROM (SELECT SUM(x) OVER (ORDER BY x) AS x FROM my_table)יש שני אופרטורים של פונקציות אנליטיות (window function) כי לשתי הפונקציות יש קלטים ישירים שונים, למרות שהסעיפיםOVERשלהן נראים זהים.
פונקציות חלון נתמכות
יש תמיכה בפונקציות הבאות של חלונות:
ANY_VALUEAVGBIT_ANDBIT_ORBIT_XORCORRCOUNTCOUNTIFCOVAR_POPCOVAR_SAMPCUME_DISTDENSE_RANKFIRST_VALUELAGLAST_VALUELEADLOGICAL_ANDLOGICAL_ORMAXMINNTH_VALUENTILEPERCENT_RANKPERCENTILE_CONTPERCENTILE_DISCRANKROW_NUMBERST_CLUSTERDBSCANSTDDEV_POPSTDDEV_SAMPSTDDEVSTRING_AGGSUMVAR_POPVAR_SAMPVARIANCE
אם פונקציות חלון לא נתמכות, יכול להיות שתופיע הודעת השגיאה הבאה:
Analytic function is incompatible with other operators or its inputs are too large
מגבלות שלא נתמכות ב-BI Engine
האצת BI Engine לא זמינה לתכונות הבאות:
- פונקציות מוגדרות על ידי המשתמש (UDF) ב-JavaScript ופונקציות משירותים חיצוניים.
- טבלאות חיצוניות, כולל טבלאות BigLake.
- שליחת שאילתה לנתוני
JSON(הודעת שגיאה:JSON native type is not supported.). - שליחת שאילתה לנתוני
RANGE(הודעת שגיאה:RANGE native type is not supported.). - כתיבת התוצאות לטבלה ב-BigQuery קבועה.
- טבלאות שמכילות פעולות לעדכן או להוסיף (upsert) שמשתמשות בהטמעה של סימון נתונים שהשתנו (CDC) ב-BigQuery.
- עסקאות.
- שאילתות שמחזירות יותר מ-1 GiB של נתונים (ליישומים שרגישים לזמן האחזור, מומלץ להגביל את גודל התגובה לפחות מ-1 MiB).
- אבטחה ברמת השורה.
- שאילתות שמשתמשות בפונקציות של חיפוש וחיפוש וקטורי (כמו הפונקציה
SEARCHאו הפונקציהVECTOR_SEARCH) או שאופטמוזיות על ידי מדדי חיפוש או מדדי וקטורים. - שאילתות רקורסיביות באמצעות
RECURSIVE. - שאילתות BigQuery ML.
פתרון עקיף לתכונות שלא נתמכות
אם השאילתה שלכם משתמשת בתכונות SQL שלא נתמכות, אתם יכולים להשתמש בפתרון העקיף הבא:
- כותבים שאילתה ב-BigQuery.
- שמירת התוצאות של השאילתה בטבלה.
- מגדירים לוח זמנים להרצת השאילתה כדי לעדכן את הטבלה באופן קבוע. מומלץ להגדיר קצב רענון של שעה או יום. רענון כל דקה עלול לבטל את המטמון בתדירות גבוהה מדי.
- אפשר להשתמש בטבלה הזו בשאילתות שבהן הביצועים קריטיים.
מכסות ומגבלות
מידע על מכסות ומגבלות שחלות על BI Engine זמין במאמר בנושא מכסות ומגבלות ב-BigQuery.
תמחור
אתם צוברים עלויות על ההזמנה שאתם יוצרים לקיבולת של BI Engine. מידע על התמחור של BI Engine זמין במאמר בנושא תמחור ב-BigQuery.
המאמרים הבאים
- איך שומרים קיבולת ב-BI Engine
- איך מציינים טבלאות מועדפות
- איך עוקבים אחרי השימוש ב-BI Engine באמצעות Cloud Monitoring
- כאן וכאן אפשר לקרוא איך משתמשים ב-BI Engine עם Data Studio ו-Tableau.