bqコマンドをインストールする

背景

仕事でBigQueryを利用することになりました。今までのBigQueryとの接点は、GoogleAnalyticsのデータに対してクエリを実行するくらいでした。
色々わかっていないところがあるので、これを機にしっかりと理解しようと思い、オライリーのGoogle BigQueryを読もうと思いました(5年前の本ですが、全体をざっとみて知りたい内容が多かったので購入しました)

読み進めていると、bqコマンドを利用する箇所がいくつか出てきました。最初は無視して読み進めていたのですが、実際に手を動かしてデータを扱う箇所でもbqコマンドを利用していました。これは環境を準備するしかないと思い、bqコマンドのインストールを行いました。その時のメモです。

全体の流れ

インストールの全体の流れはちゃんとドキュメントが用意されています。

bqコマンドラインツールの利用

このページにある

Cloud SDKをインストールして初期化しますのところをやっていきます。

Google Cloud SDK のインストール

先ほどのリンクにある手順通り行っていきます。

Pythonのインストール

まずはPythonをインストールします。最新のバージョンをインストールすればよいかと思いきや、サポートされているバージョンは 3.5~3.7、2.7.9 以降です。ということなので、3.7の最新版をインストールしようと思います。

まずは、pyenvを最新にします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ pyenv
pyenv 1.2.19-6-gbdfed51d
(省略)
$ anyenv update pyenv
Updating 'pyenv'...
| From https://github.com/yyuu/pyenv
| bdfed51d..806b30d6 master -> origin/master
| * [new tag] v1.2.21 -> v1.2.21
| * [new tag] v1.2.20 -> v1.2.20
Skipping 'pyenv/python-build'; not git repo
Updating 'anyenv manifest directory'...
| From https://github.com/anyenv/anyenv-install
| dcbcfe1..d9791df master -> origin/master
$ pyenv
pyenv 1.2.21
(省略)

次に、インストールするバージョンを確認します。

1
2
3
4
5
6
$ pyenv install -l
(省略)
3.7.8
3.7.9
3.8.0
(省略)

3.7系の最新は3.7.9なので3.7.9をインストールします。

1
2
3
4
5
6
7
8
9
10
11
12
$ pyenv install 3.7.9
Downloading openssl-1.1.0j.tar.gz...
-> https://www.openssl.org/source/old/1.1.0/openssl-1.1.0j.tar.gz
Installing openssl-1.1.0j...
Installed openssl-1.1.0j to /Users/user/.anyenv/envs/pyenv/versions/3.7.9

python-build: use readline from homebrew
Downloading Python-3.7.9.tar.xz...
-> https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tar.xz
Installing Python-3.7.9...
python-build: use readline from homebrew
Installed Python-3.7.9 to /Users/user/.anyenv/envs/pyenv/versions/3.7.9

3.7.9を利用するように設定します。

1
2
3
$ pyenv local 3.7.9
$ python --version
Python 3.7.9

Pythonのインストールは完了しました。

SDKのダウンロード

SDKをダウンロードします。
64ビット版をダウンロードします。

アーカイブをファイル システム上の任意の場所に展開します。ホーム ディレクトリを使用することをおすすめします。とのことなので、ホームディレクトリ下に展開します。

1
2
3
4
5
6
7
8
9
$ tar xzf ~/Downloads/google-cloud-sdk-312.0.0-darwin-x86_64.tar.gz -C .
$ cd google-cloud-sdk
$ ls
LICENSE completion.zsh.inc path.bash.inc
README data path.fish.inc
RELEASE_NOTES deb path.zsh.inc
VERSION install.bat platform
bin install.sh properties
completion.bash.inc lib rpm

インストールスクリプトの実行

展開したファイルの中のinstall.shを実行します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
$ cd ..
$ ./google-cloud-sdk/install.sh
Welcome to the Google Cloud SDK!

To help improve the quality of this product, we collect anonymized usage data
and anonymized stacktraces when crashes are encountered; additional information
is available at <https://cloud.google.com/sdk/usage-statistics>. This data is
handled in accordance with our privacy policy
<https://policies.google.com/privacy>. You may choose to opt in this
collection now (by choosing 'Y' at the below prompt), or at any time in the
future by running the following command:

