実務でデータ分析していると、どうしもデータベースを使いたくなる時がでてきます。
ということで今回は、Dataiku DSSとpostgreSQLの連携について書きます。
こちらのチュートリアルを参考にやりました。
Dataiku DSSは様々なデータストレージと連携することができ、020/12月時点で10種類のストレージをフルサポートしているようです。サポートしているストレージに関する詳細はこちらをご参照ください。
#環境
Ubuntu 18.04.4 LTS
postgreSQL 13.1
Dataiku ver 8.0.2
#postgreSQLインストール
公式のダウンロードサイトからインストール。
#postgreSQLのpostgresユーザーのパスワード設定(必要に応じて)
最初、パスワード認証がうまくいかなかったので、力業でなんとかしました。
もっとスマートなやり方がきっとある、そんな気はしています。
まず、パスワード系の設定ファイルpg_hba.confを探します。
sudo find / -name pg_hba.conf
で、pg_hba.confの場所がわかるので、pg_hba.confの最初の行のpeerをtrustに書き換えて以下のようにします。(sudo vi)
host all all 127.0.0.1/32 trust
設定再読み込み。
sudo /etc/init.d/postgresql reload
これでpostgresユーザーでパスワード無しで入れるようになりますので、ここでパスワードを設定。
psql -U postgres
postgres=# \password
設定後、pg_hba.confの最初の行をtrustからmd5に変更して、postgresqlの設定を読み込みます(reload)。
#postgreSQLの初期設定
今回扱う内容に応じて、テーブルやロールを作ります。
CSVからデータを読み込みたいので、あらかじめ以下ののCSVを/home/dataiku/以下におきます。
https://downloads.dataiku.com/public/website-additional-assets/data/orders.csv
初期設定は大まかに以下のようなことをしました。
- dku_tshirt_adminユーザーを作成
- データベースとしてdkuを作成し、スキーマとしてdku_tshirtを作成
- ordersテーブルを作成し、orders.csvからファイルを読み込む
psql -U postgres
postgres=# CREATE DATABASE dku; -- dkuデータベース作成
postgres=# \c dku
dku=# CREATE SCHEMA dku_tshirt; -- dku_tshirtスキーマ作成
dku=# CREATE USER dku_tshirt_admin WITH PASSWORD 'password'; -- dku_tshirt_adminユーザー作成
dku=# GRANT ALL PRIVILEGES ON SCHEMA dku_tshirt TO dku_tshirt_admin; -- dku_tshirt_adminユーザーのdku_tshirtスキーマへの権限設定
dku=# \connect - dku_tshirt_admin -- dku_tshirt_adminにユーザー変更
dku=# CREATE TABLE dku_tshirt.orders(
dku(# "order_date" DATE
dku(# ,"pages_visited" INT
dku(# ,"order_id" VARCHAR
dku(# ,"customer_id" VARCHAR
dku(# ,"tshirt_category" VARCHAR
dku(# ,"tshirt_price" FLOAT
dku(# ,"tshirt_quantity" INT
dku(# ); -- 空のordersテーブルを作成
dku=# \q
一度シェルに戻り、orders.csvファイルをordersテーブルへインポートします。
$ psql -U dku_tshirt_admin -c "copy dku_tshirt.orders from stdin ENCODING 'utf8' CSV HEADER DELIMITER E',';" dku < /home/dataiku/orders.csv
Dataiku DSSとpostgreSQLの接続
Administrator権限を持ったユーザーで作業します。
[Applications]->[Administration]で、設定画面を表示します。
[Connections]クリックで接続設定画面になりますので、[+NEW CONNECTION]をクリック。
設定画面が出てきますので、以下のように入力して[TEST]をクリック。
これにより、接続がうまくいくか確認することができます。以下の画像のように「Connection OK」と出たら[CREATE]をクリック。
これで、Dataiku DSSからpostgreSQL内のデータを呼び出す準備ができました。
postgreSQL上のテーブルを、Dataiku DSSのデータセットとしてインポート
実際にプロジェクトからPostgreSQL上のデータにアクセスしてみます。
PostgreSQL上のテーブルを、Dataiku DSSのデータセットとしてインポートすることでPostgreSQL上のデータにアクセスできます。
SQL connectionという名前のプロジェクトを作成し、[+IMPORT YOUR FIRST DATASET]をクリック。
New dataset画面で[PostgreSQL]をクリック。
Connectionとして、先ほど設定したPostgreSQL_tshirtが選択できるようになっています。以下のように入力して[TEST TABLE]をクリックして読み込めそうか確認。postgreSQL側で権限がないとうまくいかないのでご注意ください。
Previewが出ればOK。
右上に[CREATE]をクリックします。
フロー画面からもordersデータセットを確認することができます。
これで、Dataiku DSSとpostgreSQLの基本的な設定ができました。