ציון עמודות ObjectRef בסכימות של טבלאות

במאמר הזה מוסבר איך להגדיר סכימה של טבלה רגילה ב-BigQuery עם עמודות שיכולות לאחסן ערכים של ObjectRef.

הערכים של ObjectRef מספקים מטא-נתונים ופרטי חיבור לאובייקטים ב-Cloud Storage. משתמשים בערכים ObjectRef כשרוצים לשלב נתונים לא מובְנים בטבלה רגילה. לדוגמה, בטבלת מוצרים, אפשר לאחסן תמונות של מוצרים באותה שורה עם שאר פרטי המוצר על ידי הוספת עמודה שמכילה ערכים של ObjectRef. אפשר לאחסן ערכים של ObjectRef בעמודות STRUCT שמשתמשות בפורמט ObjectRef, שהוא STRUCT<uri STRING, version STRING, authorizer STRING, details JSON>.

מידע נוסף על עבודה עם נתונים מ-multimodal זמין במאמר בנושא ניתוח נתונים מ-multimodal. מדריך שמסביר איך לעבוד עם נתוני ObjectRef זמין במאמר ניתוח נתונים מרובי-אופנים באמצעות SQL.

דרישות מוקדמות

כדי לאכלס ולעדכן את הערכים של ObjectRef בטבלה רגילה, הטבלה צריכה לכלול עמודה STRING שמכילה מידע על URI של אובייקטים קשורים ב-Cloud Storage.

צריך שתהיה לכם קטגוריה של Cloud Storage שמכילה את אותם אובייקטים שמזוהים בנתוני ה-URI של טבלת היעד הרגילה.

שמירה על ערכים של ObjectRef

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

באופן דומה, אם כבר יש לכם מערך נתונים של Storage Insights למטא-נתונים של אובייקטים, אתם יכולים להשתמש בעמודה ref.uri או selfLink כדי לצרף את הטבלה הרגילה למערך הנתונים של Storage Insights, ולאכלס ולעדכן את הערכים של ObjectRef. לערכי ObjectRef שנוצרו במערכי נתונים של Storage Insights אין הרשאה. כדי לבצע שאילתה על האובייקטים האלה, צריך גישה ישירה לאובייקט או להוסיף אמצעי הרשאה ל-ObjectRef כדי להשתמש בגישה מוקצית.

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

יצירת עמודה ObjectRef

כדי ליצור עמודה ObjectRef בטבלה רגילה ולאכלס אותה, בוחרים באחת מהאפשרויות הבאות:

פונקציות SQL

יצירה ואכלוס של עמודה ObjectRef על סמך הפלט מהפונקציה OBJ.MAKE_REF:

  1. במסוף Cloud de Confiance , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. מזינים את ההצהרה הבאה בעורך השאילתות:

    CREATE OR REPLACE TABLE PROJECT_ID.DATASET_ID.TABLE_NAME
    AS
    SELECT TABLE_NAME.*,
      OBJ.MAKE_REF(uri, 'CONNECTION_ID') AS objectrefcolumn
    FROM DATASET_ID.TABLE_NAME;

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

    • PROJECT_ID: מזהה הפרויקט. אפשר לדלג על הארגומנט הזה אם יוצרים את הטבלה בפרויקט הנוכחי.
    • DATASET_ID: המזהה של מערך הנתונים שאתם יוצרים.
    • TABLE_NAME: השם של הטבלה הרגילה שיוצרים מחדש.
    • CONNECTION_ID: ערך STRING שמכיל קישור למשאבים ב-Cloud שהשירות יכול להשתמש בו כדי לגשת לאובייקטים ב-Cloud Storage, בפורמט location.connection_id. לדוגמה, us-west1.myconnection. אפשר לקבל את מזהה החיבור על ידי צפייה בפרטי החיבור במסוף Cloud de Confiance והעתקת הערך בקטע האחרון של מזהה החיבור המלא שמוצג במזהה החיבור. לדוגמה, projects/myproject/locations/connection_location/connections/myconnection.

      צריך להעניק לחשבון השירות של החיבור את התפקיד 'משתמש באובייקט אחסון' (roles/storage.objectUser) בכל קטגוריה של Cloud Storage שבה משתמשים בו כדי לגשת לאובייקטים.

      החיבור צריך להיות באותו פרויקט ובאותו אזור כמו השאילתה שבה קוראים לפונקציה.

  3. לוחצים על הפעלה.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

טבלת אובייקטים

יצירה של עמודה ObjectRef ואכלוס שלה על סמך נתונים מעמודה ref בטבלת אובייקטים:

  1. במסוף Cloud de Confiance , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. מזינים את ההצהרה הבאה בעורך השאילתות:

    CREATE OR REPLACE TABLE PROJECT_ID.DATASET_ID.TABLE_NAME
    AS
    SELECT TABLE_NAME.*, OBJECT_TABLE.ref AS objectrefcolumn
    FROM DATASET_ID.TABLE_NAME
    INNER JOIN DATASET_ID.OBJECT_TABLE
    ON OBJECT_TABLE.uri = TABLE_NAME.uri;

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

    • PROJECT_ID: מזהה הפרויקט. אפשר לדלג על הארגומנט הזה אם יוצרים את הטבלה בפרויקט הנוכחי.
    • DATASET_ID: המזהה של מערך הנתונים שאתם יוצרים.
    • TABLE_NAME: השם של הטבלה הרגילה שיוצרים מחדש.
    • OBJECT_TABLE: השם של טבלת האובייקטים שמכילה את נתוני האובייקטים שרוצים לשלב בטבלה הסטנדרטית.

  3. לוחצים על הפעלה.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

