
Hasura(cloud)のGraphQLエンジンからBigQueryを繋いで参照してみる
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
HasuraではGoogleのBigQueryに接続し、データベーススキーマに基づいてGraphQLAPIを構築していくことが可能になっています。
現状、BigQueryとの接続でサポートされているのはQUERYのみのようです。
やってみる
前提
まずはHasura Cloudでアカウントを作成しておく必要があります。
BigQueryでは
- gcpのプロジェクトID
- graphqlで公開できるデータセット
- プロジェクトを照会するためのサービスアカウント
が必要です。
接続を作成
Hasura Cloudにログインし、Data->Data Manager->Connect Existing Database のページで設定を行なっていきます。

Database Display Name- 接続の名前を入力
Data Source Driver- 接続するデータベースの種類を選択します。
- 今回であれば
BigQuery(beta)にします
Connect Database Via- データベースに接続するための情報を入力します。
- BigQueryでの接続にはサービスアカウントが必要になってきます
- JSON形式のキーをGCPからダウンロードできます
Connection Parametersにサービスアカウントキーの中身を直接入力するか、Environment VariableでHasuraのプロジェクトに設定できる環境変数を指定できます- 環境変数:

- 環境変数:
- JSON形式のキーをGCPからダウンロードできます
Project Id- GCPのプロジェクトIDを入力します
Datasets- Hasuraと連携するBigQueryのデータセットを入力します。カンマ区切りで複数のデータセットを指定できます
Global Select Limit- 返される最大行数を指定します(default 1000)
入力後、Connect Databaseボタンを押して作成します

テーブルの追跡を設定
データセットとの接続が完了後、作成した接続の詳細ページに遷移します。

Untracked tables or viewsの箇所にテーブル一覧が表示されます
Trackを押すことでGraphQL APIで公開できるようになります。

公開すると、コンソール上からもデータを参照できるようになります。
HasuraのGraphQLエンジンはBiggQueryのテーブル/ビューに基づいてGraphQLスキーマとリゾルバーを自動的に生成します。 GraphQLスキーマやリゾルバーを作成する必要はありません。

別のテーブルとのリレーションシップの作成も可能です。
GraphQLクエリを実行してみる
コンソールのAPI->GraphiQLのページで実行してみます。

公開したテーブルに対してクエリを実行することができるようになりました。

リレーションシップ構築後のクエリも無事に実行可能です。

GraphQLクエリを実行したときに、BigQuery側でどのようなクエリが実行されたのかをCloud Loggingで参照することができるので、実際に見てみると良いと思います。








