Drive-Daten abfragen
In diesem Dokument wird beschrieben, wie Sie Daten abfragen, die in einer externen Tabelle von Google Drive gespeichert sind.
BigQuery unterstützt Abfragen sowohl für persönliche Dateien in Drive als auch für freigegebene Dateien. Weitere Informationen zu Google Drive finden Sie in der Schulung und Hilfe zu Google Drive.
Sie können Drive-Daten aus einer permanenten externen Tabelle oder aus einer temporären externen Tabelle abfragen, die Sie beim Ausführen der Abfrage erstellen.
Erforderliche Rollen
Zum Abfragen externer Drive-Tabellen benötigen Sie die folgenden Rollen:
- BigQuery Datenbetrachter (
roles/bigquery.dataViewer
) - BigQuery-Nutzer (
roles/bigquery.user
)
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 Rollen finden Sie unter Zuweisbare Rollen für Ressourcen aufrufen.
Wenn Sie die genauen BigQuery-Berechtigungen sehen möchten, die zum Abfragen externer Tabellen erforderlich sind, maximieren Sie den Abschnitt Erforderliche Berechtigungen:
Erforderliche Berechtigungen
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.
Drive-Berechtigungen
Zum Abfragen von externen Daten in Google Drive muss Ihnen mindestens View
-Zugriff auf die Google Drive-Datei erteilt worden sein, die mit der externen Tabelle verknüpft ist.
Bereiche für Compute Engine-Instanzen
Wenn Sie eine Compute Engine-Instanz erstellen, können Sie eine Liste der Bereiche für die Instanz festlegen. Mit den Bereichen steuern Sie den Zugriff der Instanz auf Google Cloud-Produkte einschließlich Drive. Auf der VM ausgeführte Anwendungen rufen Google Cloud APIs über das Dienstkonto auf.
Wenn Sie eine Compute Engine-Instanz einrichten, die als Dienstkonto ausgeführt werden soll, und das Dienstkonto auf eine externe Tabelle zugreift, die mit einer Drive-Datenquelle verknüpft ist, müssen Sie der Instanz den OAuth-Bereich für Google Drive (https://www.googleapis.com/auth/drive.readonly
) hinzufügen.
Wie Sie Bereiche auf eine Compute Engine-Instanz anwenden, erfahren Sie unter Dienstkonto und Zugriffsbereiche für eine Instanz ändern. Weitere Informationen zu Compute Engine-Dienstkonten finden Sie unter Dienstkonten.
Google Drive-Daten mit permanenten externen Tabellen abfragen
Nachdem Sie eine externe Drive-Tabelle erstellt haben, können Sie sie mit der Google SQL-Syntax abfragen, so als wäre sie eine Standard-BigQuery-Tabelle. Beispiel: SELECT field1, field2
FROM mydataset.my_drive_table;
.
Drive-Daten mit temporären Tabellen abfragen
Das Abfragen einer externen Datenquelle mithilfe einer temporären Tabelle eignet sich für einmalige Ad-hoc-Abfragen von externen Daten sowie für ETL-Vorgänge (Extraktion, Transformation, Laden).
Wenn Sie eine externe Datenquelle abfragen möchten, ohne eine permanente Tabelle zu erstellen, geben Sie eine Tabellendefinition für die temporäre Tabelle an und verwenden Sie diese Tabellendefinition dann in einem Befehl oder Aufruf, um die temporäre Tabelle abzufragen. Sie können die Tabellendefinition auf eine der folgenden Arten angeben:
- Eine Tabellendefinitionsdatei
- Mit einer Inline-Schemadefinition
- Eine JSON-Schemadatei
Die temporäre externe Tabelle wird mit der Tabellendefinition bzw. dem bereitgestellten Schema erstellt. Anschließend erfolgt die Abfrage der temporären externen Tabelle.
Wenn Sie eine temporäre externe Tabelle verwenden, erstellen Sie keine Tabelle in einem Ihrer BigQuery-Datasets. Da die Tabelle nicht permanent in einem Dataset gespeichert wird, kann sie nicht für andere Nutzer freigegeben werden.
Temporäre Tabellen erstellen und abfragen
Sie können eine temporäre Tabelle erstellen und abfragen, die mit einer externen Datenquelle verknüpft ist, indem Sie das bq-Befehlszeilentool, die API oder die Clientbibliotheken verwenden.
bq
Geben Sie den Befehl bq query
mit dem Flag --external_table_definition
ein, um eine mit der externen Datenquelle verknüpfte temporäre Tabelle abzufragen. Wenn Sie eine temporäre Tabelle, die mit einer externen Datenquelle verknüpft ist, mit dem bq-Befehlszeilentool abfragen, können Sie das Schema der Tabelle folgendermaßen identifizieren:
- Mit einer Tabellendefinitionsdatei, die auf Ihrem lokalen Rechner gespeichert ist
- Mit einer Inline-Schemadefinition
- Mit einer JSON-Schemadatei, die auf Ihrem lokalen Rechner gespeichert ist
Geben Sie den folgenden Befehl ein, um eine mit der externen Datenquelle verknüpfte temporäre Tabelle mit einer Tabellendefinitionsdatei abzufragen:
bq --location=LOCATION query \ --external_table_definition=TABLE::DEFINITION_FILE \ 'QUERY'
Dabei gilt:
LOCATION
ist Ihr Standort. Das Flag--location
ist optional.TABLE
ist der Name der temporären Tabelle, die Sie erstellen.DEFINITION_FILE
ist der Pfad zur Tabellendefinitionsdatei auf Ihrem lokalen Rechner.QUERY
ist die Abfrage, die Sie an die temporäre Tabelle stellen.
Mit dem folgenden Befehl wird beispielsweise die temporäre Tabelle sales
mithilfe der Tabellendefinitionsdatei sales_def
erstellt und abgefragt:
bq query \
--external_table_definition=sales::sales_def \
'SELECT
Region,Total_sales
FROM
sales'
Geben Sie den folgenden Befehl ein, um eine mit der externen Datenquelle verknüpfte temporäre Tabelle mit einer Inline-Schemadefinition abzufragen:
bq --location=LOCATION query \ --external_table_definition=TABLE::SCHEMA@SOURCE_FORMAT=DRIVE_URI \ 'QUERY'
Dabei gilt:
LOCATION
ist Ihr Standort. Das Flag--location
ist optional.TABLE
ist der Name der temporären Tabelle, die Sie erstellen.SCHEMA
ist die Inline-Schemadefinition im FormatFIELD:DATA_TYPE,FIELD:DATA_TYPE
.SOURCE_FORMAT
istCSV
,NEWLINE_DELIMITED_JSON
,AVRO
oderGOOGLE_SHEETS
.DRIVE_URI
ist der Drive-URI.QUERY
ist die Abfrage, die Sie an die temporäre Tabelle stellen.
Mit dem folgenden Befehl wird beispielsweise die temporäre Tabelle sales
erstellt und abgefragt. Die Tabelle ist mit einer in Drive gespeicherten CSV-Datei verknüpft und verwendet die Schemadefinition Region:STRING,Quarter:STRING,Total_sales:INTEGER
.
bq --location=US query \
--external_table_definition=sales::Region:STRING,Quarter:STRING,Total_sales:INTEGER@CSV=https://drive.google.com/open?id=1234_AbCD12abCd \
'SELECT
Region,Total_sales
FROM
sales'
Geben Sie den folgenden Befehl ein, um eine mit der externen Datenquelle verknüpfte temporäre Tabelle mit einer JSON-Schemadatei abzufragen:
bq --location=LOCATION query \ --external_table_definition=SCHEMA_FILE@SOURCE_FORMT=DRIVE_URI \ 'QUERY'
Dabei gilt:
LOCATION
ist Ihr Standort. Das Flag--location
ist optional.SCHEMA_FILE
ist der Pfad zur JSON-Schemadatei auf Ihrem lokalen Rechner.SOURCE_FILE
istCSV
,NEWLINE_DELIMITED_JSON
,AVRO
oderGOOGLE_SHEETS
.DRIVE_URI
ist der Drive-URI.QUERY
ist die Abfrage, die Sie an die temporäre Tabelle stellen.
Mit dem folgenden Befehl wird beispielsweise die temporäre Tabelle sales
erstellt und abgefragt. Die Tabelle ist mit einer in Drive gespeicherten CSV-Datei verknüpft und verwendet die Schemadatei /tmp/sales_schema.json
.
bq query \
--external_table_definition=sales::/tmp/sales_schema.json@CSV=https://drive.google.com/open?id=1234_AbCD12abCd \
'SELECT
Total_sales
FROM
sales'
API
Erstellen Sie eine Abfragejobkonfiguration. Unter Daten abfragen finden Sie Informationen zum Aufrufen von
jobs.query
undjobs.insert
.Geben Sie die externe Datenquelle durch Erstellen einer
ExternalDataConfiguration
an.
Python
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
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.
Beschränkungen
Eine BigQuery-Abfrage kann Google Sheets überlasten, was zu einem Fehler wie Resources exceeded during query execution: Google Sheets service
overloaded.
führt. Vereinfachen Sie Ihre Tabelle, z. B. durch die Minimierung der Verwendung von Formeln. Weitere Informationen finden Sie unter Einschränkungen für externe Tabellen.