Verfügbarkeit von Legacy-SQL-Funktionen

In diesem Dokument werden die bevorstehenden Einschränkungen für die Verfügbarkeit von BigQuery-Legacy-SQL beschrieben, die auf der Nutzung während eines Testzeitraums basieren und nach dem 1. Juni 2026 in Kraft treten. Diese Änderungen sind Teil der Umstellung von BigQuery von Legacy-SQL auf GoogleSQL, den empfohlenen, ANSI-kompatiblen Dialekt für BigQuery.

Die Migration zu GoogleSQL bietet gegenüber Legacy-SQL folgende Vorteile:

Verfügbarkeit von Funktionen

BigQuery überwacht die Verwendung von Legacy-SQL-Funktionen während eines Testzeitraums. Für Organisationen und Projekte, in denen zwischen dem 1. November 2025 und dem 1. Juni 2026 kein altes SQL verwendet wird, ist altes SQL nach Ablauf des Testzeitraums nicht mehr verfügbar. Organisationen und Projekte, die während des Testzeitraums Legacy-SQL verwenden, können weiterhin Abfragen mit den spezifischen Legacy-SQL-Funktionen ausführen, die sie nutzen.

Die Funktionsnutzung wird auf Organisationsebene zusammengefasst. Wenn in einem Projekt innerhalb einer Organisation eine Funktion verwendet wird, bleibt diese Funktion für alle anderen Projekte in der Organisation verfügbar. Bei Projekten, die keiner Organisation zugeordnet sind, wird die Verfügbarkeit von Funktionen auf Projektebene verwaltet.

Legacy-SQL-Funktionsgruppen

Legacy-SQL-Funktionen sind in drei Funktionsgruppen unterteilt: grundlegende Sprachfunktionen, erweiterte Sprachfunktionen und Funktionsgruppierungen. In den folgenden Abschnitten werden die Funktionen der einzelnen Sets beschrieben.

Grundlegende Sprachfunktionen

Diese Funktionen sind das Herzstück von Legacy-SQL. Diese Funktionen sind für jede Organisation oder jedes eigenständige Projekt verfügbar, in dem im Testzeitraum mindestens eine Legacy-SQL-Abfrage ausgeführt wird.

Kategorie Features
Abfragesyntax
  • SELECT
  • FROM
  • JOIN
  • WHERE
  • GROUP BY
  • HAVING
  • ORDER BY
  • LIMIT
Ausdruckslogik Literale
    :
  • TRUE
  • FALSE
  • NULL

Logische Operatoren
  • AND
  • OR
  • NOT

Vergleichsfunktionen
  • =
  • !=
  • <>
  • <
  • <=
  • >
  • >=
  • IN
  • IS NULL
  • IS NOT NULL
  • IS_EXPLICITLY_DEFINED
  • IS_INF
  • IS_NAN
  • ... BETWEEN ... AND ...

Anweisungen zum Kontrollfluss
  • IF
  • IFNULL
  • CASE WHEN … THEN …
Grundlegende Vorgänge Arithmetische Operatoren
    :
  • +
  • -
  • *
  • /
  • %

Einfache Aggregatfunktionen
    :
  • AVG
  • COUNT
  • FIRST
  • LAST
  • MAX
  • MIN
  • NTH
  • SUM
Datenelemente Einfache Datentypen
    :
  • BYTES
  • BOOLEAN
  • FLOAT
  • INTEGER
  • STRING
  • TIMESTAMP

Strukturierte und teilweise unterstützte Datentypen
  • Genaue numerische Werte: NUMERIC, BIGNUMERIC
  • Bürgerliche Zeit:DATE, TIME, DATETIME
  • Strukturierte Felder: Verschachtelte Felder, wiederkehrende Felder

Umwandlungsfunktionen
  • CAST(expr AS type)
  • BOOLEAN
  • BYTES
  • FLOAT
  • INTEGER
  • STRING

Koersionen:Alle automatischen Datentypkoersionen sind enthalten.

Erweiterte Sprachfunktionen

