Mit Sitzungen arbeiten

In diesem Dokument wird beschrieben, wie Sie Sitzungen erstellen, verwenden, beenden und auflisten.

Prüfen Sie vor dem Ausführen dieser Schritte, ob Sie die erforderlichen Berechtigungen haben.

Sitzung erstellen

Wenn Sie eine Gruppe Ihrer SQL-Aktivitäten erfassen möchten, erstellen Sie eine BigQuery-Sitzung. Nachdem Sie eine Sitzung erstellt haben, können Sie interaktive Abfragen in Ihrer Sitzung ausführen, bis die Sitzung beendet wird. Alle Abfragen in der Sitzung werden an dem Standort ausgeführt (verarbeitet), an dem die Sitzung erstellt wurde.

Console

In der Trusted Cloud Console wird jede Sitzung einem Editor-Tab zugewiesen.

  1. Rufen Sie in der Trusted Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Klicken Sie auf Neue Abfrage erstellen. Ein neuer Editor-Tab wird geöffnet.

  3. Klicken Sie auf Mehr > Abfrageeinstellungen. Das Feld Abfrageeinstellungen wird angezeigt.

  4. Klicken Sie im Abschnitt Sitzungsverwaltung auf Sitzungsmodus verwenden, um den Sitzungsmodus zu aktivieren.

  5. Wählen Sie unter Zusätzliche Einstellungen > Datenspeicherort den Speicherort aus. Nachdem eine Sitzung erstellt wurde, sind alle Abfragen in der Sitzung auf diesen Standort beschränkt und der Standort kann nicht geändert werden.

  6. Klicken Sie auf Speichern.

  7. Schreiben Sie eine Abfrage auf dem Editor-Tab und führen Sie sie aus. Die neue Sitzung wird nach dem Ausführen der ersten Abfrage erstellt.

bq

Öffnen Sie Cloud Shell und geben Sie den folgenden bq query-Befehl ein:

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

Dabei gilt:

  • SESSION_LOCATION: Binden Sie die Sitzung an einen physischen Standort. Beschränken Sie alle Abfragen in der Sitzung auf diesen Standort. Optional.
  • SQL_STATEMENT: Die erste SQL-Anweisung für Ihre Sitzung.

Ihre Sitzungs-ID wird mit den Ergebnissen der Abfrage zurückgegeben.

API

Rufen Sie die Methode jobs.query mit den folgenden Parametern auf:

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

Dabei gilt:

  • SQL_STATEMENT: Die erste SQL-Anweisung für Ihre Sitzung.
  • SESSION_LOCATION: Binden Sie die Sitzung an einen physischen Standort. Beschränken Sie alle Abfragen in der Sitzung auf diesen Standort. Optional.

Der Antworttext ähnelt dem folgenden Beispiel:

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

Abfrage in einer Sitzung ausführen

Nachdem Sie eine Sitzung erstellt haben, können Sie Abfragen in dieser Sitzung ausführen:

Console

  1. Rufen Sie in der Trusted Cloud Console die Seite "BigQuery" auf.

    BigQuery aufrufen

  2. Klicken Sie auf den Editor-Tab, der die Sitzung enthält.

  3. Fügen Sie der Sitzung die Abfrage hinzu und klicken Sie auf Ausführen.

bq

Öffnen Sie Cloud Shell und geben Sie den folgenden bq query-Befehl ein:

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

Dabei gilt:

  • SESSION_ID: Ersetzen Sie diesen Wert durch die ID der Sitzung, mit der Sie arbeiten möchten.
  • SQL_STATEMENT: Eine SQL-Anweisung, die in der Sitzung ausgeführt werden soll.

Auf die Ergebnisse der Abfrage folgt Ihre Sitzungs-ID.

Wenn Sie viele Abfragen mit Cloud Shell ausführen werden, können Sie die Sitzungs-ID in .bigqueryrc zu [query] hinzufügen. Die Sitzungs-ID muss dann nicht in jeden Befehl eingefügt werden.

So sieht eine Sitzungs-ID in .bigqueryrc aus:

[query]
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

Nachdem Sie die Sitzungs-ID zu .bigqueryrc hinzugefügt haben, können Sie das Flag --session_id aus dem Befehl bq query weglassen. Wenn Sie eine andere Sitzung verwenden möchten oder eine Sitzung beendet wird, müssen Sie die Datei .bigqueryrc aktualisieren.

