שינוי טבלה

שינוי טבלה מאפשר לפתח את הסכימה (למשל, להוסיף עמודות) ולעדכן את מאפייני המטא-נתונים של הטבלה.

השינויים מנוהלים על ידי קטלוג זמן הריצה של Lakehouse.

לפני שמתחילים

  1. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  2. מפעילים את BigLake API, אם הוא עדיין לא מופעל.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    להפעלת ה-API

  3. מגדירים את קטלוג זמן הריצה של Lakehouse עם נקודת הקצה (endpoint) של קטלוג REST של Apache Iceberg.

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

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

  • שינוי טבלה במצב של מכירת אישורים: BigLake Editor (roles/biglake.editor) – הפרויקט
  • שינוי טבלה במצב שאינו מצב מכירת אישורים:
    • BigLake Editor (roles/biglake.editor) – הפרויקט
    • משתמש באובייקטים באחסון (roles/storage.objectUser) – קטגוריה של Cloud Storage

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

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

יכולות ותמיכה בטבלאות

כשמשתמשים בטבלאות בקטלוג של Lakehouse runtime, כדאי להבין את הסוגים השונים של הטבלאות ואת היכולות שלהן. מידע נוסף על שימוש בטבלאות Apache Iceberg

טבלאות Iceberg נתמכות

יש תמיכה רק בטבלאות Apache Iceberg V2 (זמינות כללית) ו-V3 (גרסת Preview). אין תמיכה בטבלאות Iceberg V1. כדי לשדרג טבלאות קיימות בגרסה 1, אפשר לעיין במאמר שדרוג טבלאות Iceberg בגרסה 1 לגרסה 2.

שימוש באפשרויות של הטבלה (תצוגה מקדימה)

אתם יכולים להגדיר מאפיינים ספציפיים של טבלאות כדי להשתמש ביכולות מנוהלות של BigQuery, כמו שפת הטיפול בנתונים (DML) ב-BigQuery וניהול אוטומטי של טבלאות. התכונות האלה מופעלות בדרכים שונות בהתאם למקום שבו הטבלה נוצרה:

  • מ-BigQuery: שפת הטיפול בנתונים (DML) ב-BigQuery וניהול אוטומטי של טבלאות מופעלים כברירת מחדל.
  • ממנועי קוד פתוח: כדי להצטרף, צריך להגדיר במפורש את מאפייני הטבלה. מידע נוסף מופיע במאמר הגדרת אפשרויות של טבלה.

הוראות מפורטות זמינות במאמר בנושא הגדרת אפשרויות של טבלה.

שינוי טבלה

כדי להוסיף עמודה לטבלה:

המסוף

  1. במסוף Google Cloud , עוברים אל Lakehouse.

    מעבר אל Lakehouse

  2. בוחרים קטלוג קיים או יוצרים קטלוג חדש אם אין לכם קטלוג.

  3. בטבלה פרטי מרחב שמות, בוחרים טבלה ומרחיבים את אפשרויות התפריט.

  4. לוחצים על Edit.

  5. מעדכנים את ערכי הטבלה בתיבת הדו-שיח. בקטע Properties (מאפיינים), אפשר להוסיף או לשנות מאפיינים כמו gcp.biglake.bigquery-dml.enabled ו-gcp.biglake.table-management.enabled כדי להפעיל או להשבית את BigQuery DML או את הניהול האוטומטי של טבלאות.

    לדוגמה, אפשר להגדיר את הערכים האלה ל-true כדי להפעיל את היכולות האלה. מידע נוסף מופיע במאמר בנושא הגדרת אפשרויות לטבלה.

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

Spark

spark.sql("ALTER TABLE TABLE_NAME ADD COLUMNS ( desc string);")
spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()

כדי להפעיל קריאה/כתיבה של נתונים וניהול טבלאות, מגדירים את המאפיינים באמצעות פסוקית SET TBLPROPERTIES:

SET TBLPROPERTIES (
  'gcp.biglake.bigquery-dml.enabled' = true,
  'gcp.biglake.table-management.enabled' = true
)

Trino

ALTER TABLE TABLE_NAME ADD COLUMN desc varchar;
DESCRIBE SCHEMA_NAME.TABLE_NAME;

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

  • 'gcp.biglake.bigquery-dml.enabled' = true
  • 'gcp.biglake.table-management.enabled' = true

gcloud

כדי לעדכן את מאפייני הטבלה באמצעות gcloud, מריצים את הפקודה gcloud biglake iceberg tables update.

gcloud biglake iceberg tables update TABLE_NAME \
    --project="PROJECT_ID" \
    --catalog="CATALOG_ID" \
    --namespace="NAMESPACE_NAME" \
    --update-properties="KEY=VALUE,..."

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

  • ‫TABLE_NAME: השם של טבלת Iceberg.
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ‫CATALOG_ID: המזהה של הקטלוג.
  • ‫NAMESPACE_NAME: השם של מרחב השמות של הקטלוג.
  • ‫KEY=VALUE,...: מאפייני הטבלה שרוצים להוסיף או לעדכן.

BigQuery

כדי לעדכן את מאפייני הטבלה של טבלת Apache Iceberg בקטלוג של Lakehouse runtime מ-BigQuery (למשל, כדי להפעיל BigQuery DML או ניהול אוטומטי של טבלאות), משתמשים בהצהרת GoogleSQL ALTER TABLE הבאה:

ALTER TABLE `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME`
SET OPTIONS (`properties.gcp.biglake.table-management` = "enabled");

כדי לעדכן את הסכימה ולהוסיף עמודה בטבלת Apache Iceberg בקטלוג של Lakehouse runtime מ-BigQuery, משתמשים בהצהרת GoogleSQL ALTER TABLE הבאה:

ALTER TABLE `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME`
ADD COLUMN new_column STRING;

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

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ‫CATALOG_ID: מזהה קטלוג זמן הריצה של Lakehouse.
  • ‫NAMESPACE: שם מרחב השמות של Iceberg.
  • ‫TABLE_NAME: השם של טבלת Iceberg.

REST

כדי לבצע שמירה של שינויים בטבלת Iceberg באמצעות API בארכיטקטורת REST, שולחים POST בקשה לנקודת הקצה UpdateIcebergTable ‏ (CommitTable):

POST /iceberg/v1/restcatalog/v1/projects/PROJECT_ID/catalogs/CATALOG_ID/namespaces/NAMESPACE_NAME/tables/TABLE_NAME

גוף הבקשה צריך להכיל מטען ייעודי (payload) תקין בפורמט JSON של Iceberg CommitTableRequest שמגדיר את דרישת הבסיס ואת רשימת עדכוני המטא-נתונים שרוצים להחיל.

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

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ‫CATALOG_ID: המזהה של הקטלוג.
  • ‫NAMESPACE_NAME: השם של מרחב השמות של הקטלוג.
  • ‫TABLE_NAME: השם של טבלת Iceberg.

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