Amazon QuickSight から BigQuery へ接続して SPICE 経由とダイレクトクエリを試してみた
はじめに
BigQuery に保存してあるデータを QuickSight で分析・可視化する機会がありました。AWS の公式ドキュメントには、BigQuery との接続について以下のように記載されています。
Datasets that use Google BigQuery can only be stored in SPICE.
引用元:https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/quicksight-google-big-query.html
BigQuery のデータセットは SPICE への保存が必須とされています。ダイレクトクエリもできたので試した後に知ったのですが、以前にアップデートがありドキュメントが更新されていないないだけでした。
そんなこんなで、BigQuery のデータを QuickSight で分析・可視化にあたり試したことをまとめます。QuickSight から BigQuery を使用する方向けに接続手順を整理し、SPICE とダイレクトクエリの両方の検証結果を紹介します。
検証環境
まずは SPICE にデータを保存する方法で QuickSight から BigQuery へ接続を試します。
QuickSight と BigQuery の接続手順については、以下の記事を参考にして作成しました。2025 年 5 月 31 日現在でも BigQuery の UI には大きな変更なく問題なく手順どおり接続できました。
接続方式は「その 1:QuickSight で BigQuery のデータセットを作成」を採用しています。
私自身久々に BigQuery を触ったこともあり、BigQuery 側の設定を中心にキャプチャを残しておきます。
BigQuery でのデータ準備
まずは BigQuery でデータセットとテーブルを作成します。
データセットの作成
東京リージョンを指定しました。
テーブルの作成
サンプルデータの CSV を直接アップロードしたテーブルを作成しました。
データの確認
今回作成したテーブルabashiri
が作成されたことを確認します。
CSV の内容そのままにデータを読み取ることができました。
必要なデータを BigQuery に保存する最低限の準備はこれで終わりです。
QuickSight から BigQuery への接続
再掲になりますが、QuickSight のために必要な BigQuery の設定は以下記事で紹介されている方法で問題ありませんでした。
Amazon QuickSightでGoogle BigQueryのデータを可視化する方法いろいろ | DevelopersIO
唯一、BigQuery のデータセットの共有手順の UI が少し変更されていましたが、特に困ることはありませんでした。
QuickSight から BigQuery のデータセット作成
QuickSight のデータセット作成からデータソースとして BigQuery を選択します。以下の項目を入力してサインインします。
- データソース名: 任意
- プロジェクト名: Google Cloud の画面で確認して入力
- データセットリージョン: BigQuery のデータセットを作成したリージョンを入力
サインインをクリック後に認証画面があり、認証が通ると BigQuery で作成したデータセットとテーブル名が表示されるようになります。
デフォルトは SPICE へインポートです。「データクエリを直接実行」も選択可能になっています。気になるので後で検証しました。
分析の作成
BigQuery をデータソースとしたデータセットのが完了したら、実際にビジュアルを作成して動作確認をしました。CSV ファイルの内容をそのまま表形式で表示してみました。問題なく BigQuery に保存したデータを参照できました。
ここまでは参考記事の通りに進めることができました。次はダイレクトクエリを試してみます。
ダイレクトクエリを試してみる
SPICE を使用しないダイレクトクエリでのデータセット作成を試してみました。
ダイレクトクエリでのデータセット作成
先ほど作成した BigQuery データソースから、今度は「データクエリを直接実行」を選択してデータセットを作成してみます。
同じ BigQuery データソースに対して SPICE あり/なしの両方のデータセットが作成できました。
パフォーマンスの違い
ダイレクトクエリでもビジュアルの作成は問題なく行えました。ただし、SPICE と比べると読み込み速度に違いは大きかったです。 インメモリの SPICE へ取り込み済みのデータと読み込み速度を比べるのはフェアではないのですけども。
ダイレクトクエリ
ダッシュボードでフィルタを操作した際、カテゴリの項目の表示にも読み込み時間がかかりました。SPICE に載っているデータであればキビキビ操作できるので体感でわかるレベルです。
Cloud Monitoring から該当の時間帯にクエリが実行されていることが確認できました。
同じ円グラフを SPICE に保存したデータセットから作成して比較してみました。こちらはフィルタの切り替えがスムーズでした。
ということで、BigQuery に対してダイレクトクエリもできました。
まとめ
今回の検証で分かったことをまとめます。
- QuickSight から BigQuery への接続は想像以上に簡単
- 公式ドキュメントの記載とは異なり、ダイレクトクエリも利用可能
- パフォーマンスを重視するなら SPICE、リアルタイム性を重視するならダイレクトクエリ
以下を参考に選択することをお勧めします。
項目 | SPICE | ダイレクトクエリ |
---|---|---|
レスポンス速度 | 早い | 中~低速(待機時間あり) |
データ更新 | 手動/スケジュール更新 | リアルタイム |
データ容量制限 | あり(SPICE容量制限) | なし |
コスト | QuickSight SPICE料金 | BigQuery クエリ料金 |
推奨用途 | 定期レポート、ダッシュボード | リアルタイムな分析 |
データ鮮度 | 更新タイミングに依存 | 常に最新 |
おわりに
BigQuery への接続は簡単でした。そして、BigQuery のダイレクトクエリ対応は AWS ドキュメントの更新がされていません。私の場合は QuickSight でダッシュボードを作成することが多く、そこまでリアルタイム性のあるデータは求めていなく日次更新できればだいたい OK です。ユーザー体験的には SPICE に載せてしまいたいのでクエリで調整しようかなと思いました。