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

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

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

יצירת סשן

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

המסוף

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

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

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

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

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

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

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

BQ

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

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

where:

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

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

API

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

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

where:

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

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

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

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

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

המסוף

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

    כניסה ל-BigQuery

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

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

BQ

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

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

where:

  • 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"
  }]
}

where:

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

סיום סשן

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

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

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

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

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

המסוף

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

    כניסה ל-BigQuery

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

SQL

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

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

    CALL BQ.ABORT_SESSION();

  3. לוחצים על הפעלה.

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

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

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

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

CALL BQ.ABORT_SESSION(SESSION_ID);

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

איך מקבלים את המזהה של הסשן הפעיל

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

המסוף

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

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

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

  3. בקטע תוצאות השאילתה, לוחצים על פרטי המשרה.

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

    Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
    

BQ

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

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

In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

API

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

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

sessionId: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

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

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

המסוף

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

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

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

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

  4. בוחרים את סוג היסטוריית התעסוקה:

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

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

SQL

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

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

    SELECT
      session_id,
      MAX(creation_time) AS last_modified_time
    FROM region-us.INFORMATION_SCHEMA.VIEW
    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;

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

    • VIEW: התצוגה INFORMATION_SCHEMA:
      • JOBS_BY_USER: מחזירה רק את המשימות שנוצרו על ידי המשתמש הנוכחי בפרויקט הנוכחי
      • SESSIONS_BY_USER: מחזירה רק את הסשנים שנוצרו על ידי המשתמש הנוכחי בפרויקט הנוכחי
      • SESSIONS_BY_PROJECT: מחזירה את כל הסשנים בפרויקט הנוכחי

  3. לוחצים על הפעלה.

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

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

+-------------------------------------------------------------------------+
| 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 שלכם במסגרת זמן מסוימת. המידע הזה נשמר בהיסטוריה של הסשן. היסטוריית הסשנים מאפשרת לכם לעקוב אחרי השינויים שביצעתם בסשן. אם משימה נכשלת או מצליחה, היא נרשמת בהיסטוריית הסשנים, כך שתוכלו לחזור אליה מאוחר יותר ולראות מה עשיתם.

המסוף

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

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

    כניסה ל-BigQuery

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

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

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

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

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

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

    Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
    

SQL

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

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

    SELECT
      *
    FROM
      region-us.INFORMATION_SCHEMA.VIEW
    WHERE
      session_info.session_id = 'SESSION_ID';

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

    • VIEW: התצוגה INFORMATION_SCHEMA שרוצים לעבוד איתה

      בוחרים באחד מהתצוגות הבאות:

      • JOBS_BY_USER: מחזירה רק את המשימות שנוצרו על ידי המשתמש הנוכחי בפרויקט הנוכחי
      • SESSIONS_BY_USER: מחזירה רק את הסשנים שנוצרו על ידי המשתמש הנוכחי בפרויקט הנוכחי
      • SESSIONS_BY_PROJECT: מחזירה את כל הסשנים בפרויקט הנוכחי
    • SESSION_ID: המזהה של הסשן שעבורו רוצים לאחזר נתונים היסטוריים

  3. לוחצים על הפעלה.

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

דוגמה

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

SELECT
  creation_time, query
FROM
  region-us.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;  |
+---------------------+------------------------------------------------------------------------------------------+

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