כששולחים שאילתה לטבלה, הנתונים נקראים מקבצי Cloud Storage הבסיסיים באמצעות המטא-נתונים שמנוהלים על ידי קטלוג זמן הריצה של Lakehouse.
אפשר להריץ שאילתות ממנועי קוד פתוח כמו Spark ו-Trino, או ישירות מ-BigQuery באמצעות תחביר של שם טבלה בן ארבעה חלקים (תחביר P.C.N.T).
לפני שמתחילים
-
מפעילים את BigLake API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של שימוש בשירות' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים - מגדירים את קטלוג זמן הריצה של Lakehouse עם נקודת הקצה (endpoint) של קטלוג REST של Apache Iceberg.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לשליחת שאילתה לטבלה, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט ובקטגוריית האחסון:
-
קריאת נתוני טבלה במצב של מכירת אישורים:
BigLake Viewer (
roles/biglake.viewer) – הפרויקט -
קריאת נתוני טבלה במצב שאינו credential vending:
- בעל הרשאת צפייה ב-BigLake (
roles/biglake.viewer) – הפרויקט - צפייה באובייקטים של אחסון (
roles/storage.objectViewer) – קטגוריה של Cloud Storage
- בעל הרשאת צפייה ב-BigLake (
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יכולות ותמיכה בטבלאות
כשמשתמשים בטבלאות בקטלוג של Lakehouse runtime, כדאי להבין את סוגי הטבלאות השונים ואת האפשרויות שלהן. מידע נוסף על שימוש בטבלאות Apache Iceberg
טבלאות Iceberg נתמכות
יש תמיכה רק בטבלאות Apache Iceberg V2 (זמינות כללית) ו-V3 (גרסת Preview). אין תמיכה בטבלאות Iceberg V1. כדי לשדרג טבלאות קיימות בגרסה 1, אפשר לעיין במאמר שדרוג טבלאות Iceberg בגרסה 1 לגרסה 2.
שימוש באפשרויות של הטבלה (גרסת Preview)
אתם יכולים להגדיר מאפיינים ספציפיים של טבלאות כדי להשתמש ביכולות מנוהלות של BigQuery, כמו שפת הטיפול בנתונים (DML) ב-BigQuery וניהול אוטומטי של טבלאות. התכונות האלה מופעלות בדרכים שונות בהתאם למקום שבו הטבלה נוצרת:
- מ-BigQuery: שפת הטיפול בנתונים (DML) ב-BigQuery וניהול אוטומטי של טבלאות מופעלים כברירת מחדל.
- ממנועי קוד פתוח: כדי להצטרף, צריך להגדיר במפורש את מאפייני הטבלה. מידע נוסף מופיע במאמר הגדרת אפשרויות של טבלה.
כששולחים שאילתות לטבלאות מ-BigQuery, אפשר לגשת לטבלאות Iceberg רגילות וגם לטבלאות שמופעלות בהן יכולות מנוהלות של BigQuery. הוראות מפורטות זמינות במאמר בנושא הגדרת אפשרויות של טבלה.
שאילתות על טבלה
בוחרים את כל הנתונים מהטבלה:
Spark
spark.sql("SELECT * FROM TABLE_NAME;").show()
Trino
SELECT * FROM TABLE_NAME;
BigQuery
כדי להריץ שאילתות על טבלאות Apache Iceberg בקטלוג של Lakehouse runtime מ-BigQuery, צריך להשתמש בשם הטבלה בן ארבעת החלקים בשאילתה בפורמט הבא: PROJECT_NAME.CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME.
SELECT * FROM `PROJECT_NAME.CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME`;
מחליפים את הערכים הבאים:
PROJECT_NAME:Google Cloud הפרויקט שבבעלותו הקטלוג בקטלוג של זמן הריצה של Lakehouse. החיוב על השאילתה מתבצע דרך הפרויקט שנבחר במסוף Google Cloud Google Cloud .
CATALOG_ID: המזהה של קטלוג זמן הריצה של Lakehouse שצוין כשנוצר הקטלוג. המזהה הזה משמש כשם הקטלוג בשאילתות BigQuery.המזהה הזה הוא גם השם של הקטגוריה שלכם ב-Cloud Storage.
לדוגמה, אם יצרתם קטגוריה לאחסון הקטלוג ונתתם לה את השם
iceberg-bucket, גם שם הקטלוג וגם שם הקטגוריה יהיוiceberg-bucket. הערך הזה משמש בהמשך כששולחים שאילתה לקטלוג ב-BigQuery באמצעות התחביר של P.C.N.T. לדוגמה:my-project.catalog_id.quickstart_namespace.quickstart_table.
NAMESPACE_OR_SCHEMA_NAME: מרחב השמות של הטבלה אם משתמשים ב-Spark, או שם סכימת הטבלה אם משתמשים ב-Trino.
TABLE_NAME: שם הטבלה.
שליחת שאילתות באמצעות מסע בזמן
אתם יכולים לשלוח שאילתות על נתונים היסטוריים מטבלאות Iceberg של Lakehouse באמצעות תכונת Time Travel. אפשר לבצע 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';