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 Einschränkungen und Kontingenten in BigQuery Omni finden Sie unter Einschränkungen und Kontingente.
Verwenden Sie beim Erstellen einer Reservierung in einer BigQuery Omni-Region die Enterprise Edition. 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
BigQuery erstellt temporäre Tabellen zum Speichern von Abfrageergebnissen. Sie können das Abfrageergebnis aus temporären Tabellen mit der Google Cloud Console oder der BigQuery API abrufen.
Wählen Sie eine der folgenden Optionen aus:
Console
Wenn Sie eine BigLake-Tabelle abfragen, die auf externe Cloud-Daten verweist, können Sie die in der Google Cloud Console angezeigten Abfrageergebnisse aufrufen.
API
So fragen Sie eine BigLake-Tabelle mithilfe der API ab:
- 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.
Pseudospalte _FILE_NAME abfragen
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