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.
  • Importierte BYTES-Daten müssen base64-verschlüsselt sein. Eine Ausnahme hierzu sind Avro BYTES-Daten, die von BigQuery gelesen und umgewandelt werden können.
  • Aus einer BigQuery-Tabelle gelesene BYTES-Daten sind normalerweise base64-verschlüsselt. Führen Sie jedoch einen Export ins Avro-Format durch, wird der Avro-Bytes-Datentyp angewendet.
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
  • CSV-Format: 1 oder 0, true oder false, t oder f, yes oder no, oder y oder n (keine Berücksichtigung der Groß- und Kleinschreibung).
  • JSON-Format: true oder false (keine Berücksichtigung der Groß- und Kleinschreibung).
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 YYYY-MM-DD HH:MM:SS. Es werden die Bezeichner UTC und Z unterstützt.

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.

Ereignis UNIX-Zeitstempelformat Datum-/Uhrzeit-Stringformat
Leichtes (M4.2) Erdbeben in der Nähe von Oklahoma City

1408452095.220
1408452095.220000

2014-08-19 07:41:35.220 -05:00
2014-08-19 12:41:35.220 UTC
2014-08-19 12:41:35.220
2014-08-19 12:41:35.220000
2014-08-19T12:41:35.220Z
Neil Armstrong betritt den Mond

-14182916

1969-07-20 20:18:04
1969-07-20 20:18:04 UTC
1969-07-20T20:18:04
Frist für die Behebung des Y10k-Programmfehlers

253402300800
2.53402300800e11

10000-01-01 00:00
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.