Amazon S3-Daten abfragen
In diesem Dokument wird die Abfrage von Daten beschrieben, die in einer BigLake-Tabelle von Amazon Simple Storage Service (Amazon S3) gespeichert sind.
Hinweis
Prüfen Sie, ob Sie eine Amazon S3-BigLake-Tabelle haben.
Erforderliche Rollen
Zum Abfragen von Amazon S3 BigLake-Tabellen muss der Aufrufer der BigQuery API die folgenden Rollen haben:
- BigQuery-Verbindungsnutzer (
roles/bigquery.connectionUser
) - BigQuery Datenbetrachter (
roles/bigquery.dataViewer
) - BigQuery-Nutzer (
roles/bigquery.user
)
Der Aufrufer kann Ihr Konto oder ein Amazon S3-Verbindungsdienstkonto sein. Abhängig von Ihren Berechtigungen können Sie diese Rollen selbst zuweisen oder Ihren Administrator bitten, sie Ihnen zu gewähren. Weitere Informationen zum Gewähren von Berechtigungen finden Sie unter Zuweisbare Rollen für Ressourcen aufrufen.
Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die genauen Berechtigungen anzuzeigen, die zum Abfragen von Amazon S3 BigLake-Tabellen erforderlich sind:
Erforderliche Berechtigungen
bigquery.connections.use
bigquery.jobs.create
bigquery.readsessions.create
(Nur erforderlich, wenn Sie Daten mit der BigQuery Storage Read API lesen)bigquery.tables.get
bigquery.tables.getData
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Amazon S3 BigLake-Tabellen abfragen
Nachdem Sie eine Amazon S3-BigLake-Tabelle erstellt haben, können Sie sie mit der GoogleSQL-Syntax abfragen, so als wäre sie eine Standard-BigQuery-Tabelle.
Die im Cache gespeicherten Abfrageergebnisse werden in einer temporären BigQuery-Tabelle gespeichert. Informationen zum Abfragen einer temporären BigLake-Tabelle finden Sie unter Temporäre BigLake-Tabelle abfragen. Weitere Informationen zu den Limits und Kontingenten von BigQuery Omni finden Sie unter Limits und Kontingente.
Verwenden Sie beim Erstellen einer Reservierung in einer BigQuery Omni-Region die Enterprise-Version. Informationen zum Erstellen einer Reservierung mit einer Version finden Sie unter Reservierungen erstellen.
Führen Sie eine Abfrage für eine BigLake-Amazon S3-Tabelle aus:
SQL
So fragen Sie die Tabelle ab:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
SELECT * FROM DATASET_NAME.TABLE_NAME;
Ersetzen Sie Folgendes:
DATASET_NAME
: der Name des Datasets, das Sie erstellt habenTABLE_NAME
: der Name der von Ihnen erstellten TabelleKlicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Temporäre Tabelle abfragen
In BigQuery werden temporäre Tabellen erstellt, um Abfrageergebnisse zu speichern. Zum Abrufen von Abfrageergebnissen aus temporären Tabellen können Sie die Google Cloud Console oder die BigQuery API verwenden.
Wählen Sie eine der folgenden Optionen aus:
Console
Wenn Sie eine BigLake-Tabelle abfragen, die auf externe Clouddaten verweist, können Sie die Abfrageergebnisse aufrufen, die in der Google Cloud Console angezeigt werden.
API
So führen Sie eine Abfrage für eine BigLake-Tabelle mithilfe der API aus:
- Erstellen Sie ein Jobobjekt.
- Rufen Sie die Methode
jobs.insert
auf, um die Abfrage asynchron auszuführen, oder die Methodejobs.query
, um die Abfrage synchron auszuführen. Übergeben Sie dabei dasJob
-Objekt. - Lesen Sie Zeilen mit
jobs.getQueryResults
, indem Sie die angegebene Jobreferenz übergeben, und mittabledata.list
, indem Sie die angegebene Tabellenreferenz des Abfrageergebnisses übergeben.
Führen Sie eine Abfrage an der Pseudospalte _FILE_NAME
aus:
Auf externen Datenquellen basierende Tabellen enthalten die Pseudospalte _FILE_NAME
. In dieser Spalte wird der vollqualifizierte Pfad zu der Datei angegeben, zu der die Zeile gehört. Diese Spalte ist nur für Tabellen verfügbar, die auf externe Daten verweisen, die in Cloud Storage, Google Drive, Amazon S3 oder Azure Blob Storage gespeichert sind.
Der Spaltenname _FILE_NAME
ist reserviert, d. h. Sie können keine Spalte mit diesem Namen in Ihren Tabellen erstellen. Zur Auswahl des Werts _FILE_NAME
müssen Sie ein Alias verwenden. Die folgende Beispielabfrage zeigt, wie Sie _FILE_NAME
auswählen, indem Sie der Pseudospalte den Alias fn
zuweisen.
bq query \
--project_id=PROJECT_ID \
--use_legacy_sql=false \
'SELECT
name,
_FILE_NAME AS fn
FROM
`DATASET.TABLE_NAME`
WHERE
name contains "Alex"'
Ersetzen Sie Folgendes:
-
PROJECT_ID
ist eine gültige Projekt-ID. Dieses Flag ist nicht erforderlich, wenn Sie Cloud Shell verwenden oder in der Google Cloud CLI ein Standardprojekt einrichten. -
DATASET
ist der Name des Datasets, in dem die permanente externe Tabelle gespeichert ist. -
TABLE_NAME
ist der Name der permanenten externen Tabelle.
Wenn die Abfrage ein Filterprädikat in der Pseudospalte _FILE_NAME
hat, versucht BigQuery, beim Lesen Dateien zu überspringen, die nicht dem Filter entsprechen. Ähnliche Empfehlungen wie beim
Abfragen von nach Aufnahmezeit partitionierten Tabellen mithilfe von Pseudospalten
gelten bei der Erstellung von Abfrageprädikaten mit der Pseudospalte _FILE_NAME
.
Nächste Schritte
- SQL in BigQuery verwenden
- Weitere Informationen zu BigQuery Omni
- BigQuery-Kontingente