יצירת טבלאות אובייקטים
טבלת אובייקטים מאפשרת לגשת לנתונים לא מובְנים ב-Cloud Storage ב-BigQuery, כדי שתוכלו לנתח אותם לצד הנתונים המובְנים שלכם. במאמר הזה מוסבר איך להגדיר את מערך הנתונים, החיבור ותפקיד ה-IAM שנדרשים לטבלת אובייקטים, ואיך ליצור את הטבלה ולבצע בה שאילתות.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigQuery and BigQuery Connection API APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigQuery and BigQuery Connection API APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
התפקידים הנדרשים
כדי ליצור טבלאות אובייקטים, צריך שיהיו לכם את התפקידים הבאים בפרויקט:
- כדי ליצור מערכי נתונים וטבלאות, צריך את התפקיד "עריכת נתונים ב-BigQuery" (
roles/bigquery.dataEditor). - כדי ליצור חיבור, צריך להיות לכם התפקיד אדמין של חיבורי BigQuery (
roles/bigquery.connectionAdmin). - כדי להקצות תפקיד לחשבון השירות של החיבור, צריך את התפקיד "אדמין IAM בפרויקט" (
roles/resourcemanager.projectIamAdmin).
כדי להריץ שאילתות על טבלאות אובייקטים, צריך שיהיו לכם את התפקידים הבאים בפרויקט:
- התפקיד "צפייה בנתוני BigQuery (
roles/bigquery.dataViewer)" - התפקיד "משתמש בחיבור ל-BigQuery (
roles/bigquery.connectionUser)"
כדי לראות את ההרשאות הנדרשות, מרחיבים את הקטע Required Permissions:
ההרשאות הנדרשות
bigquery.datasets.createbigquery.tables.createbigquery.tables.updatebigquery.connections.createbigquery.connections.getbigquery.connections.listbigquery.connections.updatebigquery.connections.usebigquery.connections.deletebigquery.connections.delegatestorage.bucket.*storage.object.*bigquery.jobs.createbigquery.tables.getbigquery.tables.getDatabigquery.readsessions.create
יכול להיות שתוכלו לקבל את ההרשאות האלה גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
יצירת קבוצת נתונים
יוצרים מערך נתונים ב-BigQuery שיכיל את טבלת האובייקטים:
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית השמאלית, לוחצים על Explorer:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, לוחצים על שם הפרויקט.
לוחצים על View actions > Create dataset.
בדף Create dataset, מבצעים את הפעולות הבאות:
בשדה Dataset ID, מקלידים שם למערך הנתונים.
בקטע Location type, בוחרים באפשרות Region או Multi-region.
- אם בחרתם באפשרות Region, בוחרים מיקום מהרשימה Region.
- אם בחרתם באפשרות מספר אזורים, בחרו באפשרות US או Europe מהרשימה מספר אזורים.
לוחצים על Create dataset.
יצירת חיבור
אם הגדרתם חיבור כברירת מחדל או שיש לכם את התפקיד אדמין ב-BigQuery, אתם יכולים לדלג על השלב הזה.
יוצרים קישור למשאבים ב-Cloud לשימוש בטבלת האובייקטים, ומקבלים את חשבון השירות של הקישור.
נכנסים לדף BigQuery.
בחלונית השמאלית, לוחצים על Explorer:

