ניהול הקצאות של עומסי עבודה

‫BigQuery Reservation API מאפשר לכם לרכוש משבצות זמן ייעודיות (שנקראות התחייבויות), ליצור מאגרי משבצות זמן (שנקראים הזמנות) ולהקצות פרויקטים, תיקיות וארגונים להזמנות האלה.

יצירת הקצאות של הזמנות

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

הלוגיקה והקריטריונים של ההקצאה

הפרויקטים משתמשים בהזמנה הספציפית ביותר בהיררכיית המשאבים שאליה הם משויכים. הלוגיקה הבאה משמשת את BigQuery לבחירת המקום השמור המתאים:

  1. העדיפות של היררכיית המשאבים: מערכת BigQuery מעריכה את ההקצאות על סמך ישות האב של המשאב שהוקצה (פרויקט > תיקייה > ארגון). הקצאות של תיקיות וארגונים לא זמינות בהזמנות של מהדורת Standard.
  2. הקצאות ספציפיות למשתמש באמצעות המאפיין principal (גרסת Preview): הקצאות של מקומות שמורים ב-BigQuery תומכות במאפיין principal אופציונלי, שמאפשר לאדמינים לנתב שאילתות למקומות שמורים ספציפיים על סמך הזהות של המשתמש או חשבון השירות שמבצעים את העבודה. במשאב מסוים של מקבל ההקצאה, הקצאה עם חשבון משתמש תואם מקבלת עדיפות על פני הקצאה כללית שבה חשבון המשתמש לא מוגדר.

    מגבלת ברירת המחדל לכל פרויקט של הקצאות ספציפיות למשתמש היא 100. כדי לקבל עזרה בשינוי מגבלת ברירת המחדל, אפשר לפנות אל bigquery-wlm-feedback@google.com.

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

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

  • הוא מוגדר עם מספר חריצים שאינו אפס להתאמה אוטומטית של נפח האחסון.

  • הוא מוגדר לשימוש במשבצות זמן פנויות, ויש משבצות זמן פנויות בפרויקט.

אם תנסו להקצות משאב להזמנה שלא עומדת לפחות באחד מהקריטריונים האלה, תוצג לכם ההודעה הבאה: Assignment is pending, your project will be executed as on-demand.

אפשר להקצות משאב להזמנת מעבר לגיבוי (failover), אבל ההקצאה תמתין במיקום המשני.

ההרשאות הנדרשות

כדי ליצור הקצאה של הזמנה, אתם צריכים את ההרשאה הבאה לניהול זהויות והרשאות גישה (IAM):

כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הזו:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

מידע נוסף על תפקידי IAM ב-BigQuery זמין במאמר תפקידים והרשאות מוגדרים מראש.

הקצאת ארגון להזמנה

המסוף

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

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. לוחצים על הכרטיסייה הזמנות.

  4. מוצאים את ההזמנה בטבלת ההזמנות.

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

  6. לוחצים על יצירת מטלה.

  7. בקטע יצירת מטלה, לוחצים על עיון.

  8. מחפשים את הארגון או מדפדפים עד שמוצאים אותו ובוחרים בו.

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

    • QUERY
    • CONTINUOUS
    • PIPELINE
    • BACKGROUND
    • ML_EXTERNAL

    מידע נוסף על סוגי העבודה זמין במאמר הקצאות של הזמנות. ערך ברירת המחדל הוא QUERY.

    מידע נוסף על מתן הרשאה למשתמשים להשתמש ב-Gemini ב-BigQuery באמצעות הקצאות של מהדורת Enterprise Plus זמין במאמר הגדרת Gemini ב-BigQuery.

  10. אופציונלי: בשדה User, מזינים את כתובת האימייל של המשתמש, חשבון השירות או הזהות של הצד השלישי.

  11. לוחצים על יצירה.

SQL