יצירת עמודה ARRAY<ObjectRef>

אפשר ליצור עמודה שתכיל מערכים של ערכים.ARRAY<STRUCT<uri STRING, version STRING, authorizer STRING, details JSON>>ObjectRef לדוגמה, אפשר לחלק סרטון לתמונות נפרדות, ואז לאחסן את התמונות האלה כמערך של ערכי ObjectRef.

אפשר להשתמש בפונקציה ARRAY_AGG כדי לצבור מערכים של ערכי ObjectRef, כולל שימוש בסעיף ORDER BY כדי לשמור על סדר האובייקטים אם צריך. אפשר להשתמש באופרטור UNNEST כדי לנתח מערך של ערכי ObjectRef לערכי ObjectRef בודדים, כולל שימוש בסעיף WITH OFFSET כדי לשמור על סדר האובייקטים אם צריך. אפשר להשתמש במטא-נתונים של אובייקטים, כמו נתיב ה-URI ושם הקובץ של האובייקט, כדי למפות ערכים של ObjectRef שמייצגים נתחי אובייקטים לערך של ObjectRef שמייצג את האובייקט המקורי.

כדי לראות דוגמה לאופן השימוש במערכים של ערכי ObjectRef, אפשר לעיין בקטע עיבוד נתונים מרובי-אופנים מסודרים באמצעות ערכי ARRAY<ObjectRef> במדריך ניתוח נתונים מרובי-אופנים באמצעות SQL.

עדכון עמודה ObjectRef

כדי לעדכן עמודה מסוג ObjectRef בטבלה רגילה, בוחרים באחת מהאפשרויות הבאות:

טבלת אובייקטים

עדכון עמודה ObjectRef באמצעות נתונים מעמודה של טבלת אובייקט ref:

  1. במסוף Cloud de Confiance , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. מזינים את ההצהרה הבאה בעורך השאילתות:

    UPDATE PROJECT_ID.DATASET_ID.TABLE_NAME
    SET objectrefcolumn = (SELECT ref FROM DATASET_ID.OBJECT_TABLE WHERE OBJECT_TABLE.uri = TABLE_NAME.uri)
    WHERE uri != "";

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

    • PROJECT_ID: מזהה הפרויקט. אפשר לדלג על הארגומנט הזה אם יוצרים את הטבלה בפרויקט הנוכחי.
    • DATASET_ID: המזהה של מערך הנתונים שאתם יוצרים.
    • TABLE_NAME: השם של הטבלה הרגילה שיוצרים מחדש.
    • OBJECT_TABLE: השם של טבלת האובייקטים שמכילה את אותם נתוני אובייקטים כמו העמודה של הטבלה הרגילה ObjectRef.

  3. לוחצים על הפעלה.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

פונקציות SQL

עדכון עמודה ObjectRef באמצעות פלט מהפונקציות OBJ.FETCH_METADATA ו-OBJ.MAKE_REF:

  1. במסוף Cloud de Confiance , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. מזינים את ההצהרה הבאה בעורך השאילתות:

    UPDATE PROJECT_ID.DATASET_ID.TABLE_NAME
    SET objectrefcolumn = (SELECT OBJ.MAKE_REF(uri, 'CONNECTION_ID'))
    WHERE uri != "";

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

    • PROJECT_ID: מזהה הפרויקט. אפשר לדלג על הארגומנט הזה אם יוצרים את הטבלה בפרויקט הנוכחי.
    • DATASET_ID: המזהה של מערך הנתונים שאתם יוצרים.
    • TABLE_NAME: השם של הטבלה הרגילה שיוצרים מחדש.
    • CONNECTION_ID: ערך STRING שמכיל קישור למשאבים ב-Cloud שהשירות יכול להשתמש בו כדי לגשת לאובייקטים ב-Cloud Storage, בפורמט location.connection_id. לדוגמה, us-west1.myconnection. אפשר לקבל את מזהה החיבור על ידי צפייה בפרטי החיבור במסוף Cloud de Confiance והעתקת הערך בקטע האחרון של מזהה החיבור המלא שמוצג במזהה החיבור. לדוגמה, projects/myproject/locations/connection_location/connections/myconnection.

      צריך להעניק לחשבון השירות של החיבור את התפקיד 'משתמש באובייקט אחסון' (roles/storage.objectUser) בכל קטגוריה של Cloud Storage שבה משתמשים בו כדי לגשת לאובייקטים.

      החיבור צריך להיות באותו פרויקט ובאותו אזור כמו השאילתה שבה קוראים לפונקציה.

  3. לוחצים על הפעלה.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

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