gcloud config set disable_usage_reporting false

Do you want to help improve the Google Cloud SDK (y/N)? y


Your current Cloud SDK version is: 312.0.0
The latest available version is: 315.0.0

┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Components │
├──────────────────┬──────────────────────────────────────────────────────┬──────────────────────────┬──────────┤
│ Status │ Name │ ID │ Size │
├──────────────────┼──────────────────────────────────────────────────────┼──────────────────────────┼──────────┤
│ Update Available │ BigQuery Command Line Tool │ bq │ < 1 MiB │
│ Update Available │ Cloud SDK Core Libraries │ core │ 15.4 MiB │
│ Update Available │ Cloud Storage Command Line Tool │ gsutil │ 3.5 MiB │
│ Not Installed │ App Engine Go Extensions │ app-engine-go │ 4.8 MiB │
│ Not Installed │ Appctl │ appctl │ 18.5 MiB │
│ Not Installed │ Cloud Bigtable Command Line Tool │ cbt │ 7.6 MiB │
│ Not Installed │ Cloud Bigtable Emulator │ bigtable │ 6.6 MiB │
│ Not Installed │ Cloud Datalab Command Line Tool │ datalab │ < 1 MiB │
│ Not Installed │ Cloud Datastore Emulator │ cloud-datastore-emulator │ 18.4 MiB │
│ Not Installed │ Cloud Firestore Emulator │ cloud-firestore-emulator │ 42.1 MiB │
│ Not Installed │ Cloud Pub/Sub Emulator │ pubsub-emulator │ 56.3 MiB │
│ Not Installed │ Cloud SQL Proxy │ cloud_sql_proxy │ 7.3 MiB │
│ Not Installed │ Emulator Reverse Proxy │ emulator-reverse-proxy │ 14.5 MiB │
│ Not Installed │ Google Cloud Build Local Builder │ cloud-build-local │ 6.2 MiB │
│ Not Installed │ Google Container Registry's Docker credential helper │ docker-credential-gcr │ 1.8 MiB │
│ Not Installed │ Kind │ kind │ 4.4 MiB │
│ Not Installed │ Kustomize │ kustomize │ 22.8 MiB │
│ Not Installed │ Minikube │ minikube │ 24.0 MiB │
│ Not Installed │ Nomos CLI │ nomos │ 17.6 MiB │
│ Not Installed │ Skaffold │ skaffold │ 15.3 MiB │
│ Not Installed │ anthos-auth │ anthos-auth │ 16.2 MiB │
│ Not Installed │ gcloud Alpha Commands │ alpha │ < 1 MiB │
│ Not Installed │ gcloud Beta Commands │ beta │ < 1 MiB │
│ Not Installed │ gcloud app Java Extensions │ app-engine-java │ 59.5 MiB │
│ Not Installed │ gcloud app PHP Extensions │ app-engine-php │ 21.9 MiB │
│ Not Installed │ gcloud app Python Extensions │ app-engine-python │ 6.1 MiB │
│ Not Installed │ gcloud app Python Extensions (Extra Libraries) │ app-engine-python-extras │ 27.1 MiB │
│ Not Installed │ kpt │ kpt │ 11.7 MiB │
│ Not Installed │ kubectl │ kubectl │ < 1 MiB │
│ Not Installed │ pkg │ pkg │ │
└──────────────────┴──────────────────────────────────────────────────────┴──────────────────────────┴──────────┘
To install or remove components at your current SDK version [312.0.0], run:
$ gcloud components install COMPONENT_ID
$ gcloud components remove COMPONENT_ID

To update your SDK installation to the latest version [315.0.0], run:
$ gcloud components update


Modify profile to update your $PATH and enable shell command
completion?

Do you want to continue (Y/n)? Y

The Google Cloud SDK installer will now prompt you to update an rc
file to bring the Google Cloud CLIs into your environment.

Enter a path to an rc file to update, or leave blank to use
[/Users/user/.bash_profile]:
Backing up [/Users/user/.bash_profile] to [/Users/user/.bash_profile.backup].
[/Users/user/.bash_profile] has been updated.

