כלי: run_bq_command
מריץ פקודה אחת של BigQuery CLI (bq). הכלי הזה מאפשר להריץ כל פקודת bq בפרויקט של המשתמש, כולל פקודות שיוצרות, מעדכנות או מוחקות משאבי GCP (כלומר, מוטציות).
אזהרת בטיחות חשובה (עלולה לגרום נזק): הכלי הזה יכול ליצור, לעדכן או למחוק משאבי BigQuery (למשל, bq rm, bq cancel, bq query). הוא לא מוגבל לפקודות לקריאה בלבד. חשוב לנהוג בזהירות רבה.
פקודות אסורות: סוכן לא יכול להריץ את פקודות ה-bq הבאות: bq init, bq pyshell, bq shell.
כללי ביצוע מחמירים:
- צריך לציין לפחות אחד מהערכים
--project_idאו--quota_project_idבמחרוזת הפקודה. - מזהה הפרויקט לעומת פרויקט המכסה: הדגל --project_id מציין את פרויקט המשאבים שהפקודה פועלת עליו (זהה לדגל --project של gcloud). הדגל --quota_project_id מציין את הפרויקט שמחויב על השימוש במכסה/חיוב של קריאה ל-API של BigQuery במורד הזרם (זהה לדגל
--billing-projectשל gcloud). אם מציינים את--project_idבפקודה, הוא ישמש כפרויקט לחיוב או למכסה. אם לא מציינים את--project_idאו אם מציינים גם את--quota_project_id, הפרויקט לחיוב או למכסה יהיה הפרויקט שמוגדר בדגל--quota_project_id. - פורמט הדגל: תמיד צריך להשתמש בסימן '=' כדי להפריד בין מפתחות הדגל לבין הערכים שלהם בכל האפשרויות הארוכות. נכון:
'--project_id=my-project'או'--location=us'. שגוי:'--project_id my-project'או'--location us'. אל תוסיפו רווחים בין הדגלים לבין הערכים שלהם. - אין הגדרות ברירת מחדל: הפקודה bq מופעלת בלי שמירת מצב. היא לא טוענת קובצי תצורה מקומיים כמו .bigqueryrc. לכן, בכל הפעולות האזוריות (למשל, יצירת מערך נתונים או שליחת שאילתה למערך נתונים אזורי), חובה לציין במפורש את הדגל
--location(למשל,--location=usאו--location=EU). - פעולות אסינכרוניות: פקודות מסוימות מפעילות פעולות סינכרוניות ממושכות (למשל, הפעלת משימות של שאילתות). תמיד צריך להעביר את הדגל
--nosyncלפקודות האלה כדי למנוע פסק זמן של הסוכן. - הגבלות על פקודות: אסור להשתמש בפקודות bq הבאות:
bq init, bq pyshell, bq shell. אין תמיכה בצינורות או בשרשור של פקודות. - תיקון עצמי: אם פקודה מחזירה שגיאה, המודל ינתח את stderr, יתקן את התחביר או את האפשרויות וינסה שוב באיטרציה הבאה.
דוגמאות לפקודות bq שמשנות את הנתונים: bq mk, bq rm, bq update, bq insert, bq query (ללא --dry_run) וכו'. אופן השימוש: RunBq(command="bq query --project_id=PROJECT_ID 'SELECT 1'", project="projects/PROJECT_ID", input_files=[{"path": "PATH", "contents": "CONTENTS"}]) חובה לציין את פקודת bq המלאה כמחרוזת אחת בפרמטר 'command'. חובה לציין את הפרמטר project (בפורמט: projects/PROJECT_ID) כפרויקט ההפעלה של ה-API לצורכי חיוב, הפעלת ה-API ובדיקות של ניצול המכסה.
דוגמאות לפקודות או לתבניות של פקודות bq:
- מריצים שאילתה:
bq query --use_legacy_sql=false --project_id=PROJECT_ID 'SELECT * FROMproject.dataset.tableLIMIT 10' - יצירת מערך נתונים:
bq mk --dataset --location=us --project_id=PROJECT_ID myDataset - יצירת טבלה:
bq mk --table --project_id=PROJECT_ID myDataset.myTable name:string,value:integer - הסרת מערך נתונים:
bq rm -f --dataset --project_id=PROJECT_ID myDataset - הסרת טבלה:
bq rm -f -t --project_id=PROJECT_ID myDataset.myTable - עדכון תיאור הטבלה:
bq update --description="New description" --project_id=PROJECT_ID myDataset.myTable - הצגת רשימה של מערכי נתונים בפרויקט:
bq ls --datasets=true --project_id=PROJECT_ID
בדוגמת הקוד הבאה מוצג שימוש בפקודה curl כדי להפעיל את הכלי run_bq_command MCP.
| בקשת Curl |
|---|
curl --location 'https://cloudcli.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "run_bq_command", "arguments": { // provide these details according to the tool's MCP specification } }, "jsonrpc": "2.0", "id": 1 }' |
סכימת הקלט
הודעת בקשה ל-RunBq.
RunBqRequest
| ייצוג JSON |
|---|
{
"project": string,
"command": string,
"inputFiles": [
{
object ( |
| שדות | |
|---|---|
project |
חובה. פרויקט להפעלת ה-API ולצריכת המכסה של CloudCli API. הפורמט צריך להיות projects/ |
command |
חובה. שורת הפקודה המלאה של bq להרצה כמחרוזת אחת. דוגמה: "bq ls my-dataset --location=us" מודלי שפה גדולים מקבלים הוראה להשתמש בדגל |
inputFiles[] |
זה שינוי אופציונלי. קבצים שיהיו זמינים לפקודת bq להרצה. |
קובץ
| ייצוג JSON |
|---|
{ "path": string, "contents": string } |
| שדות | |
|---|---|
path |
חובה. נתיב הקובץ ביחס לספריית הבית. אסור להשתמש בתווים '..' (מעבר לספריית האב) או בהרחבות של מעטפת. |
contents |
חובה. תוכן הקובץ. |
סכימת הפלט
הודעת התגובה של RunBq.
RunBqResponse
| ייצוג JSON |
|---|
{ "response": { object ( |
| שדות | |
|---|---|
response |
התגובה מהרצת כלי ה-CLI, שמכילה stdout, stderr stream וקוד יציאה עצמאיים. |
outputFiles[] |
קבצים שנוצרו על ידי הפקודה bq מההרצה שלה. |
CliExecutionResponse
| ייצוג JSON |
|---|
{ "stdout": string, "stderr": string, "exitCode": string } |
| שדות | |
|---|---|
stdout |
הפלט הרגיל (stdout) מההרצה של כלי ה-CLI. |
stderr |
מקור הנתונים stderr מהרצת כלי ה-CLI. |
exitCode |
קוד היציאה של הרצת כלי ה-CLI. |
קובץ
| ייצוג JSON |
|---|
{ "path": string, "contents": string } |
| שדות | |
|---|---|
path |
חובה. נתיב הקובץ ביחס לספריית הבית. אסור להשתמש בתווים '..' (מעבר לספריית האב) או בהרחבות של מעטפת. |
contents |
חובה. תוכן הקובץ. |
הערות על כלים
רמז הרסני: ✅ | רמז אידמפוטנטי: ❌ | רמז לקריאה בלבד: ❌ | רמז לעולם פתוח: ❌