הרצת שאילתות על טבלה

הקטלוג הייעודי לזמן ריצה של Lakehouse מאפשר לנתח טבלאות Apache Iceberg שמאוחסנות ב-Cloud Storage בלי להעביר או לשכפל נתונים. אתם יכולים להריץ שאילתות SQL ממנועי קוד פתוח כמו Apache Spark ו-Trino, או ישירות מ-BigQuery באמצעות שם טבלה שמורכב מארבעה חלקים: P.C.N.T (Project.Catalog.Namespace.Table).

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

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

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

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

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

    להפעלת ה-API

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

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

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

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

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

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

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

כשמשתמשים בטבלאות בקטלוג הייעודי לזמן ריצה של 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';

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