כדי להקצות ארגון להזמנה, משתמשים בהצהרת ה-DDL‏ CREATE ASSIGNMENT.

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

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
    OPTIONS (
      assignee = 'organizations/ORGANIZATION_ID',
      job_type = 'JOB_TYPE',
      principal = 'PRINCIPAL');

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב ההזמנה
    • ‫LOCATION: המיקום של ההזמנה
    • ‫RESERVATION_NAME: השם של ההזמנה
    • ‫ASSIGNMENT_ID: מזהה ההקצאה

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

    • ‫ORGANIZATION_ID: מזהה הארגון
    • ‫JOB_TYPE: סוג העבודה שיוקצה להזמנה הזו, למשל QUERY,‏ CONTINUOUS,‏ PIPELINE,‏ BACKGROUND או ML_EXTERNAL
    • אופציונלי: PRINCIPAL: פורמט הזהות שמציין את המשתמש, חשבון השירות או הזהות של הצד השלישי

      השדה principal תומך רק בפורמטים הבאים של מזהה חשבון משתמש ב-IAM:

      • חשבון Google
      • חשבון שירות
      • זהות יחידה במאגר זהויות של כוח עבודה
      • זהות יחידה במאגר זהויות של עומסי עבודה

  3. לוחצים על הפעלה.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

כדי להקצות משימות של ארגון להזמנה, משתמשים בפקודה bq mk עם הדגל --reservation_assignment:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=RESERVATION_NAME \
    --assignee_type=ORGANIZATION \
    --assignee_id=ORGANIZATION_ID \
    --job_type=JOB_TYPE \
    --principal=PRINCIPAL

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב המקום השמור
  • ‫LOCATION: המיקום של ההזמנה
  • ‫RESERVATION_NAME: השם של ההזמנה
  • ‫ORGANIZATION_ID: מזהה הארגון
  • ‫JOB_TYPE: סוג העבודה להקצאה להזמנה הזו, למשל QUERY,‏ CONTINUOUS,‏ PIPELINE,‏ BACKGROUND או ML_EXTERNAL
  • אופציונלי: PRINCIPAL: פורמט הזהות שמציין את המשתמש, חשבון השירות או הזהות של הצד השלישי.

    הדגל --principal תומך רק בפורמטים הבאים של מזהי חשבונות משתמשים ב-IAM:

    • חשבון Google
    • חשבון שירות
    • זהות יחידה במאגר זהויות של כוח עבודה
    • זהות יחידה במאגר זהויות של עומסי עבודה

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

הגדרת מכסות לפרויקטים ושינויים במדיניות התזמון

כדי לבקש תמיכה או לשלוח משוב על התכונה הזו, אפשר לפנות לכתובת bigquery-wlm-feedback@google.com.

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

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

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

  • מקבל ההקצאה חייב להיות Cloud de Confiance פרויקט. אין תמיכה בתיקיות ובארגונים.
  • המאפיין סוג העבודה צריך להיות לא מוגדר או מוגדר במפורש כ-JOB_TYPE_UNSPECIFIED.
  • כדי שהעדכון ייכנס לתוקף, צריך להפעיל שאילתה חדשה אחרי שינוי הערך במדיניות של max_slots.
  • מכסות צריכת משבצות ברמת הפרויקט לא נאכפות בשלב האימון של משימות ML_EXTERNAL. לפרטים נוספים, אפשר לעיין במאמר בנושא הקצאת משבצות לעומסי עבודה של BigQuery ML.

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

המסוף

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

    כניסה ל-BigQuery

  2. בתפריט הניווט, עוברים אל Administration > Workload management (ניהול עומסי עבודה).

  3. לוחצים על הכרטיסייה כללי הקצאה.

  4. לוחצים על יצירת כלל הקצאה.

  5. ברשימה סוג הכלל, בוחרים באפשרות מכסה לפרויקט.

  6. ברשימה Select a project, בוחרים פרויקט ולוחצים על Continue.

  7. ברשימה הזמנה, בוחרים הזמנה ולוחצים על המשך.

  8. בקטע Project override (שינוי ברירת המחדל של הפרויקט), מזינים ערכים בשדות Max slots (מקסימום משבצות) ו-Max concurrency (מקסימום מקביליות).

  9. לוחצים על יצירה.

SQL

כדי ליצור הקצאה של מדיניות לתזמון פרויקטים, משתמשים בהצהרת CREATE ASSIGNMENT DDL עם האפשרויות scheduling_policy_max_slots ו-scheduling_policy_concurrency.

