עבודה עם סשנים

סשנים ב-BigQuery מאפשרים לשמור על מצב – כמו טבלאות זמניות, פונקציות זמניות ומשתנים – בכמה שאילתות SQL. אפשר ליצור סשנים, להריץ בהם שאילתות, להציג אותם ברשימה ולסיים אותם במסוף Google Cloud , בכלי שורת הפקודה של BigQuery או ב-BigQuery API.

לפני שאתם מבצעים את השלבים האלה, ודאו שיש לכם את ההרשאות הנדרשות.

יצירת סשן

כדי לתעד קבוצה של פעילויות SQL, צריך ליצור סשן ב-BigQuery. אחרי שיוצרים סשן, אפשר להריץ בו שאילתות אינטראקטיביות עד שהוא מסתיים. כל השאילתות בסשן מופעלות (מעובדות) במיקום שבו הסשן נוצר.

המסוף

במסוף Google Cloud , כל סשן מוקצה לכרטיסיית עורך.

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

    כניסה ל-BigQuery

  2. לוחצים על Compose new query. כרטיסיית עריכה חדשה תיפתח.

  3. לוחצים על עריכה > הגדרות השאילתה. החלונית Query settings מופיעה.

  4. בקטע ניהול סשנים, לוחצים על שימוש במצב סשן כדי להפעיל את מצב הסשן.

  5. בקטע הגדרות נוספות > מיקום הנתונים, בוחרים את המיקום. אחרי שיוצרים את הסשן, כל השאילתות בסשן מוגבלות למיקום הזה ואי אפשר לשנות אותו.

  6. לוחצים על Save.

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

BQ

פותחים את Cloud Shell ומזינים את הפקודה הבאה של bq query:

bq query \
--nouse_legacy_sql \
--create_session
[--location 'SESSION_LOCATION'] \
'SQL_STATEMENT'

כאשר:

  • ‫SESSION_LOCATION: קישור הסשן למיקום פיזי. הגבלת כל השאילתות בסשן למיקום הזה. זה שינוי אופציונלי.
  • ‫SQL_STATEMENT: הצהרת ה-SQL הראשונה בסשן.

מזהה הסשן מוחזר עם תוצאות השאילתה.

API

מפעילים את השיטה jobs.query עם הפרמטרים הבאים:

{
  "query": "SQL_STATEMENT",
  "createSession": true,
  ["location": "SESSION_LOCATION"]
}

כאשר:

  • ‫SQL_STATEMENT: הצהרת ה-SQL הראשונה בסשן.
  • ‫SESSION_LOCATION: קישור הסשן למיקום פיזי. הגבלת כל השאילתות בסשן למיקום הזה. זה שינוי אופציונלי.

גוף התשובה אמור להיראות כך:

{
  "jobReference": {
    "projectId": "myProject",
    "jobId": "job_123"
  },
  "statistics": {
    "sessionInfo": {
      "sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
    }
  }
}

הרצת שאילתה בסשן

אחרי שיוצרים סשן, אפשר להריץ בו שאילתות:

המסוף

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

    כניסה ל-BigQuery

  2. לוחצים על הכרטיסייה של הכלי לעריכת קוד שמכילה את הסשן.

  3. מוסיפים את השאילתה לסשן ולוחצים על Run.

BQ

פותחים את Cloud Shell ומזינים את הפקודה הבאה של bq query:

bq query \
--nouse_legacy_sql \
--session_id=SESSION_ID \
'SQL_STATEMENT'

כאשר:

  • ‫SESSION_ID: מזהה הסשן שרוצים לעבוד איתו.
  • ‫SQL_STATEMENT: הצהרת SQL להרצה בסשן.

אחרי תוצאות השאילתה מופיע מזהה הסשן.

אם אתם מתכוונים להריץ הרבה שאילתות באמצעות Cloud Shell, אתם יכולים להוסיף את מזהה הסשן ל-[query] ב-.bigqueryrc כדי שלא תצטרכו להעתיק ולהדביק את מזהה הסשן בכל פקודה.

כך נראה מזהה סשן ב-.bigqueryrc:

[query]
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

אחרי שמוסיפים את מזהה הסשן ל-.bigqueryrc, אפשר להשמיט את הדגל --session_id מהפקודה bq query. אם רוצים להשתמש בסשן אחר או אם הסשן מסתיים, צריך לעדכן את הקובץ .bigqueryrc.