Diese Kategorie umfasst spezifische Legacy-SQL-Funktionen, die über den grundlegenden Satz hinausgehen. Im Gegensatz zu grundlegenden Funktionen oder Funktionsgruppen wird jede Funktion in dieser Kategorie einzeln erfasst. Sie müssen jede Funktion während des Testzeitraums explizit verwenden, damit sie weiterhin verfügbar ist.

Kategorie Features
Erweiterte Funktionen

Funktionsgruppierungen

Integrierte Funktionen sind in zugehörige Kategorien unterteilt. Wenn Sie während des Testzeitraums eine beliebige Funktion innerhalb einer Gruppierung verwenden, sind alle Funktionen in dieser gesamten Gruppierung verfügbar.

Funktionsgruppierung Funktionen
Erweiterte Fensterfunktionen
  • CUME_DIST
  • DENSE_RANK
  • FIRST_VALUE
  • LAG
  • LAST_VALUE
  • LEAD
  • NTH_VALUE
  • NTILE
  • PERCENT_RANK
  • PERCENTILE_CONT
  • PERCENTILE_DISC
  • RANK
  • RATIO_TO_REPORT
  • ROW_NUMBER
Aggregatfunktionen für Statistiken
  • CORR
  • COVAR_POP
  • COVAR_SAMP
  • STDDEV
  • STDDEV_POP
  • STDDEV_SAMP
  • VARIANCE
  • VAR_POP
  • VAR_SAMP
Aggregatfunktionen, die ein wiederholtes Feld zurückgeben
  • NEST
  • QUANTILES
  • UNIQUE
Aggregatfunktionen mit Bit-Operationen
  • BIT_AND
  • BIT_OR
  • BIT_XOR
Aggregatfunktionen mit Verkettung
  • GROUP_CONCAT
  • GROUP_CONCAT_UNQUOTED
Aggregatfunktionen mit Sortierung
  • COUNT([DISTINCT])
  • EXACT_COUNT_DISTINCT
  • TOP ... COUNT(*)
Einfache Fensterfunktionen
  • AVG
  • COUNT(*)
  • COUNT([DISTINCT])
  • MAX
  • MIN
  • STDDEV
  • SUM
Bitweise Funktionen
  • &
  • |
  • ^
  • <<
  • >>
  • ~
  • BIT_COUNT
Bedingte Ausdrücke
  • COALESCE
  • EVERY
  • GREATEST
  • LEAST
  • NVL
  • SOME
Umrechnungsfunktionen
  • FROM_BASE64
  • HEX_STRING
  • TO_BASE64
Funktionen für die aktuelle Zeit
  • NOW
  • CURRENT_DATE
  • CURRENT_TIME
  • CURRENT_TIMESTAMP
Funktionen für den aktuellen Nutzer
  • CURRENT_USER
Funktionen für Datum und Uhrzeit
  • DATE
  • DATE_ADD
  • DATEDIFF
  • TIME
  • TIMESTAMP
Funktion RAND
  • RAND
Funktionen, die ein wiederkehrendes Feld zurückgeben
  • POSITION
  • SPLIT
Hash-Funktionen
  • HASH
  • SHA1
  • FARM_FINGERPRINT
IP-Funktionen
  • FORMAT_IP
  • FORMAT_PACKED_IP
  • PARSE_IP
  • PARSE_PACKED_IP
JSON-Funktionen
  • JSON_EXTRACT
  • JSON_EXTRACT_SCALAR
Mathematische Funktionen
  • ABS
  • ACOS
  • ASIN
  • ATAN
  • ATAN2
  • CEIL
  • COS
  • DEGREES
  • EXP
  • FLOOR
  • LN
  • LOG
  • LOG10
  • LOG2
  • PI
  • POW
  • RADIANS
  • ROUND
  • SIN
  • SQRT
  • TAN
Mathematische hyperbolische Funktionen
  • ACOSH
  • ASINH
  • ATANH
  • COSH
  • SINH
  • TANH
Teil von TIMESTAMP-Funktionen
  • DAY
  • DAYOFWEEK
  • DAYOFYEAR
  • HOUR
  • MINUTE
  • MONTH
  • QUARTER
  • SECOND
  • WEEK
  • YEAR