CREATE ASSIGNMENT
  `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
OPTIONS (
  assignee = 'projects/PROJECT_ID',
  scheduling_policy_max_slots = MAX_SLOTS,
  scheduling_policy_concurrency = MAX_CONCURRENCY);

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב המקום השמור
  • ‫LOCATION: המיקום של ההזמנה
  • ‫RESERVATION_NAME: השם של ההזמנה
  • ‫ASSIGNMENT_ID: מזהה ההקצאה
  • ‫PROJECT_ID: מזהה ה Cloud de Confiance פרויקט שמוקצה
  • ‫MAX_SLOTS: המגבלה המקסימלית על צריכת המשבצות של שאילתות שפועלות בפרויקט
  • ‫MAX_CONCURRENCY: הגבול העליון של מספר השאילתות בו-זמניות שאושרו לפרויקט

BQ

כדי ליצור הקצאה של מדיניות תזמון באמצעות כלי שורת הפקודה bq, משתמשים בפקודה bq mk עם הדגלים --scheduling_policy_max_slots ו---scheduling_policy_concurrency.

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=RESERVATION_NAME \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT \
    --scheduling_policy_max_slots=MAX_SLOTS \
    --scheduling_policy_concurrency=MAX_CONCURRENCY

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב המקום השמור
  • ‫LOCATION: המיקום של ההזמנה
  • ‫RESERVATION_NAME: השם של ההזמנה
  • ‫PROJECT_ID: מזהה ה Cloud de Confiance פרויקט שמוקצה
  • ‫MAX_SLOTS: המגבלה המקסימלית על צריכת משבצות של שאילתות שמופעלות בפרויקט
  • ‫MAX_CONCURRENCY: הגבול העליון של מספר השאילתות בו-זמניות שאושרו לפרויקט

כדי לשנות או להסיר הקצאה קיימת של מדיניות תזמון, משתמשים בהצהרת DDL‏ ALTER ASSIGNMENT:

ALTER ASSIGNMENT
  `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
SET OPTIONS (
  scheduling_policy_max_slots = NEW_MAX_SLOTS,
  scheduling_policy_concurrency = NEW_MAX_CONCURRENCY);
-- To remove a scheduling policy setting, set its values to null. To all
   settings, delete the assignment.
   

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב המקום השמור
  • ‫LOCATION: המיקום של ההזמנה
  • ‫RESERVATION_NAME: השם של ההזמנה
  • ‫ASSIGNMENT_ID: מזהה ההקצאה
  • ‫NEW_MAX_SLOTS: המגבלה המקסימלית על צריכת משבצות של שאילתות שמופעלות בפרויקט
  • ‫NEW_MAX_CONCURRENCY: הגבול העליון של מספר השאילתות בו-זמניות שאושרו לפרויקט

כדי לראות חריגות פעילות ממדיניות התזמון, בודקים את העמודות scheduling_policy ו-assignment_type בתצוגה INFORMATION_SCHEMA.ASSIGNMENTS.

הקצאת פרויקט או תיקייה להזמנה

המסוף

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

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. לוחצים על הכרטיסייה הזמנות.

  4. מוצאים את ההזמנה בטבלת ההזמנות.

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

  6. לוחצים על יצירת מטלה.

  7. בקטע יצירת מטלה, לוחצים על עיון.

  8. מחפשים את הפרויקט או התיקייה ובוחרים אותם.

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

    • QUERY
    • CONTINUOUS
    • PIPELINE
    • BACKGROUND
    • ML_EXTERNAL

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

    מידע נוסף על סוגי העבודה זמין במאמר בנושא הקצאות של הזמנות. ערך ברירת המחדל הוא QUERY.

  10. אופציונלי: בשדה User, מזינים את כתובת האימייל של המשתמש, חשבון השירות או הזהות של הצד השלישי.

  11. לוחצים על יצירה.

SQL

