Amazon QuickSight で BigQuery を経由してスプレッドシートのデータを可視化できるのか確認してみた
はじめに
QuickSight から Google スプレッドシートの内容を分析、可視化したいと思ったことはありませんか?
BigQuery ではスプレッドシートのデータを外部テーブルで参照する方法があります。QuickSight からこの方法を試すと、QuickSight 上でデータセットの作成はできるものの、データ取得時に API エラーが発生しました。本記事ではこのエラーについて検証した結果を紹介します。
検証結果早見
BigQuery のテーブル種類によって QuickSight の対応状況は異なりました。
BigQuery と QuickSight の組み合わせについてのサポート状況をまとめました。
テーブル種類 | データソース | データセット作成 | データアクセス | 結果 |
---|---|---|---|---|
ネイティブテーブル | BigQuery 内部 | ✅ 可能 | ✅ 可能 | ✅ OK |
BigLake テーブル | Cloud Storage | ✅ 可能 | ✅ 可能 | ✅ OK |
BigLake 以外の外部テーブル | Google Drive | ✅ 可能 | ❌ エラー | ❌ NG |
つまり、スプレッドシートのデータを BigQuery 経由で QuickSight で分析、可視化はできませんでした。
検証のきっかけ
QuickSight のデータソースとして BigQuery を利用しました。接続環境は以下の記事を参照ください。
BigQuery を利用してスプレッドシートの内容を BigQuery 経由でアクセスし、QuickSight で分析・可視化したいと考えました。
エラーが起きる
BigQuery で Google Drive を参照する外部テーブルの場合、QuickSight では以下のエラーが発生しました。
- QuickSight 上でデータセット作成は成功
- データ取得時に API エラーが発生
- ダイレクトクエリ、SPICE 取り込みの両方でエラー
データセットは作成できるのにエラーになるとはどういうことなのか、戦いがはじまりました。
BigQuery のテーブル種類について
BigQuery では 2 つの大きなカテゴリに分類される 3 つのテーブル種類があります。
- ネイティブテーブル
- 外部テーブル
- BigLake テーブル
- BigLake 以外の外部テーブル
ネイティブテーブル
BigQuery 内部に格納した構造化データのテーブルです。今回問題となったのは外部テーブルです。
外部テーブル
外部テーブルは BigQuery 以外のデータソースを参照するテーブルです。外部テーブルには BigLake テーブルと、BigLake 以外の外部テーブルの 2 つのタイプがあります。
AWS で例えると S3 に保存したデータを Athena 経由でアクセスするイメージです。
スプレッドシートを参照するのは BigLake 以外の外部テーブル に該当します。
検証方法
BigQuery に 3 つのテーブルを作成しました。
QuickSight で各テーブルに対してデータセットを作成します。
3 つのデータセットを作成できました。
後は地道に各データセットのデータを読み込めるかテストしていきます。
検証結果
ネイティブテーブルと BigLake テーブル
ネイティブテーブルと BigLake テーブルは QuickSight から正常にアクセスできました。データセット作成からデータ取得まで問題なく動作します。
BigLake 以外の外部テーブル(Google Drive 参照)
Google Drive のスプレッドシートを参照する外部テーブルでは以下の結果となり、QuickSight からは利用できませんでした。
- データセット作成は成功
- データ取得時に BigQuery の API エラーが発生
- ダイレクトクエリ、SPICE 取り込みの両方で同様のエラー
エラーメッセージ詳細
sourceErrorCode: 100032
sourceErrorMessage: [Simba][BigQueryJDBCDriver](100032) Error executing query job. Message: BIGQUERY_API_ERR
sourceErrorState: HY000
sourceException: java.sql.SQLException
sourceType: BIGQUERY
まとめ
地道な検証により、BigQuery のテーブル種類によって QuickSight の対応状況が異なることがわかりました。スプレッドシートを QuickSight から BigQuery 経由で分析、可視化はできませんでした。
テーブル種類 | データソース | データセット作成 | データアクセス | 結果 |
---|---|---|---|---|
ネイティブテーブル | BigQuery 内部 | ✅ 可能 | ✅ 可能 | ✅ OK |
BigLake テーブル | Cloud Storage | ✅ 可能 | ✅ 可能 | ✅ OK |
BigLake 以外の外部テーブル | Google Drive | ✅ 可能 | ❌ エラー | ❌ NG |
おわりに
Google Drive 上にあるスプレッドシートを QuickSight から見たければ、BigQuery が手軽なのではと思って初めてたののですがダメでした。ダメということがわかったので検証としては満足です。