מדריך בנושא פונקציות מרוחקות ו-Translation API
אתם יכולים לשלב פונקציות מרוחקות של BigQuery עם Cloud Translation API כדי לתרגם תוכן מכל שפה ישירות באמצעות SQL ו-Python. תרגום הנתונים ב-BigQuery מאפשר לכם לתרגם תגובות של משתמשים באתר או לאחד בקשות תמיכה בשפות שונות לשפה משותפת, כדי שהעובדים שמטפלים בפניות יוכלו להבין אותן.
מטרות
- מקצים לחשבון את התפקידים הנדרשים.
- יצירת פונקציית Cloud Run functions.
- יוצרים מערך נתונים ב-BigQuery.
- יוצרים חיבור ל-BigQuery וחשבון שירות.
- נותנים הרשאות לחשבון השירות של BigQuery.
- יוצרים פונקציה מרוחקת ב-BigQuery.
- קוראים לפונקציה המרוחקת של BigQuery.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
בעזרת מחשבון העלויות אתם יכולים להעריך את העלויות בהתאם לשימוש הצפוי.
לפני שמתחילים
מומלץ ליצור פרויקט ב- Google Cloud בשביל המדריך הזה. בנוסף, ודאו שיש לכם את התפקידים הנדרשים כדי להשלים את המדריך הזה.
הגדרת פרויקט ב- Google Cloud
כדי להגדיר פרויקט ב- Google Cloud בשביל המדריך הזה, מבצעים את השלבים הבאים:
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigQuery, BigQuery Connection, Cloud Translation, Cloud Run functions, Cloud Build, Cloud Logging, Cloud Pub/Sub, Artifact Registry, and Cloud Run Admin APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
התפקידים הנדרשים בחשבון
כדי לקבל את ההרשאות שדרושות לביצוע המשימות במדריך הזה, בקשו מהאדמין להקצות לכם את התפקידים הבאים ב-IAM בפרויקט:
- בעלים של נתוני BigQuery (
roles/bigquery.dataOwner) - אדמין של חיבור BigQuery (
roles/bigquery.connectionAdmin) - מפתח Cloud Functions (
roles/cloudfunctions.developer)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות כדי לבצע את המשימות במדריך הזה. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי לבצע את המשימות במדריך הזה, נדרשות ההרשאות הבאות:
-
bigquery.datasets.create -
bigquery.connections.create -
bigquery.connections.get -
cloudfunctions.functions.create
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
התפקידים הנדרשים לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine
כשהפעלתם את ה-API לפונקציות Cloud Run, נוצר חשבון שירות שמוגדר כברירת מחדל ב-Compute Engine. כדי להשלים את המדריך, צריך לתת לחשבון השירות הזה את התפקיד "משתמש ב-Cloud Translation API".
מעתיקים את חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine. חשבון השירות שמוגדר כברירת מחדל נראה כך:
PROJECT_NUMBER-compute@מחליפים את
PROJECT_NUMBERבמזהה הפרויקט.נכנסים לדף IAM במסוף Google Cloud .
בוחרים את הפרויקט הרצוי.
לוחצים על Grant access, ובשדה New principals מדביקים את חשבון השירות שמוגדר כברירת המחדל של Compute Engine שהעתקתם קודם.
ברשימה Assign roles, מחפשים את התפקיד Cloud Translation API User ובוחרים אותו.
לוחצים על Save.
יצירת פונקציית Cloud Run
באמצעות פונקציות Cloud Run, יוצרים פונקציה שמתרגמת טקסט קלט לספרדית.
יוצרים פונקציית Cloud Run עם המפרט הבא:
- בשדה Environment, בוחרים באפשרות 2nd gen.
- בשדה Function name, מזינים
translation-handler. - בשדה Region, בוחרים באפשרות us-central1.
בשדה Maximum number of instances, מזינים
10.ההגדרה הזו נמצאת בקטע Runtime, build, connections and security settings.
במדריך הזה אנחנו משתמשים בערך נמוך יותר מברירת המחדל כדי לשלוט בקצב הבקשות שנשלחות ל-Translation.
בשדה Runtime, בוחרים באפשרות Python 3.10.
בשדה Entry point, מזינים
handle_translation.
ברשימת הקבצים, בוחרים באפשרות main.py ומדביקים את הקוד הבא.
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
מעדכנים את
<your location>באמצעותus-central1.ברשימת הקבצים, בוחרים באפשרות requirements.txt ומדביקים את הטקסט הבא:
לוחצים על Deploy וממתינים לפריסת הפונקציה.
לוחצים על הכרטיסייה Trigger (טריגר).
מעתיקים את הערך של Trigger URL ושומרים אותו למועד מאוחר יותר. צריך להשתמש בכתובת ה-URL הזו כשיוצרים פונקציה מרוחקת ב-BigQuery.
יצירת מערך נתונים ב-BigQuery
יוצרים מערך נתונים ב-BigQuery שיכיל את הפונקציה המרוחקת. כשיוצרים את מערך הנתונים, צריך לכלול את המפרטים הבאים:
- בשדה Dataset ID, מזינים
remote_function_test. - בשדה Location type, בוחרים באפשרות Multi-region.
- בשדה Multi-region, בוחרים באפשרות US (multiple regions in United States).
יצירת חיבור וחשבון שירות ב-BigQuery
יוצרים חיבור ל-BigQuery כדי להטמיע פונקציה מרוחקת בכל שפה שנתמכת בפונקציות Cloud Run וב-Cloud Run. כשיוצרים חיבור, נוצר בשבילו חשבון שירות.
יוצרים Google Cloud חיבור למשאב עם המאפיינים הבאים:
- בשדה Connection type, בוחרים באפשרות BigLake and remote functions (Cloud Resource).
- בשדה מזהה החיבור, מזינים את הערך
remote-function-connection. - בשדה Location type, בוחרים באפשרות Multi-region.
- בשדה Multi-region, בוחרים באפשרות US (multiple regions in United States).
פותחים את הרשימה חיבורים ולוחצים על
us.remote-function-connection.מעתיקים את מזהה חשבון השירות ושומרים אותו לשימוש בהמשך. בשלב הבא צריך לתת הרשאות למזהה הזה.
מתן הרשאות לחשבון השירות של BigQuery
כדי שהפונקציה המרוחקת של BigQuery תוכל להשתמש בפונקציית Cloud Run, צריך לתת לחשבון השירות שיצרתם בשלב הקודם הרשאה להשתמש ב-Cloud Run. כדי לתת הרשאות לחשבון השירות:
נכנסים לדף Cloud Run.
בוחרים את הפרויקט הרצוי.
מסמנים את התיבה לצד
translation-handler.בחלונית Permissions, לוחצים על Add principal.
בשדה New principals, מזינים את מזהה חשבון השירות שהעתקתם קודם.
ברשימה Assign roles, מחפשים את התפקיד Cloud Run Invoker ובוחרים אותו.
לוחצים על Save.
יצירת פונקציה מרוחקת ב-BigQuery
כדי להשתמש בפונקציית Cloud Run שמתרגמת טקסט לספרדית עם פונקציה מרוחקת של BigQuery, בצעו את השלבים הבאים.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את השאילתה הבאה:
CREATE OR REPLACE FUNCTION `remote_function_test.translate_text`(x STRING) RETURNS STRING REMOTE WITH CONNECTION `us.remote-function-connection` OPTIONS ( endpoint = 'TRIGGER_URL', max_batching_rows = 10);מחליפים את
TRIGGER_URLבכתובת ה-URL של הטריגר ששמרתם קודם כשיצרתם פונקציית Cloud Run.לוחצים על Run. מוצגת הודעה דומה לזו:
This statement created a new function named your_project.remote_function_test.translate_text.
קריאה לפונקציה המרוחקת של BigQuery
אחרי שיוצרים את הפונקציה המרוחקת, בודקים אותה כדי לוודא שהיא מקושרת לפונקציית Cloud Run ומפיקה את התוצאות הצפויות בספרדית.
בעורך השאילתות של BigQuery, מזינים את השאילתה הבאה ולוחצים על Run.
SELECT remote_function_test.translate_text('This new feature is fantastic!') AS translated_text;התוצאות אמורות להיראות כך:
+-------------------------------------------+ | translated_text | +-------------------------------------------+ | ¡Esta nueva característica es fantástica! | +-------------------------------------------+
אופציונלי: כדי לבדוק את הפונקציה המרוחקת במערך נתונים שגלוי לכולם, מזינים את השאילתה הבאה ולוחצים על Run. כדי להגביל את התוצאות שמוחזרות, משתמשים במשפט
LIMIT.SELECT text, remote_function_test.translate_text(text) AS translated_text FROM (SELECT text FROM `bigquery-public-data.hacker_news.full` LIMIT 3);התוצאות אמורות להיראות כך:
+---------------------------------------------------------------------------+ | text | translated_text | +---------------------------------------------------------------------------+ | These benchmarks look good. | Estos puntos de referencia se ven bien. | | Who is using Java? | ¿Quién está usando Java? | | You need more database storage. | Necesitas más almacenamiento. | +---------------------------------------------------------------------------+
מחיקת המשאבים
אם אתם לא מתכוונים להשתמש בפונקציות האלה בפרויקט, אתם יכולים למחוק את הפרויקט כדי להימנע מעלויות נוספות. הפעולה הזו מוחקת באופן סופי את כל המשאבים שמשויכים לפרויקט.
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.