מבוא לתרחישים

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

תרחישים נתמכים

‫BigQuery תומך בשגרות הבאות:

איך בוחרים תרחיש

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

גורמים שצריך להביא בחשבון

כדי לבחור שגרה, כדאי להביא בחשבון את הגורמים הבאים, שמתוארים בקטעים של כל סוג שגרה:

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

השוואה בין תרחישים לפי משימה

בטבלה הבאה מוצגים סוגי המשימות שאפשר לבצע בכל סוג של תרחיש:

משימה

סוג המשאב של השגרה

ליצור פונקציות שמבצעות משימות כלליות ב-BigQuery.

פונקציה בהגדרת המשתמש (UDF) ב-SQL או ב-JavaScript

פונקציית SQL או JavaScript UDAF

ליצור פונקציות שמבצעות משימות כלליות ב-BigQuery ומתקשרות עם מערכות חיצוניות Google Cloud באמצעות קישור למשאבים ב-Cloud.

פונקציה מוגדרת-משתמש ב-Python

ליצור פונקציות שצוברות נתונים.

פונקציות UDAF

ליצור טבלה באמצעות פרמטרים.

פונקציות טבלה

ליצור פונקציות שמשתמשות בשפות, בספריות או בשירותים שלא נתמכים ב-BigQuery. הפונקציות האלה משתלבות ישירות עם פונקציות Cloud Run ו-Cloud Run.

פונקציות משירותים חיצוניים

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

  • להריץ כמה הצהרות ברצף, עם מצב משותף.
  • להפוך משימות ניהול לאוטומטיות, כמו יצירה או מחיקה של טבלאות.
  • להטמיע לוגיקה מורכבת באמצעות מבני תכנות כמו IF ו-WHILE.

ליצור ולקרוא לפרוצדורות מאוחסנות של Apache Spark ב-BigQuery.

תהליכים מאוחסנים

פונקציות בהגדרת המשתמש (UDF)

פונקציה בהגדרת המשתמש (UDF) מאפשרת ליצור פונקציה באמצעות ביטוי SQL, קוד JavaScript או קוד Python. הפונקציות מקבלות עמודות קלט, מבצעות פעולות בקלט ומחזירות את התוצאה של הפעולות האלה בתור ערך.

אפשר להגדיר שפונקציות UDF יהיו מתמידות או זמניות. אפשר להשתמש שוב בפונקציות UDF מתמידות בכמה שאילתות, ופונקציית UDF זמנית קיימת רק בהיקף של שאילתה אחת.

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

למידע נוסף על פונקציות מוגדרות על ידי המשתמש, עיינו במקורות המידע הבאים:

פונקציות UDF מבוססות-שפה

  • פונקציות UDF מבוססות-SQL תומכות בפרמטרים של פונקציות UDF מבוססות-תבניות, שיכולים להתאים ליותר מסוג אחד של ארגומנט כשקוראים לפונקציית ה-UDF. פונקציות SQL UDF יכולות גם להחזיר את הערך של שאילתת משנה סקלרית.
  • פונקציות UDF שמבוססות על JavaScript מאפשרות להפעיל קוד שכתוב ב-JavaScript מתוך שאילתת SQL.
    • פונקציות JavaScript מוגדרות-משתמש בדרך כלל צורכות יותר משאבי יחידות קיבולת (Slot) בהשוואה לשאילתות SQL סטנדרטי, מה שמפחית את ביצועי המשימות.
    • אם אפשר לבטא את הפונקציה ב-SQL, בדרך כלל עדיף להריץ את הקוד כמשימת שאילתה ב-SQL סטנדרטי.
  • פונקציות UDF מבוססות-Python נוצרות ומופעלות במשאבים מנוהלים של BigQuery. הפונקציות האלה מאפשרות להטמיע פונקציה ב-Python ולהשתמש בה בשאילתת SQL.

פונקציות UDF שהקהילה הוסיפה

בנוסף לפונקציות ה-UDF שאתם יוצרים, פונקציות UDF שהקהילה תרמה זמינות במערך הנתונים הציבורי bigquery-public-data.persistent_udfs ובמאגר הקוד הפתוח bigquery-utils ב-GitHub.

פונקציות צבירה בהתאמה אישית (UDAF)

פונקציית UDAF מאפשרת ליצור פונקציית צבירה באמצעות ביטוי שמכיל קוד SQL או JavaScript. הפונקציה UDAF מקבלת עמודות קלט, מבצעת חישוב על קבוצת שורות בכל פעם, ואז מחזירה את התוצאה של החישוב הזה בתור ערך יחיד.

פונקציות UDAF לא יכולות לשנות נתונים, לתקשר עם מערכות חיצוניות או לשלוח יומנים ל-Google Cloud Observability או לאפליקציות דומות.

מידע נוסף זמין במקורות המידע הבאים:

פונקציות SQL UDAF

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

פונקציות UDAF ב-JavaScript

פונקציות UDAF ב-JavaScript יכולות לכלול ספריות JavaScript. גוף הפונקציה של JavaScript יכול לכלול קוד JavaScript בהתאמה אישית, כמו משתנים גלובליים של JavaScript ופונקציות בהתאמה אישית.

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

לפונקציות UDAF ב-JavaScript יש כמה מגבלות. מותר להשתמש רק בקידודים מסוגים ספציפיים, ויש דרישות לסריאליזציה ולדה-סריאליזציה.

השוואה בין פונקציות UDF ו-UDAF

הבחירה בין UDF ל-UDAF תלויה במשימה הספציפית שאתם מנסים לבצע.

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

