שינוי סכימות של טבלה
במאמר הזה מוסבר איך לשנות את הגדרות הסכימה של טבלאות קיימות ב-BigQuery.
אפשר לבצע את רוב השינויים בסכימה שמתוארים במסמך הזה באמצעות הצהרות של שפת הגדרת נתונים (DDL) ב-SQL. לא חלים חיובים על הדוחות האלה.
כדי לשנות את סכימת הטבלה בכל הדרכים שמתוארות בדף הזה, צריך לייצא את נתוני הטבלה ל-Cloud Storage ואז לטעון את הנתונים לטבלה חדשה עם הגדרת הסכימה ששונתה. העבודות של טעינה וחילוץ ב-BigQuery הן בחינם, אבל יש עלויות על אחסון הנתונים המיוצאים ב-Cloud Storage. בקטעים הבאים מתוארות דרכים אחרות לביצוע שינויים שונים בסכימה.
הוספת עמודה
אפשר להוסיף עמודות להגדרת הסכימה של טבלה קיימת באמצעות אחת מהאפשרויות הבאות:
- להוסיף עמודה ריקה חדשה.
- החלפה של טבלה באמצעות משימת טעינה או שאילתה.
- הוספת נתונים לטבלה באמצעות טעינה או שאילתה.
כל עמודה שמוסיפים צריכה לעמוד בכללים של BigQuery לגבי שמות של עמודות. מידע נוסף על יצירת רכיבי סכימה זמין במאמר ציון סכימה.
הוספת עמודה ריקה
אם מוסיפים עמודות חדשות לסכימת טבלה קיימת, העמודות צריכות להיות מסוג NULLABLE או REPEATED. אי אפשר להוסיף עמודה REQUIRED לסכימת טבלה קיימת. הוספה של עמודה מסוג REQUIRED לסכימת טבלה קיימת ב-API או בכלי שורת הפקודה של BigQuery גורמת לשגיאה. עם זאת, אפשר ליצור עמודה מקוננת REQUIRED כחלק משדה חדש RECORD.
אפשר להוסיף עמודות REQUIRED רק כשיוצרים טבלה בזמן טעינת נתונים, או כשיוצרים טבלה ריקה עם הגדרת סכימה.
כדי להוסיף עמודות ריקות להגדרת הסכימה של טבלה:
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על כלי הניתוחים:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ואז בוחרים מערך נתונים.
לוחצים על סקירה כללית > טבלאות ובוחרים את הטבלה.
בחלונית הפרטים, לוחצים על הכרטיסייה סכימה.
לוחצים על עריכת הסכימה. יכול להיות שתצטרכו לגלול כדי לראות את הלחצן הזה.
בדף Current schema (סכימה נוכחית), בקטע New fields (שדות חדשים), לוחצים על Add field (הוספת שדה).
- בשדה Name (שם), מקלידים את שם העמודה.
- בשדה Type, בוחרים את סוג הנתונים.
- בקטע Mode (מצב), בוחרים באפשרות
NULLABLEאוREPEATED.
כשמסיימים להוסיף עמודות, לוחצים על שמירה.
SQL
משתמשים בהצהרת ה-DDL ALTER TABLE ADD COLUMN:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
ALTER TABLE mydataset.mytable ADD COLUMN new_column STRING;
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
מריצים את הפקודה bq update ומספקים קובץ סכימת JSON. אם הטבלה שאתם מעדכנים נמצאת בפרויקט שאינו פרויקט ברירת המחדל, צריך להוסיף את מזהה הפרויקט לשם מערך הנתונים בפורמט הבא: PROJECT_ID:DATASET.
bq update PROJECT_ID:DATASET.TABLE SCHEMA
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.-
DATASET: שם מערך הנתונים שמכיל את הטבלה שאתם מעדכנים. -
TABLE: שם הטבלה שרוצים לעדכן. -
SCHEMA: הנתיב לקובץ סכימת ה-JSON במחשב המקומי.
כשמציינים סכימה מוטבעת, אי אפשר לציין את תיאור העמודה, המצב והסוג RECORD (STRUCT). כל מצבי העמודות מוגדרים כברירת מחדל ל-NULLABLE. לכן, אם מוסיפים עמודה חדשה עם נתונים מקוננים ל-RECORD, צריך לספק קובץ סכימת JSON.
אם מנסים להוסיף עמודות באמצעות הגדרת סכימה מוטבעת, צריך לספק את כל הגדרת הסכימה, כולל העמודות החדשות. מכיוון שאי אפשר לציין מצבי עמודות באמצעות הגדרת סכימה מוטבעת, העדכון משנה כל עמודה קיימת מסוג REPEATED ל-NULLABLE, ומופיעה השגיאה הבאה: BigQuery error in update
operation: Provided Schema does not match Table
PROJECT_ID:dataset.table. Field field has changed mode
from REPEATED to NULLABLE.
השיטה המומלצת להוספת עמודות לטבלה קיימת באמצעות כלי שורת הפקודה של BigQuery היא אספקת קובץ סכימת JSON.
כדי להוסיף עמודות ריקות לסכימת טבלה באמצעות קובץ סכימת JSON:
קודם מריצים את הפקודה
bq showעם הדגל--schemaוכותבים את סכימת הטבלה הקיימת לקובץ. אם הטבלה שאתם מעדכנים נמצאת בפרויקט שאינו פרויקט ברירת המחדל שלכם, צריך להוסיף את מזהה הפרויקט לשם של מערך הנתונים בפורמט הבא:PROJECT_ID:DATASET.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.-
DATASET: שם מערך הנתונים שמכיל את הטבלה שאתם מעדכנים. -
TABLE: שם הטבלה שרוצים לעדכן. -
SCHEMA: קובץ הגדרת הסכימה שנכתב במחשב המקומי.
לדוגמה, כדי לכתוב את הגדרת הסכימה של
mydataset.mytableלקובץ, מזינים את הפקודה הבאה. mydataset.mytableנמצא בפרויקט ברירת המחדל.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.jsonפותחים את קובץ הסכימה בכלי לעריכת טקסט. הסכימה צריכה להיראות כך:
[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]מוסיפים את העמודות החדשות לסוף הגדרת הסכימה. אם מנסים להוסיף עמודות חדשות במקום אחר במערך, מוצגת השגיאה הבאה:
BigQuery error in update operation: Precondition Failed.באמצעות קובץ JSON, אפשר לציין תיאורים, מצבי
NULLABLEאוREPEATEDוסוגיRECORDעמודות חדשות. לדוגמה, אם משתמשים בהגדרת הסכימה מהשלב הקודם, מערך ה-JSON החדש ייראה כך: בדוגמה הזו, נוספת עמודה חדשהNULLABLEבשםcolumn4.column4כולל תיאור.[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" }, { "description": "my new column", "mode": "NULLABLE", "name": "column4", "type": "STRING" } ]מידע נוסף על עבודה עם קובצי סכימת JSON זמין במאמר ציון קובץ סכימת JSON.
אחרי שמעדכנים את קובץ הסכימה, מריצים את הפקודה הבאה כדי לעדכן את הסכימה של הטבלה. אם הטבלה שאתם מעדכנים נמצאת בפרויקט שאינו פרויקט ברירת המחדל, צריך להוסיף את מזהה הפרויקט לשם מערך הנתונים בפורמט הבא:
PROJECT_ID:DATASET.bq update PROJECT_ID:DATASET.TABLE SCHEMA
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.-
DATASET: שם מערך הנתונים שמכיל את הטבלה שאתם מעדכנים. -
TABLE: שם הטבלה שרוצים לעדכן. -
SCHEMA: קובץ הגדרת הסכימה שנכתב במחשב המקומי.
לדוגמה, מזינים את הפקודה הבאה כדי לעדכן את הגדרת הסכימה של
mydataset.mytableבפרויקט ברירת המחדל. הנתיב לקובץ הסכימה במחשב המקומי הוא/tmp/myschema.json.bq update mydataset.mytable /tmp/myschema.json
API
קוראים למתודה tables.patch ומשתמשים במאפיין schema כדי להוסיף עמודות ריקות להגדרת הסכימה. השיטה המועדפת היא tables.patch, כי השיטה tables.update מחליפה את כל משאב הטבלה.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
מוסיפים אובייקט חדש של SchemaField לעותק של Table.schema ואז מחליפים את הערך של המאפיין Table.schema בסכימה המעודכנת.הוספת עמודה משנית לעמודה RECORD
בנוסף להוספת עמודות חדשות לסכימה של טבלה, אפשר גם להוסיף עמודות חדשות מקוננות לעמודה RECORD. התהליך להוספת עמודה חדשה עם נתונים מקוננים דומה לתהליך להוספת עמודה חדשה.
המסוף
הוספה של שדה חדש עם היררכיה לעמודה קיימת RECORD לא נתמכת במסוף Google Cloud .
SQL
הוספת שדה מקונן חדש לעמודה RECORD קיימת באמצעות הצהרת SQL DDL אינה נתמכת.
BQ
מריצים את הפקודה bq update ומספקים קובץ סכימה ב-JSON שמוסיף את השדה המקונן להגדרת הסכימה של העמודה הקיימת RECORD. אם הטבלה שאתם מעדכנים נמצאת בפרויקט שאינו פרויקט ברירת המחדל שלכם, צריך להוסיף את מזהה הפרויקט לשם מערך הנתונים בפורמט הבא: PROJECT_ID:DATASET.
bq update PROJECT_ID:DATASET.TABLE SCHEMA
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.-
DATASET: שם מערך הנתונים שמכיל את הטבלה שאתם מעדכנים. -
TABLE: שם הטבלה שרוצים לעדכן. -
SCHEMA: הנתיב לקובץ סכימת ה-JSON במחשב המקומי.
כשמציינים סכימה מוטבעת, אי אפשר לציין את תיאור העמודה, המצב והסוג RECORD (STRUCT). כל מצבי העמודות מוגדרים כברירת מחדל ל-NULLABLE. לכן, אם מוסיפים עמודה חדשה עם נתונים מקוננים ל-RECORD, צריך לספק קובץ סכימת JSON.
כדי להוסיף עמודה מקוננת ל-RECORD באמצעות קובץ סכימת JSON:
קודם מריצים את הפקודה
bq showעם הדגל--schemaוכותבים את סכימת הטבלה הקיימת לקובץ. אם הטבלה שאתם מעדכנים נמצאת בפרויקט שאינו פרויקט ברירת המחדל, צריך להוסיף את מזהה הפרויקט לשם של מערך הנתונים בפורמט הבא:PROJECT_ID:DATASET.TABLE.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.-
DATASET: שם מערך הנתונים שמכיל את הטבלה שאתם מעדכנים. -
TABLE: שם הטבלה שרוצים לעדכן. -
SCHEMA: קובץ הגדרת הסכימה שנכתב במחשב המקומי.
לדוגמה, כדי לכתוב את הגדרת הסכימה של
mydataset.mytableלקובץ, מזינים את הפקודה הבאה. mydataset.mytableנמצא בפרויקט ברירת המחדל.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.jsonפותחים את קובץ הסכימה בכלי לעריכת טקסט. הסכימה צריכה להיראות כך: בדוגמה הזו,
column3היא עמודה חוזרת מקוננת. העמודות המקוננות הןnested1ו-nested2. המערךfieldsמפרט את השדות שמוטמעים בתוךcolumn3.[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "fields": [ { "mode": "NULLABLE", "name": "nested1", "type": "STRING" }, { "mode": "NULLABLE", "name": "nested2", "type": "STRING" } ], "mode": "REPEATED", "name": "column3", "type": "RECORD" } ]מוסיפים את העמודה החדשה המקוננת לסוף המערך
fields. בדוגמה הזו,nested3היא העמודה החדשה שמוטמעת בתוך עמודה אחרת.[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "fields": [ { "mode": "NULLABLE", "name": "nested1", "type": "STRING" }, { "mode": "NULLABLE", "name": "nested2", "type": "STRING" }, { "mode": "NULLABLE", "name": "nested3", "type": "STRING" } ], "mode": "REPEATED", "name": "column3", "type": "RECORD" } ]מידע נוסף על עבודה עם קובצי סכימת JSON זמין במאמר ציון קובץ סכימת JSON.
אחרי שמעדכנים את קובץ הסכימה, מריצים את הפקודה הבאה כדי לעדכן את הסכימה של הטבלה. אם הטבלה שאתם מעדכנים נמצאת בפרויקט שאינו פרויקט ברירת המחדל, צריך להוסיף את מזהה הפרויקט לשם מערך הנתונים בפורמט הבא:
PROJECT_ID:DATASET.bq update PROJECT_ID:DATASET.TABLE SCHEMA
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.-
DATASET: שם מערך הנתונים שמכיל את הטבלה שאתם מעדכנים. -
TABLE: שם הטבלה שרוצים לעדכן. -
SCHEMA: הנתיב לקובץ סכימת ה-JSON במחשב המקומי.
לדוגמה, מזינים את הפקודה הבאה כדי לעדכן את הגדרת הסכימה של
mydataset.mytableבפרויקט ברירת המחדל. הנתיב לקובץ הסכימה במחשב המקומי הוא/tmp/myschema.json.bq update mydataset.mytable /tmp/myschema.json
API
קוראים לשיטה tables.patch ומשתמשים במאפיין schema כדי להוסיף את העמודות המקוננות להגדרת הסכימה. מומלץ להשתמש בשיטה tables.patch כי השיטה tables.update מחליפה את כל משאב הטבלה.
הוספת עמודות כשמחליפים נתונים או מוסיפים נתונים
אפשר להוסיף עמודות חדשות לטבלה קיימת כשמעלים אליה נתונים ובוחרים להחליף את הטבלה הקיימת. כשמחליפים טבלה קיימת, הסכימה של הנתונים שנטענים משמשת להחלפת הסכימה של הטבלה הקיימת. מידע על החלפת טבלה באמצעות עבודת טעינה מופיע במסמך שמתאים לפורמט הנתונים שלכם:
הוספת עמודות בעבודת טעינה מסוג 'הוספה'
אפשר להוסיף עמודות לטבלה כשמצרפים אליה נתונים בעבודת טעינה. הסכימה החדשה נקבעת לפי אחת מהאפשרויות הבאות:
- זיהוי אוטומטי (לקובצי CSV ו-JSON)
- סכימה שמוגדרת בקובץ סכימה בפורמט JSON (לקובצי CSV ו-JSON)
- נתוני המקור שמתארים את עצמם בקובצי ייצוא של Avro, ORC, Parquet ו-Datastore
אם מציינים את הסכימה בקובץ JSON, צריך להגדיר בו את העמודות החדשות. אם ההגדרות החדשות של העמודות חסרות, תוחזר שגיאה כשמנסים לצרף את הנתונים.
כשמוסיפים עמודות חדשות במהלך פעולת צירוף, הערכים בעמודות החדשות מוגדרים כ-NULL בשורות הקיימות.
כדי להוסיף עמודה חדשה כשמצרפים נתונים לטבלה במהלך עבודת טעינה, משתמשים באחת מהאפשרויות הבאות:
BQ
משתמשים בפקודה bq load כדי לטעון את הנתונים ומציינים את הדגל --noreplace כדי לציין שאתם מוסיפים את הנתונים לטבלה קיימת.
אם הנתונים שאתם מוסיפים הם בפורמט CSV או בפורמט JSON עם תווי שורה להפרדה, צריך לציין את הדגל --autodetect כדי להשתמש בזיהוי אוטומטי של הסכימה או לספק את הסכימה בקובץ סכימת JSON. אפשר להסיק את העמודות שנוספו באופן אוטומטי מקובצי ייצוא של Avro או Datastore.
מגדירים את הדגל --schema_update_option לערך ALLOW_FIELD_ADDITION כדי לציין שהנתונים שמוסיפים מכילים עמודות חדשות.
אם הטבלה שאתם מוסיפים נמצאת במערך נתונים בפרויקט שאינו פרויקט ברירת המחדל שלכם, צריך להוסיף את מזהה הפרויקט לשם מערך הנתונים בפורמט הבא: PROJECT_ID:DATASET.
(אופציונלי) מציינים את הדגל --location ומגדירים את הערך למיקום.
מזינים את הפקודה load באופן הבא:
bq --location=LOCATION load \ --noreplace \ --autodetect \ --schema_update_option=ALLOW_FIELD_ADDITION \ --source_format=FORMAT \ PROJECT_ID:DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: שם המיקום. הדגל--locationהוא אופציונלי. לדוגמה, אם אתם משתמשים ב-BigQuery באזור טוקיו, צריך להגדיר את הערך של הדגל ל-asia-northeast1. אפשר להגדיר ערך ברירת מחדל למיקום באמצעות קובץ .bigqueryrc. -
FORMAT: הפורמט של הסכימה. NEWLINE_DELIMITED_JSON,CSV,AVRO,PARQUET,ORCאוDATASTORE_BACKUP. PROJECT_ID: מזהה הפרויקט.-
DATASET: השם של מערך הנתונים שמכיל את הטבלה. -
TABLE: שם הטבלה שרוצים לצרף. -
PATH_TO_SOURCE: URI מלא של Cloud Storage, רשימה מופרדת בפסיקים של מזהי URI, או הנתיב לקובץ נתונים במחשב המקומי. -
SCHEMA: הנתיב לקובץ סכימת JSON מקומי. קובץ סכימה נדרש רק לקובצי CSV ו-JSON כשלא מציינים את--autodetect. סכימות של Avro ו-Datastore נגזרות מנתוני המקור.
דוגמאות:
מזינים את הפקודה הבאה כדי לצרף קובץ נתונים מקומי בפורמט Avro, /tmp/mydata.avro, אל mydataset.mytable באמצעות עבודת טעינה. מכיוון שאפשר להסיק סכימות מנתוני Avro באופן אוטומטי, אין צורך להשתמש בדגל --autodetect. mydataset נמצא בפרויקט ברירת המחדל שלכם.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=AVRO \
mydataset.mytable \
/tmp/mydata.avro
מזינים את הפקודה הבאה כדי לצרף קובץ נתונים בפורמט JSON עם תווי שורה חדשה כתוחמים ב-Cloud Storage אל mydataset.mytable באמצעות משימת טעינה. הדגל --autodetect
משמש לזיהוי העמודות החדשות. mydataset נמצא בפרויקט ברירת המחדל שלכם.
bq load \
--noreplace \
--autodetect \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json
מזינים את הפקודה הבאה כדי לצרף קובץ נתונים בפורמט JSON עם תווי שורה חדשה כתוחמים ב-Cloud Storage אל mydataset.mytable באמצעות משימת טעינה. הסכימה שמכילה את העמודות החדשות מצוינת בקובץ סכימת JSON מקומי, /tmp/myschema.json. mydataset נמצא בmyotherproject, ולא בפרויקט ברירת המחדל שלך.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=NEWLINE_DELIMITED_JSON \
myotherproject:mydataset.mytable \
gs://mybucket/mydata.json \
/tmp/myschema.json
API
מבצעים קריאה ל-method jobs.insert. מגדירים משימת load ומגדירים את המאפיינים הבאים:
- אפשר להפנות לנתונים ב-Cloud Storage באמצעות המאפיין
sourceUris. - מגדירים את פורמט הנתונים באמצעות הנכס
sourceFormat. - מציינים את הסכימה במאפיין
schema. - מציינים את אפשרות העדכון של הסכימה באמצעות המאפיין
schemaUpdateOptions. - מגדירים את מאפיין הכתיבה של טבלת היעד ל-
WRITE_APPENDבאמצעות המאפייןwriteDisposition.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הוספת עמודות בעבודת שרשור של שאילתות
אפשר להוסיף עמודות לטבלה כשמצרפים אליה תוצאות של שאילתה.
כשמוסיפים עמודות באמצעות פעולת צירוף במשימת שאילתה, הסכימה של תוצאות השאילתה משמשת לעדכון הסכימה של טבלת היעד. שימו לב שאי אפשר להריץ שאילתה על טבלה במיקום אחד ולכתוב את התוצאות בטבלה במיקום אחר.
כדי להוסיף עמודה חדשה כשמצרפים נתונים לטבלה במהלך עבודת שאילתה, בוחרים באחת מהאפשרויות הבאות:
BQ
משתמשים בפקודה bq query כדי להריץ שאילתה על הנתונים ומציינים את הדגל --destination_table כדי לציין לאיזו טבלה רוצים לצרף את הנתונים.
כדי לציין שאתם מוסיפים את תוצאות השאילתה לטבלת יעד קיימת, מציינים את הדגל --append_table.
מגדירים את הדגל --schema_update_option לערך ALLOW_FIELD_ADDITION כדי לציין שתוצאות השאילתה שאתם מצרפים מכילות עמודות חדשות.
מציינים את הדגל use_legacy_sql=false כדי להשתמש בתחביר GoogleSQL בשאילתה.
אם הטבלה שאתם מוסיפים נמצאת במערך נתונים בפרויקט שאינו פרויקט ברירת המחדל שלכם, צריך להוסיף את מזהה הפרויקט לשם מערך הנתונים בפורמט הבא: PROJECT_ID:DATASET. שימו לב שהטבלה שאתם שולחים אליה שאילתה וטבלת היעד חייבות להיות באותו מיקום.
(אופציונלי) מציינים את הדגל --location ומגדירים את הערך למיקום.
bq --location=LOCATION query \ --destination_table PROJECT_ID:DATASET.TABLE \ --append_table \ --schema_update_option=ALLOW_FIELD_ADDITION \ --use_legacy_sql=false \ 'QUERY'
מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: שם המיקום. הדגל--locationהוא אופציונלי. לדוגמה, אם אתם משתמשים ב-BigQuery באזור טוקיו, צריך להגדיר את הערך של הדגל ל-asia-northeast1. אפשר להגדיר ערך ברירת מחדל למיקום באמצעות קובץ .bigqueryrc. שימו לב: אי אפשר לצרף תוצאות של שאילתה לטבלה במיקום אחר. PROJECT_ID: מזהה הפרויקט.-
dataset: השם של מערך הנתונים שמכיל את הטבלה שמוסיפים לה נתונים. -
TABLE: שם הטבלה שרוצים לצרף. -
QUERY: שאילתה בתחביר GoogleSQL.
דוגמאות:
מזינים את הפקודה הבאה כדי לשלוח שאילתה ל-mydataset.mytable בפרויקט ברירת המחדל ולהוסיף את תוצאות השאילתה ל-mydataset.mytable2 (גם בפרויקט ברירת המחדל).
bq query \
--destination_table mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_ADDITION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
מזינים את הפקודה הבאה כדי לשלוח שאילתה ל-mydataset.mytable בפרויקט ברירת המחדל ולהוסיף את תוצאות השאילתה ל-mydataset.mytable2 ב-myotherproject.
bq query \
--destination_table myotherproject:mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_ADDITION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
API
מבצעים קריאה ל-method jobs.insert. מגדירים משימת query ומגדירים את המאפיינים הבאים:
- מציינים את טבלת היעד באמצעות המאפיין
destinationTable. - מגדירים את מאפיין הכתיבה של טבלת היעד ל-
WRITE_APPENDבאמצעות המאפייןwriteDisposition. - מציינים את אפשרות העדכון של הסכימה באמצעות המאפיין
schemaUpdateOptions. - מציינים את שאילתת GoogleSQL באמצעות המאפיין
query.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
שינוי השם של עמודה
כדי לשנות את השם של עמודה בטבלה, משתמשים בהצהרת ALTER TABLE RENAME COLUMN DDL. בדוגמה הבאה משנים את השם של העמודה old_name ל-new_name ב-mytable:
ALTER TABLE mydataset.mytable RENAME COLUMN old_name TO new_name;
מידע נוסף על הצהרות ALTER TABLE RENAME COLUMN זמין בפרטים על DDL.
שינוי סוג הנתונים של עמודה
אי אפשר לשנות את סוג הנתונים של עמודה באמצעות Google Cloud המסוף, כלי שורת הפקודה של BigQuery או BigQuery API. אם תנסו לעדכן טבלה על ידי החלת סכימה שמציינת סוג נתונים חדש לעמודה, תוצג שגיאה.
שינוי סוג הנתונים של עמודה באמצעות הצהרת DDL
אפשר להשתמש ב-GoogleSQL כדי לבצע שינויים מסוימים בסוג הנתונים של עמודה. למידע נוסף ולרשימה מלאה של המרות נתמכות של סוגי נתונים, אפשר לעיין בהצהרת DDL של ALTER COLUMN SET DATA TYPE.
בדוגמה הבאה נוצרת טבלה עם עמודה מסוג INT64, ואז הסוג משתנה ל-NUMERIC:
CREATE TABLE mydataset.mytable(c1 INT64); ALTER TABLE mydataset.mytable ALTER COLUMN c1 SET DATA TYPE NUMERIC;
בדוגמה הבאה נוצרת טבלה עם עמודה מקוננת עם שני שדות, ואז מתעדכן הסוג של אחת העמודות מ-INT ל-NUMERIC:
CREATE TABLE mydataset.mytable(s1 STRUCT<a INT64, b STRING>); ALTER TABLE mydataset.mytable ALTER COLUMN s1 SET DATA TYPE STRUCT<a NUMERIC, b STRING>;
שינוי סוגי עמודות מקוננות
בשינויים מורכבים בסכימה, כמו שינוי שדה במערך של STRUCT, אין תמיכה בהצהרת DDL ALTER TABLE.
כפתרון עקיף, אפשר להשתמש בהצהרת CREATE OR REPLACE TABLE
עם הצהרת SELECT
כדי לשנות את סכימת הנתונים המקוננת.
בדוגמה הבאה אפשר לראות איך משנים עמודה במערך של STRUCTS:
נניח שיש טבלה samples.test עם הסכימה והנתונים הבאים:
CREATE OR REPLACE TABLE samples.test(D STRUCT <L ARRAY<STRUCT<R STRING, U STRING, V STRING>>, F STRING>); INSERT INTO samples.test(D) VALUES (STRUCT([STRUCT("r1", "u1", "v1"), STRUCT("r2", "u2", "v2")], "f1"));
התוצאה אמורה להיראות כך:
+----------------------------------------------------------------------------+
| D |
+----------------------------------------------------------------------------+
| {"L":[{"R":"r1","U":"u1","V":"v1"},{"R":"r2","U":"u2","V":"v2"}],"F":"f1"} |
+----------------------------------------------------------------------------+
נניח שאתם צריכים לשנות את סוג השדה U במערך המקונן של STRUCT ל-STRUCT<W STRING>. בדוגמה הבאה של הצהרת SQL אפשר לראות איך עושים את זה:
CREATE OR REPLACE TABLE samples.new_table AS SELECT STRUCT(ARRAY( SELECT STRUCT(tmp.R, STRUCT(tmp.U AS W) AS U, tmp.V) FROM UNNEST(t.D.L) AS tmp) AS L, t.D.F) AS D FROM samples.test AS t
ההצהרה הזו יוצרת טבלה חדשה, samples.new_table, עם סכימת היעד.
הפונקציה UNNEST מרחיבה את מערך ה-STRUCT בתוך t.D.L. הביטוי STRUCT(tmp.U AS W) AS U בונה את ה-STRUCT החדש עם השדה W, שאוכלס בערך מהשדה המקורי U. הטבלה שמתקבלת, samples.new_table, כוללת את הסכימה והנתונים הבאים:
+----------------------------------------------------------------------------------------+
| D |
+----------------------------------------------------------------------------------------+
| {"L":[{"R":"r1","U":{"W":"u1"},"V":"v1"},{"R":"r2","U":{"W":"u2"},"V":"v2"}],"F":"f1"} |
+----------------------------------------------------------------------------------------+
המרת סוג הנתונים של עמודה
כדי לשנות את סוג הנתונים של עמודה לסוג ניתן להמרה, משתמשים בשאילתת SQL כדי לבחור את נתוני הטבלה, להמיר את העמודה הרלוונטית ולשכתב את הטבלה. לא מומלץ להשתמש בהמרת טיפוסים ובדריסת נתונים בטבלאות גדולות מאוד, כי הפעולות האלה מצריכות סריקה מלאה של הטבלה.
בדוגמה הבאה מוצגת שאילתת SQL שבוחרת את כל הנתונים מ-column_two ומ-column_three ב-mydataset.mytable ומבצעת המרה של column_one מ-DATE ל-STRING. תוצאת השאילתה משמשת להחלפת הטבלה הקיימת. הטבלה שמוחלפת מאחסנת את הערך column_one כסוג הנתונים STRING.
כשמשתמשים ב-CAST, שאילתה עלולה להיכשל אם ל-BigQuery אין אפשרות לבצע את ההמרה. פרטים על כללי המרת טיפוסים ב-GoogleSQL מופיעים במאמר בנושא המרת טיפוסים.
המסוף
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מזינים את השאילתה הבאה כדי לבחור את כל הנתונים מ-
column_twoומ-column_threeב-mydataset.mytableולהמיר אתcolumn_oneמ-DATEל-STRING. השאילתה משתמשת בכינוי כדי להגדיר אתcolumn_oneעם אותו שם. mydataset.mytableנמצא בפרויקט ברירת המחדל שלכם.SELECT column_two, column_three, CAST(column_one AS STRING) AS column_one FROM mydataset.mytable;
לוחצים על עוד ובוחרים באפשרות הגדרות שאילתה.
בקטע יעד, מבצעים את הפעולות הבאות:
בוחרים באפשרות הגדרת טבלת יעד לתוצאות השאילתה.
בקטע Project name, משאירים את הערך שמוגדר לפרויקט ברירת המחדל. זהו הפרויקט שמכיל את
mydataset.mytable.בשדה Dataset, בוחרים באפשרות
mydataset.בשדה Table Id (מזהה הטבלה), מזינים
mytable.בקטע העדפת כתיבה בטבלת היעד, בוחרים באפשרות החלפת תוכן הטבלה. האפשרות הזו מחליפה את
mytableבאמצעות תוצאות השאילתה.
אופציונלי: בוחרים את המיקום של הנתונים.
כדי לעדכן את ההגדרות, לוחצים על שמירה.
לוחצים על הפעלה.
כשעבודת השאילתה מסתיימת, סוג הנתונים של
column_oneהואSTRING.
BQ
מזינים את הפקודה bq query הבאה כדי לבחור את כל הנתונים מ-column_two ומ-column_three ב-mydataset.mytable ולהפעיל את column_one מ-DATE אל STRING. השאילתה משתמשת בכינוי כדי להגדיר את column_one עם אותו שם. mydataset.mytable נמצא בפרויקט ברירת המחדל שלכם.
תוצאות השאילתה נכתבות אל mydataset.mytable באמצעות הדגל --destination_table, והדגל --replace משמש להחלפת mytable. מציינים את הדגל use_legacy_sql=false כדי להשתמש בתחביר של GoogleSQL.
אפשר גם לציין את הדגל --location ולהגדיר את הערך למיקום.
bq query \
--destination_table mydataset.mytable \
--replace \
--use_legacy_sql=false \
'SELECT
column_two,
column_three,
CAST(column_one AS STRING) AS column_one
FROM
mydataset.mytable'
API
כדי לבחור את כל הנתונים מ-column_two ומ-column_three ב-mydataset.mytable ולהמיר את column_one מ-DATE ל-STRING, קוראים לשיטה jobs.insert ומגדירים משימת query. אפשר גם לציין את המיקום במאפיין location בקטע jobReference.
שאילתת ה-SQL שבה נעשה שימוש בעבודת השאילתה תהיה SELECT column_two,
column_three, CAST(column_one AS STRING) AS column_one FROM
mydataset.mytable. השאילתה משתמשת בכינוי כדי להטיל את column_one עם אותו שם.
כדי להחליף את mytable בתוצאות השאילתה, צריך לכלול את mydataset.mytable במאפיין configuration.query.destinationTable ולציין את WRITE_TRUNCATE במאפיין configuration.query.writeDisposition.
שינוי המצב של עמודה
השינוי היחיד שנתמך במצב של עמודה הוא שינוי מ-REQUIRED ל-NULLABLE. שינוי המצב של עמודה מ-REQUIRED ל-NULLABLE נקרא גם הרחבת העמודה. אפשר גם להרחיב עמודה כשמעלים נתונים כדי להחליף טבלה קיימת, או כשמוסיפים נתונים לטבלה קיימת. אי אפשר לשנות את המצב של עמודה מNULLABLE לREQUIRED או מREPEATED לNULLABLE. כדי לשנות את המצב של עמודה מ-NULLABLE ל-REQUIRED או מ-REPEATED ל-NULLABLE, צריך ליצור מחדש את הטבלה עם המצבים המעודכנים של העמודות.
יצירת עמודה NULLABLE בטבלה קיימת
כדי לשנות את המצב של עמודה מ-REQUIRED ל-NULLABLE, בוחרים באחת מהאפשרויות הבאות:
המסוף
עוברים לדף BigQuery.
בחלונית הימנית, לוחצים על כלי הניתוחים:

בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ואז בוחרים מערך נתונים.
לוחצים על סקירה כללית > טבלאות ובוחרים את הטבלה.
בחלונית הפרטים, לוחצים על הכרטיסייה סכימה.
לוחצים על עריכת הסכימה. יכול להיות שתצטרכו לגלול כדי לראות את הלחצן הזה.
בדף Current schema (סכימה נוכחית), מאתרים את השדה שרוצים לשנות.
ברשימה הנפתחת Mode של השדה, בוחרים באפשרות
NULLABLE.כדי לעדכן את ההגדרות, לוחצים על שמירה.
SQL
משתמשים בהצהרת ה-DDL ALTER COLUMN DROP NOT NULL.
בדוגמה הבאה משנים את המצב של העמודה mycolumn מ-REQUIRED ל-NULLABLE:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
ALTER TABLE mydataset.mytable ALTER COLUMN mycolumn DROP NOT NULL;
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
קודם מריצים את הפקודה
bq showעם הדגל--schemaוכותבים את סכימת הטבלה הקיימת לקובץ. אם הטבלה שאתם מעדכנים נמצאת בפרויקט שאינו פרויקט ברירת המחדל, צריך להוסיף את מזהה הפרויקט לשם של מערך הנתונים בפורמט הבא:PROJECT_ID:DATASET.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA_FILE
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.-
DATASET: שם מערך הנתונים שמכיל את הטבלה שאתם מעדכנים. -
TABLE: שם הטבלה שרוצים לעדכן. -
SCHEMA_FILE: קובץ הגדרת הסכימה שנכתב במחשב המקומי.
לדוגמה, כדי לכתוב את הגדרת הסכימה של
mydataset.mytableלקובץ, מזינים את הפקודה הבאה. mydataset.mytableנמצא בפרויקט ברירת המחדל.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.jsonפותחים את קובץ הסכימה בכלי לעריכת טקסט. הסכימה צריכה להיראות כך:
[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]שינוי המצב של עמודה קיימת מ-
REQUIREDל-NULLABLE. בדוגמה הזו, המצב שלcolumn1הוא relaxed.[ { "mode": "NULLABLE", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]מידע נוסף על עבודה עם קובצי סכימת JSON זמין במאמר ציון קובץ סכימת JSON.
אחרי שמעדכנים את קובץ הסכימה, מריצים את הפקודה הבאה כדי לעדכן את הסכימה של הטבלה. אם הטבלה שאתם מעדכנים נמצאת בפרויקט שאינו פרויקט ברירת המחדל, צריך להוסיף את מזהה הפרויקט לשם מערך הנתונים בפורמט הבא:
PROJECT_ID:DATASET.bq update PROJECT_ID:DATASET.TABLE SCHEMA
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.-
DATASET: שם מערך הנתונים שמכיל את הטבלה שאתם מעדכנים. -
TABLE: שם הטבלה שרוצים לעדכן. -
SCHEMA: הנתיב לקובץ סכימת ה-JSON במחשב המקומי.
לדוגמה, מזינים את הפקודה הבאה כדי לעדכן את הגדרת הסכימה של
mydataset.mytableבפרויקט ברירת המחדל. הנתיב לקובץ הסכימה במחשב המקומי הוא/tmp/myschema.json.bq update mydataset.mytable /tmp/myschema.json
API
מתקשרים אל tables.patch ומשתמשים במאפיין schema כדי לשנות עמודה REQUIRED ל-NULLABLE בהגדרת הסכימה. השיטה המועדפת היא tables.patch, כי היא מחליפה את כל משאב הטבלה.tables.update
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
מחליפים את המאפיין Table.schema ברשימה של אובייקטים מסוג SchemaField עם המאפיין mode שמוגדר לערך'NULLABLE'
יצירת עמודה NULLABLE באמצעות משימת טעינה של צירוף
אפשר להגדיר את המצב של עמודה כ'רפוי' כשמוסיפים נתונים לטבלה בעבודת טעינה. בוחרים באחת מהאפשרויות הבאות בהתאם לסוג הקובץ:
- כשמוסיפים נתונים מקובצי CSV ו-JSON, אפשר להגדיר את המצב של עמודות ספציפיות על ידי ציון קובץ סכימת JSON.
- כשמוסיפים נתונים מקובצי Avro, ORC או Parquet, צריך להגדיר את העמודות בסכימה כ-
NULLrelaxed ולאפשר להסקת הסכימה לזהות את העמודות האלה.
כדי להרחיב עמודה מ-REQUIRED ל-NULLABLE כשמוסיפים נתונים לטבלה במהלך עבודת טעינה, בוחרים באחת מהאפשרויות הבאות:
המסוף
אי אפשר לשנות את המצב של עמוד באמצעות מסוף Google Cloud .
BQ
משתמשים בפקודה bq load כדי לטעון את הנתונים ומציינים את הדגל --noreplace כדי לציין שאתם מוסיפים את הנתונים לטבלה קיימת.
אם הנתונים שאתם מוסיפים הם בפורמט CSV או בפורמט JSON עם תווי שורה חדשה כמפריד,
צריך לציין את העמודות הגמישות בקובץ סכמה מקומי בפורמט JSON או להשתמש בדגל --autodetect כדי להשתמש בזיהוי סכמה כדי לגלות עמודות גמישות בנתוני המקור.
אפשר להסיק באופן אוטומטי עמודות עם הרפיה מקבצים בפורמטים Avro, ORC ו-Parquet. הגמשת העמודות לא חלה על הוספות לייצוא של Datastore. העמודות בטבלאות שנוצרות על ידי טעינה של קובצי ייצוא של Datastore הן תמיד NULLABLE.
מגדירים את הדגל --schema_update_option לערך ALLOW_FIELD_RELAXATION כדי לציין שהנתונים שאתם מוסיפים מכילים עמודות עם הגבלות פחות מחמירות.
אם הטבלה שאתם מוסיפים נמצאת במערך נתונים בפרויקט שאינו פרויקט ברירת המחדל שלכם, צריך להוסיף את מזהה הפרויקט לשם מערך הנתונים בפורמט הבא: PROJECT_ID:DATASET.
(אופציונלי) מציינים את הדגל --location ומגדירים את הערך למיקום.
מזינים את הפקודה load באופן הבא:
bq --location=LOCATION load \ --noreplace \ --schema_update_option=ALLOW_FIELD_RELAXATION \ --source_format=FORMAT \ PROJECT_ID:DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: שם המיקום. הדגל--locationהוא אופציונלי. לדוגמה, אם אתם משתמשים ב-BigQuery באזור טוקיו, צריך להגדיר את הערך של הדגל ל-asia-northeast1. אפשר להגדיר ערך ברירת מחדל למיקום באמצעות קובץ .bigqueryrc. FORMAT:NEWLINE_DELIMITED_JSON,CSV,PARQUET,ORC, אוAVRO. לא צריך להגדיר הקלה על כללי העמודות בקובציDATASTORE_BACKUP. העמודות בטבלאות שנוצרות מקובצי ייצוא של Datastore הן תמידNULLABLE.PROJECT_ID: מזהה הפרויקט.-
dataset הוא שם מערך הנתונים שמכיל את הטבלה. TABLE: שם הטבלה שרוצים לצרף.-
PATH_TO_SOURCE: URI מלא של Cloud Storage, רשימה מופרדת בפסיקים של מזהי URI, או הנתיב לקובץ נתונים במחשב המקומי. -
SCHEMA: הנתיב לקובץ סכימת JSON מקומי. האפשרות הזו משמשת רק לקובצי CSV ו-JSON. העמודות המורחבות מוסקות באופן אוטומטי מקובצי Avro.
דוגמאות:
מזינים את הפקודה הבאה כדי לצרף קובץ נתונים מקומי בפורמט Avro, /tmp/mydata.avro, אל mydataset.mytable באמצעות עבודת טעינה. מכיוון שאפשר להסיק באופן אוטומטי עמודות עם הקלה על הגבלות מנתוני Avro, אין צורך לציין קובץ סכימה. mydataset נמצא בפרויקט ברירת המחדל שלכם.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=AVRO \
mydataset.mytable \
/tmp/mydata.avro
מזינים את הפקודה הבאה כדי לצרף נתונים מקובץ JSON עם תווי שורה להפרדה ב-Cloud Storage אל mydataset.mytable באמצעות משימת טעינה. הסכימה שמכילה את העמודות הגמישות נמצאת בקובץ סכימת JSON מקומי – /tmp/myschema.json. mydataset נמצא בפרויקט ברירת המחדל שלכם.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json \
/tmp/myschema.json
מזינים את הפקודה הבאה כדי להוסיף נתונים בקובץ CSV במחשב המקומי אל mydataset.mytable באמצעות משימת טעינה. הפקודה משתמשת בזיהוי אוטומטי של סכימה כדי לגלות עמודות עם הגבלות רופפות בנתוני המקור. mydataset
נמצא ב-myotherproject, ולא בפרויקט ברירת המחדל שלכם.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=CSV \
--autodetect \
myotherproject:mydataset.mytable \
mydata.csv
API
מבצעים קריאה ל-method jobs.insert. מגדירים משימת load ומגדירים את המאפיינים הבאים:
- אפשר להפנות לנתונים ב-Cloud Storage באמצעות המאפיין
sourceUris. - מגדירים את פורמט הנתונים באמצעות הנכס
sourceFormat. - מציינים את הסכימה במאפיין
schema. - מציינים את אפשרות העדכון של הסכימה באמצעות המאפיין
schemaUpdateOptions. - מגדירים את מאפיין הכתיבה של טבלת היעד ל-
WRITE_APPENDבאמצעות המאפייןwriteDisposition.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הפיכת כל העמודות ל-NULLABLE באמצעות עבודת צירוף
אפשר להרפות את כל העמודות בטבלה כשמוסיפים אליה תוצאות של שאילתה. אפשר להגדיר את הדגל --schema_update_option לערך ALLOW_FIELD_RELAXATION כדי להפוך את כל שדות החובה בטבלת היעד לשדות אופציונליים. אי אפשר להרחיב את ההגבלות על עמודות ספציפיות בטבלת יעד באמצעות שאילתת הוספה. כדי להגדיר עמודות מסוימות באמצעות משימת הוספה של נתונים, אפשר לעיין במאמר הגדרת עמודה NULLABLE באמצעות משימת הוספה.
כדי להרחיב את כל העמודות כשמוסיפים תוצאות של שאילתה לטבלת יעד, בוחרים באחת מהאפשרויות הבאות:
המסוף
אי אפשר לשנות את המצב של עמוד באמצעות מסוף Google Cloud .
BQ
משתמשים בפקודה bq query כדי להריץ שאילתה על הנתונים ומציינים את הדגל --destination_table כדי לציין לאיזו טבלה רוצים לצרף את הנתונים.
כדי לציין שאתם מוסיפים את תוצאות השאילתה לטבלת יעד קיימת, מציינים את הדגל --append_table.
מגדירים את הדגל --schema_update_option לערך ALLOW_FIELD_RELAXATION כדי לציין שכל העמודות REQUIRED בטבלה שמוסיפים צריכות להשתנות לערך NULLABLE.
מציינים את הדגל use_legacy_sql=false כדי להשתמש בתחביר GoogleSQL בשאילתה.
אם הטבלה שאתם מוסיפים נמצאת במערך נתונים בפרויקט שאינו פרויקט ברירת המחדל שלכם, צריך להוסיף את מזהה הפרויקט לשם מערך הנתונים בפורמט הבא: PROJECT_ID:DATASET.
(אופציונלי) מציינים את הדגל --location ומגדירים את הערך למיקום.
bq --location=LOCATION query \ --destination_table PROJECT_ID:DATASET.TABLE \ --append_table \ --schema_update_option=ALLOW_FIELD_RELAXATION \ --use_legacy_sql=false \ 'QUERY'
מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: שם המיקום. הדגל--locationהוא אופציונלי. לדוגמה, אם אתם משתמשים ב-BigQuery באזור טוקיו, צריך להגדיר את הערך של הדגל ל-asia-northeast1. אפשר להגדיר ערך ברירת מחדל למיקום באמצעות קובץ .bigqueryrc. PROJECT_ID: מזהה הפרויקט.-
DATASET: השם של מערך הנתונים שמכיל את הטבלה שמוסיפים לה נתונים. -
TABLE: שם הטבלה שרוצים לצרף. -
QUERY: שאילתה בתחביר GoogleSQL.
דוגמאות:
מזינים את שאילתת הפקודה הבאה mydataset.mytable בפרויקט ברירת המחדל כדי לצרף את תוצאות השאילתה ל-mydataset.mytable2 (גם בפרויקט ברירת המחדל). הפקודה משנה את כל העמודות REQUIRED בטבלת היעד ל-NULLABLE.
bq query \
--destination_table mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
מזינים את שאילתת הפקודה הבאה mydataset.mytable בפרויקט ברירת המחדל כדי לצרף את תוצאות השאילתה ל-mydataset.mytable2 ב-myotherproject. הפקודה משנה את כל העמודות REQUIRED בטבלת היעד ל-NULLABLE.
bq query \
--destination_table myotherproject:mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
API
מבצעים קריאה ל-method jobs.insert. מגדירים משימת query ומגדירים את המאפיינים הבאים:
- מציינים את טבלת היעד באמצעות המאפיין
destinationTable. - מגדירים את מאפיין הכתיבה של טבלת היעד ל-
WRITE_APPENDבאמצעות המאפייןwriteDisposition. - מציינים את אפשרות העדכון של הסכימה באמצעות המאפיין
schemaUpdateOptions. - מציינים את שאילתת GoogleSQL באמצעות המאפיין
query.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
שינוי ערך ברירת המחדל של עמודה
כדי לשנות את ערך ברירת המחדל של עמודה, בוחרים באחת מהאפשרויות הבאות:
המסוף
במסוף Google Cloud , עוברים לדף BigQuery.
בחלונית הימנית, לוחצים על כלי הניתוחים:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ואז בוחרים את מערך הנתונים.
לוחצים על סקירה כללית > טבלאות ואז לוחצים על טבלה.
לוחצים על הכרטיסייה סכימה.
לוחצים על עריכת הסכימה. יכול להיות שתצטרכו לגלול כדי לראות את הלחצן הזה.
בדף Current schema (סכימה נוכחית), מאתרים את השדה ברמה העליונה שרוצים לשנות.
מזינים את ערך ברירת המחדל של השדה.
לוחצים על Save.
SQL
משתמשים בהצהרת ה-DDL ALTER COLUMN SET DEFAULT.
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
ALTER TABLE mydataset.mytable ALTER COLUMN column_name SET DEFAULT default_expression;
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
שינוי תיאור של עמודה
כדי לשנות את התיאור של עמודה, בוחרים באחת מהאפשרויות הבאות:
המסוף
במסוף Google Cloud , עוברים לדף BigQuery.
בחלונית הימנית, לוחצים על כלי הניתוחים:

בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ואז בוחרים מערך נתונים.
לוחצים על סקירה כללית > טבלאות ובוחרים את הטבלה.
בחלונית הפרטים, לוחצים על הכרטיסייה סכימה.
לוחצים על עריכת הסכימה. יכול להיות שתצטרכו לגלול כדי לראות את הלחצן הזה.
בדף Current schema (סכימה נוכחית), מאתרים את השדה שרוצים לשנות.
מזינים את התיאור של השדה.
לוחצים על Save.
SQL
משתמשים בהצהרת ה-DDL ALTER COLUMN SET OPTIONS.
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
ALTER TABLE mydataset.mytable ALTER COLUMN column_name SET OPTIONS (description = 'This is a column description.');
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
Gemini
אתם יכולים ליצור תיאורי עמודות באמצעות Gemini ב-BigQuery בעזרת תובנות לגבי נתונים. תובנות לגבי נתונים היא דרך אוטומטית לבדוק את הנתונים, להבין אותם ולערוך אותם.
מידע נוסף על תובנות לגבי נתונים, כולל שלבי ההגדרה, תפקידי ה-IAM הנדרשים ושיטות מומלצות לשיפור הדיוק של התובנות שנוצרו, זמין במאמר יצירת תובנות לגבי נתונים ב-BigQuery.
במסוף Google Cloud , עוברים לדף BigQuery.
בחלונית הימנית, לוחצים על כלי הניתוחים:

בחלונית Explorer מרחיבים את הפרויקט ואת מערך הנתונים, ואז בוחרים את הטבלה.
בחלונית הפרטים, לוחצים על הכרטיסייה סכימה.
לוחצים על יצירה.
Gemini יוצר תיאורים של העמודות ותובנות לגבי הטבלה. יעברו כמה דקות עד שהמידע יאוכלס. אפשר לראות את התובנות שנוצרו בכרטיסייה תובנות של הטבלה.
כדי לערוך ולשמור את תיאורי העמודות שנוצרו:
לוחצים על הצגת תיאורי העמודות.
בקטע תיאורי עמודות, לוחצים על שמירה בסכימה.
התיאורים שנוצרו יופיעו בשדה תיאור חדש של כל עמודה.
עורכים את תיאורי העמודות לפי הצורך ולוחצים על שמירה.
תיאורי העמודות מתעדכנים באופן מיידי.
כדי לסגור את החלונית תצוגה מקדימה של תיאורים, לוחצים על סגירה.
מחיקת עמודה
אפשר למחוק עמודה מטבלה קיימת באמצעות הצהרת ה-DDL ALTER TABLE DROP COLUMN.
ההצהרה לא מפנה באופן מיידי את נפח האחסון שמשויך לעמודה שהוסרה. מידע נוסף על ההשפעה על האחסון כשמשמיטים עמוד באחסון זמין במאמר פרטי הצהרה.ALTER TABLE DROP COLUMN
יש שתי אפשרויות לשחרור מיידי של נפח אחסון:
החלפת טבלה באמצעות שאילתת
SELECT * EXCEPT:CREATE OR REPLACE TABLE mydataset.mytable AS ( SELECT * EXCEPT (column_to_delete) FROM mydataset.mytable );מייצאים את הנתונים ל-Cloud Storage, מוחקים את העמודות הלא רצויות ואז טוענים את הנתונים לטבלה חדשה עם הסכימה הנכונה.