==> Start a new shell for the changes to take effect.


For more information on how to get started, please visit:
https://cloud.google.com/sdk/docs/quickstarts

最新版のSDKに更新

インストールスクリプト実行中の出力に

1
2
To update your SDK installation to the latest version [315.0.0], run:
$ gcloud components update

とあったので、最新版のSDKに更新します。

.bash_profileに書かれた環境変数を読み込むためにシェルを再起動します。

1
$ exec $SHELL -l

上記に書いてあるように最新のSDKに更新します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ gcloud components update


Your current Cloud SDK version is: 312.0.0
You will be upgraded to version: 315.0.0

┌─────────────────────────────────────────────────────────┐
│ These components will be updated. │
├─────────────────────────────────┬────────────┬──────────┤
│ Name │ Version │ Size │
├─────────────────────────────────┼────────────┼──────────┤
│ BigQuery Command Line Tool │ 2.0.62 │ < 1 MiB │
│ Cloud SDK Core Libraries │ 2020.10.16 │ 15.4 MiB │
│ Cloud Storage Command Line Tool │ 4.53 │ 3.5 MiB │
│ gcloud cli dependencies │ 2020.10.02 │ 10.6 MiB │
└─────────────────────────────────┴────────────┴──────────┘

The following release notes are new in this upgrade.

(省略)

Update done!

To revert your SDK to the previously installed version, you may run:
$ gcloud components update --version 312.0.0

これで更新が完了しました。

gcloud initの実行

gcloud initを実行してSDKを初期貸します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ gcloud init
Welcome! This command will take you through the configuration of gcloud.

Your current configuration has been set to: [default]

You can skip diagnostics next time by using the following flag:
gcloud init --skip-diagnostics

Network diagnostic detects and fixes local network connection issues.
Checking network connection...done.
Reachability Check passed.
Network diagnostic passed (1/1 checks passed).

You must log in to continue. Would you like to log in (Y/n)? Y

ここで、Yを入力すると、アカウント確認画面が表示されます。アカウントを選択すると、ブラウザにOAuthの認可画面が表示されます。許可をクリックします。すると、 Google Cloud SDK 認証の完了と表示されます。

ターミナルに戻るとプロジェクトを選択するようになっているので、これから利用するプロジェクトを選択します。数字を入力しエンターを押すと以下のようなメッセージが表示されます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Not setting default zone/region (this feature makes it easier to use
[gcloud compute] by setting an appropriate default value for the
--zone and --region flag).
See https://cloud.google.com/compute/docs/gcloud-compute section on how to set
default compute region and zone manually. If you would like [gcloud init] to be
able to do this for you the next time you run it, make sure the
Compute Engine API is enabled for your project on the
https://console.developers.google.com/apis page.

Created a default .boto configuration file at [/Users/user/.boto]. See this file and
[https://cloud.google.com/storage/docs/gsutil/commands/config] for more
information about configuring Google Cloud Storage.
Your Google Cloud SDK is configured and ready to use!

* Commands that require authentication will use shibagaki.motoaki.rt@mynavi.jp by default
* Commands will reference project `mynavi-cm-adfair` by default
Run `gcloud help config` to learn how to change individual settings

This gcloud configuration is called [default]. You can create additional configurations if you work with multiple accounts and/or projects.
Run `gcloud topic configurations` to learn more.

Some things to try next:

* Run `gcloud --help` to see the Cloud Platform services you can interact with. And run `gcloud help COMMAND` to get help on any gcloud command.
* Run `gcloud topic --help` to learn about advanced features of the SDK like arg files and output formatting

デフォルトのzone/regionの設定がされていないと言われますが、 Your Google Cloud SDK is configured and ready to use!とも書かれているので、こちらで使えるかどうか試してみます。

bqコマンドの確認

bqコマンドがあるかどうか確認します

1
2
$ which bq
/Users/user/google-cloud-sdk/bin/bq

パスは通っているようです

1
2
$ bq version
This is BigQuery CLI 2.0.62

大丈夫そうですね。

まとめ

Google BigQueryを読み進めていくためにbqコマンドを利用できるようにしました。読み進めていきながら実際にコマンドを実行したいと思います。