0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CREATE TABLE や EXPORT を Redash から安全に実行するための DEBUG フラグ設計

Last updated at Posted at 2025-12-05

🧩 実務で困ったこと

Redash のクエリから BigQuery に対して

  • テーブルを作成する(CREATE TABLE AS SELECT ...)
  • Cloud Storage にエクスポートする(EXPORT DATA)

といった書き込み系の処理を走らせたいことがあります。
ただし実務だといきなり書き込むのは怖いので、Redash の結果画面で出力内容を確認し、問題なければ本番テーブルや GCS に 書き込むようにしたいです。

しかし Redash のクエリは、クエリを開くだけで実行されるため、意図しないタイミングで書き込み処理が走るリスクがあります。

そこで、Redash クエリ1本で「プレビュー」と「本番書き込み」を切り替えたい
というのが今回のテーマです。

🧮 最終的に採用した方法

やることはシンプルです。

  1. Redash のクエリパラメータに DEBUG フラグ(true/false)を用意する
  2. BigQuery のスクリプト内で IF を使って処理を分岐させる
    DEBUG = true のとき → 結果だけ SELECT(プレビュー)
    DEBUG = FALSE のとき → テーブル作成 / EXPORT など書き込み実行

という形にします。

サンプルクエリ

DECLARE __debug BOOLEAN DEFAULT {{DEBUG}};

IF __debug THEN

  -- ✅ プレビュー(クエリ結果だけ返す)
  SELECT "a" AS preview_result;

ELSE

  -- 🚀 本番書き込み(CREATE TABLE / EXPORT など)
  -- CREATE OR REPLACE TABLE `project.dataset.table` AS
  -- SELECT ...
  SELECT "b" AS write_result;

END IF;

これで、DEBUG=true のまま開いても書き込みが走らないため、安心してロジック確認ができるようになります。

📝 補足(運用上の注意)

Redash クエリから直接テーブル作成や Cloud Storage 出力を行う場合、
クエリ変更や実行タイミングの影響を受けやすく、

意図せず内容が更新される

ダッシュボード経由で勝手に実行される

ロジック変更が即 “本番に反映” される

といったリスクがあります。

そのため、Redash クエリで書き込み系処理を扱う場合は、

一時的に利用するテーブルや GCS パス

用途が限定された小さな処理

にとどめておくことを個人的にはおすすめします。

📝 補足(運用上の注意)

Redash クエリから直接テーブル作成や Cloud Storage 出力を行う場合、クエリ変更や実行タイミングの影響を受けやすく、

  • 意図せず内容が更新される
  • ロジック変更が即 “本番に反映” される

といったリスクがあります。そのため、Redash クエリで書き込み系処理を扱う場合は、

  • 一時的に利用するテーブルや GCS パス
  • 用途が限定された小さな処理

にとどめておくのを個人的にはおすすめします。

##⚠️ DEBUG フラグに関する注意
Redash では クエリ保存時のパラメータ値がそのまま保持されます。
一度 DEBUG = false(本番書き込み)に切り替えて保存すると次回クエリを開いたときも DEBUG = false のまま実行されます。
そのため、

  • デフォルト値を DEBUG = true にする
  • 書き込みを行う直前だけ false に変える
  • 書き込み終了後は true に戻してからクエリ保存する(パラメータが保持される)

といった運用にしておくと安全です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?