レガシー SQL の機能の可用性

このドキュメントでは、評価期間中の使用状況に基づいて、2026 年 6 月 1 日以降に有効になる BigQuery レガシー SQL の可用性に関する今後の制限について説明します。これらの変更は、BigQuery がレガシー SQL から、BigQuery の推奨 ANSI 準拠言語である GoogleSQL に移行する一環として行われます。

GoogleSQL に移行すると、レガシー SQL よりも次のようなメリットがあります。

機能の利用可能性の仕組み

BigQuery は、評価期間中にレガシー SQL 機能の使用状況をモニタリングします。2025 年 11 月 1 日から 2026 年 6 月 1 日までの間に以前の SQL を使用していない組織とプロジェクトでは、評価期間の終了後に以前の SQL を使用できなくなります。評価期間中にレガシー SQL を使用する組織とプロジェクトでは、使用している特定のレガシー SQL 機能を使用してクエリを実行し続けることができます。

機能の使用状況は組織レベルで集計されます。組織内のいずれかのプロジェクトが機能を使用している場合、その機能は組織内の他のすべてのプロジェクトで使用できます。組織に関連付けられていないプロジェクトの場合、機能の利用可能性はプロジェクト レベルで管理されます。

レガシー SQL の機能セット

レガシー SQL の機能は、基本言語機能、拡張言語機能、関数グループの 3 つの機能セットに分類されます。以降のセクションでは、各セット内の機能について詳しく説明します。

基本的な言語機能

これらの機能は、レガシー SQL のコアです。この機能セット全体は、評価期間中に少なくとも 1 つのレガシー SQL クエリを実行する組織またはスタンドアロン プロジェクトで使用できます。

カテゴリ 機能
クエリ構文
  • SELECT
  • FROM
  • JOIN
  • WHERE
  • GROUP BY
  • HAVING
  • ORDER BY
  • LIMIT
式のロジック リテラル:
  • TRUE
  • FALSE
  • NULL

論理演算子:
  • AND
  • OR
  • NOT

比較関数:
  • =
  • !=
  • <>
  • <
  • <=
  • >
  • >=
  • IN
  • IS NULL
  • IS NOT NULL
  • IS_EXPLICITLY_DEFINED
  • IS_INF
  • IS_NAN
  • ... BETWEEN ... AND ...

制御フロー ステートメント:
  • IF
  • IFNULL
  • CASE WHEN … THEN …
基本的なオペレーション 算術演算子:
  • +
  • -
  • *
  • /
  • %

基本的な集計関数:
  • AVG
  • COUNT
  • FIRST
  • LAST
  • MAX
  • MIN
  • NTH
  • SUM
データ要素 基本データ型:
  • BYTES
  • BOOLEAN
  • FLOAT
  • INTEGER
  • STRING
  • TIMESTAMP

構造化データ型と部分的にサポートされているデータ型:
  • 完全一致(数値): NUMERICBIGNUMERIC
  • Civil Time:DATETIMEDATETIME
  • 構造化フィールド: ネストされたフィールド、繰り返しフィールド

キャスト関数:
  • CAST(expr AS type)
  • BOOLEAN
  • BYTES
  • FLOAT
  • INTEGER
  • STRING

強制型変換: すべてのデータ型の自動強制型変換が含まれます。

拡張言語機能

このカテゴリには、基本セットを超える特定のレガシー SQL 機能が含まれます。基本的な機能や機能のグループ化とは異なり、このカテゴリの各機能は個別に追跡されます。評価期間中に各機能を明示的に使用する必要があります。そうしないと、機能は利用できなくなります。

カテゴリ 機能
拡張機能

関数のグループ化

組み込み関数は、関連するカテゴリに分類されています。評価期間中にグループ化内で単一の関数を使用すると、そのグループ化内のすべての関数が使用可能になります。

機能グループ 関数
高度なウィンドウ関数
  • 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
