Google BigQuery
Google BigQuery 上のデータを、SQL を書いて取り出し、データソースとして登録できます。
必要な情報
接続情報(必須)
BigQuery オプション
ほかのデータベース系にはない、BigQuery だけの 3 つです。 見出しは画面でもBigQueryオプションと出ます。
- ロケーション
- データセットが置かれている場所を一覧から選びます。はじめは
USが選ばれています。選べるのはUS/EU/us-west2/northamerica-northeast1/us-east4/southamerica-east1/europe-north1v/europe-west2/europe-west6/asia-east2/asia-south1/asia-northeast2/asia-east1/asia-northeast1/asia-southeast1/australia-southeast1の 16 個です。場所が違うとデータセットが見つかりません。Google Cloud コンソールのデータセットの詳細に出ている場所を選んでください。 - 一時テーブルを作成するデータセット名(巨大データ用)
- BigQuery 側に一時テーブルを作る置き場です。接続情報を選ぶと、そのプロジェクトのデータセットが一覧に出るので、そこから選びます。ふつうの読み込みでは空のままで構いません。効くのは Hyper nehan を契約している組織の読み込みだけで、そのときは指定が必須です。空のまま実行すると「一時テーブルを作成するデータセット名を指定してください。」と出ます。
- BigQuery Storage APIを使用して高速に読み込む(GCPの料金が別途かかります)
- ON にすると BigQuery Storage API を使って読み込みます。画面のラベルのとおり、GCP 側の料金が別にかかります。この設定もHyper nehanを契約している組織の読み込みでだけ効き、そのときはON が必須です。OFF のまま実行すると「Hyper版ではストレージAPIを有効にしてください」と出ます。ふつうの読み込みでは、ON にしても OFF にしても動きは変わりません。
BigQuery Storage API を有効にする手順
- Google Cloud コンソールを開きます。
- 対象のプロジェクトを選びます(なければ新しく作ります)。
- 左のメニューからAPI とサービス→ダッシュボードを選びます。
- API とサービス ダッシュボードでライブラリを選びます。
- API ライブラリでBigQuery Storage APIを探します。
- 検索結果からBigQuery Storage APIを選びます。
- 詳細の画面で、上にある有効にするを押します。
テーブルを確認する
接続情報を選ぶと、データセット → テーブル → 列の順にたどれるようになります。選んだテーブルはテーブルプレビュー機能で中身が見られ、クエリ補完機能の候補にも入ります。
クエリ(必須)
SQL エディタに SQL を書きます。画面での欄の名前はクエリです。
ほかのデータベース系との違い
| 見るところ | Google BigQuery | ほかのデータベース系 |
|---|---|---|
| 固有の設定 | ロケーション / 一時テーブルを作成するデータセット名(巨大データ用) / BigQuery Storage APIを使用して高速に読み込む | Treasure Data のSQL エンジン以外は無し |
| テーブルのたどり方 | データセット → テーブル → 列 | データタイプごとに違う(SQL を書いて取り込むデータタイプの表) |
| 列編集操作 | 使えません | 使えません |
データベース系のデータタイプでは、列の名前や型をデータソースの画面で変えられません。 変えたいときは SQL の中で AS や CAST を使うか、分析プロジェクトの列操作で変えてください。
うまくいかないとき
どのメッセージも、SQLを実行するか実行して保存したあとに出ます。 画面の上に赤い帯で出て、そのままでは保存できません(データソースの読み込みステータス)。
クエリが空のまま実行した
クエリに 1 文字も書かずに実行したときに出ます。
クエリを入力してください。
直し方 — SQL を書いてから実行してください。
SQL の書き方が違う
BigQuery が SQL として受け付けなかったときに出ます。
構文エラーが検出されました。
{{original_message}}
直し方 — 後ろに付いている BigQuery からの文面に、どこで止まったかが出ます。クエリ補完機能を使って、テーブル名や列名を打ち間違えていないかも確かめてください。
データセットが見つからない
ロケーションで選んだ場所に、SQL に書いたデータセットがないときに出ます。データセットそのものがあっても、場所が違えば見つかりません。
{{dataset_name}}が{{location}}ロケーションで見つかりませんでした。
直し方 — Google Cloud コンソールのデータセットの詳細に出ている場所を見て、ロケーションを選び直してください。
テーブル名にデータセット名が付いていない
SQL のテーブル名がデータセット名を含んでいないときに出ます。nehan は既定のデータセットを指定しないので、省略できません。
{{table_name}}が見つかりませんでした。クエリにデータセット名も記述してください。
直し方 — プロジェクト.データセット.テーブル の形で書いてください。
列名が _ で始まっている
BigQuery が _PARTITION _TABLE_ _FILE_ _ROW_TIMESTAMP で始まる列名を受け付けないときに出ます。
"_"から始まる列名は使用できません。列名を変更するか、対象から省いてください。{{original_message}}
直し方 — SQL の中で AS を使って別の名前を付けるか、その列を SELECT から外してください。
権限が足りない
接続情報のサービスアカウントに、そのプロジェクトやデータセットを読む権限がないときに出ます。
プロジェクト:
{{project}}に対する{{permission}}権限がありません。Google BigQuery の権限をご確認ください。
直し方 — GCP コンソールで、そのサービスアカウントに roles/bigquery.user や roles/bigquery.dataViewer などのロールを付けてください(Google BigQueryの手順 5)。
認証が取り消されたか期限切れになっている
サービスアカウントキーが無効にされたか、期限が切れているときに出ます。
認証情報が取り消されたか、期限切れになっています。
{{original_message}}
直し方 — GCP コンソールで新しい JSON キーを作り、接続情報(Google BigQuery)を作り直してください。
鍵の中の改行が崩れている
接続情報に貼った JSON が、JSON として読めないときに出ます。
接続情報が不正です。アクセスキー内のprivate_keyが「“」で囲まれているかなど、JSONの書式を確認してください。
直し方 — テキストエディタで整形せず、ダウンロードしたままの字を貼ってください。
鍵の JSON が壊れている
JSON としては読めるが、サービスアカウントキーとして足りない項目があるときに出ます。
接続情報が不正です。サービスアカウントJSONのフォーマットに誤りがあります。GCPコンソールからダウンロードしたJSONの内容を正しく貼り付けているか確認してください。
直し方 — ダウンロードしたファイルの中身をまるごと貼り直してください。
時間がかかりすぎて切れた
BigQuery からの応答を待つ間に時間切れになったときに出ます。
bigqueryへの接続がタイムアウトしました。データ量を少なくするか、時間を置いて再度実行ください。
直し方 — SQL の WHERE で取り込む範囲を絞ってから実行し直してください。