כדי להקצות פרויקט להזמנה, משתמשים בהצהרת DDL‏ CREATE ASSIGNMENT.

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

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
    OPTIONS(
      assignee="projects/PROJECT_ID",
      job_type="JOB_TYPE",
      principal="PRINCIPAL");

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב ההזמנה
    • ‫LOCATION: המיקום של ההזמנה
    • ‫RESERVATION_NAME: השם של ההזמנה
    • ‫ASSIGNMENT_ID: מזהה ההקצאה

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

    • ‫PROJECT_ID: המזהה של הפרויקט שרוצים להקצות להזמנה
    • ‫JOB_TYPE: סוג העבודה שיוקצה להזמנה הזו, למשל QUERY,‏ CONTINUOUS,‏ PIPELINE,‏ BACKGROUND או ML_EXTERNAL
    • אופציונלי: PRINCIPAL: פורמט הזהות שמציין את המשתמש, חשבון השירות או הזהות של הצד השלישי. השדה principal תומך רק בפורמטים הבאים של מזהה חשבון משתמש ב-IAM:

      • חשבון Google
      • חשבון שירות
      • זהות יחידה במאגר זהויות של כוח עבודה
      • זהות יחידה במאגר זהויות של עומסי עבודה

  3. לוחצים על הפעלה.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

כדי להקצות משימות להזמנה, משתמשים בפקודה bq mk עם הדגל --reservation_assignment:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=RESERVATION_NAME \
    --assignee_type=PROJECT \
    --assignee_id=PROJECT_ID \
    --job_type=JOB_TYPE \
    --principal=PRINCIPAL

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב המקום השמור
  • ‫LOCATION: המיקום של ההזמנה
  • ‫RESERVATION_NAME: השם של ההזמנה
  • ‫PROJECT_ID: המזהה של הפרויקט להקצאה להזמנה הזו
  • ‫JOB_TYPE: סוג העבודה להקצאה להזמנה הזו, למשל QUERY,‏ CONTINUOUS,‏ PIPELINE,‏ BACKGROUND או ML_EXTERNAL
  • אופציונלי: PRINCIPAL: פורמט הזהות שמציין את המשתמש, חשבון השירות או הזהות של הצד השלישי.

    הדגל --principal תומך רק בפורמטים הבאים של מזהי חשבונות משתמשים ב-IAM:

    • חשבון Google
    • חשבון שירות
    • זהות יחידה במאגר זהויות של כוח עבודה
    • זהות יחידה במאגר זהויות של עומסי עבודה

Terraform

משתמשים במשאב google_bigquery_reservation_assignment.

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

בדוגמה הבאה, פרויקט מוקצה להזמנה בשם my-reservation:

resource "google_bigquery_reservation" "default" {
  name              = "my-reservation"
  location          = "us-central1"
  slot_capacity     = 100
  edition           = "ENTERPRISE"
  ignore_idle_slots = false # Use idle slots from other reservations
  concurrency       = 0     # Automatically adjust query concurrency based on available resources
  autoscale {
    max_slots = 200 # Allow the reservation to scale up to 300 slots (slot_capacity + max_slots) if needed
  }
}

data "google_project" "project" {}

resource "google_bigquery_reservation_assignment" "default" {
  assignee    = "projects/${data.google_project.project.project_id}"
  job_type    = "QUERY"
  reservation = google_bigquery_reservation.default.id
}

כדי להחיל את הגדרות Terraform בפרויקט ב- Cloud de Confiance , מבצעים את השלבים בקטעים הבאים.

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את Cloud de Confiance פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform.

    תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

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

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את Cloud de Confiance הפרויקט כדי לראות את התוצאות. במסוף Cloud de Confiance , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

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

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

מטלות ספציפיות למשתמש

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

כשמערכת BigQuery מחליטה באיזה מקום שמור להשתמש עבור עבודה, היא בודקת את ההקצאות לפי הסדר הבא:

  1. בודקים את היררכיית המשאבים, מתחילים בפרויקט, אחר כך בתיקיות האב ואז בארגון.
  2. בכל רמה בהיררכיה, BigQuery בודק קודם אם יש הקצאה שתואמת לחשבון המשתמש הספציפי שמריץ את המשימה.
  3. אם אין הקצאה שתואמת למנהל/ת באותה רמה, בודקים אם יש הקצאה כללית ללא מנהל/ת באותה רמה.
  4. אם לא נמצאה הקצאה, עוברים לרמה הבאה בהיררכיה.

הקצאה ברמת הפרויקט בלי חשבון משתמש מבטלת הקצאה ברמת התיקייה עם חשבון משתמש.

פורמטים נתמכים של ישויות ראשיות

האפשרות principal תומכת בפורמטים הבאים של חשבונות משתמשים ב-IAM v2:

סוג הזהות פורמט של חשבון משתמש ראשי
משתמשים principal://goog/subject/EMAIL_ADDRESS
חשבונות שירות principal://iam.googleapis.com/projects/-/serviceAccounts/EMAIL_ADDRESS
זהויות במאגר זהויות של כוח עבודה principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/SUBJECT_ID
זהויות במאגר זהויות של עומסי עבודה principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT_ID

הקצאת חשבון משתמש להזמנה

SQL

כדי ליצור הקצאה ספציפית למשתמש, משתמשים בהצהרת CREATE ASSIGNMENT DDL עם האפשרות principal.

CREATE ASSIGNMENT
  `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
OPTIONS (
  assignee = 'projects/PROJECT_ID',
  principal = 'principal://goog/subject/EMAIL_ADDRESS',
  job_type = 'QUERY');

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב המקום השמור
  • ‫LOCATION: המיקום של ההזמנה
  • ‫RESERVATION_NAME: השם של ההזמנה
  • ‫ASSIGNMENT_ID: מזהה ההקצאה
  • ‫PROJECT_ID: מזהה הפרויקט
  • ‫`EMAIL_ADDRESS: כתובת האימייל של המשתמש
  • ‫JOB_TYPE: סוג העבודה להקצאה להזמנה הזו, למשל QUERY,‏ CONTINUOUS,‏ PIPELINE,‏ BACKGROUND או ML_EXTERNAL

BQ

כדי ליצור הקצאה ספציפית למשתמש, משתמשים בפקודה bq mk עם הדגל --principal:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=RESERVATION_NAME \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT \
    --principal=PRINCIPAL \
    --job_type=JOB_TYPE

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב המקום השמור
  • ‫LOCATION: המיקום של ההזמנה
  • ‫RESERVATION_NAME: השם של ההזמנה
  • ‫ASSIGNMENT_ID: מזהה ההקצאה
  • ‫PROJECT_ID: מזהה הפרויקט
  • PRINCIPAL: the principal identifier, for example,principal://goog/subject/EMAIL_ADDRESS`
  • ‫JOB_TYPE: סוג העבודה להקצאה להזמנה הזו, למשל QUERY,‏ CONTINUOUS,‏ PIPELINE,‏ BACKGROUND או ML_EXTERNAL

הקצאת פרויקט ל-none

הערך 'מטלות ל-none' מייצג את העובדה שאין מטלה. בפרויקטים שהוקצו ל-none, התמחור הוא על פי דרישה.

SQL

