מבוא לטבלאות חיצוניות
במאמר הזה מוסבר איך לעבוד עם נתונים שמאוחסנים מחוץ ל-BigQuery בטבלאות חיצוניות. כדי לעבוד עם מקורות נתונים חיצוניים, אתם יכולים גם להשתמש במערכי נתונים חיצוניים.
טבלאות חיצוניות מאפשרות לשלוח שאילתות לנתונים מובְנים במאגרי נתונים חיצוניים. כדי לשלוח שאילתה לטבלה חיצונית, אתם צריכים הרשאות גם לטבלה החיצונית וגם למקור הנתונים החיצוני. לדוגמה, כדי לשלוח שאילתה לטבלה חיצונית שמשתמשת במקור נתונים ב-Cloud Storage, אתם צריכים את ההרשאות הבאות:
bigquery.tables.getDatabigquery.jobs.createstorage.buckets.getstorage.objects.get
מאגרי נתונים נתמכים
אפשר להשתמש בטבלאות חיצוניות שהן לא של BigLake במאגרי הנתונים הבאים:
תמיכה בטבלאות זמניות
אפשר לשלוח שאילתות למקור נתונים חיצוני ב-BigQuery באמצעות טבלה קבועה או טבלה זמנית. טבלה קבועה היא טבלה שנוצרת במערך נתונים ומקושרת למקור הנתונים החיצוני. מכיוון שהטבלה קבועה, אתם יכולים להשתמש באמצעי בקרת גישה כדי לשתף את הטבלה עם משתמשים אחרים שיש להם גישה למקור הנתונים החיצוני הבסיסי, ולשלוח שאילתות לטבלה בכל שלב.
כששולחים שאילתה למקור נתונים חיצוני באמצעות טבלה זמנית, שולחים פקודה שכוללת שאילתה ויוצרת טבלה לא קבועה שמקושרת למקור הנתונים החיצוני. כשמשתמשים בטבלה זמנית, לא יוצרים טבלה באחד ממערכי הנתונים ב-BigQuery. הטבלה לא נשמרת באופן קבוע במערך נתונים, ולכן אי אפשר לשתף אותה עם אחרים. שליחת שאילתות למקור נתונים חיצוני באמצעות טבלה זמנית שימושית לשאילתות חד-פעמיות ונקודתיות על נתונים חיצוניים, או לתהליכי חילוץ, טרנספורמציה וטעינה (ETL).
כמה קובצי מקור
אם אתם יוצרים טבלה חיצונית שהיא לא BigLake שמבוססת על Cloud Storage, אתם יכולים להשתמש בכמה מקורות נתונים חיצוניים, בתנאי שלמקורות הנתונים האלה יש את אותה סכימה. האפשרות הזו לא נתמכת בטבלה חיצונית שהיא לא BigLake, שמבוססת על Bigtable או על Google Drive.
מגבלות
המגבלות הבאות חלות על טבלאות חיצוניות:
- ב-BigQuery אין הבטחה לעקביות של נתונים בטבלאות של נתונים חיצוניים. שינויים בנתונים הבסיסיים בזמן ששאילתה פועלת יכולים לגרום להתנהגות לא צפויה.
- יכול להיות שביצועי השאילתות בטבלאות חיצוניות יהיו איטיים בהשוואה לשאילתות על נתונים בטבלה רגילה ב-BigQuery. אם מהירות השאילתה חשובה לכם, טענו את הנתונים ל-BigQuery במקום להגדיר מקור נתונים חיצוני. הביצועים של שאילתה שכוללת טבלה חיצונית תלויים בסוג האחסון החיצוני. לדוגמה, שליחת שאילתות על נתונים שמאוחסנים ב-Cloud Storage מהירה יותר משליחת שאילתות על נתונים שמאוחסנים ב-Google Drive. באופן כללי, ביצועי השאילתה של טבלה חיצונית אמורים להיות שווים לקריאת הנתונים ישירות ממקור הנתונים.
- אי אפשר לשנות טבלאות נתונים חיצוניות באמצעות DML או שיטות אחרות. טבלאות חיצוניות הן לקריאה בלבד ב-BigQuery.
- אי אפשר להשתמש ב-method
TableDataListשל API בפורמט JSON כדי לאחזר נתונים מטבלאות חיצוניות. מידע נוסף זמין במאמרtabledata.list. כדי לעקוף את המגבלה הזו, אפשר לשמור את תוצאות השאילתה בטבלת יעד. אחר כך אפשר להשתמש בשיטהTableDataListבטבלת התוצאות. - אי אפשר להריץ משימה ב-BigQuery שמייצאת נתונים מטבלה חיצונית. כדי לעקוף את המגבלה הזו, אתם יכולים לשמור את תוצאות השאילתה בטבלת יעד. לאחר מכן, מריצים משימת חילוץ על טבלת התוצאות.
- אי אפשר להעתיק טבלה חיצונית.
- אי אפשר להפנות לטבלה חיצונית בשאילתה של טבלת תווים כלליים לחיפוש.
- טבלאות חיצוניות לא תומכות באשכולות. הן תומכות בחלוקה למחיצות בדרכים מוגבלות. למידע נוסף, ראו שליחת שאילתות לנתונים שחולקו למחיצות באופן חיצוני.
- כששולחים שאילתה למקור נתונים חיצוני שהוא לא Cloud Storage, התוצאות לא נשמרות במטמון. (יש תמיכה בשאילתות GoogleSQL ב-Cloud Storage). אתם מחויבים על כל שאילתה בטבלה חיצונית, גם אם אתם מריצים את אותה שאילתה כמה פעמים. אם אתם צריכים להריץ שאילתה שוב ושוב על טבלה חיצונית שלא משתנה לעיתים קרובות, כדאי לכתוב את תוצאות השאילתה בטבלה קבועה ולהריץ את השאילתות על הטבלה הקבועה.
- אתם יכולים להריץ עד 16 שאילתות בו-זמנית במקור נתונים חיצוני של Bigtable.
- הרצה של שאילתה לכמה מסדי נתונים שמשתמשת בטבלה חיצונית עשויה לדווח על גבול תחתון של 0 בייטים של נתונים, גם אם מוחזרות שורות. הסיבה לכך היא שאי אפשר לקבוע את כמות הנתונים שעובדו מהטבלה החיצונית עד שהשאילתה עצמה מסתיימת. הרצת השאילתה לכמה מסדי נתונים כרוכה בעלות על עיבוד הנתונים האלה.
- אי אפשר להשתמש ב-
_object_metadataכשם עמודה בטבלאות חיצוניות. היא שמורה לשימוש פנימי בלבד. - ב-BigQuery אי אפשר להציג נתונים סטטיסטיים של אחסון טבלאות חיצוניות.
- טבלאות חיצוניות לא תומכות בשמות גמישים של עמודות.
- BI Engine לא תומך בשאילתות לטבלאות חיצוניות.
- ב-BigQuery אין תמיכה ב-Data Boost כשקוראים נתוני Bigtable מ-BigQuery.
- ב-BigQuery אין תמיכה בחלונות זמן לשמירת נתונים מסוג Time Travel או Fail-safe בטבלאות חיצוניות.
עם זאת, בטבלאות חיצוניות של Apache Iceberg, אתם יכולים להשתמש בסעיף
FOR SYSTEM_TIME AS OFכדי לגשת לתמונות מצב שנשמרות במטא-נתונים של Iceberg. - כל המגבלות הספציפיות לפורמט חלות:
שיקולים בקשר למיקום
כשבוחרים מיקום לטבלה החיצונית, צריך להביא בחשבון גם את המיקום של מערך הנתונים ב-BigQuery וגם את המיקום של מקור הנתונים החיצוני.
Cloud Storage
כששולחים שאילתה לנתונים ב-Cloud Storage באמצעות BigLake או טבלה חיצונית שאינה של BigLake, הקטגוריה צריכה להיות באותו מיקום של מערך הנתונים ב-BigQuery שמכיל את הגדרת הטבלה החיצונית. לדוגמה:
-
אם הקטגוריה של Cloud Storage נמצאת באזור
us-central1(איווה), מערך הנתונים ב-BigQuery צריך להיות באזורus-central1(איווה) או במספר האזוריםUS.אם הקטגוריה של Cloud Storage נמצאת באזור
europe-west4(הולנד), מערך הנתונים ב-BigQuery צריך להיות באזורeurope-west4(הולנד) או במספר האזוריםEU.אם הקטגוריה של Cloud Storage נמצאת באזור
europe-west1(בלגיה), מערך הנתונים התואם ב-BigQuery צריך להיות גם באזורeurope-west1(בלגיה) או במספר אזוריםEU. -
אם הקטגוריה של Cloud Storage נמצאת באזור הכפול המוגדר מראש
NAM4או בכל אזור כפול שניתן להגדרה שכולל את האזורus-central1(איווה), מערך הנתונים התואם ב-BigQuery חייב להיות באזורus-central1(איווה) או במספר האזוריםUS.אם הקטגוריה של Cloud Storage נמצאת באזור הכפול המוגדר מראש
EUR4או בכל אזור כפול שניתן להגדרה שכולל את האזורeurope-west4(הולנד), מערך הנתונים התואם ב-BigQuery חייב להיות באזורeurope-west4(הולנד) או במספר האזוריםEU.אם הקטגוריה של Cloud Storage נמצאת באזור הכפול המוגדר מראש
ASIA1, מערך הנתונים התואם ב-BigQuery צריך להיות באזורasia-northeast1(טוקיו) או באזורasia-northeast2(אוסקה).אם הקטגוריה של Cloud Storage נמצאת בשני אזורים שניתנים להגדרה, שכוללים את האזור
australia-southeast1(סידני) ואת האזורaustralia-southeast2(מלבורן), הקטגוריה התואמת של BigQuery צריכה להיות באזורaustralia-southeast1(סידני) או באזורaustralia-southeast2(מלבורן). -
לא מומלץ להשתמש במיקומים של מערכי נתונים במספר אזורים עם קטגוריות של Cloud Storage במספר אזורים בשביל טבלאות חיצוניות, כי הביצועים של שאילתות חיצוניות תלויים בזמן אחזור מינימלי וברוחב פס אופטימלי של הרשת.
אם מערך הנתונים ב-BigQuery נמצא במספר האזורים
US, הקטגוריה התואמת ב-Cloud Storage צריכה להיות במספר האזוריםUS, באזור היחידus-central1(איווה), בשני אזורים שכוללים אתus-central1(איווה), כמו שני האזוריםNAM4, או בשני אזורים שניתנים להגדרה שכוללים אתus-central1.אם מערך הנתונים ב-BigQuery נמצא במספר האזורים
EU, הקטגוריה התואמת ב-Cloud Storage צריכה להיות במספר האזוריםEU, באזור היחידeurope-west1(בלגיה) אוeurope-west4(הולנד), או בשני אזורים שכוללים אתeurope-west1(בלגיה) אוeurope-west4(הולנד), כמו שני האזוריםEUR4, או בשני אזורים שניתנים להגדרה שכוללים אתeurope-west1אוeurope-west4.
מידע נוסף על מיקומי Cloud Storage נתמכים זמין במאמר מיקומי קטגוריות במסמכי התיעוד של Cloud Storage.
Bigtable
כששולחים שאילתה לנתונים ב-Bigtable דרך טבלה חיצונית ב-BigQuery, המכונה של Bigtable צריכה להיות באותו מיקום של מערך הנתונים ב-BigQuery:
- אזור יחיד: אם מערך הנתונים ב-BigQuery נמצא במיקום האזורי בלגיה (
europe-west1), המכונה התואמת ב-Bigtable צריכה להיות באזור בלגיה. - מספר אזורים: מכיוון שהביצועים של שאילתות חיצוניות תלויים בזמן אחזור מינימלי וברוחב פס אופטימלי של הרשת, לא מומלץ להשתמש במיקומים של מערכי נתונים במספר אזורים לטבלאות חיצוניות ב-Bigtable.
מידע נוסף על מיקומים נתמכים של Bigtable זמין במאמר מיקומים של Bigtable.
Google Drive
שיקולי מיקום לא רלוונטיים למקורות נתונים חיצוניים ב-Google Drive.
העברת נתונים בין מיקומים
כדי להעביר קבוצת נתונים באופן ידני ממיקום אחד לאחר:
-
מייצאים את הנתונים מהטבלאות ב-BigQuery לקטגוריה של Cloud Storage.
אין חיובים על ייצוא נתונים מ-BigQuery, אבל יש חיובים על אחסון הנתונים שיוצאו ב-Cloud Storage. הייצוא ל-BigQuery כפוף למגבלות על משימות חילוץ.
-
מעתיקים או מעבירים את הנתונים מקטגוריה של Cloud Storage לייצוא לקטגוריה חדשה שיצרתם במיקום היעד. לדוגמה, אם אתם מעבירים את הנתונים מהאזור
USלמספר אזורים באזורasia-northeast1בטוקיו, תצטרכו להעביר את הנתונים לקטגוריה שיצרתם בטוקיו. מידע נוסף על העברת אובייקטים ב-Cloud Storage זמין במאמר העתקה, שינוי שם והעברה של אובייקטים במסמכי התיעוד של Cloud Storage.העברת נתונים בין אזורים כרוכה בחיובים על תעבורת נתונים יוצאת (egress) ברשת ב-Cloud Storage.
-
יוצרים מערך נתונים חדש ב-BigQuery במיקום החדש, ואז טוענים את הנתונים מהקטגוריה של Cloud Storage למערך הנתונים החדש.
לא תחויבו על טעינת הנתונים ל-BigQuery, אבל תחויבו על אחסון הנתונים ב-Cloud Storage עד שתמחקו את הנתונים או את הקטגוריה. אתם גם מחויבים על אחסון הנתונים ב-BigQuery אחרי שהם נטענים. טעינת נתונים ל-BigQuery כפופה למגבלות של משימות טעינה.
אפשר גם להשתמש ב- Managed Service for Apache Airflow כדי להעביר ולהעתיק מערכי נתונים גדולים באופן פרוגרמטי.
למידע נוסף על השימוש ב-Cloud Storage לאחסון ולהעברה של מערכי נתונים גדולים, קראו את המאמר שימוש ב-Cloud Storage עם Big Data.
אופטימיזציה של שאילתות בטבלאות חיצוניות ב-Cloud Storage
כדי לשפר את הביצועים ואולי גם להוזיל את העלויות כששולחים שאילתות על נתונים ב-Cloud Storage באמצעות טבלאות חיצוניות, כדאי להפעיל את Rapid Cache.
Rapid Cache מספק מטמון קריאה אזורי שמגובה ב-SSD לקטגוריות של Cloud Storage. כשהתכונה מופעלת, BigQuery משתמש ב-Rapid Cache כדי להציג בקשות קריאה של אובייקטים, ומספק לכם:
- ביצועים משופרים של שאילתות: קריאת נתונים מהירה יותר מ-Cloud Storage לעומסי העבודה ב-BigQuery.
- עלויות נמוכות יותר של העברת נתונים ברשת: עמלות נמוכות יותר על העברת נתונים לעומסי עבודה ב-BigQuery שמגובים בקטגוריות בכמה אזורים. עלויות הרשת של נתונים שנקראים מהמטמון נמוכות יותר מעלויות הרשת של נתונים שנקראים ישירות מקטגוריה במספר אזורים.
BigQuery הוא שירות אזורי, אבל משאבי המחשוב שלו יכולים לעבור בין אזורים לצורך איזון עומסים. לכן מומלץ להפעיל את Rapid Cache בכל האזורים שבהם פועל עומס העבודה של BigQuery. כך אפשר לוודא שמכונה של מטמון זמינה בלי קשר לאזור שבו משתמשים במחשוב של BigQuery. מידע נוסף זמין במאמר התמחור של Rapid Cache.
כדי לקבוע אם Rapid Cache מתאים לכם, מומלץ להשתמש בשירות ההמלצות של Rapid Cache. שירות ההמלצות של Rapid Cache מנתח את השימוש בנתונים ובאחסון, ומספק המלצות ותובנות ליצירת מטמונים בצמדים של קטגוריה ואזור.
תמחור
כשמריצים שאילתה על טבלה חיצונית מ-BigQuery, מחויבים על הרצת השאילתה ועל הבייטים הרלוונטיים שנקראו, אם משתמשים בתמחור על פי דרישה ב-BigQuery (לכל TiB), או על צריכת משבצות אם משתמשים בתמחור קיבולת ב-BigQuery (לכל שעת משבצת).
אם הנתונים שלכם מאוחסנים ב-ORC או ב-Parquet ב-Cloud Storage, קראו את המאמר חישוב גודל הנתונים.
בנוסף, תחויבו על אחסון הנתונים ועל כל המשאבים שבהם משתמשת אפליקציית המקור, בכפוף להנחיות התמחור של האפליקציה:
למידע על התמחור של Cloud Storage, ראו תמחור של Cloud Storage. החיובים ב-Cloud Storage עשויים לכלול את הדברים הבאים:
למידע על התמחור של Bigtable, קראו את המאמר תמחור.
למידע על התמחור של Drive, ראו תמחור.