DataikuのFlow Docoumentation機能

7月にver.11にアップデートしたDataikuのドキュメンテーション機能が充実していたので触ってみました。
フロー画面のドキュメンテーションと、モデルのドキュメンテーションの二つがあります。
ここでは、フロー画面のドキュメンテーションを備忘録替わりに触っていきます。

Credit Card Fraud (Tutorial)プロジェクトを使って試しています。


# Flow Document Generator
フロー画面のドキュメントが生成できます。今までは、フロー画面の画像イメージをエクスポートできる程度でしたが、なんとドキュメントとして生成してくれます。

参考URLはCrash CourseのHow-To:Flow Document Generator
https://academy.dataiku.com/crash-course-dataiku-11/1276388


画面右下の[Export documentation]を押下

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/1e94cf19-f6c1-1f0b-2daa-ade58657017f.png)

[EXPORT]押下で生成。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/2095d0e3-f8d1-ada5-c160-fc88670316be.png)

しばらく待つと[DOWNLOAD]ボタンが出現するので押下。プロジェクトのボリュームにもよりますが、DOWNLOADボタンが出るまで少し待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/5de36e0e-7b97-7a4d-cdb6-4f9dcbdc2d97.png)

40ページのwordファイルがダウンロードできました。なかなかのページ数です。

記載内容は以下
- プロジェクトの詳細
- フロー画面の画像
- それぞれのデータセットの詳細情報
- レシピ情報
- その他情報


その冒頭一部は以下のような雰囲気です。全部英語です。テンプレートのカスタマイズもできるので、ベタ書きの文章は日本語にできそうな気がします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/640a748e-f58a-4027-b060-da2530c03cba.png)

もう少し詳しく見てみます。
### プロジェクトの詳細
プロジェクトのDescriptionなどに書かれる内容が記載されます。プロジェクトのホーム画面の左下に記載されているやつです。
生成されたドキュメント（左）と実際のDescription(右）を比較したのが以下となります。生成されたドキュメントは中のコードをそのまま出力しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/048f5b2a-5ee2-8bce-2ec3-197fac66f61b.png)


### フロー画面の画像
フロー画面の画像、そのままですね。今回のケースは縦長なので手動でトリミングした方がよさそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/649ac1a0-1e66-185a-78a8-ff446d391241.png)

### それぞれのデータセットの詳細情報
 - サマリととして
     - short descriptionの内容
     - Tag情報
 - a) データセットのステータス
 Typeやファイルサイズ、作成者などの情報が得られます。ここでは、Not computedになっていますが、データセットのStatusタブで計算していれば出力されます。（確認済み）
 - b) Related Recipes
対象のデータセットに関連するレシピ情報
 - c) Schema
データセットのスキーマ情報が出力されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/a211e3b9-04da-d5b8-c274-3d0ec9c05ef2.png)



### レシピ情報
 - サマリととして
     - Descriptionの内容（私が日本語で適当にDescription記載してみました）
     - Tag情報
 - a) データセットのステータス
 Typeや作成者などの情報が得られます。
 - b) Inputs/Outputs
入出力ファイルの情報が記載されます
 - c) Join
レシピの実施内容です。今回はJoinレシピなのでここがJoinになっていますが、PrepareレシピならここはPrepareになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/f97a39c0-2d54-470d-4cee-e5d68c43e649.png)


ちなみにc)は、上記の画像では切れていますが、実際には以下のように出力されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/0272d3d6-09bc-70fb-8257-3f3f6657cd3f.png)

Prepareレシピの場合は以下のようにステップが表示されます。
左図がドキュメントで出力された内容で、右側が実際のレシピのステップ画面です。Commentに書いた内容がドキュメントにも反映されていることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/3202d870-6a99-3c5f-6315-51644f8ff97c.png)


#### コード系レシピの場合
ちゃんとpythonコードも記載されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/fac1c331-f49a-33cc-799a-a939bf19f62f.png)



### その他情報
このあたりは、そこまで詳しい情報は記載されていません。どのデータセットやレシピと紐づいているか、といった情報が簡単に記載されている程度
- Saved Models
- Model Evaluation Stores：Evaluation Storeの簡単な一覧
- Deployment and Monitoring：Dataikuのアクセス先やバージョン情報など


#### Saved Models
モデルに対しての基本情報が載っています。Active versionはどれかや、idはどれか、など。モデルの方でもドキュメントは出せるようなので、そちらで見るのがよいかも。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/1849f9c1-6e9f-8289-a9c8-1ef05427049c.png)

# Automation Docummentation Export
やはりやりたくなるのは、自動的に定期的にこのドキュメントを作っておいて、バックアップがわりにとっておくことです。
ライセンスは必要ですが、シナリオ機能を使うことで実現できます。

まず、フォルダを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/45516353-4820-5981-e915-fa91fff20172.png)

シナリオ作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/3b1dd7f1-22b8-798e-2b24-13d82e60ede3.png)

Export flow documentationをステップに追加します。Destination folderに先ほど作成したフォルダを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/dd038c52-c6b2-6227-a2e9-bdbbbb29b9b0.png)

さきほど作成したフォルダの中を見に行くと、ドキュメントができています。ファイル名に日付時間がふくまれているので、複数作ってもそのまま蓄積されてわかりやすそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106215/fe272f44-47fc-1aba-da09-dab9648efcdb.png)

あとはシナリオの設定で定期実行させておけば、自動バックアップになる、と。


# まとめ
- DataikuのFlow Documentジェネレータでの出力内容をまとめました。
- Dataiku内のDescriptionやコメントをきっちり書いておけば、自動的にドキュメント化されるのはすごくよいです。しかもpyhonレシピのコードも記載されます。
- シナリオで定期的なドキュメント化もできるので、簡易的なバックアップ替わりによさそうです。
- Defaultではなく日本語テンプレとか、自分とこ用テンプレを作っておけると、なかなか活躍しそうです。