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

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ובוחרים מערך נתונים.
לוחצים על סקירה כללית > טבלאות ובוחרים את הטבלה.
בחלונית הפרטים, לוחצים על Edit > Edit schema.
בדף Current schema, בקטע New fields לוחצים על Add field.
- בשם, מקלידים את שם העמודה.
- בשדה Type, בוחרים את סוג הנתונים.
- במצב, בוחרים באפשרות
NULLABLEאוREPEATED.
כשמסיימים להוסיף עמודות, לוחצים על שמירה.
SQL
משתמשים בהצהרת ה-DDL ALTER TABLE ADD COLUMN:
נכנסים לדף BigQuery במסוף Cloud de Confiance .
בעורך השאילתות, מזינים את ההצהרה הבאה:
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
מפעילים את ה-method tables.patch ומשתמשים במאפיין schema כדי להוסיף עמודות ריקות להגדרת הסכימה. השיטה tables.update מחליפה את כל משאב הטבלה, ולכן עדיף להשתמש בשיטה tables.patch.
המשך
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Go במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
הוספת עמודה משנית לעמודה מסוג RECORD
בנוסף להוספת עמודות חדשות לסכימה של טבלה, אפשר גם להוסיף עמודות חדשות בתצוגת עץ לעמודה מסוג RECORD. התהליך להוספת עמודה חדשה בתצוגת עץ דומה לתהליך להוספת עמודה חדשה.
המסוף
אי אפשר להוסיף שדה חדש בתצוגת עץ לעמודה קיימת של RECORD באמצעות מסוף Cloud de Confiance .
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.
הוספת עמודות כשמחליפים או מוסיפים נתונים
אפשר להוסיף עמודות חדשות לטבלה קיימת כשמטעינים אליה נתונים ובוחרים להחליף את הטבלה הקיימת. כשמחליפים טבלה קיימת, הסכימה של הנתונים שאתם טוענים מחליפה את הסכימה של הטבלה הקיימת. כדי לקבל מידע על החלפת טבלה באמצעות משימת טעינה, עיינו במסמך שמתאים לפורמט של הנתונים:
הוספת עמודות במשימת טעינה והוספה
אפשר להוסיף עמודות לטבלה כשמצרפים אליה נתונים במשימת טעינה. הסכימה החדשה נקבעת לפי אחת מהאפשרויות הבאות:
- זיהוי אוטומטי (לקובצי 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 באזור Tokyo, הגדירו את ערך הדגל ל-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. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
הוספת עמודות במשימת הוספה של שאילתה
אפשר להוסיף עמודות לטבלה כשמצרפים אליה תוצאות של שאילתה.
כשמוסיפים עמודות באמצעות פעולת 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 באזור Tokyo, הגדירו את ערך הדגל ל-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. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
שינוי שם של עמודה
כדי לשנות שם של עמודה בטבלה, משתמשים בהצהרת ה-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.
שינוי סוג הנתונים של עמודה
אי אפשר לשנות את סוג הנתונים של עמודה באמצעות מסוף Cloud de Confiance , כלי שורת הפקודה של 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 במסוף Cloud de Confiance .
בעורך השאילתות, מזינים את השאילתה הבאה כדי לבחור את כל הנתונים מ-
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בתוצאות השאילתה.
אם רוצים, בוחרים את המיקום של הנתונים.
כדי לעדכן את ההגדרות, לוחצים על שמירה.
לוחצים על הפעלה.
כשמשימת השאילתה מסתיימת, סוג הנתונים של
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 במסוף Cloud de Confiance .
בעורך השאילתות, מזינים את ההצהרה הבאה:
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הוא "רגוע".[ { "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. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
'NULLABLE'
הפיכת עמודה ל-NULLABLE באמצעות משימת טעינה של הוספה
אפשר להקל על המצב של עמודה כשמוסיפים נתונים לטבלה במשימת טעינה. בוחרים אחת מהאפשרויות הבאות, בהתאם לסוג הקובץ:
- כשמוסיפים נתונים מקובצי CSV ו-JSON, אפשר להגמיש את המצב של עמודות ספציפיות על ידי ציון קובץ סכימת JSON.
- כשמוסיפים נתונים מקובצי Avro, ORC או Parquet, צריך להגדיר את העמודות בסכימה כ-
NULL, ולאפשר להסקת הסכימה לזהות את העמודות האלה.
כדי להרפות עמודה מ-REQUIRED ל-NULLABLE כשמוסיפים נתונים לטבלה במהלך משימת טעינה, בוחרים באחת מהאפשרויות הבאות:
המסוף
אי אפשר לשנות את המצב של עמודה באמצעות מסוף Cloud de Confiance .
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 באזור Tokyo, הגדירו את ערך הדגל ל-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. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
הפיכת כל העמודות ל-NULLABLE באמצעות משימת הוספה
כשמוסיפים תוצאות של שאילתה לטבלה, אפשר להגמיש את כל העמודות בטבלה. אפשר להגמיש את כל שדות החובה בטבלת היעד על ידי הגדרת הדגל --schema_update_option לערך ALLOW_FIELD_RELAXATION. אי אפשר להגמיש עמודות ספציפיות בטבלת יעד באמצעות הוספת שאילתה. כדי להגמיש עמודות ספציפיות באמצעות משימת טעינה מסוג append, קראו את המאמר הפיכת עמודה ל-NULLABLE באמצעות משימת append.
כדי להרפות את כל העמודות כשמצרפים תוצאות של שאילתה לטבלת יעד, בוחרים באחת מהאפשרויות הבאות:
המסוף
אי אפשר לשנות את המצב של עמודה באמצעות מסוף Cloud de Confiance .
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 באזור Tokyo, הגדירו את ערך הדגל ל-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. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
שינוי ערך ברירת המחדל של עמודה
כדי לשנות את ערך ברירת המחדל של עמודה, בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף BigQuery במסוף Cloud de Confiance .
בחלונית הימנית, לוחצים על Explorer:

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

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

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