レガシー SQL の機能の可用性
このドキュメントでは、評価期間中の使用状況に基づいて、2026 年 6 月 1 日以降に有効になる BigQuery レガシー SQL の可用性に関する今後の制限について説明します。これらの変更は、BigQuery がレガシー SQL から、BigQuery の推奨 ANSI 準拠言語である GoogleSQL に移行する一環として行われます。
GoogleSQL に移行すると、レガシー SQL よりも次のようなメリットがあります。
- BigQuery の高度なランタイムを使用すると、パフォーマンスが向上し、費用対効果が高くなります。
- これにより、DML ステートメントや DDL ステートメント、共通テーブル式(CTE)、複雑なサブクエリと結合述語、マテリアライズド ビュー、検索インデックス、生成 AI 関数など、レガシー SQL でサポートされていない機能を使用できます。
機能の利用可能性の仕組み
BigQuery は、評価期間中にレガシー SQL 機能の使用状況をモニタリングします。2025 年 11 月 1 日から 2026 年 6 月 1 日までの間に以前の SQL を使用していない組織とプロジェクトでは、評価期間の終了後に以前の SQL を使用できなくなります。評価期間中にレガシー SQL を使用する組織とプロジェクトでは、使用している特定のレガシー SQL 機能を使用してクエリを実行し続けることができます。
機能の使用状況は組織レベルで集計されます。組織内のいずれかのプロジェクトが機能を使用している場合、その機能は組織内の他のすべてのプロジェクトで使用できます。組織に関連付けられていないプロジェクトの場合、機能の利用可能性はプロジェクト レベルで管理されます。
レガシー SQL の機能セット
レガシー SQL の機能は、基本言語機能、拡張言語機能、関数グループの 3 つの機能セットに分類されます。以降のセクションでは、各セット内の機能について詳しく説明します。
基本的な言語機能
これらの機能は、レガシー SQL のコアです。この機能セット全体は、評価期間中に少なくとも 1 つのレガシー SQL クエリを実行する組織またはスタンドアロン プロジェクトで使用できます。
| カテゴリ | 機能 |
|---|---|
| クエリ構文 |
|
| 式のロジック | リテラル:
論理演算子:
比較関数:
制御フロー ステートメント:
|
| 基本的なオペレーション | 算術演算子:
基本的な集計関数:
|
| データ要素 | 基本データ型:
構造化データ型と部分的にサポートされているデータ型:
キャスト関数:
強制型変換: すべてのデータ型の自動強制型変換が含まれます。 |
拡張言語機能
このカテゴリには、基本セットを超える特定のレガシー SQL 機能が含まれます。基本的な機能や機能のグループ化とは異なり、このカテゴリの各機能は個別に追跡されます。評価期間中に各機能を明示的に使用する必要があります。そうしないと、機能は利用できなくなります。
| カテゴリ | 機能 |
|---|---|
| 拡張機能 |
関数のグループ化
組み込み関数は、関連するカテゴリに分類されています。評価期間中にグループ化内で単一の関数を使用すると、そのグループ化内のすべての関数が使用可能になります。
| 機能グループ | 関数 |
|---|---|
| 高度なウィンドウ関数 |
|
| 統計情報の集計関数 |
|
| 繰り返しフィールドを返す集計関数 |
|
| ビット演算を含む集計関数 |
|
| 連結を含む集計関数 |
|
| 並べ替えを含む集計関数 |
|
| 基本的なウィンドウ関数 |
|
| ビット演算関数 |
|
| 条件式 |
|
| 変換関数 |
|
| 現在時刻関数 |
|
| 現在のユーザー関数 |
|
| 日付と時刻の関数 |
|
| 関数 RAND |
|
| 繰り返しフィールドを返す関数 |
|
| ハッシュ関数 |
|
| IP 関数 |
|
| JSON 関数 |
|
| 数学関数 |
|
| 数学的な双曲線関数 |
|
| TIMESTAMP 関数の引数 |
|
| 正規表現関数 |
|
| 文字列関数 |
|
| URL 関数 |
|
| UNIX タイムスタンプ関数 |
|
機能の提供状況の例
次の例は、機能の可用性の仕組みを示しています。
例: 基本的な言語機能にアクセスする
プロジェクトは、評価期間中にレガシー SQL クエリを実行します。テーブル T に INTEGER 型の列 X が含まれているとします。
#legacySQL
SELECT X FROM T
この使用量により、組織内のすべてのプロジェクトで、基本言語機能セットの任意の機能を使用するクエリを実行できるようになります。たとえば、次のクエリは引き続き機能します。
#legacySQL
SELECT X FROM T WHERE X > 10
例: 関数グループを使用する
プロジェクトでは、特定の関数グループの 1 つの関数を使用します。テーブル T に FLOAT 型の列 X が含まれているとします。
#legacySQL
SELECT SIN(X) FROM T
SIN() 関数を使用すると、数学関数グループ全体を使用できます。したがって、組織内のすべてのプロジェクトは、そのグループの他の関数(COS() など)を使用できます。
#legacySQL
SELECT COS(X) FROM T
逆に、組織内のどのプロジェクトも統計グループ化の集計関数を使用していない場合、次のクエリは評価期間後に失敗します。
#legacySQL
SELECT STDDEV(X) FROM T
例: 複数のテーブルにわたる特徴の保持
テーブル X に列 A(INTEGER)があり、テーブル Y に列 B(FLOAT)があるとします。プロジェクトでは、評価期間中に次のクエリを実行します。
#legacySQL
SELECT SIN(A) FROM X
組織は、評価期間の終了後に次のクエリを実行できます。このクエリが機能するのは、最初のクエリで数学関数機能が保持されたためです。INTEGER と FLOAT はどちらも基本言語機能の一部であるため、保持は使用される特定のテーブル、列名、データ型とは無関係です。
#legacySQL
SELECT COS(B) FROM Y
例: 複雑なクエリ
テーブル T に STRING 型の列 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 に移行するには、移行ガイドをご覧ください。