API

Rufen Sie die Methode jobs.query mit den folgenden Parametern auf:

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

Dabei gilt:

  • SQL_STATEMENT: Die erste SQL-Anweisung für Ihre Sitzung.
  • SESSION_ID: Die ID der Sitzung.

Sitzung beenden

Eine Sitzung kann manuell oder automatisch beendet werden. Der Verlauf einer beendeten Sitzung ist nach der Beendigung 20 Tage lang verfügbar.

Sitzung automatisch beenden

Eine Sitzung wird nach 24 Stunden Inaktivität oder nach 7 Tagen automatisch beendet, je nachdem, was zuerst eintritt.

Aktuelle Sitzung beenden

Sie können Ihre aktuelle Sitzung mit einer SQL-Anweisung oder in derTrusted Cloud Console beenden, wenn die Sitzung dort erstellt wurde.

Console

  1. Rufen Sie in der Trusted Cloud Console die Seite "BigQuery" auf.

    BigQuery aufrufen

  2. Suchen Sie den Editor-Tab mit Ihrer Sitzung und schließen Sie ihn. Die Sitzung wird beendet.

SQL

So beenden Sie Ihre Sitzung:

  1. Rufen Sie in der Trusted Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

    CALL BQ.ABORT_SESSION();

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

Sitzung durch ID beenden

Sie können eine Sitzung anhand ihrer ID beenden. Sie müssen sich nicht in der Sitzung befinden, um sie auf diese Weise zu beenden.

Rufen Sie die Sitzungs-ID ab und führen Sie die folgende Anweisung aus:

CALL BQ.ABORT_SESSION(SESSION_ID);

Ersetzen Sie SESSION_ID durch die ID der zu beendenden Sitzung.

ID Ihrer aktiven Sitzung abrufen

In manchen Situationen müssen Sie auf eine Sitzung verweisen, um weiter damit arbeiten zu können. Wenn Sie beispielsweise mit Cloud Shell arbeiten, müssen Sie die Sitzungs-ID bei jeder Ausführung eines Befehls für diese Sitzung angeben.

Console

Sie müssen die Sitzungs-ID nicht angeben, um in einer Sitzung in der Trusted Cloud Console eine neue Abfrage auszuführen. Sie können einfach auf dem Editor-Tab, der die Sitzung enthält, weiterarbeiten. Wenn Sie jedoch auf Ihre Sitzung in Cloud Shell oder einen API-Aufruf verweisen möchten, müssen Sie die ID der Sitzung kennen, die Sie in der Konsole erstellt haben.

Bevor Sie diese Schritte ausführen, sollten Sie mindestens eine Abfrage in einer aktiven Sitzung ausgeführt haben.

  1. Rufen Sie in der Trusted Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Klicken Sie auf den Editor-Tab, der die Sitzung enthält.

  3. Klicken Sie in den Abfrageergebnissen auf Jobinformationen.

  4. Suchen Sie in der Liste der Jobinformationen nach der Sitzungs-ID:

    Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
    

bq

Zum Ausführen von Abfragebefehlen in einer Sitzung in Cloud Shell müssen Sie die Sitzungs-ID in den Befehl aufnehmen. Sie können die Sitzungs-ID abrufen, wenn Sie eine Sitzung erstellen oder Ihre Sitzungen auflisten.

Wenn Sie eine Sitzung mit Cloud Shell erstellen, sieht die zurückgegebene Sitzungs-ID so aus:

In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

API

Um SQL-Befehle mit einem API-Aufruf in eine Sitzung zu übergeben, müssen Sie die Sitzungs-ID in den API-Aufruf aufnehmen. Sie können die Sitzungs-ID abrufen, wenn Sie eine Sitzung erstellen oder Ihre Sitzungen auflisten.

Wenn Sie eine Sitzung mit einem API-Aufruf erstellen, sieht die Sitzungs-ID in der Antwort so aus:

sessionId: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

Aktive und inaktive Sitzungen auflisten

So erhalten Sie die Sitzungs-IDs aktiver und inaktiver Sitzungen:

