Automatische Schemaerkennung verwenden
Automatische Schemaerkennung
Mit der automatischen Schemaerkennung kann BigQuery das Schema für CSV-, JSON- oder Google Tabellen-Daten ableiten. Die automatische Schemaerkennung ist für das Laden von Daten in BigQuery und für das Abfragen einer externen Datenquelle verfügbar.
Wenn die automatische Erkennung aktiviert ist, leitet BigQuery den Datentyp für jede Spalte ab. BigQuery wählt eine zufällige Datei in der Datenquelle aus und scannt bis zu den ersten 500 Datenzeilen, die als repräsentative Stichprobe verwendet werden.
BigQuery überprüft dann jedes Feld und versucht basierend auf den Werten in dieser Stichprobe, diesem Feld einen Datentyp zuzuweisen. Wenn alle Zeilen in einer Spalte leer sind, wird für die automatische Erkennung standardmäßig der Datentyp STRING
für die Spalte verwendet.
Wenn Sie die automatische Schemaerkennung für CSV-, JSON- oder Google Tabellen-Daten nicht aktivieren, müssen Sie das Schema beim Erstellen der Tabelle manuell angeben.
Sie müssen die automatische Schemaerkennung für Avro-, Parquet-, ORC-, Firestore- oder Datastore-Exportdateien nicht aktivieren. Diese Dateiformate sind selbstbeschreibend, sodass BigQuery das Tabellenschema automatisch aus den Quelldaten ableitet. Für Parquet-, Avro- und Orc-Dateien können Sie optional ein explizites Schema angeben, um das abgeleitete Schema zu überschreiben.
Sie können das erkannte Schema für eine Tabelle auf folgenden Wegen aufrufen:
- Google Cloud Console verwenden.
- Verwenden Sie den Befehl
bq show
des -Befehlszeilentools.
Wenn BigQuery Schemas ermittelt, könnte es – in seltenen Fällen – einen Feldnamen ändern, um ihn mit der GoogleSQL-Syntax kompatibel zu machen.
Informationen zu Datentypkonvertierungen finden Sie auf den folgenden Seiten:
- Datentypkonvertierung beim Laden von Daten aus Cloud Datastore
- Datentypkonvertierung beim Laden von Daten aus Firestore
- Avro-Konvertierungen
- Parquet-Konvertierungen
- ORC-Konvertierungen
Daten mithilfe der automatischen Schemaerkennung laden
Wählen Sie eine der folgenden Möglichkeiten, um beim Laden von Daten die automatische Schemaerkennung zu aktivieren:
- Klicken Sie in der Google Cloud Console im Abschnitt Schema für Automatisch erkennen auf das Kästchen Schema und Eingabeparameter.
- Verwenden Sie im bq-Befehlszeilentool den Befehl
bq load
mit dem Parameter--autodetect
.
Wenn die automatische Schemaerkennung aktiviert ist, versucht BigQuery, das Schema für CSV- und JSON-Dateien automatisch abzuleiten.
Die Logik zur automatischen Erkennung leitet die Schemafeldtypen ab, indem bis zu den ersten 500 Datenzeilen gelesen werden. Führende Zeilen werden übersprungen, wenn das Flag --skip_leading_rows
angegeben ist. Die Feldtypen basieren auf den Zeilen mit den meisten Feldern.
Daher sollte die automatische Erkennung wie erwartet funktionieren, solange mindestens eine Datenzeile mit Werten in jeder Spalte/jedem Feld vorhanden ist.
Die automatische Schemaerkennung wird nicht für Avro-, Parquet-, ORC-Dateien, Firestore-Exportdateien oder Datastore-Exportdateien verwendet. Wenn Sie diese Dateien in BigQuery laden, wird das Tabellenschema automatisch aus den selbstbeschreibenden Quelldaten abgerufen.
So verwenden Sie die automatische Schemaerkennung beim Laden von JSON- oder CSV-Daten:
Console
Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.
Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie ein Dataset aus.
Maximieren Sie die Option
Aktionen und klicken Sie auf Öffnen.Klicken Sie im Detailfeld auf Tabelle erstellen.
Gehen Sie auf der Seite Tabelle erstellen im Abschnitt Quelle so vor:
- Geben Sie unter Create table from (Tabelle erstellen aus) Ihren gewünschten Quelltyp an:
Suchen Sie im Quellfeld nach der Datei oder dem Cloud Storage-Bucket oder geben Sie den Cloud Storage-URI ein. In der Google Cloud Console kann zwar nur ein URI eingefügt werden, aber Platzhalter werden unterstützt. Der Cloud Storage-Bucket muss sich am selben Standort wie das Dataset befinden, das die von Ihnen erstellte Tabelle enthält.
Wählen Sie als Dateiformat CSV oder JSON aus.
Gehen Sie auf der Seite Create table (Tabelle erstellen) im Abschnitt Destination (Ziel) so vor:
Wählen Sie für Dataset-Name das entsprechende Dataset aus.
Geben Sie im Feld Tabllenname den Namen der Tabelle ein, die Sie in BigQuery erstellen.
Achten Sie darauf, dass Table type (Tabellentyp) auf Native table (Native Tabelle) eingestellt ist.
Klicken Sie auf Tabelle erstellen.
bq
Führen Sie den Befehl bq load
mit dem Parameter --autodetect
aus.
Optional: Geben Sie das Flag --location
an und legen Sie als Wert Ihren Standort fest.
Mit dem folgenden Befehl wird eine Datei mit automatischer Schemaerkennung geladen:
bq --location=LOCATION load \ --autodetect \ --source_format=FORMAT \ DATASET.TABLE \ PATH_TO_SOURCE
Dabei gilt:
LOCATION
: Name Ihres Standorts. Das Flag--location
ist optional. Wenn Sie beispielsweise BigQuery in der Region Tokio verwenden, geben Sie für das Flag den Wertasia-northeast1
an. Mit der Datei ".bigqueryrc" können Sie für den Standort einen Standardwert festlegen.FORMAT
: entwederNEWLINE_DELIMITED_JSON
oderCSV
.DATASET
: das Dataset mit der Tabelle, in die Sie Daten laden.TABLE
: der Name der Tabelle, in die Sie Daten laden.PATH_TO_SOURCE
ist der Speicherort der CSV- oder JSON-Datei.
Beispiele:
Geben Sie den folgenden Befehl ein, um myfile.csv
von Ihrem lokalen Computer in eine Tabelle namens mytable
zu laden, die in einem Dataset namens mydataset
gespeichert ist.
bq load --autodetect --source_format=CSV mydataset.mytable ./myfile.csv
Geben Sie den folgenden Befehl ein, um myfile.json
von Ihrem lokalen Computer in eine Tabelle namens mytable
zu laden, die in einem Dataset namens mydataset
gespeichert ist.
bq load --autodetect --source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable ./myfile.json
API
Erstellen Sie einen
load
-Job, der auf die Quelldaten verweist. Weitere Informationen zum Erstellen von Jobs finden Sie unter BigQuery-Jobs programmatisch ausführen. Geben Sie Ihren Standort im AbschnittjobReference
im Attributlocation
an.Geben Sie das Datenformat an. Legen Sie dazu das Attribut
sourceFormat
fest. Wenn Sie die automatische Schemaerkennung verwenden möchten, muss dieser Wert aufNEWLINE_DELIMITED_JSON
oderCSV
gesetzt werden.Verwenden Sie das Attribut
autodetect
, um die automatische Schemaerkennung auftrue
zu setzen.
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go 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.
Node.js
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
PHP
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von PHP in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery PHP API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Python
Wenn Sie die automatische Schemaerkennung aktivieren möchten, legen Sie das Attribut LoadJobConfig.autodetect auf True
fest.
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.
Ruby
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Ruby in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Ruby API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Automatische Schemaerkennung für externe Datenquellen
Die automatische Schemaerkennung kann für externe Datenquellen in CSV, JSON und Google Tabellen verwendet werden. Wenn die automatische Schemaerkennung aktiviert ist, versucht BigQuery, das Schema automatisch aus den Quelldaten abzuleiten. Wenn Sie die automatische Schemaerkennung für diese Quellen nicht aktivieren, müssen Sie ein explizites Schema angeben.
Sie müssen die automatische Schemaerkennung nicht aktivieren, wenn Sie externe Avro-, Parquet-, ORC-, Firestore- oder Datastore-Exportdateien abfragen. Diese Dateiformate sind selbstbeschreibend, sodass BigQuery das Tabellenschema automatisch aus den Quelldaten ableitet. Für Parquet-, Avro- und Orc-Dateien können Sie optional ein explizites Schema angeben, um das abgeleitete Schema zu überschreiben.
Mit der Google Cloud Console können Sie die automatische Schemaerkennung aktivieren. Klicken Sie dazu die Option Schema und Eingabeparameter für Automatisch erkennen an.
Mit dem bq-Befehlszeilentool können Sie die automatische Schemaerkennung aktivieren, wenn Sie eine Tabellendefinitionsdatei für CSV-, JSON- oder Google Tabellen-Daten erstellen. Wenn Sie eine Tabellendefinitionsdatei mit dem bq-Tool erstellen, übergeben Sie das Flag --autodetect
mkdef
an den Befehl , um die automatische Schemaerkennung zu aktivieren, oder übergeben Sie das Flag --noautodetect
, um die automatische Erkennung zu deaktivieren.
Wenn Sie das Flag --autodetect
verwenden, ist die Einstellung autodetect
in der Tabellendefinitionsdatei auf true
gesetzt. Wenn Sie das Flag --noautodetect
verwenden, ist die Einstellung autodetect
auf false
gesetzt. Wenn Sie beim Erstellen einer Tabellendefinition keine Schemadefinition für die externe Datenquelle angeben und das Flag --noautodetect
oder --autodetect
nicht verwenden, wird für autodetect
standardmäßig true
verwendet.
Wenn Sie eine Tabellendefinitionsdatei mithilfe der API erstellen, setzen Sie den Wert des Attributs autodetect
auf true
oder false
. Wenn Sie autodetect
auf true
setzen, wird die automatische Erkennung aktiviert. Wenn Sie autodetect
auf false
setzen, wird die automatische Erkennung deaktiviert.
Details der automatischen Erkennung
Neben der Erkennung von Schemadetails wird Folgendes automatisch erkannt:
Komprimierung
BigQuery erkennt die GZIP-kompatible Dateikomprimierung beim Öffnen einer Datei.
Datums- und Uhrzeitwerte
BigQuery erkennt Datums- und Uhrzeitwerte basierend auf der Formatierung der Quelldaten.
Werte in DATE
-Spalten müssen das folgende Format haben: YYYY-MM-DD
.
Die Werte in den TIME
-Spalten müssen im folgenden Format angegeben werden: HH:MM:SS[.SSSSSS]
(die Komponente des Sekundenbruchteils ist optional).
Bei TIMESTAMP
-Spalten erkennt BigQuery eine Vielzahl von Zeitstempelformaten, einschließlich, aber nicht beschränkt auf:
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSSSSS
YYYY/MM/DD HH:MM
Ein Zeitstempel kann auch einen UTC-Versatz oder den UTC-Zonenbezeichner ("Z") enthalten.
Im Folgenden finden Sie einige Beispiele für Werte, die BigQuery automatisch als Zeitstempelwerte erkennt:
- 2018-08-19 12:11
- 2018-08-19 12:11:35.22
- 2018/08/19 12:11
- 2018-08-19 07:11:35.220 -05:00
Wenn BigQuery das Format nicht erkennt, wird die Spalte als String-Datentyp geladen. In diesem Fall müssen Sie die Quelldaten vor dem Laden möglicherweise vorverarbeiten. Wenn Sie beispielsweise CSV-Daten aus einer Tabelle exportieren, legen Sie das Datumsformat auf eines der hier gezeigten Beispiele fest. Alternativ können Sie die Daten nach dem Laden in BigQuery umwandeln.
Automatische Schemaerkennung für CSV-Daten
CSV-Trennzeichen
BigQuery erkennt die folgenden Trennzeichen:
- Komma ( , )
- Senkrechter Strich ( | )
- Tabulator ( \t )
CSV-Header
BigQuery leitet Header ab, indem es die erste Zeile einer Datei mit anderen Zeilen in der Datei vergleicht. Wenn die erste Zeile nur Strings enthält und die anderen Zeilen andere Datentypen enthalten, geht BigQuery davon aus, dass es sich bei der ersten Zeile um eine Kopfzeile handelt. BigQuery weist Spaltennamen basierend auf den Feldnamen in der Kopfzeile zu. Die Namen werden möglicherweise entsprechend den Benennungsregeln für Spalten in BigQuery geändert. Zum Beispiel werden Leerzeichen durch Unterstriche ersetzt.
Andernfalls geht BigQuery davon aus, dass die erste Zeile eine Datenzeile ist und weist allgemeine Spaltennamen wie string_field_1
zu. Beachten Sie, dass die Spaltennamen nach dem Erstellen einer Tabelle nicht mehr im Schema aktualisiert werden können. Sie können die Namen jedoch manuell ändern, nachdem die Tabelle erstellt wurde. Eine weitere Option ist die Bereitstellung eines expliziten Schemas anstelle der automatischen Erkennung.
Möglicherweise haben Sie eine CSV-Datei mit einer Kopfzeile, in der alle Datenfelder Strings sind. In diesem Fall erkennt BigQuery nicht automatisch, dass die erste Zeile ein Header ist. Verwenden Sie die Option --skip_leading_rows
, um die Kopfzeile zu überspringen. Andernfalls wird der Header als Daten importiert. In diesem Fall sollten Sie auch ein explizites Schema angeben, damit Sie Spaltennamen zuweisen können.
CSV-Zeilenvorschübe in Anführungszeichen
BigQuery erkennt Zeilenvorschubzeichen in Anführungszeichen in einer CSV-Datei und interpretiert das Zeilenvorschubzeichen in Anführungszeichen nicht als Zeilengrenze.
Automatische Schemaerkennung für JSON-Daten
Verschachtelte und wiederkehrende Felder in JSON
BigQuery leitet verschachtelte und wiederkehrende Felder in JSON-Dateien ab. Wenn ein Feldwert ein JSON-Objekt ist, lädt BigQuery die Spalte als RECORD
-Typ. Wenn ein Feldwert ein Array ist, lädt BigQuery die Spalte als wiederkehrende Spalte. Ein Beispiel für JSON-Daten mit verschachtelten und wiederkehrenden Daten finden Sie unter Verschachtelte und wiederkehrende JSON-Daten laden.
Stringkonvertierung
Wenn Sie die automatische Schemaerkennung aktivieren, wandelt BigQuery Strings nach Möglichkeit in boolesche, numerische oder Datums-/Uhrzeittypen um. Bei der Verwendung der folgenden JSON-Daten wandelt die automatische Schemaerkennung das Feld id
beispielsweise in eine Spalte vom Typ INTEGER
um:
{ "name":"Alice","id":"12"}
{ "name":"Bob","id":"34"}
{ "name":"Charles","id":"45"}
Weitere Informationen finden Sie unter JSON-Daten aus Cloud Storage laden.
Automatische Schemaerkennung für Google Tabellen
Bei Google Tabellen erkennt BigQuery automatisch, ob die erste Zeile eine Kopfzeile ist, ähnlich wie bei der automatischen Erkennung für CSV-Dateien. Wenn die erste Zeile als Kopfzeile identifiziert wird, weist BigQuery Spaltennamen basierend auf den Feldnamen in der Kopfzeile zu und überspringt die Zeile. Die Namen werden möglicherweise entsprechend den Benennungsregeln für Spalten in BigQuery geändert. Zum Beispiel werden Leerzeichen durch Unterstriche ersetzt.
Tabellensicherheit
Informationen zum Steuern des Zugriffs auf Tabellen in BigQuery finden Sie unter Einführung in die Tabellenzugriffssteuerung.