Datentypen der Legacy-SQL-Version
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 GoogleSQL. Weitere Informationen zu Datentypen in GoogleSQL finden Sie unter GoogleSQL-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 | Legacy-SQL bietet eingeschränkte Unterstützung für NUMERIC. Weitere Informationen finden Sie unter Exakte numerische Werte in Legacy-SQL. | ||||||||||||
BIGNUMERIC | Legacy-SQL bietet eingeschränkte Unterstützung für BIGNUMERIC. Weitere Informationen finden Sie unter Exakte numerische Werte in Legacy-SQL. | ||||||||||||
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. |
Exakte numerische Werte in Legacy-SQL
Sie können NUMERIC- oder BIGNUMERIC-Werte in nicht modifizierenden Klauseln wie SELECT list (with aliases)
, GROUP BY keys
und Pass-Through-Feldern in Fensterfunktionen usw. lesen. Jede Berechnung über NUMERIC oder BIGNUMERIC 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(<bignumeric> AS STRING)
CAST(<string> AS NUMERIC)
CAST(<string> AS BIGNUMERIC)
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 Fensterfunktionen 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 GoogleSQL-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
. - Informationen zu GoogleSQL-Datentypen finden Sie unter Datentypen.