ייצוא תוצאות של שאילתה לקובץ

אתם יכולים לשמור את תוצאות השאילתות ב-BigQuery בקובץ מקומי, ב-Google Drive, ב-Google Sheets או ב-Cloud Storage, כדי לשתף את התוצאות או לנתח אותן בכלים אחרים. לקבצים מקומיים, אפשר לבחור פורמטים כמו CSV ו-JSON שמופרד בתו שורה חדשה.

מגבלות

ב-BigQuery אי אפשר לייצא נתונים בפורמט CSV אם הם מקוננים או חוזרים (סוגי הנתונים RECORD / STRUCT או ARRAY). גם אם נראה שהשדות RECORD או STRUCT לא מוטמעים עמוק, BigQuery מתייחס אליהם כשדות סכימה מוטמעים ומחזיר שגיאה שמציינת שלא ניתן להטמיע את הסכימה.

כדי לייצא תוצאות של שאילתה לקובץ CSV מובנה, צריך לנרמל את השאילתה למבנה שטוח עם שדה אחד לכל עמודה בשאילתה. כדי לנרמל מבנים מקוננים, אפשר לבחור שדות ספציפיים באמצעות סימון נקודה. כדי לנרמל מערכים חוזרים, אפשר להשתמש באופרטור UNNEST.

לדוגמה, אם הטבלה מכילה struct customer ומערך items, צריך לנרמל את השאילתה לפני שמריצים ושומרים את התוצאות בקובץ CSV:

SELECT
  customer.id AS customer_id,
  customer.name AS customer_name,
  item
FROM
  `my_project.my_dataset.my_table`,
  UNNEST(items) AS item;

הורדת תוצאות של שאילתות לקובץ מקומי

הורדת תוצאות של שאילתות לקובץ מקומי אינה נתמכת על ידי כלי שורת הפקודה של BigQuery או ה-API.

כדי להוריד את תוצאות השאילתה כקובץ CSV או כקובץ JSON עם שורות מופרדות, משתמשים במסוףGoogle Cloud :

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. לוחצים על שאילתת SQL.

  3. מזינים שאילתת GoogleSQL תקינה באזור הטקסט של עורך השאילתות.

  4. אופציונלי: כדי לשנות את מיקום העיבוד, לוחצים על Edit > Query settings. בקטע Data location, בוחרים את המיקום של הנתונים.

  5. לוחצים על Run.

  6. כשהתוצאות מוצגות, לוחצים על Save results ובוחרים את הפורמט או המיקום שבו רוצים לשמור את התוצאות.

    הקובץ יורד למיקום ההורדה שמוגדר כברירת מחדל בדפדפן.

שמירת תוצאות של שאילתות ב-Google Drive

אי אפשר לשמור תוצאות של שאילתות ב-Google Drive באמצעות כלי שורת הפקודה bq או ה-API.

יכול להיות שתופיע שגיאה כשתנסו לשמור את תוצאות BigQuery ב-Google Drive. השגיאה הזו נגרמת כי ל-Drive SDK API אין גישה ל-Google Workspace. כדי לפתור את הבעיה, צריך לתת לחשבון המשתמש גישה ל-Google Drive באמצעות Drive SDK API.

כדי לשמור את תוצאות השאילתה ב-Google Drive, משתמשים במסוף Google Cloud :

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. לוחצים על שאילתת SQL.

  3. מזינים שאילתת GoogleSQL תקינה באזור הטקסט של עורך השאילתות.

  4. לוחצים על Run.

  5. כשהתוצאות מוצגות, לוחצים על שמירת התוצאות.

  6. בקטע Google Drive, בוחרים באפשרות CSV או JSON. כששומרים תוצאות ב-Google Drive, אי אפשר לבחור את המיקום. התוצאות תמיד נשמרות במיקום הבסיס "האחסון שלי".

  7. יכול להיות שיעברו כמה דקות עד שהתוצאות יישמרו ב-Google Drive. כשהתוצאות נשמרות, מופיעה תיבת דו-שיח עם שם הקובץ – bq-results-[TIMESTAMP]-[RANDOM_CHARACTERS].[CSV or JSON].

    צילום מסך של הלחצן "שמירת התוצאות"

  8. בהודעה שבתיבת הדו-שיח, לוחצים על פתיחה כדי לפתוח את הקובץ, או עוברים אל Google Drive ולוחצים על האחסון שלי.

שמירת תוצאות של שאילתות ב-Google Sheets

אי אפשר לשמור תוצאות של שאילתות ב-Google Sheets באמצעות כלי שורת הפקודה bq או ה-API.