Funktionen für reguläre Ausdrücke
  • REGEXP_MATCH
  • REGEXP_EXTRACT
  • REGEXP_REPLACE
Stringfunktionen
  • CONTAINS
  • CONCAT
  • INSTR
  • LEFT
  • LENGTH
  • LOWER
  • LPAD
  • LTRIM
  • REPLACE
  • RIGHT
  • RPAD
  • RTRIM
  • SUBSTR
  • UPPER
URL-Funktionen
  • HOST
  • DOMAIN
  • TLD
UNIX-Zeitstempelfunktionen
  • FORMAT_UTC_USEC
  • MSEC_TO_TIMESTAMP
  • PARSE_UTC_USEC
  • SEC_TO_TIMESTAMP
  • STRFTIME_UTC_USEC
  • TIMESTAMP_TO_SEC
  • TIMESTAMP_TO_MSEC
  • TIMESTAMP_TO_USEC
  • USEC_TO_TIMESTAMP
  • UTC_USEC_TO_DAY
  • UTC_USEC_TO_HOUR
  • UTC_USEC_TO_MONTH
  • UTC_USEC_TO_WEEK
  • UTC_USEC_TO_YEAR

Beispiele für die Verfügbarkeit von Funktionen

Die folgenden Beispiele zeigen, wie die Verfügbarkeit von Funktionen funktioniert.

Beispiel: Auf grundlegende Sprachfunktionen zugreifen

In einem Projekt wird während des Testzeitraums eine Legacy-SQL-Abfrage ausgeführt. Angenommen, die Tabelle T enthält eine Spalte X vom Typ INTEGER.

#legacySQL
SELECT X FROM T

Durch diese Nutzung wird sichergestellt, dass in allen Projekten innerhalb der Organisation weiterhin Abfragen ausgeführt werden können, die eine beliebige Funktion aus dem Satz der grundlegenden Sprachfunktionen verwenden. Die folgende Abfrage funktioniert beispielsweise weiterhin:

#legacySQL
SELECT X FROM T WHERE X > 10

Beispiel: Funktionsgruppierungen verwenden

Ein Projekt verwendet eine Funktion aus einer bestimmten Funktionsgruppe. Angenommen, die Tabelle T enthält eine Spalte X vom Typ FLOAT.

#legacySQL
SELECT SIN(X) FROM T

Durch die Verwendung der Funktion SIN() ist die gesamte Gruppierung mathematischer Funktionen verfügbar. Folglich können alle Projekte in der Organisation jede andere Funktion aus dieser Gruppierung verwenden, z. B. COS().

#legacySQL
SELECT COS(X) FROM T

Die folgende Abfrage schlägt nach dem Testzeitraum fehl, wenn in keinem Projekt in der Organisation eine Funktion aus den Aggregatfunktionen für die statistische Gruppierung verwendet wird.

#legacySQL
SELECT STDDEV(X) FROM T

Beispiel: Beibehalten von Funktionen in verschiedenen Tabellen

Angenommen, die Tabelle X hat die Spalte A (INTEGER) und die Tabelle Y hat die Spalte B (FLOAT). In einem Projekt wird während des Bewertungszeitraums die folgende Abfrage ausgeführt:

#legacySQL
SELECT SIN(A) FROM X

Die Organisation kann die folgende Abfrage nach Ablauf des Testzeitraums ausführen. Die Abfrage funktioniert, weil die Funktion für mathematische Funktionen von der ersten Abfrage beibehalten wurde. Die Aufbewahrungsdauer ist unabhängig von der verwendeten Tabelle, dem Spaltennamen oder dem Datentyp, da sowohl INTEGER als auch FLOAT Teil der grundlegenden Sprachfunktion sind.

#legacySQL
SELECT COS(B) FROM Y

Beispiel: Komplexe Abfrage

Angenommen, die Tabelle T enthält eine Spalte X vom Typ STRING. In einem Projekt wird während des Bewertungszeitraums die folgende Abfrage ausgeführt:

#legacySQL
SELECT value, AVG(FLOAT(value)) OVER (ORDER BY value) AS avg
 FROM (
  SELECT LENGTH(SPLIT(X, ',')) AS value
    FROM T
)