לדוגמה, אם רוצים לחשב את הממוצע של עמודת מספרים, משתמשים ב-UDAF. אם רוצים להמיר עמודה של מחרוזות לאותיות רישיות, משתמשים ב-UDF.

אלה קווי הדמיון בין פונקציות UDF ו-UDAF:

  • פונקציות UDF ו-UDAF לא יכולות לשנות נתונים, לתקשר עם מערכות חיצוניות או לשלוח יומנים ל-Google Cloud Observability או לאפליקציות דומות. היוצאים מן הכלל הם פונקציות UDF ב-Python, שיכולות לגשת לשירותים חיצוניים באמצעות קישור למשאבים ב-Cloud. עם זאת, פונקציות UDF ב-Python לא תומכות בבקרת שירות VPC או במפתחות הצפנה בניהול הלקוח (CMEK).
  • לפונקציות UDAF יש את אותן מגבלות כמו לפונקציות UDF, וגם כמה מגבלות נוספות.
  • לפונקציות UDF ו-UDAF יש את אותן מכסות ומגבלות.

אלה ההבדלים בין פונקציות UDF לפונקציות UDAF:

מאפיין

פונקציות UDF

UDAFs

הגדרה

פונקציות בהגדרת המשתמש (UDF) מקבלות עמודות קלט, מבצעות פעולות בקלט ומחזירות את התוצאה של הפעולות האלה בתור ערך.

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

השפות שנתמכות

‫SQL,‏ JavaScript ו-Python

‫SQL ו-JavaScript

התמדה

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

ארגומנטים וסוגי נתונים

פונקציות UDF מקבלות ערכי פרמטרים שתואמים לסוגי הנתונים של GoogleSQL ל-BigQuery. חלק מסוגי ה-SQL ממופים ישירות לסוגי JavaScript, אבל אחרים לא. סוגים נתמכים ב-JavaScript

בפונקציית SQL UDF, ערכי הפרמטרים יכולים להיות ANY TYPE, שיכולים להתאים ליותר מסוג ארגומנט אחד כשקוראים לפונקציה.

רק לפונקציות UDF ב-JavaScript יש מפרט דטרמיניזם, שנותן רמז ל-BigQuery אם אפשר לשמור במטמון את תוצאת השאילתה.

פונקציות UDAF ב-SQL וב-JavaScript מקבלות ערכי פרמטרים שתואמים לסוגי הנתונים של GoogleSQL ל-BigQuery.

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

Usage

לרוב משתמשים בפונקציות UDF לניקוי, טרנספורמציה ואימות של נתונים.

בדרך כלל משתמשים בפונקציות UDAF כדי לחשב נתונים סטטיסטיים מסכמים, כמו ממוצעים, סכומים וספירות.

פונקציות טבלה

פונקציית טבלה, שנקראת גם פונקציה עם ערך טבלה (TVF), היא פונקציה מוגדרת-משתמש (UDF) שמחזירה טבלה. אפשר להשתמש בפונקציית טבלה בכל מקום שבו אפשר להשתמש בטבלה. פונקציות טבלה פועלות באופן דומה לתצוגות, אבל פונקציית טבלה יכולה לקבל פרמטרים.

אפשר להשתמש בפונקציות טבלה כדי:

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

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

פונקציות משירותים חיצוניים

פונקציות מרוחקות מאפשרות לכם להטמיע את הפונקציה בשפות שאינן SQL ו-JavaScript, או להשתמש בספריות או בשירותים שלא נתמכים בפונקציות בהגדרת המשתמש (UDF) של BigQuery.

פונקציה מרוחקת של BigQuery משלבת את פונקציית Google SQL עם פונקציות Cloud Run ו-Cloud Run באמצעות כל שפה נתמכת, ואז מפעילה את הפונקציות האלה משאילתות SQL.

המשימות הבאות הן דוגמאות לפעולות שאפשר לבצע באמצעות פונקציות מרוחקות:

כדי ליצור פונקציה מרוחקת, צריך לבצע את השלבים הבאים:

  1. יוצרים את נקודת הקצה ל-HTTP בפונקציות Cloud Run או ב-Cloud Run.
  2. יוצרים פונקציה מרוחקת ב-BigQuery באמצעות סוג החיבור CLOUD_RESOURCE.
  3. משתמשים בפונקציה המרוחקת בשאילתה, בדיוק כמו בכל פונקציה אחרת שמוגדרת על ידי המשתמש (UDF) ב-BigQuery.

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

תהליכים מאוחסנים

תהליך מאוחסן ב-SQL הוא אוסף של הצהרות שאפשר לקרוא להן משאילתות אחרות או מתהליכים מאוחסנים אחרים. אתם נותנים שם לפרוצדורה ושומרים אותה במערך נתונים ב-BigQuery.

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

תהליך מאוחסן יכול לבצע את הפעולות הבאות:

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

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

יש גם תמיכה בתהליכים מאוחסנים ל-Spark ב-BigQuery. לפרוצדורות האלה יש מכסות ומגבלות.

למידע נוסף על פרוצדורות מאוחסנות, ראו פרוצדורות מאוחסנות ב-SQL.

שימוש בתרחישים עם סוכני AI

אם אתם יוצרים סוכני AI שעובדים עם נתונים ב-BigQuery, הסוכנים יכולים לאחזר מטא-נתונים של שגרות מ-Knowledge Catalog, כולל הארגומנטים, סוג ההחזרה וקוד המקור של השגרה, כדי להבין מה השגרה עושה ואיך לקרוא לה. מידע נוסף זמין במאמר אחזור הקשר לתרחישים.