יכול להיות שתופיע שגיאה כשתנסו לפתוח את תוצאות BigQuery מ-Google Sheets. השגיאה הזו נגרמת כי ל-Drive SDK API אין גישה ל-Google Workspace. כדי לפתור את הבעיה, צריך להפעיל את הגישה של חשבון המשתמש ל-Google Sheets באמצעות Drive SDK API.

כדי לשמור את תוצאות השאילתה ב-Google Sheets, משתמשים במסוף Google Cloud :

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. לוחצים על שאילתת SQL.

  3. מזינים שאילתת GoogleSQL תקינה באזור הטקסט של עורך השאילתות.

  4. אופציונלי: כדי לשנות את מיקום העיבוד, לוחצים על Edit > Query settings. בקטע Data location, בוחרים את המיקום של הנתונים.

  5. לוחצים על Run.

  6. כשהתוצאות מוצגות, לוחצים על Save results ובוחרים באפשרות Google Sheets.

  7. אם צריך, פועלים לפי ההנחיות כדי להתחבר לחשבון המשתמש ולוחצים על Allow כדי לתת ל-BigQuery הרשאה לכתוב את הנתונים בתיקיית My Drive ב-Google Drive.

    אחרי שתפעלו לפי ההנחיות, תקבלו אימייל שמאשר שכלי הלקוח של BigQuery מקושרים לחשבון המשתמש שלכם. האימייל מכיל מידע על ההרשאות שנתתם, וגם הוראות להסרת ההרשאות.

  8. כשהתוצאות נשמרות, מופיעה הודעה דומה לזו שמתחת לתוצאות השאילתה במסוף Google Cloud : Saved to Sheets as "results-20190225-103531". לוחצים על הקישור שבהודעה כדי לראות את התוצאות ב-Google Sheets, או עוברים לתיקייה My Drive ופותחים את הקובץ באופן ידני.

    כששומרים תוצאות של שאילתה ב-Google Sheets, שם הקובץ מתחיל ב-results-[DATE], כאשר [DATE] הוא התאריך של היום בפורמט YYYYMMDD.

פתרון בעיות בשמירת תוצאות ב-Google Sheets

כששומרים נתונים מ-BigQuery ב-Google Sheets, יכול להיות שחלק מהתאים בגיליונות יהיו ריקים. זה קורה כשהנתונים שאתם כותבים בתא חורגים מהמגבלה של Google Sheets, שהיא 50,000 תווים. כדי לפתור את הבעיה, משתמשים בפונקציית מחרוזת בשאילתת GoogleSQL כדי לפצל את העמודה עם הנתונים הארוכים לשתי עמודות או יותר, ואז שומרים שוב את התוצאה ב-Sheets.

שמירת תוצאות של שאילתות ב-Cloud Storage

כדי לייצא את תוצאות השאילתה ל-Cloud Storage במסוף Google Cloud :

  1. פותחים את הדף BigQuery במסוף Google Cloud .

    לדף של BigQuery

  2. לוחצים על שאילתת SQL.

  3. מזינים שאילתת GoogleSQL תקינה באזור הטקסט של עורך השאילתות.

  4. לוחצים על Run.

  5. כשהתוצאות מוצגות, לוחצים על Save results > Cloud Storage.

  6. בתיבת הדו-שיח Export to Google Cloud Storage:

    • בשדה GCS Location, מחפשים את הקטגוריה, התיקייה או הקובץ שאליהם רוצים לייצא את הנתונים.
    • בקטע Export format, בוחרים את הפורמט של הנתונים לייצוא: CSV,‏ JSON (מופרד בשורה חדשה),‏ Avro או Parquet.
    • בשדה Compression, בוחרים פורמט דחיסה או בוחרים באפשרות None כדי לא לדחוס את הקובץ.
  7. לוחצים על שמירה כדי לייצא את תוצאות השאילתה.

כדי לבדוק את התקדמות המשימה, מרחיבים את החלונית Job history ומחפשים את המשימה עם הסוג EXTRACT.

הגבלת ההורדה של תוצאות השאילתה

כדי למנוע ממשתמשים להוריד תוצאות של שאילתות ממסוף Google Cloud , אפשר להשתמש באחת מהשיטות הבאות:

  • להגדיר היקף של VPC Service Controls כדי למנוע זליגת נתונים. כך המשתמשים לא יכולים להוריד ולייצא נתונים מחוץ לגבולות של המתחם שהוגדר.

  • פנו ל-Cloud Customer Care ובקשו להוסיף את הפרויקט או הארגון שלכם ב- Google Cloud לרשימה מוגבלת. הפעולה הזו משביתה את האפשרויות להורדה ולייצוא של נתונים ישירות במסוף Google Cloud .

המאמרים הבאים