ציון עמודות ObjectRef בסכימות של טבלאות
במאמר הזה מוסבר איך להגדיר סכימה של טבלה רגילה ב-BigQuery עם עמודות שיכולות לאחסן ערכים של ObjectRef.
הערכים של ObjectRef מספקים מטא-נתונים ופרטי חיבור לאובייקטים ב-Cloud Storage. משתמשים בערכים ObjectRef כשצריך לשלב נתונים לא מובְנים בטבלה רגילה. לדוגמה, בטבלת מוצרים, אפשר לאחסן תמונות של מוצרים באותה שורה עם שאר פרטי המוצר על ידי הוספת עמודה שמכילה ערכים של ObjectRef. אפשר לאחסן ערכים של ObjectRef בעמודות STRUCT שמשתמשות בפורמט ObjectRef, שהוא STRUCT<uri STRING, version STRING, authorizer STRING, details JSON>.
מידע נוסף על עבודה עם נתונים מולטי-מודאליים זמין במאמר ניתוח נתונים מולטי-מודאליים.
מדריך שמסביר איך לעבוד עם נתוני ObjectRef זמין במאמר ניתוח נתונים מרובי-אופנים באמצעות SQL.
מידע על עבודה עם נתונים מרובי-אופנים ב-Python זמין במאמר בנושא ניתוח נתונים מרובי-אופנים ב-Python באמצעות BigQuery DataFrames.
דרישות מוקדמות
כדי לאכלס ולעדכן ערכים של ObjectRef בטבלה רגילה, הטבלה צריכה לכלול עמודה של STRING שמכילה מידע על URI של אובייקטים קשורים ב-Cloud Storage.
צריך שתהיה לכם קטגוריה של Cloud Storage שמכילה את אותם אובייקטים שמזוהים בנתוני ה-URI של טבלת היעד הרגילה.
אם רוצים לשמור על ערכי ObjectRef בטבלה רגילה באמצעות טבלת אובייקטים, צריך גם טבלת אובייקטים שמייצגת את האובייקטים בדלי.
שמירה על ערכים של ObjectRef
אפשר להשתמש בטבלת אובייקטים כדי לאכלס ולעדכן ערכים של ObjectRef בטבלה רגילה. אם אתם ברשימת ההיתרים של התצוגה המקדימה, לכל טבלאות האובייקטים שתיצרו תהיה עמודה ref עם ערך ObjectRef לאובייקט הנתון. אתם יכולים להשתמש ב-URI של האובייקט כדי לצרף את הטבלה הרגילה לטבלת האובייקט, כדי לאכלס ולעדכן את ערכי ObjectRef. אנחנו ממליצים על הגישה הזו לצורך הרחבת היכולות, כי היא חוסכת את הצורך באחזור מטא-נתונים של אובייקטים מ-Cloud Storage.
אם לא רוצים ליצור טבלת אובייקטים, אפשר להשתמש בפונקציות OBJ.FETCH_METADATA ו-OBJ.MAKE_REF כדי לאכלס ולעדכן ערכים של ObjectRef על ידי אחזור מטא-נתונים של אובייקטים ישירות מ-Cloud Storage. הגישה הזו פחות ניתנת להרחבה, כי היא מחייבת אחזור של מטא-נתונים של אובייקטים מ-Cloud Storage.
יצירת עמודה ObjectRef
כדי ליצור עמודה ObjectRef בטבלה רגילה ולאכלס אותה, בוחרים באחת מהאפשרויות הבאות:
טבלת אובייקטים
ליצור ולאכלס עמודה ObjectRef על סמך נתונים מעמודה ref בטבלת אובייקטים:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
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: השם של טבלת האובייקטים שמכילה את נתוני האובייקטים שרוצים לשלב בטבלה הסטנדרטית.
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
פונקציות SQL
ליצור ולאכלס עמודה ObjectRef על סמך הפלט מהפונקציות OBJ.FETCH_METADATA ו-OBJ.MAKE_REF:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
CREATE OR REPLACE TABLE PROJECT_ID.DATASET_ID.TABLE_NAME AS SELECT TABLE_NAME.*, OBJ.FETCH_METADATA(OBJ.MAKE_REF(uri, 'CONNECTION_ID')) AS objectrefcolumn FROM DATASET_ID.TABLE_NAME;
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט. אפשר לדלג על הארגומנט הזה אם יוצרים את הטבלה בפרויקט הנוכחי.-
DATASET_ID: המזהה של מערך הנתונים שאתם יוצרים. -
TABLE_NAME: השם של הטבלה הרגילה שיוצרים מחדש. -
CONNECTION_ID: ערךSTRINGשמכיל חיבור למשאב בענן שהשירות יכול להשתמש בו כדי לגשת לאובייקטים ב-Cloud Storage, בפורמטlocation.connection_id. לדוגמה,us-west1.myconnection. אפשר לקבל את מזהה החיבור על ידי צפייה בפרטי החיבור במסוף Google Cloud והעתקת הערך בקטע האחרון של מזהה החיבור המלא שמוצג במזהה החיבור. לדוגמה,projects/myproject/locations/connection_location/connections/myconnection.צריך להעניק לחשבון השירות של החיבור את התפקיד 'משתמש באובייקט אחסון' (
roles/storage.objectUser) בכל קטגוריה של Cloud Storage שבה משתמשים בו כדי לגשת לאובייקטים.החיבור צריך להיות באותו פרויקט ובאותו אזור כמו השאילתה שבה קוראים לפונקציה.
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
יצירת עמודה 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:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
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של הטבלה הרגילה.
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
פונקציות SQL
עדכון עמודה ObjectRef באמצעות פלט מהפונקציות OBJ.FETCH_METADATA ו-OBJ.MAKE_REF:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
UPDATE PROJECT_ID.DATASET_ID.TABLE_NAME SET objectrefcolumn = (SELECT OBJ.FETCH_METADATA(OBJ.MAKE_REF(uri, 'CONNECTION_ID'))) WHERE uri != "";
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט. אפשר לדלג על הארגומנט הזה אם יוצרים את הטבלה בפרויקט הנוכחי.-
DATASET_ID: המזהה של מערך הנתונים שאתם יוצרים. -
TABLE_NAME: השם של הטבלה הרגילה שיוצרים מחדש. -
CONNECTION_ID: ערךSTRINGשמכיל חיבור למשאב בענן שהשירות יכול להשתמש בו כדי לגשת לאובייקטים ב-Cloud Storage, בפורמטlocation.connection_id. לדוגמה,us-west1.myconnection. אפשר לקבל את מזהה החיבור על ידי צפייה בפרטי החיבור במסוף Google Cloud והעתקת הערך בקטע האחרון של מזהה החיבור המלא שמוצג במזהה החיבור. לדוגמה,projects/myproject/locations/connection_location/connections/myconnection.צריך להעניק לחשבון השירות של החיבור את התפקיד 'משתמש באובייקט אחסון' (
roles/storage.objectUser) בכל קטגוריה של Cloud Storage שבה משתמשים בו כדי לגשת לאובייקטים.החיבור צריך להיות באותו פרויקט ובאותו אזור כמו השאילתה שבה קוראים לפונקציה.
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
המאמרים הבאים
- ניתוח נתונים מרובי-אופנים.
- ניתוח נתונים מרובי-אופנים באמצעות SQL.
- ניתוח נתונים מרובי-אופנים ב-Python באמצעות BigQuery DataFrames