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

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

אפשר להריץ שאילתות ממנועי קוד פתוח כמו Spark ו-Trino, או ישירות מ-BigQuery באמצעות תחביר של שם טבלה בן ארבעה חלקים (תחביר P.C.N.T).

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

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

  2. מפעילים את BigLake API.

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

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של שימוש בשירות' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    להפעלת ה-API

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

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

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

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

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

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

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

כשמשתמשים בטבלאות בקטלוג של 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';

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