התאמה אישית של פונקציות Python ל-BigQuery DataFrames

‫BigQuery DataFrames מאפשר להפוך פונקציות Python מותאמות אישית לארטיפקטים של BigQuery שאפשר להריץ על אובייקטים של BigQuery DataFrames בהיקף גדול. התמיכה בהרחבה מאפשרת לכם לבצע פעולות שלא אפשריות באמצעות BigQuery DataFrames וממשקי SQL API, כך שתוכלו להשתמש בספריות קוד פתוח.

יש שני סוגים של מנגנון ההרחבה הזה: פונקציות שמוגדרות על ידי המשתמש ופונקציות מרחוק.

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

כדי לקבל את ההרשאות שדרושות לביצוע המשימות שמתוארות במסמך הזה, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:

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

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

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

בעזרת UDFs (בגרסת Preview), אתם יכולים להפוך את פונקציית Python המותאמת אישית לפונקציית Python UDF. דוגמה לשימוש מופיעה במאמר יצירת פונקציית UDF מתמשכת ב-Python.

יצירת פונקציה מוגדרת על ידי המשתמש ב-BigQuery DataFrames יוצרת שגרה ב-BigQuery בתור פונקציה מוגדרת על ידי המשתמש ב-Python במערך הנתונים שצוין. רשימה מלאה של פרמטרים נתמכים זמינה במאמר בנושא bigframes.pandas.udf.

דרישות

כדי להשתמש בפונקציית UDF של BigQuery DataFrames, צריך להפעיל את BigQuery API בפרויקט. אם מציינים את הפרמטר bigquery_connection בפרויקט, צריך גם להפעיל את BigQuery Connection API.

הסרת המשאבים

בנוסף לניקוי של ארטיפקטים בענן ישירות ב Google Cloud מסוף או באמצעות כלים אחרים, אפשר לנקות את פונקציות ה-UDF של BigQuery DataFrames שנוצרו עם ארגומנט שם מפורש באמצעות הפקודה bigframes.pandas.get_global_session().bqclient.delete_routine(routine_id)

מגבלות

  • הקוד ב-UDF צריך להיות עצמאי, כלומר, הוא לא יכול להכיל הפניות לייבוא או למשתנה שהוגדר מחוץ לגוף הפונקציה.
  • הקוד ב-UDF צריך להיות תואם ל-Python 3.11, כי זה הסביבה שבה הקוד מופעל בענן.
  • אם מריצים מחדש את קוד ההגדרה של פונקציית UDF אחרי שינויים קלים בקוד הפונקציה – למשל, שינוי שם של משתנה או הוספה של שורה חדשה – הפונקציה UDF נוצרת מחדש, גם אם השינויים האלה לא משפיעים על ההתנהגות של הפונקציה.
  • קוד המשתמש גלוי למשתמשים עם הרשאת קריאה בשגרות BigQuery, ולכן צריך לכלול תוכן רגיש רק בזהירות.
  • בכל פרויקט יכולות להיות עד 1,000 פונקציות Cloud Run בכל מיקום של BigQuery.

ה-UDF של BigQuery DataFrames פורס פונקציית Python מוגדרת על ידי המשתמש ב-BigQuery, וחלות עליו המגבלות שקשורות ל-UDF.

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

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

יצירת פונקציה מרוחקת ב-BigQuery DataFrames יוצרת את הפריטים הבאים:

  • פונקציית Cloud Run.
  • חיבור ל-BigQuery.

    כברירת מחדל, נעשה שימוש בחיבור בשם bigframes-default-connection. אם רוצים, אפשר להשתמש בחיבור BigQuery שהוגדר מראש, ובמקרה כזה דילגנו על יצירת החיבור. לחשבון השירות של החיבור שמוגדר כברירת מחדל מוקצה תפקיד Cloud Run (roles/run.invoker).

  • פונקציה מרוחקת של BigQuery שמשתמשת בפונקציית Cloud Run שנוצרה באמצעות החיבור ל-BigQuery.

דרישות

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

