データサイエンス100本ノックはDockerコンテナで提供されています。Python/SQL/Rで勉強されている場合、Dockerコンテナを導入することで環境に悩まされず学習でき、本来やりたい「学習」に集中することができます。これは非常に良いコンテンツだと感じます。
データサイエンス100本ノックはSQLでも学習できますが、これはDockerコンテナにてすぐに動くデータベースが提供されているからです。本来であれば、データベースソフトをインストールし、設定し、データを投入するという手間がかかるわけですが、そのあたり全く気にせずに学習できるというのは非常にうまくやっているな、と思います(ちなみに、データベースはPostgreSQLです。同じフリーでもMySQLであればライセンス料金がかかったでしょうが、PostgreSQLであれば完全フリーです)。
ところで、Alteryxの場合は、問題文と元データ(CSVファイル)さえあれば特に環境については気にせずできるため、GitHubからデータ一式落とすことで簡単に始めることができました(それさえめんどくさい場合は、ウィークリーチャレンジ方式でstartファイル、solutionファイルを使うことで手軽に始めることができますが)。
さて、AlteryxでもIn-DBを勉強しようとするとなかなかハードルが高いかと思います。確かに個人的にMySQL使う分にはフリーですし、PostgreSQLも無料で利用可能です。その他のデータベースも開発者版など無料で利用できたりしますが、いずれにしてもセットアップなどなかなかめんどくさいものです(データベースのセットアップがやりたいわけじゃなくて、SQLを触りたいわけで・・・そこに手を取られると本末転倒・・・)。
ここで、データサイエンス100本ノックのDockerコンテナで提供されるPostgreSQLを使えばDockerの導入のみでデータ投入まで終わったデータベースが利用できるのは福音だと思います。
データサイエンス100本ノックのデータベース導入方法
それでは、AlteryxのIn-DBを練習するために、データサイエンス100本ノックのデータベースを自分のPCに導入する手順を記載します。
なお、注意点として、すでにPostgreSQLを導入済みの場合は、Port番号がDockerコンテナのデータベースとかぶってしまいDocker側がうまく動作しないため、ご注意ください。いずれかのデータベースのPort番号を変更する必要があります。
- Docker Desktop for Windowsの導入
- データサイエンス100本ノックのDockerイメージを取得しDockerで動作させる
- PostgreSQLのODBCドライバの導入
- ODBCドライバの設定
- Alteryxで接続してみる
1. Docker Desktop for Windowsの導入
Dockerを使うには、公式サイトからダウンロードする必要があります。インストール方法についてはこちらを参照ください。
過去、Docker ToolBoxと呼ばれていたときはインストールに色々と苦労したみたいですが、Docker Desktopはさくっとインストールできました。ちなみに、個人利用は無料ですが、商用利用は有償のようです・・・。
2. データサイエンス100本ノックのDockerイメージを取得
データサイエンス100本ノックの公式サイトでインストール方法が記載されています。Dockerイメージの中にあるDocもよく読んでインストールしてください。
インストールしたら、Docker Desktopでコンテナを起動しましょう。
もちろんですが、Docker内のデータベースにアクセスするにはDockerコンテナを起動させておく必要があります。逆に、必要なときだけ起動して使うことができる、ということになります。
3. PostgreSQLのODBCドライバの導入
公式サイトからODBCドライバを入手し、インストールします。
4. ODBCドライバの設定
インストールが終わったら、ODBCドライバを設定しましょう。ドライバは「ODBCデータソース(64ビット)」で設定を行います。Windowsの検索画面でODBCなどで検索すれば出てくると思います。
起動すると、以下のような画面になるので、ユーザーDSNもしくはシステムDSNタブを開き、追加ボタンを押しましょう(ユーザーDSNの場合は、ログインしているユーザーのみが利用でき、システムDSNであればそのPCの全ユーザーが使えます)。
まず、ドライバを選びます。「PostgreSQL ODBC Driver(UNICODE)」を選択しましょう。
設定画面では、以下の赤い部分について設定を行う必要があります。
データベースの設定情報は、Dockerの中の「work/preprocess_knock_SQL.ipynb」もしくは「doc/preprocess_knock_SQL.html」に記載されています(以下のような内容です)。
- IPアドレス:Docker Desktopの場合はlocalhost
- Port:5432
- database名: dsdojo_db
- ユーザ名:padawan
- パスワード:padawan12345
これをそのまま当てはめるだけです。データソース名はわかりやすくするために「dss-postgres」とでもしておきましょう。設定できたら「テスト」ボタンを押して接続できるかどうか確認しましょう。
うまくいかない場合は、設定が間違っているか、Dockerコンテナが起動していない、などの理由が考えられます。ちなみに、私はPC自体にPostgreSQLをインストールしていたので、ポート番号が重複しておりPC本体側のデータベースにしか繋げられない状況になっていました。このようなケースではいずれかのポート番号を変更する必要があります。
設定が終わったら「保存」ボタンを押してください。
5. Alteryxで接続してみる
それでは、いよいよAlteryxから接続してみましょう。データ入力ツールでもいいのですが、In-DBの話をしているので、In-DBツールで試してみましょう。接続In-DBツールをキャンバスに追加し、接続名の右端にある▼ボタンをクリックしましょう。
設定画面が出るので、以下のように設定します。
接続文字列については、▼ボタンから選択します。クリックすると、ODBCドライバ登録した情報が出てきます。
ここでは、登録したDSNの名称がわかるので、「dss-postgres」を選択します。
これでOKボタンをクリックすると、ビジュアルクエリビルダが立ち上がるはずです。
あとは、データベース名「dsdojo_db」を「+」ボタンをクリックして開き、さらに「public」を「+」ボタンで開き、テーブルが出てくるので左側の白いところにドラッグ&ドロップすればテーブルが追加されます。
なお、In-DBツールの場合、アンカーをクリックしても中身のデータを見ることはできません。データを見るには「閲覧In-DB」が必要になります。
これでようやくデータを見ることができます。
まとめ
データサイエンス100本ノックのDockerイメージを使うことで、面倒なインストール作業などすることがなく同じ環境のデータベース(PostgreSQL)を使うことができるという話をご紹介しました。
- メリット
- データベースのインストール、設定、データ投入の必要がない
- 誰でも同じ環境のデータベースが利用できる
- データベースが必要なときだけDockerイメージを起動すれば使える(不要なPCリソースを消費しない)
- デメリット
- Docker Desktopのインストールが必要
- Dockerにデータサイエンス100本ノックの導入が必要
- Dockerイメージを起動しないとデータベースが使えない
データベースをフル活用されている方にはあまり意味ないかもしれませんが、独立した環境が簡単に利用できるため、学習用のリソースとしては非常に良いと思います。データベースのインストールから設定、データ投入の手間よりは、Dockerを入れるほうが楽だと思います。
コメント