בחלונית Explorer, לוחצים על Add data.
תיבת הדו-שיח Add data נפתחת.
בחלונית סינון לפי, בקטע סוג מקור הנתונים, בוחרים באפשרות אפליקציות עסקיות.
לחלופין, בשדה Search for data sources, אפשר להזין
Vertex AI.בקטע מקורות נתונים נבחרים, לוחצים על Vertex AI.
לוחצים על כרטיס הפתרון מודלי AI של Vertex: BigQuery Federation.
ברשימה Connection type, בוחרים באפשרות Vertex AI remote models, remote functions, BigLake and Spanner (Cloud Resource).
בשדה מזהה החיבור, מקלידים שם לחיבור.
בקטע Location type, בוחרים באפשרות Region או Multi-region.
- אם בחרתם באפשרות Region, בוחרים מיקום מהרשימה Region.
- אם בחרתם באפשרות מספר אזורים, בחרו באפשרות US או Europe מהרשימה מספר אזורים.
לוחצים על יצירת חיבור.
לוחצים על מעבר לחיבור.
בחלונית Connection info, מעתיקים את מזהה חשבון השירות כדי להשתמש בו בשלב הבא.
מתן גישה לחשבון השירות
מקצים לחשבון השירות של החיבור את התפקיד "צפייה באובייקט אחסון":
המסוף
נכנסים לדף IAM & Admin.
לוחצים על הוספה.
תיבת הדו-שיח Add principals נפתחת.
בשדה New principals, מזינים את מזהה חשבון השירות שהעתקתם קודם.
בשדה Select a role, בוחרים באפשרות Cloud Storage ואז באפשרות Storage Object Viewer.
לוחצים על Save.
gcloud
משתמשים בפקודה gcloud projects add-iam-policy-binding.
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/storage.objectViewer' --condition=None
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NUMBER: מספר הפרויקט שבו רוצים להקצות את התפקיד. -
MEMBER: מזהה חשבון השירות שהעתקתם קודם.
יצירת טבלת אובייקטים
כדי ליצור טבלת אובייקטים:
SQL
משתמשים בהצהרה CREATE EXTERNAL TABLE.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
CREATE EXTERNAL TABLE `PROJECT_ID.DATASET_ID.TABLE_NAME` WITH CONNECTION {`PROJECT_ID.REGION.CONNECTION_ID`| DEFAULT} OPTIONS( object_metadata = 'SIMPLE', uris = ['BUCKET_PATH'[,...]], max_staleness = STALENESS_INTERVAL, metadata_cache_mode = 'CACHE_MODE');
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.-
DATASET_ID: המזהה של מערך הנתונים שיכיל את טבלת האובייקטים. -
TABLE_NAME: השם של טבלת האובייקטים. -
REGION: האזור או מספר האזורים שבהם נמצא החיבור. -
CONNECTION_ID: המזהה של הקישור למשאבים ב-Cloud שבו משתמשים בטבלת האובייקטים הזו. החיבור קובע באיזה חשבון שירות משתמשים כדי לקרוא נתונים מ-Cloud Storage.כשמציגים את פרטי החיבור במסוף Google Cloud , מזהה החיבור הוא הערך שמופיע בקטע האחרון של מזהה החיבור המלא שמוצג ב-Connection ID, לדוגמה
projects/myproject/locations/connection_location/connections/myconnection.כדי להשתמש ב חיבור ברירת מחדל, מציינים את
DEFAULTבמקום את מחרוזת החיבור שמכילה את PROJECT_ID.REGION.CONNECTION_ID. -
BUCKET_PATH: הנתיב לקטגוריה של Cloud Storage שמכילה את האובייקטים שמיוצגים על ידי טבלת האובייקטים, בפורמט['gs://bucket_name/[folder_name/]*'].אפשר להשתמש בתו כללי לחיפוש אחד של כוכבית (
*) בכל נתיב כדי להגביל את האובייקטים שכלולים בטבלת האובייקטים. לדוגמה, אם הקטגוריה מכילה כמה סוגים של נתונים לא מובְנים, אפשר ליצור את טבלת האובייקטים רק על אובייקטים מסוג PDF על ידי ציון['gs://bucket_name/*.pdf']. מידע נוסף זמין במאמר תמיכה בתווים כלליים לחיפוש במזהי URI של Cloud Storage.אפשר לציין כמה קטגוריות באפשרות
urisעל ידי ציון כמה נתיבים, לדוגמה['gs://mybucket1/*', 'gs://mybucket2/folder5/*']. כדי להשיג ביצועים אופטימליים, ציינו עד 10 מזהי URI לכל טבלת אובייקטים. אם תציינו יותר מ-10 מזהי URI של קטגוריות, המספר הכולל של הקבצים שטבלת האובייקטים יכולה לתמוך בהם יקטן.מידע נוסף על השימוש במזהי URI של Cloud Storage ב-BigQuery זמין במאמר נתיב המשאבים של Cloud Storage.
-
STALENESS_INTERVAL: מציין אם המטא-נתונים שנשמרו במטמון משמשים לפעולות בטבלת האובייקטים, ועד כמה המטא-נתונים שנשמרו במטמון צריכים להיות עדכניים כדי שהפעולה תשתמש בהם. למידע נוסף על שיקולים לשמירת מטא-נתונים במטמון, ראו שמירת מטא-נתונים במטמון לשיפור הביצועים.כדי להשבית את השמירה של המטא-נתונים במטמון, מציינים את הערך 0. (זוהי ברירת המחדל)
כדי להפעיל שמירת מטא-נתונים במטמון, מציינים ערך של ליטרל מרווח בין 30 דקות ל-7 ימים. לדוגמה, מציינים
INTERVAL 4 HOURלמרווח זמן של 4 שעות. עם הערך הזה, פעולות בטבלה משתמשות במטא-נתונים שנשמרו במטמון אם הם רועננו ב-4 השעות האחרונות. אם המטא-נתונים במטמון ישנים יותר, הפעולה מאחזרת את המטא-נתונים מ-Cloud Storage. -
CACHE_MODE: מציין אם המטמון של המטא-נתונים מתרענן באופן אוטומטי או ידני. למידע נוסף על שיקולים לשמירת מטא-נתונים במטמון, ראו שמירת מטא-נתונים במטמון לשיפור הביצועים.מגדירים את הערך
AUTOMATICכדי לרענן את המטמון של המטא-נתונים במרווח זמן שמוגדר על ידי המערכת, בדרך כלל בין 30 ל-60 דקות.מגדירים את הערך
MANUALאם רוצים לרענן את המטמון של המטא-נתונים לפי לוח זמנים שאתם קובעים. במקרה כזה, אפשר להפעיל את הפרוצדורה של המערכתBQ.REFRESH_EXTERNAL_METADATA_CACHEכדי לרענן את המטמון.צריך להגדיר את
CACHE_MODEאם הערך שלSTALENESS_INTERVALגדול מ-0.
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
דוגמאות
בדוגמה הבאה נוצרת טבלת אובייקטים עם מרווח זמן של יום אחד להתיישנות המטמון של המטא-נתונים:
CREATE EXTERNAL TABLE `my_dataset.object_table` WITH CONNECTION `us.my-connection` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://mybucket/*'], max_staleness = INTERVAL 1 DAY, metadata_cache_mode = 'AUTOMATIC' );
בדוגמה הבאה נוצרת טבלת אובייקטים על האובייקטים בשלוש קטגוריות של Cloud Storage:
CREATE EXTERNAL TABLE `my_dataset.object_table` WITH CONNECTION `us.my-connection` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://bucket1/*','gs://bucket2/folder1/*','gs://bucket3/*'] );
בדוגמה הבאה נוצרת טבלת אובייקטים רק על אובייקטים מסוג PDF בקטגוריה של Cloud Storage:
CREATE EXTERNAL TABLE `my_dataset.object_table` WITH CONNECTION `us.my-connection` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://bucket1/*.pdf'] );
BQ
משתמשים בפקודה bq mk.
bq mk --table \ --external_table_definition=BUCKET_PATH@REGION.CONNECTION_ID \ --object_metadata=SIMPLE \ --max_staleness=STALENESS_INTERVAL \ --metadata_cache_mode=CACHE_MODE \ PROJECT_ID:DATASET_ID.TABLE_NAME
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.-
DATASET_ID: המזהה של מערך הנתונים שיכיל את טבלת האובייקטים. -
TABLE_NAME: השם של טבלת האובייקטים. -
REGION: האזור או מספר האזורים שבהם נמצא החיבור. -
CONNECTION_ID: המזהה של הקישור למשאבים ב-Cloud שבו רוצים להשתמש בטבלה החיצונית הזו. החיבור קובע באיזה חשבון שירות משתמשים כדי לקרוא נתונים מ-Cloud Storage.כשמציגים את פרטי החיבור במסוף Google Cloud , מזהה החיבור הוא הערך שמופיע בקטע האחרון של מזהה החיבור המלא שמוצג ב-Connection ID, לדוגמה
projects/myproject/locations/connection_location/connections/myconnection. -
BUCKET_PATH: הנתיב לקטגוריה של Cloud Storage שמכילה את האובייקטים שמיוצגים על ידי טבלת האובייקטים, בפורמטgs://bucket_name/[folder_name/]*.אפשר להשתמש בתו כללי לחיפוש אחד של כוכבית (
*) בכל נתיב כדי להגביל את האובייקטים שכלולים בטבלת האובייקטים. לדוגמה, אם הקטגוריה מכילה כמה סוגים של נתונים לא מובְנים, אפשר ליצור את טבלת האובייקטים רק על אובייקטים מסוג PDF על ידי ציוןgs://bucket_name/*.pdf. מידע נוסף זמין במאמר תמיכה בתווים כלליים לחיפוש במזהי URI של Cloud Storage.אפשר לציין כמה קטגוריות באפשרות
urisעל ידי ציון כמה נתיבים, לדוגמהgs://mybucket1/*,gs://mybucket2/folder5/*.מידע נוסף על השימוש במזהי URI של Cloud Storage ב-BigQuery זמין במאמר נתיב המשאבים של Cloud Storage.
-
STALENESS_INTERVAL: מציין אם המטא-נתונים שנשמרו במטמון משמשים לפעולות בטבלת האובייקטים, ועד כמה המטא-נתונים שנשמרו במטמון צריכים להיות עדכניים כדי שהפעולה תשתמש בהם. למידע נוסף על שיקולים לשמירת מטא-נתונים במטמון, ראו שמירת מטא-נתונים במטמון לשיפור הביצועים.כדי להשבית את השמירה של המטא-נתונים במטמון, מציינים את הערך 0. (זוהי ברירת המחדל)
כדי להפעיל את המטמון של המטא-נתונים, מציינים ערך מרווח בין 30 דקות ל-7 ימים, בפורמט
Y-M D H:M:Sשמתואר במסמכי התיעוד של סוג הנתוניםINTERVAL. לדוגמה, מציינים0-0 0 4:0:0למרווח זמן של 4 שעות. עם הערך הזה, פעולות בטבלה משתמשות במטא-נתונים שנשמרו במטמון אם הם רועננו ב-4 השעות האחרונות. אם המטא-נתונים במטמון ישנים יותר, הפעולה מאחזרת מטא-נתונים מ-Cloud Storage. -
CACHE_MODE: מציין אם המטמון של המטא-נתונים מתרענן באופן אוטומטי או ידני. למידע נוסף על שיקולים לשמירת מטא-נתונים במטמון, ראו שמירת מטא-נתונים במטמון לשיפור הביצועים.מגדירים את הערך
AUTOMATICכדי לרענן את המטמון של המטא-נתונים במרווח זמן שמוגדר על ידי המערכת, בדרך כלל בין 30 ל-60 דקות.מגדירים את הערך
MANUALאם רוצים לרענן את המטמון של המטא-נתונים לפי לוח זמנים שאתם קובעים. במקרה כזה, אפשר להפעיל את הפרוצדורה של המערכתBQ.REFRESH_EXTERNAL_METADATA_CACHEכדי לרענן את המטמון.צריך להגדיר את
CACHE_MODEאם הערך שלSTALENESS_INTERVALגדול מ-0.
דוגמאות
בדוגמה הבאה נוצרת טבלת אובייקטים עם מרווח זמן של יום אחד להתיישנות המטמון של המטא-נתונים:
bq mk --table \ --external_table_definition=gs://mybucket/*@us.my-connection \ --object_metadata=SIMPLE \ --max_staleness=0-0 1 0:0:0 \ --metadata_cache_mode=AUTOMATIC \ my_dataset.object_table
בדוגמה הבאה נוצרת טבלת אובייקטים על האובייקטים בשלוש קטגוריות של Cloud Storage:
bq mk --table \ --external_table_definition=gs://bucket1/*,gs://bucket2/folder1/*,gs://bucket3/*@us.my-connection \ --object_metadata=SIMPLE \ my_dataset.object_table
בדוגמה הבאה נוצרת טבלת אובייקטים רק על אובייקטים מסוג PDF בקטגוריה של Cloud Storage:
bq mk --table \ --external_table_definition=gs://bucket1/*.pdf@us.my-connection \ --object_metadata=SIMPLE \ my_dataset.object_table
API
מפעילים את ה-method tables.insert.
כוללים אובייקט ExternalDataConfiguration עם השדה objectMetadata שמוגדר כ-SIMPLE במשאב Table שאתם מעבירים.
בדוגמה הבאה מוסבר איך להפעיל את השיטה הזו באמצעות curl:
ACCESS_TOKEN=$(gcloud auth print-access-token) curl \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-X POST \
-d '{"tableReference": {"projectId": "my_project", "datasetId": "my_dataset", "tableId": "object_table_name"}, "externalDataConfiguration": {"objectMetadata": "SIMPLE", "sourceUris": ["gs://mybucket/*"]}}' \
https://www.googleapis.com/bigquery/v2/projects/my_project/datasets/my_dataset/tables
Terraform
בדוגמה הזו יוצרים טבלת אובייקטים עם שמירת מטא-נתונים במטמון ורענון ידני.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
שדות המפתח שצריך לציין בטבלת אובייקטים הם google_bigquery_table.external_data_configuration.object_metadata, google_bigquery_table.external_data_configuration.metadata_cache_mode ו-google_bigquery_table.max_staleness. למידע נוסף על כל משאב, קראו את המסמכים של Terraform BigQuery.
כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
טבלאות של אובייקטים של שאילתות
אתם יכולים לשלוח שאילתה לטבלת אובייקטים כמו לכל טבלת BigQuery אחרת, לדוגמה:
SELECT * FROM mydataset.myobjecttable;
שאילתה על טבלת אובייקטים מחזירה מטא-נתונים של האובייקטים שבבסיס. מידע נוסף זמין במאמר סכימת טבלת אובייקטים.