Console

  1. Rufen Sie in der Trusted Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Wählen Sie den Typ des Jobverlaufs aus:

    • Klicken Sie auf Persönlicher Verlauf, um Informationen zu Ihren letzten Jobs aufzurufen.
    • Zum Aufrufen von Informationen zu den letzten Jobs in Ihrem Projekt klicken Sie auf Projektverlauf.
  3. In der Spalte Sitzungs-ID sehen Sie die Sitzungs-IDs für Ihre Jobs.

    Sitzungs-ID im Jobverlauf

SQL

Wenn Sie eine Liste Ihrer letzten drei Sitzungen abrufen möchten, einschließlich der aktiven und beendeten Sitzungen, führen Sie die folgende Abfrage auf dem Editor-Tab aus:

  1. Rufen Sie in der Trusted Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

    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;

    Dabei gilt:

    • VIEW: die INFORMATION_SCHEMA-Ansicht:
      • JOBS_BY_USER: gibt nur die Jobs zurück, die vom aktuellen Nutzer im aktuellen Projekt erstellt wurden.
      • SESSIONS_BY_USER: gibt nur die Sitzungen zurück, die vom aktuellen Nutzer im aktuellen Projekt erstellt wurden.
      • SESSIONS_BY_PROJECT: gibt alle Sitzungen im aktuellen Projekt zurück.

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

Das Ergebnis sieht etwa so aus:

+-------------------------------------------------------------------------+
| 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 |
+-------------------------------------------------------------------------+

Verlauf einer Sitzung ansehen

In einer Sitzung werden Ihre SQL-Aktivitäten innerhalb eines bestimmten Zeitraums erfasst. Diese Informationen werden im Verlauf der Sitzung gespeichert. Im Sitzungsverlauf können Sie die Änderungen verfolgen, die Sie in der Sitzung vorgenommen haben. Wenn ein Job fehlschlägt oder erfolgreich ist, wird das im Sitzungsverlauf aufgezeichnet, sodass Sie später noch sehen können, was Sie getan haben.

Console

Wenn Sie den Verlauf einer Sitzung in der Trusted Cloud Console aufrufen möchten, können Sie Ihren persönlichen Verlauf oder Ihren Projektverlauf nach der Sitzungs-ID filtern und sich so alle SQL-Abfragen anzeigen lassen, die in einer bestimmten Sitzung ausgeführt werden.

  1. Rufen Sie in der Trusted Cloud Console die Seite "BigQuery" auf.

    BigQuery aufrufen

  2. Maximieren Sie den Bereich Jobverlauf.

  3. Wählen Sie den Jobverlaufstyp aus, den Sie sehen möchten:

    • Klicken Sie auf Persönlicher Verlauf, um Informationen zu Ihren letzten Jobs aufzurufen.
    • Zum Aufrufen von Informationen zu den letzten Jobs in Ihrem Projekt klicken Sie auf Projektverlauf.
  4. Klicken Sie auf  Filter und wählen Sie dann Sitzungs-ID aus.

  5. Suchen Sie im Feld Sitzungs-ID nach der Sitzungs-ID:

    Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
    

SQL

Rufen Sie zuerst die Sitzungs-ID ab und führen Sie dann die folgenden Schritte aus, wenn Sie Verlaufsdaten für eine bestimmte Sitzung abrufen möchten:

  1. Rufen Sie in der Trusted Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

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

    Dabei gilt:

    • VIEW: die INFORMATION_SCHEMA-Ansicht, mit der gearbeitet werden soll

      Wählen Sie eine der folgenden Ansichten aus:

      • JOBS_BY_USER: gibt nur die Sitzungen zurück, die vom aktuellen Nutzer im aktuellen Projekt erstellt wurden.
      • SESSIONS_BY_USER: gibt nur die Sitzungen zurück, die vom aktuellen Nutzer im aktuellen Projekt erstellt wurden.
      • SESSIONS_BY_PROJECT: gibt alle Sitzungen im aktuellen Projekt zurück.
    • SESSION_ID: ID der Sitzung, für die Verlaufsdaten abgerufen werden sollen.

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

Beispiel

Im folgenden Beispiel wird der Verlauf für eine Sitzung mit der Sitzungs-ID CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0 zurückgegeben: Sie können diese Sitzungs-ID durch Ihre eigene ersetzen.

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);

Das Ergebnis sieht etwa so aus:

+---------------------+------------------------------------------------------------------------------------------+
|    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;  |
+---------------------+------------------------------------------------------------------------------------------+

Nächste Schritte