Abfragen in Sitzungen ausführen

In diesem Dokument wird beschrieben, wie Sie Abfragen in einer BigQuery-Sitzung ausführen. Es richtet sich an Nutzer, die bereits ein allgemeines Verständnis von Sitzungen haben, bereits eine Sitzung erstellt haben und die ID für die Sitzung kennen, die sie verwenden möchten.

Bevor Sie diese Schritte ausführen, prüfen Sie, ob Sie die erforderlichen Berechtigungen zum Erstellen einer Sitzung haben.

Abfrage in einer Sitzung ausführen

Nachdem Sie eine Sitzung erstellt haben, können Sie der Sitzung eine Abfrage hinzufügen und diese ausführen. Dafür gibt es verschiedene Möglichkeiten:

Console

  1. Rufen Sie in der Google 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.

Sitzung testen

Öffnen Sie in der Google Cloud Console einen Editor-Tab, der eine von Ihnen erstellte Sitzung enthält und führen Sie diese SQL-Anweisung aus:

CREATE TEMP TABLE Temperature(degrees INT64)  AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;

Löschen Sie den Inhalt auf dem Tab oder kommentieren Sie ihn aus und führen Sie diese SQL-Anweisung aus:

SELECT * FROM Temperature;

Achten Sie darauf, dass Ergebnisse wie die folgenden erstellt werden:

+---------+
| degrees |
+---------+
|      55 |
|      14 |
|       3 |
|       0 |
|      30 |
+---------+

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'

wobei

  • 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.

Sitzung testen

Erstellen Sie in einer von Ihnen erstellten Sitzung eine temporäre Tabelle mit dem Namen Temperature. Ersetzen Sie die Sitzungs-ID durch Ihre eigene ID.

bq query \
  --nouse_legacy_sql \
  --session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ \
  'CREATE TEMP TABLE Temperature(degrees INT64)  AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;'

Rufen Sie eine Liste aller Werte in der Tabelle Temperature ab. Ersetzen Sie die Sitzungs-ID durch Ihre eigene ID.

bq query \
  --nouse_legacy_sql \
  --session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ \
  'SELECT * FROM Temperature;'

Achten Sie darauf, dass Ergebnisse wie die folgenden erstellt werden:

+-------+
| total |
+-------+
|    30 |
|     0 |
|     3 |
|    14 |
|    55 |
+-------+

In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

Sitzung zu .bigqueryrc hinzufügen, um Zeit zu sparen

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 stattdessen diesen Befehl verwenden:

bq query \
  --nouse_legacy_sql \
  'SELECT * FROM Temperature;'

Wenn Sie eine andere Sitzung verwenden möchten oder eine Sitzung beendet wird, müssen Sie .bigqueryrc aktualisieren.

API

Rufen Sie die Methode „jobs.insert“ oder „jobs.query“ mit einer definierten Jobressource auf.

jobs.insert

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

{
  "jobReference": {
    "projectId": "PROJECT_ID",
    "jobId": "JOB_ID"
  },
  "configuration": {
    "query": {
      "query": "SQL_STATEMENT",
      "connectionProperties": [{
        "key": "session_id",
        "value": "SESSION_ID"
      }]
    }
  }
}

wobei

  • PROJECT_ID: Das Projekt, für das die Sitzung erstellt werden soll.
  • JOB_ID: Der Job, für den die Sitzung erstellt werden soll.
  • SQL_STATEMENT: Die erste SQL-Anweisung für Ihre Sitzung.
  • SESSION_ID: Die ID der Sitzung.

Sitzung testen

Geben Sie den folgenden Anfragetext ein, um in einer von Ihnen erstellten Sitzung eine temporäre Tabelle mit dem Namen Temperature zu erstellen. Ersetzen Sie die Projekt-ID, die Job-ID und die Sitzungs-ID durch Ihre eigenen IDs.

{
  "jobReference": {
    "projectId": "myProject",
    "jobId": "job_123"
  },
  "configuration": {
    "query": {
      "query": "CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;",
      "connectionProperties": [{
        "key": "session_id",
        "value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
      }]
    }
  }
}

Geben Sie den folgenden Anfragetext ein, um eine Liste aller Werte in der Tabelle Temperature in einer Sitzung abzurufen. Ersetzen Sie die Projekt-ID, die Job-ID und die Sitzungs-ID durch Ihre eigenen IDs.

{
  "jobReference": {
    "projectId": "myProject",
    "jobId": "job_123"
  },
  "configuration": {
    "query": {
      "query": "SELECT * FROM Temperature;",
      "connectionProperties": [{
        "key": "session_id",
        "value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
      }]
    }
  }
}

Der Antworttext für beide Anfragen sollte in etwa so aussehen:

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

jobs.query

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

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

wobei

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

Sitzung testen

Geben Sie den folgenden Anfragetext ein, um in einer von Ihnen erstellten Sitzung eine temporäre Tabelle mit dem Namen Temperature zu erstellen. Ersetzen Sie die Projekt-ID, die Job-ID und die Sitzungs-ID durch Ihre eigenen IDs.

{
  "query": "CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;",
  "connectionProperties": [{
    "key": "session_id",
    "value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
  }]
}

Geben Sie den folgenden Anfragetext ein, um eine Liste aller Werte in der Tabelle Temperature in einer Sitzung abzurufen. Ersetzen Sie die Projekt-ID, die Job-ID und die Sitzungs-ID durch Ihre eigenen IDs.

{
  "query": "SELECT * FROM Temperature;",
  "connectionProperties": [{
    "key": "session_id",
    "value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
  }]
}

Der Antworttext für beide Anfragen sollte in etwa so aussehen:

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

Nächste Schritte