הרצת שאילתות בטבלאות BigLake ב-Amazon S3
באמצעות BigQuery Omni, אתם יכולים להריץ שאילתות GoogleSQL ב-BigQuery על נתונים שמאוחסנים בטבלאות BigLake של Amazon Simple Storage Service (Amazon S3). שליחת שאילתות לטבלאות BigLake ב-Amazon S3 מאפשרת לנתח נתונים ב-Amazon S3 ולצרף אותם לטבלאות אחרות בלי להעתיק או להעביר את הקבצים הבסיסיים.
לפני שמתחילים
מוודאים שיש לכם טבלת BigLake של Amazon S3.
התפקידים הנדרשים
כדי לשלוח שאילתות לטבלאות של Amazon S3 BigLake, צריך לוודא שלגורם שמפעיל את BigQuery API יש את התפקידים הבאים:
- משתמש בחיבור ל-BigQuery (
roles/bigquery.connectionUser) - צפייה בנתוני BigQuery (
roles/bigquery.dataViewer) - משתמש BigQuery (
roles/bigquery.user)
מבצע הקריאה החוזרת יכול להיות החשבון שלכם או חשבון שירות של חיבור ל-Amazon S3. בהתאם להרשאות שלכם, אתם יכולים להקצות לעצמכם את התפקידים האלה או לבקש מהאדמין להקצות אותם לכם. למידע נוסף על הקצאת תפקידים, קראו את המאמר הצגת התפקידים שאפשר לתת במשאבים.
כדי לראות את ההרשאות הנדרשות לשליחת שאילתות לטבלאות BigLake ב-Amazon S3, מרחיבים את הקטע Required permissions:
ההרשאות הנדרשות
bigquery.connections.usebigquery.jobs.create-
bigquery.readsessions.create(נדרש רק אם אתם קוראים נתונים באמצעות BigQuery Storage Read API) bigquery.tables.getbigquery.tables.getData
יכול להיות שתוכלו לקבל את ההרשאות האלה גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
הרצת שאילתות בטבלאות BigLake ב-Amazon S3
אחרי שיוצרים טבלת BigLake ב-Amazon S3, אפשר להריץ עליה שאילתות באמצעות תחביר GoogleSQL, בדיוק כמו בטבלה רגילה ב-BigQuery.
תוצאות השאילתה שנשמרו במטמון מאוחסנות בטבלה זמנית ב-BigQuery. כדי לשלוח שאילתה לטבלת BigLake זמנית, קראו את המאמר שליחת שאילתה לטבלת BigLake זמנית. למידע נוסף על המגבלות והמכסות של BigQuery Omni, קראו את המאמרים מגבלות ומכסות.
כשיוצרים הזמנה באזור של BigQuery Omni, צריך להשתמש במהדורת Enterprise. במאמר יצירת הזמנות מוסבר איך יוצרים הזמנה עם מהדורה.
מריצים שאילתה על טבלת BigLake ב-Amazon S3:
SQL
כדי לשלוח שאילתה לטבלה:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
SELECT * FROM DATASET_NAME.TABLE_NAME;
מחליפים את מה שכתוב בשדות הבאים:
-
DATASET_NAME: השם של מערך הנתונים שיצרתם -
TABLE_NAME: השם של הטבלה שיצרתם לוחצים על הפעלה.
-
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הרצת שאילתה על טבלה זמנית
ב-BigQuery נוצרות טבלאות זמניות לאחסון תוצאות של שאילתות. כדי לאחזר תוצאות של שאילתות מטבלאות זמניות, אפשר להשתמש במסוף או ב-BigQuery API. Google Cloud
בוחרים באחת מהאפשרויות הבאות:
המסוף
כששולחים שאילתה לטבלת BigLake שמפנה לנתוני ענן חיצוניים, אפשר לראות את תוצאות השאילתה במסוף Google Cloud .
API
כדי לשלוח שאילתה לטבלת BigLake באמצעות ה-API:
- יוצרים אובייקט Job.
- מפעילים את השיטה
jobs.insertכדי להריץ את השאילתה באופן אסינכרוני, או את השיטהjobs.queryכדי להריץ את השאילתה באופן סינכרוני, ומעבירים את האובייקטJob. - קוראים שורות באמצעות השיטה
jobs.getQueryResultsעל ידי העברת ההפניה הנתונה למשימה, ואת השיטותtabledata.listעל ידי העברת ההפניה הנתונה לטבלה של תוצאת השאילתה.
שליחת שאילתה לעמודה המדומה _FILE_NAME
טבלאות שמבוססות על מקורות נתונים חיצוניים מספקות עמודה מדומה בשם _FILE_NAME. העמודה הזו מכילה את הנתיב המלא לקובץ שאליו השורה שייכת. העמודה הזו זמינה רק בטבלאות שמפנות לנתונים חיצוניים שמאוחסנים ב-Cloud Storage, ב-Google Drive, ב-Amazon S3 וב-Azure Blob Storage.
שם העמודה _FILE_NAME שמור, כלומר אי אפשר ליצור עמודה בשם הזה באף אחת מהטבלאות. כדי לבחור את הערך של _FILE_NAME, צריך להשתמש בכינוי. בשאילתה לדוגמה הבאה, בוחרים את _FILE_NAME על ידי הקצאת הכינוי fn לעמודה המדומה.
bq query \
--project_id=PROJECT_ID \
--use_legacy_sql=false \
'SELECT
name,
_FILE_NAME AS fn
FROM
`DATASET.TABLE_NAME`
WHERE
name contains "Alex"' מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_IDהוא מזהה פרויקט תקין (הדגל הזה לא נדרש אם משתמשים ב-Cloud Shell או אם מגדירים פרויקט ברירת מחדל ב-Google Cloud CLI) -
DATASETהוא השם של מערך הנתונים שבו מאוחסנת הטבלה החיצונית הקבועה. -
TABLE_NAMEהוא השם של הטבלה החיצונית הקבועה
כשהשאילתה כוללת פרדיקט של סינון בעמודה המדומה _FILE_NAME, המערכת של BigQuery מנסה לדלג על קריאת קבצים שלא עומדים בתנאי הסינון. המלצות דומות ל
שאילתות בטבלאות שמחולקות למחיצות לפי זמני הטמעת הנתונים באמצעות עמודות פסאודו
חלות כשיוצרים פרדיקטים של שאילתות באמצעות עמודת הפסאודו _FILE_NAME.