הקטלוג הייעודי לזמן ריצה של Lakehouse מאפשר לנתח טבלאות Apache Iceberg שמאוחסנות ב-Cloud Storage בלי להעביר או לשכפל נתונים. אתם יכולים להריץ שאילתות SQL ממנועי קוד פתוח כמו Apache Spark ו-Trino, או ישירות מ-BigQuery באמצעות שם טבלה שמורכב מארבעה חלקים: P.C.N.T (Project.Catalog.Namespace.Table).
לפני שמתחילים
-
מפעילים את BigLake API, אם הוא עדיין לא מופעל.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים - מגדירים את הקטלוג הייעודי לזמן ריצה של Lakehouse עם נקודת הקצה (endpoint) של קטלוג REST של Apache Iceberg.
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות לשליחת שאילתות לטבלה, בקשו מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט ובקטגוריית האחסון:
-
קריאת נתוני טבלה במצב הפצת פרטי כניסה:
BigLake Viewer (
roles/biglake.viewer) – הפרויקט -
קריאת נתוני טבלה במצב שאינו הפצת פרטי כניסה:
- צפייה ב-BigLake (
roles/biglake.viewer) – הפרויקט - צפייה באובייקטים של אחסון (
roles/storage.objectViewer) – הקטגוריה של Cloud Storage
- צפייה ב-BigLake (
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יכולות ותמיכה בטבלאות
כשמשתמשים בטבלאות בקטלוג הייעודי לזמן ריצה של Lakehouse, כדאי להבין את סוגי הטבלאות השונים ואת יכולות ההצטרפות שלהם. למידע נוסף על השימוש בטבלאות Apache Iceberg, קראו את סקירה כללית על טבלאות Apache Iceberg.
טבלאות Iceberg נתמכות
יש תמיכה רק בטבלאות Apache Iceberg V2 (GA) ו-V3 (גרסת טרום-השקה (Preview)). אין תמיכה בטבלאות Iceberg V1. כדי לשדרג טבלאות קיימות בגרסה 1, קראו את המאמר שדרוג טבלאות Iceberg מגרסה 1 לגרסה 2.
שימוש באפשרויות של הטבלה (גרסת טרום-השקה)
כדי להשתמש ביכולות המנוהלות של BigQuery, כמו שפת הטיפול בנתונים (DML) של BigQuery וניהול אוטומטי של טבלאות, אתם יכולים להגדיר מאפייני טבלה ספציפיים. התכונות האלה מופעלות בדרכים שונות, בהתאם למקום שבו הטבלה נוצרה:
- מ-BigQuery: כברירת מחדל, מופעלים BigQuery DML וניהול אוטומטי של טבלאות.
- ממנועי קוד פתוח: כדי להצטרף, צריך להגדיר במפורש את מאפייני הטבלה. מידע נוסף מופיע בקטע הגדרת אפשרויות הטבלה.
כששולחים שאילתות לטבלאות מ-BigQuery, אפשר לגשת לטבלאות Iceberg רגילות וגם לטבלאות שמופעלות בהן יכולות מנוהלות של BigQuery. הוראות מפורטות זמינות במאמר הגדרת אפשרויות טבלה.
הרצת שאילתה על טבלה
בוחרים את כל הנתונים מהטבלה:
Spark
spark.sql("SELECT * FROM TABLE_NAME;").show()
Trino
SELECT * FROM TABLE_NAME;
BigQuery
כדי לשלוח שאילתות לטבלאות Apache Iceberg בקטלוג הייעודי לזמן ריצה של Lakehouse מ-BigQuery, צריך להשתמש בשם הטבלה שמורכב מארבעה חלקים בשאילתה, בפורמט הבא: PROJECT_ID.CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME.
SELECT * FROM `PROJECT_ID.CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME`;
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: המזהה שלGoogle Cloud הפרויקט שהקטלוג שייך לו בקטלוג הייעודי לזמן ריצה של Lakehouse. הפרויקט שנבחר ב-Google Cloud במסוף Google Cloud מחויב על השאילתה.
CATALOG_ID: המזהה של הקטלוג הייעודי לזמן ריצה ב-Lakehouse, שצוין כשהקטלוג נוצר. המזהה הזה משמש כשם הקטלוג בשאילתות של BigQuery. בקטלוגים עם כמה קטגוריות, המזהה הזה הוא השם שנתתם לקטלוג המותאם אישית. בקטלוגים עם קטגוריה אחת, המזהה הזה תואם לשם של הקטגוריה ב-Cloud Storage.
NAMESPACE_OR_SCHEMA_NAME: מרחב השמות של הטבלה אם משתמשים ב-Spark, או שם הסכימה של הטבלה אם משתמשים ב-Trino.
TABLE_NAME: שם הטבלה.
שליחת שאילתות באמצעות Time Travel
אתם יכולים להריץ שאילתות על נתונים היסטוריים מהטבלאות המנוהלות של Apache Iceberg באמצעות נסיעה בזמן. אתם יכולים להשתמש ב-Time Travel מ-BigQuery באמצעות הפסוקית FOR
SYSTEM_TIME AS OF, או ממנועי קוד פתוח כמו Spark באמצעות מזהי תמונת מצב, חותמות זמן, תגים או הסתעפויות.
שאילתה לפי חותמת זמן
כדי לשלוח שאילתה על נתונים מחותמת זמן ספציפית:
Spark
SELECT * FROM NAMESPACE.TABLE_NAME TIMESTAMP AS OF '2026-02-26 01:21:00';
BigQuery
SELECT * FROM `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME` FOR SYSTEM_TIME AS OF '2026-02-26 01:21:00';
שאילתה לפי מזהה תמונת המצב
כדי לשלוח שאילתה על נתונים נכון למזהה ספציפי של תמונת מצב:
Spark
SELECT * FROM NAMESPACE.TABLE_NAME VERSION AS OF 10963874102873;
שאילתה לפי תג
כדי ליצור תג ולשאול נתונים החל מהתג הזה:
Spark
-- Create tag 'historical-snapshot'
ALTER TABLE NAMESPACE.TABLE_NAME CREATE TAG 'historical-snapshot' AS OF VERSION 123456789012345;
-- Query by tag
SELECT * FROM NAMESPACE.TABLE_NAME VERSION AS OF 'historical-snapshot';
שאילתה לפי סניף
כדי ליצור הסתעפות ולשאול נתונים מההסתעפות הזו:
Spark
-- Create branch 'audit-branch'
ALTER TABLE NAMESPACE.TABLE_NAME CREATE BRANCH 'audit-branch' AS OF VERSION 123456789012345;
-- Query by branch
SELECT * FROM NAMESPACE.TABLE_NAME VERSION AS OF 'audit-branch';