יצירת טבלאות אובייקטים
במאמר הזה מוסבר איך ליצור טבלת אובייקטים כדי להפוך נתונים לא מובְנים ב-Cloud Storage לנגישים ב-BigQuery.
כדי ליצור טבלת אובייקטים, צריך לבצע את המשימות הבאות:
- יוצרים מערך נתונים שיכיל את טבלת האובייקטים.
- יוצרים חיבור כדי לקרוא מידע על אובייקט מ-Cloud Storage.
- מקצים לחשבון השירות שמשויך לחיבור את התפקיד 'צפייה באובייקט אחסון' (
roles/storage.objectViewer). - יוצרים את טבלת האובייקטים ומשייכים אותה לחיבור באמצעות הצהרת
CREATE EXTERNAL TABLE.
לפני שמתחילים
- נכנסים לחשבון 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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. 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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
התפקידים הנדרשים
כדי ליצור טבלאות של אובייקטים, צריך להיות לכם אחד מהתפקידים הבאים בפרויקט:
- כדי ליצור מערכי נתונים וטבלאות, צריך להיות לכם תפקיד BigQuery Data Editor (
roles/bigquery.dataEditor). - כדי ליצור חיבור, צריך להיות לכם התפקיד BigQuery Connection Admin (אדמין של חיבור BigQuery) (
roles/bigquery.connectionAdmin). - כדי להעניק תפקיד לחשבון השירות של החיבור, צריך להיות לכם התפקיד Project IAM Admin (
roles/resourcemanager.projectIamAdmin).
כדי להריץ שאילתות על טבלאות של אובייקטים, צריך להיות לכם אחד מהתפקידים הבאים בפרויקט:
- התפקיד BigQuery Data Viewer (צפייה בנתוני BigQuery) (
roles/bigquery.dataViewer) - התפקיד BigQuery Connection User (
roles/bigquery.connectionUser)
כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
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 שיכיל את טבלת האובייקטים:
במסוף Google Cloud , עוברים לדף BigQuery.
בחלונית הימנית, לוחצים על כלי הניתוחים:

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

בחלונית Explorer, לוחצים על Add data.
תיבת הדו-שיח הוספת נתונים נפתחת.
בחלונית Filter By, בקטע Data Source Type, בוחרים באפשרות Business Applications.
אפשרות אחרת היא להזין
Vertex AIבשדה חיפוש מקורות נתונים.בקטע מקורות נתונים מומלצים, לוחצים על Vertex AI.
לוחצים על כרטיס הפתרון Vertex AI Models: BigQuery Federation.
ברשימה Connection type בוחרים באפשרות Vertex AI remote models, remote functions, BigLake and Spanner (Cloud Resource).
בשדה מזהה החיבור, מקלידים שם לחיבור.
בקטע Location type, בוחרים באפשרות Region או Multi-region.
- אם בחרתם באפשרות אזור, בוחרים מיקום מהרשימה אזור.
- אם בחרתם באפשרות Multi-region, בוחרים באפשרות US או Europe מהרשימה Multi-region.
לוחצים על יצירת קישור.
לוחצים על מעבר לחיבור.
בחלונית 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.
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
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 , מזהה החיבור הוא הערך בקטע האחרון של מזהה החיבור המלא שמוצג במזהה החיבור – לדוגמה,
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/*'].מידע נוסף על שימוש בכתובות URI של Cloud Storage ב-BigQuery זמין במאמר בנושא נתיב משאב של Cloud Storage.
-
STALENESS_INTERVAL: מציין אם פעולות שמתבצעות בטבלת האובייקטים משתמשות במטא-נתונים ששמורים במטמון, ומה רמת העדכניות של המטא-נתונים ששמורים במטמון שנדרשת כדי שהפעולה תוכל להשתמש בהם. מידע נוסף על שיקולים בנוגע לשמירה במטמון של מטא-נתונים זמין במאמר שמירה במטמון של מטא-נתונים לשיפור הביצועים.כדי להשבית את השמירה במטמון של המטא-נתונים, מציינים את הערך 0. (זוהי ברירת המחדל)
כדי להפעיל שמירת מטא-נתונים במטמון, צריך לציין ערך של מרווח זמן בין 30 דקות ל-7 ימים. לדוגמה, כדי להגדיר את מרווח הזמן של הנתונים הלא עדכניים ל-4 שעות, מציינים
INTERVAL 4 HOUR. אם הערך הזה מוגדר, פעולות שמתבצעות בטבלה משתמשות במטא נתונים ששמורים במטמון אם הם רעננו ב-4 השעות האחרונות. אם המטא-נתונים שבמטמון ישנים יותר, הפעולה מאחזרת מטא-נתונים מ-Cloud Storage במקום זאת. -
CACHE_MODE: מציין אם המטמון של המטא-נתונים מתרענן באופן אוטומטי או ידני. מידע נוסף על שיקולים בנוגע לשמירה במטמון של מטא-נתונים זמין במאמר שמירה במטמון של מטא-נתונים לשיפור הביצועים.אם מגדירים את הערך
AUTOMATIC, מטמון המטא-נתונים מתעדכן במרווח זמן שמוגדר על ידי המערכת, בדרך כלל בין 30 ל-60 דקות.מגדירים את הערך
MANUALאם רוצים לרענן את מטמון המטא-נתונים לפי לוח זמנים שקובעים. במקרה כזה, אפשר להתקשר אלBQ.REFRESH_EXTERNAL_METADATA_CACHEמערכת ההליכים כדי לרענן את המטמון.אם הערך של
STALENESS_INTERVALגדול מ-0, צריך להגדיר אתCACHE_MODE.
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
דוגמאות
בדוגמה הבאה נוצרת טבלת אובייקטים עם מרווח זמן של יום אחד בין עדכונים של מטמון המטא-נתונים:
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 , מזהה החיבור הוא הערך בקטע האחרון של מזהה החיבור המלא שמוצג במזהה החיבור – לדוגמה,
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מערכת ההליכים כדי לרענן את המטמון.אם הערך של
STALENESS_INTERVALגדול מ-0, צריך להגדיר אתCACHE_MODE.
דוגמאות
בדוגמה הבאה נוצרת טבלת אובייקטים עם מרווח זמן של יום אחד בין עדכונים של מטמון המטא-נתונים:
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
מבצעים קריאה ל-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.
-
מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
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;
שאילתה בטבלת אובייקטים מחזירה מטא-נתונים של האובייקטים הבסיסיים. מידע נוסף זמין במאמר סכימת טבלת אובייקטים.
המאמרים הבאים
- איך מריצים הסקה על טבלאות של אובייקטים בתמונות
- איך מנתחים טבלאות של אובייקטים באמצעות פונקציות מרוחקות