🕶️

【2025/8/1〜】CLI派は注意!BigQueryのSQLダイアレクトが強制変更されます

に公開

はじめに

googleよりレガシーSQLの利用について広報があったのでまとめます。

原文

We’re writing to notify you that starting August 1, 2025, GoogleSQL will become the default dialect for queries. If you wish to continue using LegacySQL, you will need to explicitly specify it in your requests.

If you do not intend to use the LegacySQL dialect, this change does not affect you.

We have provided additional information below to guide you through this change.
What you need to know

Key changes:

The change applies only to queries sent through a BigQuery command line interface or directly through BigQuery API. In the Cloud Console, BigQuery API client libraries, and Google JDBC/ODBC drivers, we already treat GoogleSQL as the default dialect.

GoogleSQL was introduced nine years ago and we keep innovating on its capabilities and performance. Therefore, we recommend it for all new use cases.
What you need to do

Required actions:

If you would like to use LegacySQL, here are your options:

Specify it per-query, using the useLegacySql flag.
Set the configuration setting 'default_sql_dialect_option' to ‘default_legacy_sql’ at the project or organization level.

Timeline and potential impact:

If you do not take action by August 1, 2025, your queries (in the CLI and API) will be interpreted as GoogleSQL by default, and they may start failing if they use LegacySQL syntax that is unsupported in GoogleSQL.

If you want to list any jobs that are using LegacySQL, you can query the ‘query_dialect’ column from the INFORMATION_SCHEMA.JOBS view.
We’re here to help

We understand that these changes might require you to make some adjustments. If you have any questions or require assistance, please contact Google Cloud Support.

Thanks for choosing Google BigQuery.

🔔 お知らせの概要

2025年8月1日から、BigQueryで使われるSQLのデフォルトの書き方(ダイアレクト) が、これまでの「LegacySQL(レガシーSQL)」ではなく、 「GoogleSQL(旧:Standard SQL)」に変更 されます。

💡 LegacySQLとは?

LegacySQL(レガシーSQL)は、Google BigQueryで最初に使われていた古いSQL構文のスタイルです。

BigQueryがリリースされた初期(2011年ごろ)から使われていて、一般的なSQLと少し違う独自ルールが多く含まれています。

📌 特徴と違い(GoogleSQLとの比較)

項目 LegacySQL GoogleSQL(旧称:StandardSQL)
構文の標準性 独自仕様(非標準) ANSI SQLに準拠(標準SQL)
JOINのサポート 制限が多い 柔軟に使える
サブクエリやWITH句 使えない/制限あり 自由に使える
ネスト・スカラー関数 限定的 高機能・最新
推奨度 非推奨(将来的に廃止も?) 現在の推奨スタイル

🧪 LegacySQLの構文例

SELECT word, SUM(word_count) 
FROM [publicdata:samples.shakespeare] 
GROUP BY word
ORDER BY SUM(word_count) DESC
  • [dataset:table] のような 角括弧記法 が特徴。
  • 現在のGoogleSQLではこのような記法は使いません。

🧭 なぜまだ使われることがあるの?

  • 古くからBigQueryを使っていたシステムがレガシー構文を引き継いでいるケース。
  • すでに作られたダッシュボードやバッチジョブがLegacySQLベースで動いていることも。

✅ 整理

  • LegacySQLはBigQuery初期の独自SQL
  • 今は、GoogleSQL(Standard SQL)への移行が強く推奨されています。
  • 新しくクエリを書くなら、基本的にGoogleSQLを使うのがベストです。

🎯 何が変わるの?

  • これまで
    • 明示的に指定しなければ LegacySQL が使われる場合もありました。
  • これから
    • GoogleSQLがデフォルトになります。
    • LegacySQLを使いたい場合は明示的に指定する必要があります。

🛠️ 対象となる操作

この変更は次の方法でBigQueryを使っている場合に影響します:

  • コマンドライン(CLI)
  • BigQuery APIからのクエリ

以下の方法ではすでにGoogleSQLがデフォルトなので、影響はありません:

  • Cloud Console(ブラウザ画面)
  • APIクライアントライブラリ
  • JDBC/ODBCドライバ

✅ 対応が必要な人は?

LegacySQLをまだ使っている人は以下のどちらかの対応が必要です:

  1. クエリごとに useLegacySql フラグを指定する
  2. プロジェクトや組織レベルで default_sql_dialect_option'default_legacy_sql' に設定する

🔍 現在LegacySQLを使っているか確認したい場合は?

BigQueryの INFORMATION_SCHEMA.JOBS ビューを使って、query_dialect カラムを確認することで、LegacySQLを使っているクエリを一覧できます。

💥 対応しないとどうなる?

2025年8月1日以降に対応しないと、LegacySQLで書かれたクエリがエラーになる可能性があります(GoogleSQLではLegacySQLの構文が一部使えないため)。

合同会社カメレオンミーム Tech Blog

Discussion