כשמשתמשים בפונקציות מרוחקות של BigQuery DataFrames, צריך את תפקיד האדמין של IAM בפרויקט (roles/resourcemanager.projectIamAdmin) אם משתמשים בחיבור ברירת מחדל של BigQuery, או את תפקיד הדפדפן (roles/browser) אם משתמשים בחיבור שהוגדר מראש. כדי להימנע מהדרישה הזו, אפשר להגדיר את האפשרות bigframes.pandas.options.bigquery.skip_bq_connection_check לערך True. במקרה כזה, נעשה שימוש בחיבור (ברירת מחדל או שהוגדר מראש) כמו שהוא, בלי לבדוק את קיומו או את ההרשאות שלו. אם אתם משתמשים בחיבור שהוגדר מראש ומדלגים על בדיקת החיבור, ודאו את הדברים הבאים:

  • החיבור נוצר במיקום הנכון.
  • אם אתם משתמשים בפונקציות מרוחקות של BigQuery DataFrames, לחשבון השירות יש את התפקיד Cloud Run Invoker (roles/run.invoker) בפרויקט.

הצגה וניהול של חיבורים

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

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

  3. בחלונית הימנית, לוחצים על כלי הניתוחים:

    כפתור מודגש לחלונית הסייר.

  4. בחלונית Explorer מרחיבים את הפרויקט ואז לוחצים על Connections.

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

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

  3. בחלונית הימנית, לוחצים על כלי הניתוחים:

    כפתור מודגש לחלונית הסייר.

  4. בחלונית Explorer, מרחיבים את הפרויקט ואז לוחצים על Datasets.

  5. לוחצים על מערך הנתונים שבו יצרתם את הפונקציה המרוחקת.

  6. לוחצים על הכרטיסייה פעולות שגרתיות.

כדי להציג ולנהל פונקציות Cloud Run:

  1. נכנסים לדף Cloud Run.

    כניסה ל-Cloud Run

  2. בוחרים את הפרויקט שבו יצרתם את הפונקציה.

  3. ברשימת השירותים הזמינים, מסננים לפי Function Deployment type.

  4. כדי לזהות פונקציות שנוצרו על ידי BigQuery DataFrames, מחפשים שמות של פונקציות עם הקידומת bigframes.

הסרת המשאבים

בנוסף לניקוי הארטיפקטים בענן ישירות ב Google Cloud מסוף או באמצעות כלים אחרים, אפשר לנקות את הפונקציות המרוחקות של BigQuery שנוצרו ללא ארגומנט שם מפורש, ואת פונקציות Cloud Run המשויכות שלהן, בדרכים הבאות:

  • כדי להשתמש בספריית BigQuery DataFrames, מריצים את הפקודה session.close().
  • כדי להשתמש בסשן ברירת המחדל של BigQuery DataFrames, מריצים את הפקודה bigframes.pandas.close_session().
  • כדי להשתמש בסשן קודם עם session_id, משתמשים בפקודה bigframes.pandas.clean_up_by_session_id(session_id).

אפשר גם לנקות את הפונקציות המרוחקות של BigQuery שנוצרו עם ארגומנט שם מפורש ואת פונקציות Cloud Run המשויכות שלהן באמצעות הפקודה bigframes.pandas.get_global_session().bqclient.delete_routine(routine_id).

מגבלות

  • כשיוצרים פונקציות מרחוק בפעם הראשונה, לוקח בערך 90 שניות עד שאפשר להשתמש בהן. יחסי תלות נוספים של חבילות עשויים להוסיף לזמן האחזור.
  • הפעלה מחדש של קוד ההגדרה של הפונקציה המרוחקת אחרי שינויים קלים בקוד הפונקציה או בסביבתה – למשל, שינוי שם של משתנה, הוספת שורה חדשה או הוספת תא חדש במחברת – עלולה לגרום ליצירה מחדש של הפונקציה המרוחקת, גם אם השינויים האלה לא משפיעים על ההתנהגות של הפונקציה.
  • קוד המשתמש גלוי למשתמשים עם גישת קריאה בפונקציות Cloud Run, ולכן צריך לכלול תוכן רגיש רק בזהירות.
  • בכל פרויקט יכולות להיות עד 1,000 פונקציות Cloud Run בו-זמנית באזור מסוים. מידע נוסף זמין במאמר בנושא מכסות.

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