In dieser Abfrage werden Funktionen aus den grundlegenden Sprachfunktionen und drei Funktionsgruppen verwendet: grundlegende Fensterfunktionen, Stringfunktionen und Funktionen, die wiederholte Werte zurückgeben. Alle Projekte in der Organisation behalten diese Funktionen. Daher ist eine neue Abfrage, die eine andere Kombination von Funktionen aus denselben beibehaltenen Funktionsgruppen verwendet, erfolgreich.

#legacySQL
SELECT value, COUNT(STRING(value)) OVER (ORDER BY value) as count
 FROM (
  SELECT CONCAT(SPLIT(X, ','), '123') AS value
    FROM T
)

Häufig gestellte Fragen

Kann eine neue Organisation Legacy-SQL verwenden?

Nach dem Testzeitraum ist Legacy-SQL für neue Organisationen oder Projekte nicht mehr verfügbar. In besonderen Fällen können Sie eine Ausnahme beantragen. Wenn Sie nicht auf Google Forms zugreifen können, senden Sie stattdessen eine E-Mail an bq-legacysql-support@google.com mit Ihrer Organisations-ID, Ihrem aktuellen Nutzungsniveau, dem Datum der letzten Nutzung, den Herausforderungen bei der Migration und einem geschätzten Zeitplan für die Umstellung auf GoogleSQL.

Funktionieren bestehende Legacy-SQL-Abfragen nicht mehr?

Vorhandene Abfragen funktionieren weiterhin, solange alle Legacy-SQL-Funktionen, die darin verwendet werden, während des Testzeitraums von mindestens einem Projekt in Ihrer Organisation verwendet wurden. Eine Abfrage kann fehlschlagen, wenn sie auf einer Funktion basiert, die in diesem Zeitraum nicht verwendet wurde. Wir empfehlen Ihnen daher, alle wichtigen Abfragen auszuführen.

Kann eine bestehende Organisation, die Legacy-SQL verwendet, neue Projekte erstellen, in denen auch Legacy-SQL verwendet wird?

Ja. Alle Funktionen, auf die während des Testzeitraums von einem Projekt in Ihrer Organisation zugegriffen wurde, bleiben für alle Projekte in Ihrer Organisation verfügbar, unabhängig davon, ob sie neu oder alt sind.

Gibt es ein Tool, mit dem ich prüfen kann, welche Legacy-SQL-Funktionen in meiner Organisation verwendet werden?

Es gibt kein Tool, mit dem die Nutzung bestimmter Funktionen geprüft werden kann. Sie können die Verwendung von Legacy-SQL nachverfolgen, indem Sie INFORMATION_SCHEMA.JOBS-Ansichten abfragen, wie unter Anzahl der Legacy-SQL-Abfragejobs pro Projekt beschrieben. Sie können Ihre Abfragelogs auch in Cloud Logging aufrufen, um nach einer bestimmten Syntax zu suchen.

Ist eine Migration zu GoogleSQL erforderlich?

Eine Migration ist nicht erforderlich, wird aber empfohlen. GoogleSQL ist der moderne, funktionsreiche und empfohlene Dialekt.

Was passiert, wenn eine selten verwendete Legacy-SQL-Abfrage während des Testzeitraums nicht ausgeführt wird?

Damit eine Abfrage weiterhin funktioniert, müssen Sie sie einmal während des Evaluierungszeitraums ausführen. Wenn Sie die Überprüfung dann nicht durchführen können, können Sie eine Ausnahme beantragen. Wenn Sie nicht auf Google Forms zugreifen können, senden Sie stattdessen eine E-Mail an bq-legacysql-support@google.com mit Ihrer Organisations-ID, Ihrem aktuellen Nutzungsniveau, dem Datum der letzten Nutzung, Migrationsherausforderungen und einem geschätzten Zeitplan für die Umstellung auf GoogleSQL.

Nächste Schritte

  • Informationen zum Migrieren von Legacy-SQL-Abfragen zu GoogleSQL finden Sie im Migrationsleitfaden.