統計情報の集計関数
  • CORR
  • COVAR_POP
  • COVAR_SAMP
  • STDDEV
  • STDDEV_POP
  • STDDEV_SAMP
  • VARIANCE
  • VAR_POP
  • VAR_SAMP
繰り返しフィールドを返す集計関数
  • NEST
  • QUANTILES
  • UNIQUE
ビット演算を含む集計関数
  • BIT_AND
  • BIT_OR
  • BIT_XOR
連結を含む集計関数
  • GROUP_CONCAT
  • GROUP_CONCAT_UNQUOTED
並べ替えを含む集計関数
  • COUNT([DISTINCT])
  • EXACT_COUNT_DISTINCT
  • TOP ... COUNT(*)
基本的なウィンドウ関数
  • AVG
  • COUNT(*)
  • COUNT([DISTINCT])
  • MAX
  • MIN
  • STDDEV
  • SUM
ビット演算関数
  • &
  • |
  • ^
  • <<
  • >>
  • ~
  • BIT_COUNT
条件式
  • COALESCE
  • EVERY
  • GREATEST
  • LEAST
  • NVL
  • SOME
変換関数
  • FROM_BASE64
  • HEX_STRING
  • TO_BASE64
現在時刻関数
  • NOW
  • CURRENT_DATE
  • CURRENT_TIME
  • CURRENT_TIMESTAMP
現在のユーザー関数
  • CURRENT_USER
日付と時刻の関数
  • DATE
  • DATE_ADD
  • DATEDIFF
  • TIME
  • TIMESTAMP
関数 RAND
  • RAND
繰り返しフィールドを返す関数
  • POSITION
  • SPLIT
ハッシュ関数
  • HASH
  • SHA1
  • FARM_FINGERPRINT
IP 関数
  • FORMAT_IP
  • FORMAT_PACKED_IP
  • PARSE_IP
  • PARSE_PACKED_IP
JSON 関数
  • JSON_EXTRACT
  • JSON_EXTRACT_SCALAR
数学関数
  • ABS
  • ACOS
  • ASIN
  • ATAN
  • ATAN2
  • CEIL
  • COS
  • DEGREES
  • EXP
  • FLOOR
  • LN
  • LOG
  • LOG10
  • LOG2
  • PI
  • POW
  • RADIANS
  • ROUND
  • SIN
  • SQRT
  • TAN
数学的な双曲線関数
  • ACOSH
  • ASINH
  • ATANH
  • COSH
  • SINH
  • TANH
TIMESTAMP 関数の引数
  • DAY
  • DAYOFWEEK
  • DAYOFYEAR
  • HOUR
  • MINUTE
  • MONTH
  • QUARTER
  • SECOND
  • WEEK
  • YEAR
正規表現関数
  • REGEXP_MATCH
  • REGEXP_EXTRACT
  • REGEXP_REPLACE
文字列関数
  • CONTAINS
  • CONCAT
  • INSTR
  • LEFT
  • LENGTH
  • LOWER
  • LPAD
  • LTRIM
  • REPLACE
  • RIGHT
  • RPAD
  • RTRIM
  • SUBSTR
  • UPPER
URL 関数
  • HOST
  • DOMAIN
  • TLD
UNIX タイムスタンプ関数
  • 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

機能の提供状況の例

次の例は、機能の可用性の仕組みを示しています。

例: 基本的な言語機能にアクセスする

プロジェクトは、評価期間中にレガシー SQL クエリを実行します。テーブル TINTEGER 型の列 X が含まれているとします。

#legacySQL
SELECT X FROM T

この使用量により、組織内のすべてのプロジェクトで、基本言語機能セットの任意の機能を使用するクエリを実行できるようになります。たとえば、次のクエリは引き続き機能します。

#legacySQL
SELECT X FROM T WHERE X > 10

例: 関数グループを使用する

プロジェクトでは、特定の関数グループの 1 つの関数を使用します。テーブル TFLOAT 型の列 X が含まれているとします。