כדי להקצות פרויקט ל-none, משתמשים בהצהרת ה-DDL‏ CREATE ASSIGNMENT.

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

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.none.ASSIGNMENT_ID`
    OPTIONS(
      assignee="projects/PROJECT_ID",
      job_type="QUERY");

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫LOCATION: המיקום של המשימות שצריך להשתמש בהן בתמחור לפי דרישה
    • ‫ASSIGNMENT_ID: מזהה ההקצאה

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

    • ‫PROJECT_ID: המזהה של הפרויקט שרוצים להקצות להזמנה

  3. לוחצים על הפעלה.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

כדי להקצות פרויקט ל-none, משתמשים בפקודה bq mk עם הדגל --reservation_assignment:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=none \
    --job_type=QUERY \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב המקום השמור
  • ‫LOCATION: המיקום של המשרות שצריך להחיל עליהן תמחור על פי דרישה
  • ‫PROJECT_ID: מזהה הפרויקט להקצאה ל-none

Terraform

משתמשים במשאב google_bigquery_reservation_assignment.

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

בדוגמה הבאה מוקצה פרויקט ל-none:

resource "google_bigquery_reservation_assignment" "default" {
  assignee    = "projects/PROJECT_ID"
  job_type    = "QUERY"
  reservation = "projects/ADMIN_PROJECT_ID/locations/LOCATION/reservations/none"
}

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב המקום השמור
  • ‫LOCATION: המיקום של המשרות שצריך להחיל עליהן תמחור על פי דרישה
  • ‫PROJECT_ID: מזהה הפרויקט להקצאה ל-none

כדי להחיל את הגדרות Terraform בפרויקט ב- Cloud de Confiance , מבצעים את השלבים בקטעים הבאים.

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את Cloud de Confiance פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform.

    תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

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

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את Cloud de Confiance הפרויקט כדי לראות את התוצאות. במסוף Cloud de Confiance , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

אם אין מקומות שמורים בפרויקט הניהול, צריך להשתמש בכלי שורת הפקודה של BigQuery כדי לראות את הפרויקטים שהוקצו ל-none.

שינוי ההגדרה של מקום שמור בשאילתה

כדי להשתמש בהזמנה ספציפית בשאילתה, אתם צריכים את ההרשאה הבאה בניהול זהויות והרשאות גישה (IAM):

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

המסוף

  1. עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. לוחצים על שאילתת SQL.

  3. בעורך השאילתות, מזינים שאילתת GoogleSQL תקינה.

  4. לוחצים על עריכה > הגדרות השאילתה.

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

  6. ברשימה Reservation, בוחרים את ההזמנה שרוצים שהשאילתה תפעל בה.

  7. לוחצים על Save.

  8. כותבים שאילתה בכרטיסיית העורך ומריצים אותה. השאילתה מופעלת בהזמנה שציינתם.

SQL

מגדירים את משתנה המערכת @@reservation בסשן כדי להקצות את ההזמנה שהשאילתה פועלת בה:

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

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    SET @@reservation='RESERVATION';
    SELECT QUERY;

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫RESERVATION: ההזמנה שבה רוצים להריץ את השאילתה.

    • ‫QUERY: השאילתה שרוצים להריץ.

  3. לוחצים על הפעלה.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

לדוגמה, השאילתה הבאה משתמשת בהצהרה SET כדי להגדיר את המקום השמור ל-test-reservation באזור US שכולל מספר אזורים, ואז קוראת לשאילתה בסיסית:

SET @@reservation='projects/project1/locations/US/reservations/test-reservation';
SELECT 42;

BQ

  1. במסוף Cloud de Confiance , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Cloud de Confiance המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. ב-Cloud Shell, מריצים את השאילתה באמצעות הפקודה bq query עם הדגל --reservation_id:

    bq query --use_legacy_sql=false --reservation_id=RESERVATION_ID
    'QUERY'

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫RESERVATION_ID: ההזמנה שבה רוצים להריץ את השאילתה.

    • ‫QUERY: הצהרת ה-SQL של השאילתה.

    לדוגמה, השאילתה הבאה מופעלת בהזמנה test-reservation במספר אזורים US:

    bq query --reservation_id=project1.US:test-reservation 'SELECT 42;'

API

כדי לציין הזמנה באמצעות ה-API, מוסיפים משימה חדשה ומאכלסים את מאפיין הגדרת המשימה query. מציינים את ההזמנה בשדה reservation.

הקצאת יחידות קיבולת לעומסי עבודה של BigQuery ML

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

מודלים חיצוניים

סוגי המודלים הבאים של BigQuery ML משתמשים בשירותים חיצוניים:

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

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

מודלים של פירוק מטריצות

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

סוגים אחרים של מודלים

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

חיפוש הקצאות של הזמנות

ההרשאות הנדרשות

כדי לחפש הקצאה של הזמנה לפרויקט, לתיקייה או לארגון מסוימים, אתם צריכים את ההרשאה הבאה בניהול הזהויות והרשאות הגישה (IAM):

  • ‫bigquery.reservationAssignments.list בפרויקט הניהול.

כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הזו:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor
  • BigQuery Resource Viewer
  • BigQuery User

מידע נוסף על תפקידי IAM ב-BigQuery זמין במאמר תפקידים והרשאות מוגדרים מראש.

חיפוש הקצאת מקום שמור לפרויקט

כדי לבדוק אם הפרויקט, התיקייה או הארגון שלכם משויכים להזמנה:

המסוף

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

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. לוחצים על הכרטיסייה הזמנות.

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

SQL

כדי לגלות לאיזו הזמנה מוקצות משימות השאילתה של הפרויקט, צריך להריץ שאילתה על התצוגה המפורטת INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT.

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

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

      SELECT
        assignment_id
      FROM `region-LOCATION`.INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT
      WHERE
        assignee_id = 'PROJECT_ID'
        AND job_type = 'JOB_TYPE';

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫LOCATION: המיקום של ההזמנות שרוצים לראות
    • ‫ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב ההזמנה
    • ‫PROJECT_ID: המזהה של הפרויקט שרוצים להקצות להזמנה
    • ‫JOB_TYPE: סוג העבודה שיוקצה להזמנה הזו, למשל QUERY,‏ CONTINUOUS,‏ PIPELINE,‏ BACKGROUND או ML_EXTERNAL

  3. לוחצים על הפעלה.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

כדי לגלות לאיזו הזמנה משויכות משימות השאילתות של הפרויקט, משתמשים בפקודה bq show עם הדגל --reservation_assignment:

bq show \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --job_type=JOB_TYPE \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT

כדי למצוא הקצאה ספציפית למשתמש, מוסיפים את הדגל --principal:

bq show \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --job_type=JOB_TYPE \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT \
    --principal=PRINCIPAL

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: המזהה של הפרויקט שבבעלותו משאב ההזמנה
  • ‫LOCATION: המיקום של ההזמנות שרוצים לראות
  • ‫JOB_TYPE: סוג העבודה שיוקצה להזמנה הזו, למשל QUERY,‏ CONTINUOUS,‏ PIPELINE,‏ BACKGROUND או ML_EXTERNAL
  • ‫PROJECT_ID: מזהה הפרויקט
  • ‫PRINCIPAL: המזהה של החשבון הראשי, לדוגמה, principal://goog/subject/EMAIL_ADDRESS

כדי לראות את כללי ההקצאה הפעילים שספציפיים למשתמש, בודקים את העמודה principal בתצוגה INFORMATION_SCHEMA.ASSIGNMENTS או מריצים את הפקודה bq ls --reservation_assignment. בנוסף, אפשר לבדוק איזה נתונים ממקום שמור הופעלו עבור עבודה ספציפית על ידי שליחת שאילתה לתצוגה INFORMATION_SCHEMA.JOBS. כשמשתמשים בפקודה bq show --reservation_assignment, אפשר לכלול את הדגל האופציונלי --principal כדי לסנן הקצאה של משתמש ספציפי.

עדכון ההקצאות של ההזמנות

העברת מטלה להזמנה אחרת

אפשר להעביר מטלה מהזמנה אחת להזמנה אחרת.

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

  • bigquery.reservationAssignments.create
  • bigquery.reservationAssignments.delete

כל אחד מתפקידי ה-IAM שמוגדרים מראש כולל את ההרשאות האלה:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

מידע נוסף על תפקידי IAM ב-BigQuery זמין במאמר תפקידים והרשאות מוגדרים מראש.

כדי להעביר מטלה, משתמשים בפקודה bq update:

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --destination_reservation_id=DESTINATION_RESERVATION \
    ADMIN_PROJECT_ID:LOCATION.RESERVATION_NAME.ASSIGNMENT_ID

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_PROJECT_ID: המזהה של הפרויקט שבבעלותו משאב ההזמנה
  • ‫LOCATION: המיקום של ההזמנה החדשה
  • ‫RESERVATION_NAME: ההזמנה שממנה רוצים להעביר את ההקצאה
  • ‫DESTINATION_RESERVATION: ההזמנה שאליה רוצים להעביר את ההקצאה
  • ‫ASSIGNMENT_ID: מזהה ההקצאה

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

מחיקת הקצאות של הזמנות

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

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

ההרשאות הנדרשות

כדי למחוק הקצאה של הזמנה, אתם צריכים את ההרשאה הבאה בממשק של ניהול הזהויות והרשאות הגישה (IAM):

כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הזו:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

הסרת פרויקט מהזמנה

כדי להסיר פרויקט מהזמנה:

המסוף

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

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. לוחצים על הכרטיסייה הזמנות.

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

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

  6. לוחצים על Delete.

SQL

משתמשים בהצהרת ה-DDL‏ DROP ASSIGNMENT.

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

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    DROP ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`;

    מחליפים את מה שכתוב בשדות הבאים:

  3. לוחצים על הפעלה.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

כדי להסיר פרויקט מהזמנה, משתמשים בפקודה bq rm עם הדגל --reservation_assignment:

bq rm \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment RESERVATION_NAME.ASSIGNMENT_ID

מחליפים את מה שכתוב בשדות הבאים: