アドベントカレンダー専門テックブロガーのthorikiです。
現在弊社では目標である「企業ドクター」を目指して邁進中です。
その中でも中核を担うAIやデータ利活用には会社を挙げて注力をしております。
今回は、Dataikuを使って郵便番号のCSVデータを加工し、必要なデータの削除や追加を行った後、データベース(PostgreSQL)に登録する手順をご紹介します。
前提条件
以下の準備が整っていることを確認してください:
- バージョン確認
PostgreSQLとDataikuの互換性を確認(公式ドキュメントはこちら)。 - PostgreSQLのインストール
PostgreSQLがインストールされていること(参考:インストール方法)。 - Dataiku DSSのインストール
Dataiku DSSをローカル環境にインストールしておく。(参考:インストール方法)
今回Dataikuでやりたいこと
郵便番号CSVをダウンロードし、Dataikuで以下の作業を行います:
- 不要な列を削除
- 必要に応じて列の追加やデータの変換
- 加工したデータをデータベースに投入
準備
- 郵便番号リストのダウンロード。
- 対象のCSVファイルはこちらにあります。ローカルにダウンロードしておいてください。
- PostgreSQLをローカル環境で起動しておきます。
- 接続に使うユーザ/ロールはあらかじめ準備しておいてください。またテーブルを作成する権限も使用するユーザ/ロールにつけておいてください。
手順
1. DataikuにPostgresqlのConnectionを登録する
DataikuDSSの上部のナビゲーション バーの[Application]メニューから、 [Administration] を選択します。
上部のタブからConnectionを選択します。
NEW CONNECTIONからPostgreSQLを選択します。
postgresqlの接続設定画面が開きます。必要なパラメータを設定しています。
※下の画像ではローカルのPostgresqlのスキーマdataiudbにつなぐ設定にしています。
設定項目の入力が完了したら、下部にあるTESTボタンをクリックしてみてください。
接続がうまくいけばConnection OKと返ってきます。
これでPostgreSQLのConnectionの設定は終了です。
2. DataikuにCSVを読み込ませてDatasetを作成
プロジェクトがないためまずはプロジェクトを作成します。
Dataiku DSSのホーム画面からNEW PROJECT→Blank Projectを選択します。
プロジェクトに名前をつけます。今回はDB__CONNECTにしています。
IMPORT YOUR FIRST DATASETを選択します。
次の画面ではUpload your Filesを選択します。
ダウンロードしてきた郵便番号.csvファイルを選択するか、ドロップしてください。
成功すると以下の画面になるので、Datasetの名前をつけてCreateボタンをクリックしてください。
フロー画面を表示するとDatasetが表示されています。
クリックして開いてみましょう。csvファイルが取り込まれていることがわかります。
3. Prepareレシピの設定
作成されたDatasetを選択された状態にし、VisualRecipesからPrepareを選択します。
PostgresqlのConnectionを設定していると、Output datasetのStore intoに設定したConnectionが表示されるので、それを選択しCreate Recipeをクリックします。
4. データの加工
DBに取り込む前に不要な列と加工を行います。
郵便番号と都道府県、自治体名、町域名以外不要なので削除しています。
同時にカラム名がcol_1とかになっていたので、Renameしております。
また、列の順番も入れ替えております。
(この辺りは全て、表を操作しながら加工することが可能です)
郵便番号が一意ではないため、一意となる列(zip_code_id)も付け加えております。
こちらはformulaからUUID関数を呼び出すことで列に追加しています。
5. 準備レシピの実行/確認
加工が処理の設定が終わったらRUNボタンを押します。
問題なければ成功したという表示が出ます。
フロー画面に戻るとDatasetが増えていることがわかります。
新しくできたDatasetを開いてみましょう。
期待したデータになっていることがわかります。
6. DBの確認
Postgresqlに反映されているか確認します。
プロジェクト名+Dataset名で作成されています。
(このあたりは接続設定をいじれば調整できます)
データも確認してみます。
同じものが入っていそうですね。
以上がDataikuで郵便番号データをクリーンアップ&PostgreSQLに登録する方法でした。
おまけ
DB取り込み時にPKを設定する方法
DB取り込み時には制約などはつきません。またStringの場合Textでカラムの型が定義されるようです。
そこらへんを調整したい場合は、Prepare Recipeを実行して作成されたDatasetの設定を変えれば変更可能です。
作成されたDatasetを開き、上部のタブからSettingを選択。
開いた画面の上部にさらにタブがあるので、Advanceを選択してください。
Table creation modeをManually defineにすると、Table creation SQLが有効となるので、そこで定義を変更してください。