#legacySQL
SELECT SIN(X) FROM T

SIN() 関数を使用すると、数学関数グループ全体を使用できます。したがって、組織内のすべてのプロジェクトは、そのグループの他の関数(COS() など)を使用できます。

#legacySQL
SELECT COS(X) FROM T

逆に、組織内のどのプロジェクトも統計グループ化の集計関数を使用していない場合、次のクエリは評価期間後に失敗します。

#legacySQL
SELECT STDDEV(X) FROM T

例: 複数のテーブルにわたる特徴の保持

テーブル X に列 AINTEGER)があり、テーブル Y に列 BFLOAT)があるとします。プロジェクトでは、評価期間中に次のクエリを実行します。

#legacySQL
SELECT SIN(A) FROM X

組織は、評価期間の終了後に次のクエリを実行できます。このクエリが機能するのは、最初のクエリで数学関数機能が保持されたためです。INTEGERFLOAT はどちらも基本言語機能の一部であるため、保持は使用される特定のテーブル、列名、データ型とは無関係です。

#legacySQL
SELECT COS(B) FROM Y

例: 複雑なクエリ

テーブル TSTRING 型の列 X が含まれているとします。プロジェクトは、評価期間中に次のクエリを実行します。

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

このクエリでは、基本的な言語機能の機能と、基本的なウィンドウ関数、文字列関数、繰り返し値を返す関数の 3 つの関数グループを使用します。組織内のすべてのプロジェクトでこれらの機能が保持されます。したがって、同じ保持された特徴セットから異なる関数の組み合わせを使用する新しいクエリは成功します。

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

よくある質問

新しい組織でレガシー SQL を使用できますか?

評価期間が終了すると、新しい組織やプロジェクトで以前の SQL を使用できなくなります。特別なケースでは、免除をリクエストできます。Google フォームにアクセスできない場合は、組織 ID、現在の使用レベル、最近の使用日、移行の課題、GoogleSQL への移行の推定タイムラインを記載して、bq-legacysql-support@google.com にメールを送信してください。

既存のレガシー SQL クエリは動作しなくなりますか?

既存のクエリは、使用しているレガシー SQL 機能が評価期間中に組織内の少なくとも 1 つのプロジェクトで使用されていれば、引き続き機能します。この期間中に使用されなかった機能に依存するクエリは失敗する可能性があるため、すべての重要なクエリが実行されるようにすることをおすすめします。

レガシー SQL を使用している既存の組織で、レガシー SQL を使用する新しいプロジェクトを作成できますか?

はい。評価期間中に組織内のプロジェクトがアクセスしたすべての機能は、組織内のすべてのプロジェクト(新旧を問わず)で引き続き使用できます。

組織で使用されているレガシー SQL 機能を確認するツールはありますか?

特定の機能の使用状況を監査するツールはありません。レガシー SQL の使用状況を追跡するには、プロジェクトあたりのレガシー SQL クエリジョブの数の説明に沿って INFORMATION_SCHEMA.JOBS ビューをクエリします。Cloud Logging でクエリログを確認して、特定の構文の使用状況を確認することもできます。

GoogleSQL に移行する必要があるか

移行は必須ではありませんが、行うことをおすすめします。GoogleSQL は、最新のフル機能の推奨言語です。

評価期間中に、ほとんど使用されていないレガシー SQL クエリが実行されない場合はどうなりますか?

クエリが引き続き機能するようにするには、評価期間中に 1 回実行します。その時点で実行できない場合は、免除をリクエストできます。Google フォームにアクセスできない場合は、組織 ID、現在の使用レベル、最近の使用日、移行の課題、GoogleSQL への移行の推定タイムラインを記載して、bq-legacysql-support@google.com にメールを送信してください。

次のステップ

  • クエリをレガシー SQL から GoogleSQL に移行するには、移行ガイドをご覧ください。