API

מפעילים את השיטה jobs.query עם הפרמטרים הבאים:

{
  "query": "SQL_STATEMENT",
  "connectionProperties": [{
    "key": "session_id",
    "value": "SESSION_ID"
  }]
}

כאשר:

  • ‫SQL_STATEMENT: הצהרת ה-SQL הראשונה בסשן.
  • ‫SESSION_ID: מזהה הסשן.

סיום סשן

אפשר לסיים סשן באופן ידני או אוטומטי. ההיסטוריה של סשן שהסתיים זמינה למשך 20 ימים אחרי הסיום.

סיום אוטומטי של סשן

הסשן מסתיים באופן אוטומטי אחרי 24 שעות של חוסר פעילות או אחרי 7 ימים, המוקדם מביניהם.

סיום הסשן הנוכחי

אתם יכולים לסיים את הסשן הנוכחי באמצעות הצהרת SQL או במסוףGoogle Cloud , אם הסשן נוצר שם.

המסוף

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

    כניסה ל-BigQuery

  2. מוצאים את הכרטיסייה של הכלי לעריכת קוד שמכילה את הסשן וסוגרים אותה. הסשן מסתיים.

SQL

כדי לסיים את הסשן:

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

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    CALL BQ.ABORT_SESSION();

  3. ‫לוחצים על Run.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

סיום סשן לפי מזהה

אפשר לסיים סשן באמצעות המזהה שלו. לא צריך להיות בסשן כדי לסיים אותו בדרך הזו.

משיגים את מזהה הסשן ומריצים את ההצהרה הבאה:

CALL BQ.ABORT_SESSION(SESSION_ID);

מחליפים את SESSION_ID במזהה של הסשן שרוצים לסיים.

איך למצוא את המזהה של הסשן הפעיל

במצבים מסוימים, צריך להפנות לסשן כדי להמשיך לעבוד בו. לדוגמה, אם אתם עובדים עם Cloud Shell, אתם צריכים לכלול את מזהה הסשן בכל פעם שאתם מריצים פקודה לסשן הזה.

המסוף

לא צריך לספק את מזהה הסשן כדי להריץ שאילתה חדשה בתוך סשן במסוף Google Cloud . אתם יכולים פשוט להמשיך לעבוד בכרטיסיית העריכה שבה נמצא הסשן. עם זאת, אם אתם רוצים להפנות לסשן ב-Cloud Shell או בקריאה ל-API, אתם צריכים לדעת את המזהה של הסשן שיצרתם במסוף.

לפני שתבצעו את השלבים האלה, ודאו שהרצתם לפחות שאילתה אחת בסשן פעיל.

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

    כניסה ל-BigQuery

  2. לוחצים על הכרטיסייה של הכלי לעריכת קוד שמכילה את הסשן.

  3. בקטע Query results, לוחצים על Job information.

  4. ברשימה Job information, מחפשים את מזהה הסשן:

    Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
    

BQ

כדי להריץ פקודות של שאילתות בסשן ב-Cloud Shell, צריך לכלול את מזהה הסשן בפקודה. אתם יכולים לקבל את מזהה הסשן כשאתם יוצרים סשן או מציגים את רשימת הסשנים.

כשיוצרים סשן באמצעות Cloud Shell, מזהה הסשן שמוחזר דומה לזה:

In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

API

כדי להעביר פקודות SQL לסשן באמצעות קריאה ל-API, צריך לכלול את מזהה הסשן בקריאה ל-API. אתם יכולים לקבל את מזהה הסשן כשאתם יוצרים סשן או מציגים את רשימת הסשנים.

כשיוצרים סשן באמצעות קריאה ל-API, מזהה הסשן בתגובה נראה בערך כך:

sessionId: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

רשימה של סשנים פעילים ולא פעילים

כדי לקבל מזהי סשנים של סשנים פעילים ולא פעילים, פועלים לפי השלבים הבאים:

המסוף

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

    כניסה ל-BigQuery

  2. בחלונית הימנית, לוחצים על Explorer:

    כפתור מודגש לחלונית Explorer.

    אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.

  3. בחלונית Explorer, לוחצים על Job history.

  4. בוחרים את סוג היסטוריית המשימות:

    • כדי להציג מידע על המשרות האחרונות שלכם, לוחצים על היסטוריה אישית.
    • כדי להציג מידע על משימות שבוצעו לאחרונה בפרויקט, לוחצים על Project history.
  5. בעמודה Session ID אפשר לראות את מזהי הסשנים של המשימות.

    מזהה הסשן בהיסטוריית המשימות

SQL

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

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

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    SELECT
      session_id,
      MAX(creation_time) AS last_modified_time
    FROM `region-REGION_NAME`.INFORMATION_SCHEMA.SESSIONS_BY_USER>
    WHERE
      session_id IS NOT NULL
      AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 20 DAY)
    GROUP BY session_id
    ORDER BY last_modified_time DESC;

    מחליפים את REGION_NAME בשם האזור שבו רוצים להציג את הסשנים.

  3. ‫לוחצים על Run.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

התוצאה אמורה להיראות כך:

+-------------------------------------------------------------------------+
| session_id                                        | last_modified_time  |
+-------------------------------------------------------------------------+
| CgwKCmZhbGl1LXRlc3QQARokMGQ5YWWYzZmE0YjhkMDBm     | 2021-06-01 23:04:26 |
| CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZTczwZjA1NDc2 | 2021-05-30 22:43:02 |
| CgwKCmZhbGl1LXRlc3QQY2MzLTg4ZDEtYzVhOWZiYmM5NzZk  | 2021-04-07 22:31:21 |
+-------------------------------------------------------------------------+

איך רואים את ההיסטוריה של הסשן

סשן מתעד את פעילויות ה-SQL שלכם במסגרת זמן מסוימת. המידע הזה נשמר בהיסטוריית הסשן. היסטוריית הסשן מאפשרת לכם לעקוב אחרי השינויים שביצעתם בסשן. אם משימה נכשלת או מצליחה, היא מתועדת בהיסטוריית הסשן כדי שתוכלו לחזור אליה מאוחר יותר ולראות מה עשיתם.

המסוף

כדי לראות את ההיסטוריה של סשן במסוף Google Cloud , אתם יכולים לסנן את ההיסטוריה האישית או את היסטוריית הפרויקט לפי מזהה הסשן, כדי לראות את כל שאילתות ה-SQL שהופעלו בסשן מסוים.

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

    כניסה ל-BigQuery

  2. בחלונית הימנית, לוחצים על Explorer:

    כפתור מודגש לחלונית Explorer.

  3. בחלונית Explorer, לוחצים על Job history.

  4. בוחרים את סוג היסטוריית המשימות שרוצים לראות:

    • כדי להציג מידע על המשרות האחרונות שלכם, לוחצים על היסטוריה אישית.
    • כדי להציג מידע על משימות שבוצעו לאחרונה בפרויקט, לוחצים על Project history.
  5. לוחצים על Filter ובוחרים באפשרות Session ID.

  6. בשדה מזהה הסשן, מחפשים את מזהה הסשן:

    Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
    

SQL

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

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

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    SELECT
      *
    FROM
      `region-REGION_NAME`.INFORMATION_SCHEMA.SESSIONS_BY_USER
    WHERE
      session_info.session_id = 'SESSION_ID';

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫REGION_NAME: שם האזור שבו רוצים לראות את נתוני הסשן
    • ‫SESSION_ID: מזהה הסשן שרוצים לאחזר את הנתונים ההיסטוריים שלו

  3. ‫לוחצים על Run.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

דוגמה

הקוד הבא מחזיר את ההיסטוריה של סשן עם מזהה הסשן CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0. אתם יכולים להחליף את מזהה הסשן הזה במזהה שלכם.

SELECT
  creation_time, query
FROM
  `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_USER
WHERE
  session_info.session_id = 'CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0'
  AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 20 DAY);

התוצאה אמורה להיראות כך:

+---------------------+------------------------------------------------------------------------------------------+
|    creation_time    |                                          query                                           |
+---------------------+------------------------------------------------------------------------------------------+
| 2021-06-01 23:04:26 | SELECT * FROM Purchases;                                                                 |
| 2021-06-01 23:02:51 | CREATE TEMP TABLE Purchases(total INT64) AS SELECT * FROM UNNEST([10,23,3,14,55]) AS a;  |
+---------------------+------------------------------------------------------------------------------------------+

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