In diesem Dokument werden die Datentypen erläutert, die von der Legacy-SQL-Abfragesyntax von BigQuery unterstützt werden. Die bevorzugte Abfragesyntax für BigQuery ist Standard-SQL. Weitere Informationen zu Datentypen in Standard-SQL finden Sie unter Standard-SQL-Datentypen.
Datentypen der Legacy-SQL-Version
Die folgenden Datentypen sind für Ihre Daten zulässig:
Datentyp | Mögliche Werte | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
STRING | UTF-8-Daten mit variabler Länge. | ||||||||||||
BYTES | Binäre Daten mit variabler Länge.
|
||||||||||||
INTEGER |
Vorzeichenbehaftete 64-Bit-Ganzzahl. Wenn Sie die BigQuery API verwenden, um eine Ganzzahl außerhalb des Bereichs von [-253+1, 253-1] (in den meisten Fällen bedeutet dies größer als 9.007.199.254.740.991), in eine Ganzzahlspalte (INT64) zu laden, müssen Sie diese als String übergeben, damit keine Daten beschädigt werden. Dieses Problem wird durch eine Beschränkung der Ganzzahlgröße im JSON/ECMAScript verursacht. Weitere Informationen finden Sie im Bereich "Numbers" von RFC 7159. |
||||||||||||
FLOAT | Gleitkommazahl mit doppelter Genauigkeit. | ||||||||||||
NUMERIC | Die Legacy-SQL-Version unterstützt NUMERIC nur eingeschränkt. Weitere Informationen finden Sie unter NUMERIC in der Legacy-SQL-Version. | ||||||||||||
BOOLEAN |
|
||||||||||||
RECORD | Eine Sammlung von einem oder mehreren Feldern. | ||||||||||||
TIMESTAMP |
Die TIMESTAMP-Datentypen können entweder als UNIX-Zeitstempel oder Kalender-Datetimes beschrieben werden. BigQuery speichert TIMESTAMP-Daten intern als UNIX-Zeitstempel mit Mikrosekundenpräzision. UNIX-Zeitstempel Eine positive oder negative Dezimalzahl. Eine positive Zahl gibt die Anzahl an Sekunden an, die seit der Epoche (1970-01-01 00:00:00 UTC) vergangen sind, und eine negative Zahl die Anzahl an Sekunden vor der Epoche. Bis zu 6 Dezimalstellen (Mikrosekundenpräzision) werden bewahrt. Datum- und Uhrzeit-Strings Ein Datum- und Uhrzeit-String mit dem Format In den Datum- und Uhrzeit-Strings kann ein Zeitzonen-Offset angegeben werden; dieses Offset wird von BigQuery jedoch bei der Umwandlung des Werts in sein internes Format nicht beibehalten. Falls Sie die ursprünglichen Zeitzonen-Daten erhalten müssen, speichern Sie das Zeitzonen-Offset in einer separaten Spalte. Die führende Null ist erforderlich, wenn Sie ein einstelliges Zeitzonen-Offset angeben. Bei der Verwendung des JSON-Formats müssen die Datum- und Uhrzeit-Strings in Anführungszeichen gesetzt werden. Beispiele Die folgenden Beispiele zeigen die Darstellung identischer Daten einmal im UNIX-Zeitstempelformat und im Datums- und Uhrzeit-Stringformat.
|
||||||||||||
DATE | Die Legacy-SQL-Version unterstützt DATE nur begrenzt. Weitere Informationen finden Sie unter Amtliche Zeit in Legacy-SQL. | ||||||||||||
TIME | Die Legacy-SQL-Version unterstützt TIME nur begrenzt. Weitere Informationen finden Sie unter Amtliche Zeit in Legacy-SQL. | ||||||||||||
DATETIME | Die Legacy-SQL-Version unterstützt DATETIME nur begrenzt. Weitere Informationen finden Sie unter Amtliche Zeit in Legacy- SQL. |
NUMERIC in der Legacy-SQL-Version
Sie können NUMERIC-Werte lesen und sie mit nicht modifizierenden Operatoren wie SELECT list (with aliases)
, GROUP BY keys
und Pass-Through-Feldern in analytischen Funktionen usw. verarbeiten. Jede andere Berechnung über NUMERIC-Werte, einschließlich Vergleichen, führt jedoch zu nicht definierten Ergebnissen.
In der Legacy-SQL-Version werden die folgenden Cast- und Conversion-Funktionen unterstützt:
CAST(<numeric> AS STRING)
CAST(<string> AS NUMERIC)
Amtliche Zeit in Legacy-SQL
Die Datentypen für die amtliche Zeit (DATE, TIME und DATETIME) können gelesen und mit nicht-ändernden Operatoren wie SELECT list (with aliases)
, GROUP BY keys
und Pass-Through-Feldern in Analysefunktionen usw. verarbeitet werden. Jegliche andere Berechnungen mit Werten für die amtliche Zeit (einschließlich Vergleichen) führen zu undefinierten Ergebnissen.
Die folgenden CAST- und CONVERSION-Funktionen werden in der Legacy-SQL-Version unterstützt:
CAST(<date> AS STRING)
CAST(<time> AS STRING)
CAST(<datetime> AS STRING)
CAST(<string> AS DATE)
CAST(<string> AS TIME)
CAST(<string> AS DATETIME)
Dabei sieht es in der Praxis jedoch so aus, dass Legacy-SQL die Amtliche-Zeit-Werte als Ganzzahlen interpretiert, und Operationen mit Ganzzahlen, bei denen davon ausgegangen wird, dass es Amtliche-Zeit-Werte sind, zu unerwarteten Ergebnissen führen.
Für die Berechnung von Werten mit Datentypen, die auf amtlicher Zeit beruhen, sollte die Standard-SQL-Version verwendet werden, die alle SQL-Vorgänge mit den Datentypen DATE, DATETIME und TIME unterstützt.
Nächste Schritte
- Mehr zum Festlegen des Datentyps eines Felds finden Sie unter
schema.fields.type
. - Die SQL-Standarddatentypen finden Sie unter Datentypen.