מעבר ל-BigQuery DataFrames גרסה 2.0
בגרסה 2.0 של BigQuery DataFrames בוצעו שיפורים באבטחה ובביצועים של BigQuery DataFrames API, נוספו תכונות חדשות ובוצעו שינויים שעלולים לשבור את התאימות לאחור. במאמר הזה מוסבר על השינויים ומופיעות הנחיות להעברה. אפשר ליישם את ההמלצות האלה לפני שמתקינים את גרסה 2.0 באמצעות הגרסה האחרונה 1.x של BigQuery DataFrames.
ל-BigQuery DataFrames בגרסה 2.0 יש את היתרונות הבאים:
- כשמריצים שאילתות שמחזירות תוצאות ללקוח, השאילתות מהירות יותר ונוצרות פחות טבלאות, כי ערך ברירת המחדל של
allow_large_resultsהואFalse. העיצוב הזה יכול להפחית את עלויות האחסון, במיוחד אם אתם משתמשים בחיוב לפי בייטים פיזיים. - אבטחה משופרת כברירת מחדל בפונקציות מרוחקות שנפרסות על ידי BigQuery DataFrames.
התקנה של BigQuery DataFrames גרסה 2.0
כדי להימנע משינויים שעלולים לשבור את הקוד, כדאי להצמיד גרסה ספציפית של BigQuery DataFrames בקובץ requirements.txt (לדוגמה, bigframes==1.42.0) או בקובץ pyproject.toml (לדוגמה, dependencies = ["bigframes = 1.42.0"]). כשמוכנים לנסות את הגרסה האחרונה, אפשר להריץ את הפקודה pip install --upgrade bigframes כדי להתקין את הגרסה האחרונה של BigQuery DataFrames.
שימוש באפשרות allow_large_results
ב-BigQuery יש מגבלה על גודל התגובה למשימות של שאילתות.
החל מגרסה 2.0 של BigQuery DataFrames, המגבלה הזו נאכפת כברירת מחדל בשיטות שמחזירות תוצאות ללקוח, כמו peek(), to_pandas() ו-to_pandas_batches(). אם העבודה מחזירה תוצאות גדולות, אפשר להגדיר את allow_large_results ל-True באובייקט BigQueryOptions כדי להימנע משינויים שעלולים לשבור את התאימות לאחור. האפשרות הזו מוגדרת כברירת מחדל לערך False ב-BigQuery DataFrames גרסה 2.0.
import bigframes.pandas as bpd bpd.options.bigquery.allow_large_results = True
אפשר לשנות את האפשרות allow_large_results באמצעות הפרמטר allow_large_results ב-to_pandas() ובשיטות אחרות. לדוגמה:
bf_df = bpd.read_gbq(query) # ... other operations on bf_df ... pandas_df = bf_df.to_pandas(allow_large_results=True)
שימוש ב-decorator @remote_function
בגרסה 2.0 של BigQuery DataFrames, בוצעו כמה שינויים בהתנהגות ברירת המחדל של העיטור @remote_function.
ארגומנטים של מילות מפתח נאכפים עבור פרמטרים עם משמעויות שונות
כדי למנוע העברת ערכים לפרמטר לא רצוי, ב-BigQuery DataFrames מגרסה 2.0 ואילך נדרש שימוש בארגומנטים של מילות מפתח לפרמטרים הבאים:
bigquery_connectionreusenamepackagescloud_function_service_accountcloud_function_kms_key_namecloud_function_docker_repositorymax_batching_rowscloud_function_timeoutcloud_function_max_instancescloud_function_vpc_connectorcloud_function_memory_mibcloud_function_ingress_settings
כשמשתמשים בפרמטרים האלה, צריך לציין את שם הפרמטר. לדוגמה:
@remote_function( name="my_remote_function", ... ) def my_remote_function(parameter: int) -> str: return str(parameter)
הגדרת חשבון שירות
החל מגרסה 2.0, BigQuery DataFrames לא משתמש יותר בחשבון השירות של Compute Engine כברירת מחדל עבור פונקציות Cloud Run שהוא פורס. כדי להגביל את ההרשאות של הפונקציה שפורסים, מבצעים את הפעולות הבאות:
- יוצרים חשבון שירות עם הרשאות מינימליות.
- מספקים את כתובת האימייל של חשבון השירות לפרמטר
cloud_function_service_accountשל העיטור@remote_function.
לדוגמה:
@remote_function( cloud_function_service_account="my-service-account@my-project.iam.gserviceaccount.com", ... ) def my_remote_function(parameter: int) -> str: return str(parameter)
אם רוצים להשתמש בחשבון השירות של Compute Engine, אפשר להגדיר את הפרמטר cloud_function_service_account של ה-decorator @remote_function לערך "default". לדוגמה:
# This usage is discouraged. Use only if you have a specific reason to use the # default Compute Engine service account. @remote_function(cloud_function_service_account="default", ...) def my_remote_function(parameter: int) -> str: return str(parameter)
הגדרת הגדרות של תעבורת נתונים נכנסת (ingress)
החל מגרסה 2.0, BigQuery DataFrames מגדיר את הגדרות הכניסה של פונקציות Cloud Run שהוא פורס ב-"internal-only". בעבר, הגדרות הכניסה היו מוגדרות כברירת מוגדרות כברירת מחדל ל-"all". אפשר לשנות את הגדרות הכניסה על ידי הגדרת הפרמטר cloud_function_ingress_settings של ה-decorator @remote_function.
לדוגמה:
@remote_function(cloud_function_ingress_settings="internal-and-gclb", ...) def my_remote_function(parameter: int) -> str: return str(parameter)
שימוש בנקודות קצה בהתאמה אישית
בגרסאות של BigQuery DataFrames שקודמות לגרסה 2.0, אם אזור לא תמך בנקודות קצה אזוריות של שירותים וב-bigframes.pandas.options.bigquery.use_regional_endpoints = True, המערכת של BigQuery DataFrames הייתה חוזרת לנקודות קצה אזוריות. בגרסה 2.0 של BigQuery DataFrames, התנהגות ברירת המחדל הזו הוסרה. כדי להתחבר לנקודות קצה לפי מיקום בגרסה 2.0, צריך להגדיר את האפשרות bigframes.pandas.options.bigquery.client_endpoints_override. לדוגמה:
import bigframes.pandas as bpd bpd.options.bigquery.client_endpoints_override = { "bqclient": "https://LOCATION-bigquery.googleapis.com", "bqconnectionclient": "LOCATION-bigqueryconnection.googleapis.com", "bqstoragereadclient": "LOCATION-bigquerystorage.googleapis.com", }
מחליפים את LOCATION בשם של מיקום BigQuery שאליו רוצים להתחבר.
שימוש במודול bigframes.ml.llm
ב-BigQuery DataFrames גרסה 2.0, ערך ברירת המחדל של model_name עבור GeminiTextGenerator עודכן ל-"gemini-2.0-flash-001". מומלץ לספק model_name ישירות כדי למנוע שיבושים אם מודל ברירת המחדל ישתנה בעתיד.
import bigframes.ml.llm model = bigframes.ml.llm.GeminiTextGenerator(model_name="gemini-2.0-flash-001")
המאמרים הבאים
- איך יוצרים תרשימים באמצעות BigQuery DataFrames
- איך יוצרים קוד של BigQuery DataFrames באמצעות Gemini
- איך מנתחים הורדות של חבילות מ-PyPI באמצעות BigQuery DataFrames
- אפשר לראות את קוד המקור, מחברות לדוגמה ודוגמאות של BigQuery DataFrames ב-GitHub.
- אפשר לעיין בהפניית API של BigQuery DataFrames.