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

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ובוחרים קבוצת נתונים.
לוחצים על סקירה כללית > טבלאות, ובוחרים את הטבלה.
בחלונית הפרטים, לוחצים על Edit > Edit schema.
בדף Current schema, בקטע New fields, לוחצים על Add field.
- בשם, מקלידים את שם העמודה.
- בשדה Type, בוחרים את סוג הנתונים.
- בקטע Mode, בוחרים באפשרות
NULLABLEאוREPEATED.
כשמסיימים להוסיף עמודות, לוחצים על שמירה.
SQL
משתמשים בהצהרת ה-DDL ALTER TABLE ADD COLUMN:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
ALTER TABLE mydataset.mytable ADD COLUMN new_column STRING;
לוחצים על Run.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
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 כדי להוסיף עמודות ריקות להגדרת הסכימה. מכיוון שה-method tables.update מחליפה את כל משאב הטבלה, עדיף להשתמש ב-method tables.patch.
המשך
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של 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
מפעילים את ה-method tables.patch ומשתמשים במאפיין schema כדי להוסיף את העמודות בתצוגת עץ להגדרת הסכימה. ה-method tables.update מחליפה את כל משאב הטבלה, ולכן עדיף להשתמש ב-method tables.patch.
הוספת עמודות כשמחליפים או מוסיפים נתונים
אפשר להוסיף עמודות חדשות לטבלה קיימת כשמטעינים אליה נתונים ובוחרים להחליף את הטבלה הקיימת. כשמחליפים טבלה קיימת, הסכימה של הנתונים שאתם טוענים מחליפה את הסכימה של הטבלה הקיימת. כדי לקבל מידע על החלפת טבלה באמצעות משימת טעינה, עיינו במסמך שמתאים לפורמט של הנתונים:
הוספת עמודות במשימת טעינה של הוספה (append)
אפשר להוסיף עמודות לטבלה כשמצרפים אליה נתונים במשימת טעינה. הסכימה החדשה נקבעת לפי אחת מהאפשרויות הבאות:
- זיהוי אוטומטי (לקובצי CSV ו-JSON)
- סכימה שצוינה בקובץ סכימה של JSON (לקובצי CSV ו-JSON)
- נתוני המקור שמתארים את עצמם בקובצי ייצוא של Avro, ORC, Parquet ו-Datastore
אם מציינים את הסכימה בקובץ JSON, צריך להגדיר בו את העמודות החדשות. אם הגדרות העמודות החדשות חסרות, תוחזר שגיאה כשמנסים להוסיף את הנתונים.
כשמוסיפים עמודות חדשות במהלך פעולת append, הערכים בעמודות החדשות מוגדרים כ-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 במדריך למתחילים של 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. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הוספת עמודות במשימת הוספה של שאילתה
אפשר להוסיף עמודות לטבלה כשמצרפים אליה תוצאות של שאילתה.
כשמוסיפים עמודות באמצעות פעולת append במשימת שאילתה, הסכימה של תוצאות השאילתה משמשת לעדכון הסכימה של טבלת היעד. שימו לב שאי אפשר לשלוח שאילתה לטבלה במיקום אחד ולכתוב את התוצאות בטבלה במיקום אחר.
כדי להוסיף עמודה חדשה כשמצרפים נתונים לטבלה במהלך משימת שאילתה, בוחרים באחת מהאפשרויות הבאות:
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 במדריך למתחילים של 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. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
שינוי שם של עמודה
כדי לשנות שם של עמודה בטבלה, משתמשים בהצהרת ה-DDL ALTER TABLE RENAME COLUMN. בדוגמה הבאה, השם של העמודה 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"} |
+----------------------------------------------------------------------------------------+
המרת סוג הנתונים של עמודה
כדי לשנות את סוג הנתונים של עמודה לסוג castable, משתמשים בשאילתת SQL כדי לבחור את נתוני הטבלה, ממירים את העמודה הרלוונטית ומחליפים את הטבלה. לא מומלץ להמיר ולשכתב טבלאות גדולות מאוד, כי הפעולה הזו דורשת סריקה מלאה של הטבלה.
בדוגמה הבאה מוצגת שאילתת SQL שבוחרת את כל הנתונים מ-column_two ומ-column_three ב-mydataset.mytable וממירה את column_one מ-DATE ל-STRING. תוצאת השאילתה משמשת להחלפת הטבלה הקיימת. הטבלה שהוחלפה מאחסנת את column_one כסוג נתונים STRING.
כשמשתמשים ב-CAST, השאילתה עלולה להיכשל אם BigQuery לא יכול לבצע את ההמרה. לפרטים על כללי ההמרה ב-GoogleSQL, קראו את המאמר המרה.
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את השאילתה הבאה כדי לבחור את כל הנתונים מ-
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;
לוחצים על עריכה > הגדרות השאילתה.
בקטע Destination:
בוחרים באפשרות Set a destination table for query results.
בשדה Project name, משאירים את הערך שמוגדר לפרויקט ברירת המחדל. זה הפרויקט שמכיל את
mydataset.mytable.בקטע Dataset, בוחרים באפשרות
mydataset.בשדה Table Id, מזינים
mytable.בקטע Destination table write preference, בוחרים באפשרות Overwrite table. האפשרות הזו מחליפה את
mytableבתוצאות השאילתה.
אם רוצים, בוחרים את המיקום של הנתונים.
כדי לעדכן את ההגדרות, לוחצים על שמירה.
לוחצים על Run.
כשמשימת השאילתה מסתיימת, סוג הנתונים של
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, מפעילים את ה-method 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:

בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ובוחרים קבוצת נתונים.
לוחצים על סקירה כללית > טבלאות, ובוחרים את הטבלה.
בחלונית הפרטים, לוחצים על Edit > Edit schema.
בדף Current schema, מאתרים את השדה שרוצים לשנות.
ברשימה הנפתחת Mode של השדה הזה, בוחרים באפשרות
NULLABLE.כדי לעדכן את ההגדרות, לוחצים על שמירה.
SQL
משתמשים בהצהרת ה-DDL ALTER COLUMN DROP NOT NULL.
בדוגמה הבאה משנים את המצב של העמודה mycolumn מ-REQUIRED ל-NULLABLE:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
ALTER TABLE mydataset.mytable ALTER COLUMN mycolumn DROP NOT NULL;
לוחצים על Run.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
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הוא "רגוע".[ { "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.update מחליפה את כל משאב הטבלה, ולכן עדיף להשתמש בשיטה tables.patch.
המשך
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של 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, צריך להרפות את העמודות ל-
NULLבסכימה, ולאפשר להסקת הסכימה לזהות את העמודות שהורפו.
כדי להרפות עמודה מ-REQUIRED ל-NULLABLE כשמוסיפים נתונים לטבלה במהלך משימת טעינה, בוחרים באחת מהאפשרויות הבאות:
המסוף
אי אפשר לשנות את המצב של עמודה באמצעות מסוף Google Cloud .
BQ
משתמשים בפקודה bq load כדי לטעון את הנתונים, ומציינים את הדגל --noreplace כדי לציין שאתם מוסיפים את הנתונים לטבלה קיימת.
אם הנתונים שאתם מוסיפים הם בפורמט CSV או JSON עם תווי newline, ציינו את העמודות הרגועות בקובץ סכימה מקומי של JSON או השתמשו בדגל --autodetect כדי להשתמש בזיהוי סכימה כדי לגלות עמודות רגועות בנתוני המקור.
אפשר להסיק עמודות רגועות באופן אוטומטי מקובצי Avro, ORC ו-Parquet. הרפיית עמודות לא חלה על פעולות append של ייצוא 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 במדריך למתחילים של 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. אי אפשר להקל על עמודות ספציפיות בטבלת היעד באמצעות הוספת שאילתה. כדי להגמיש עמודות ספציפיות באמצעות משימת טעינה מסוג append, קראו את המאמר הפיכת עמודה ל-NULLABLE באמצעות משימת append.
כדי להרפות את כל העמודות כשמצרפים תוצאות של שאילתה לטבלת יעד, בוחרים באחת מהאפשרויות הבאות:
המסוף
אי אפשר לשנות את המצב של עמודה באמצעות מסוף 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 במדריך למתחילים של 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. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
שינוי ערך ברירת המחדל של עמודה
כדי לשנות את ערך ברירת המחדל של עמודה, בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer:

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

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

בחלונית Explorer, מרחיבים את הפרויקט ואת מערך הנתונים ובוחרים את הטבלה.
בחלונית הפרטים, לוחצים על הכרטיסייה פרטים.
ליד פרטי הטבלה, לוחצים על תיאור הנתונים.
Gemini יוצר תיאורים של העמודות ותובנות לגבי הטבלה. המידע יופיע תוך כמה דקות. ניתן להציג את התובנות שנוצרו על ידי AI בכרטיסייה Insights של הטבלה.
כדי לערוך ולשמור את תיאורי העמודות שנוצרו, מבצעים את הפעולות הבאות:
לצד פרטי הטבלה, לוחצים על הצגת התיאורים.
בקטע Column descriptions, לוחצים על Save to schema.
תיאורי העמודות שנוצרו מאוכלסים בשדה New description של כל עמודה.
עורכים את תיאורי העמודות לפי הצורך ולוחצים על שמירה.
תיאורי העמודות מתעדכנים באופן מיידי.
כדי לסגור את החלונית Preview descriptions, לוחצים על Close.
מחיקת עמודה
כדי למחוק עמודה מטבלה קיימת, משתמשים בהצהרת ה-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, למחוק את העמודות הלא רצויות ואז לטעון את הנתונים לטבלה חדשה עם הסכימה הנכונה.
עדכוני סכימה לא יכולים להשמיט שדות בתצוגת עץ.