6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SPSS ModelerスクリプトでHTMLレポート出力(マツダ山口様のアイディア)

Last updated at Posted at 2021-05-21

SPSS ModelerスクリプトでHTMLのレポートを出力するサンプルストリームをマツダ株式会社 山口 幸司様に作っていただき、SPSS春のユーザー会2021でご発表いただきました。

公開してシェアいただく許可をいただきましたのでこちらで紹介します。

また、山口様ご自身による当日のご講演資料のスクリプト解説部分も公開していただきました。ビジュアルにまとめていただいていますので是非ご覧ください(2021/6/8)

■動作テスト環境
Modeler 18.2.1,18.2.2
Windows 10

■サンプルストリームとデータ
サンプルストリーム
サンプルデータ

1.動かし方

サンプルストリームの動かし方を説明します。

1-1. 出力先のフォルダの用意

デフォルトは"C:\tepmp\SPSS_data\サンプル出力\”になっています。

1-2. サンプルデータの確認

不動産の物件所情報のサンプルデータであるproperty_values_train.savの入力ノードをプレビューしてサンプルデータが参照できることを確認してください。

image.png

見つからない場合は以下を探してみてください。
<インストールディレクトリ>\DEMOS\japanese_ja\property_values_train.sav

一応以下にもアップロードしておきました。
サンプルデータ

1-3. サンプルの実行

ツールメニューのストリームのプロパティから実行を選びます。
image.png

出力先をデフォルトから変更する場合はmodeler scriptの3行目を変更してください。

image.png

「このスクリプトを実行」ボタンをクリックします。
image.png

出力先に、以下のようにグラフのpngファイルやレポートのHTMLファイルが出力されます。
このサンプルストリームでは不動産の物件情報を建物の種類ごとに、4つのグラフをもった5つのレポートが出力されます。

image.png

レポートのHTMLファイルは、以下のようにグラフを一覧するレポートをブラウザで開くことができます。ここでは2-onder-1 kap_グラフリストというレポートを開いています。他の建物種類のレポートも同様のフォーマットでレポートが作られています。
image.png

2.サンプルストリームとスクリプト解説

サンプルストリームとスクリプトを解説していきます。

ストリームは大きくわけてグラフ出力のパートとHTMLファイル出力のパートに分かれています。
image.png

modelerscriptも見ていきます。
まず、以下で建物種類選択の条件抽出ノードを書き換えていて、建物種類を絞り込んでいます。

L11
    stream.findByID("id8L4WF1NNZPK").setPropertyValue("condition",u"建物種類 = \"" + tatemono[x] + "\"")

image.png

次に以下で、グラフをファイルに出力しています。

L18-24
            graphs[z].setPropertyValue("use_graph_size", True)
            graphs[z].setPropertyValue("graph_height", graphsizes[y][0])
            graphs[z].setPropertyValue("graph_width", graphsizes[y][1])
            graphs[z].setPropertyValue("output_mode", "File")
            graphs[z].setPropertyValue("output_format", "PNG")
            graphs[z].setPropertyValue("full_filename",foldname + "\\" + tatemono[x] + "_" + graphs[z].getPropertyValue("output_name") + ".png")
            graphs[z].run(None)

対応するノードは以下です。ファイル名やフォーマットなどを設定して出力しています。4つすべてのグラフをループで処理し、ファイルに出力しています。
image.png

出力したグラフファイル名をユーザーインプットノードに設定します。

L30-34
    unode = stream.findByID("id4MWVZK1EHSL")
    unode.setPropertyValue("names", [u"htmlソース"])
    unode.setKeyedPropertyValue("data", u"htmlソース", graphnames)
    unode.setKeyedPropertyValue("custom_storage", u"htmlソース", "String")
    unode.setPropertyValue("data_mode", "Ordered")

対応するノードは以下です。ファイル名が値としてセットされています。
image.png

以下のようなデータがユーザー入力ノードにセットされます。
image.png

以下のスクリプトによってフラットファイル・エクスポートノードでhtmlファイルを出力しています。

L36-37
    stream.findByID("id8HMV4MDF8WJ").setPropertyValue("full_filename",foldname + "\\" + tatemono[x] + "_" + u"グラフリスト.html")
    stream.findByID("id8HMV4MDF8WJ").run(None)

対応するノードは以下です。ファイル名がセットされています。
image.png

実行すると以下のようなHTMLがファイルに出力されます。
image.png

3.カスタマイズのポイント

このサンプルストリームとModeler Scriptは汎用的に作られていますので、少し書き換えることで好きなデータ、好きなグラフを使ったレポートを作ることができます。

カスタマイズのためにはまず、グラフを作りたいデータを選び、グラフを作ります。ポイントは、各グラフの出力のユーザー設定で「連番_グラフ名」を設定することです。
image.png

次に出力するカテゴリを絞り込むところを設定します。そして、HTMLのタイトルやレポート内に表示するカテゴリ名を設定します。
image.png

これはレポートの以下の部分に反映されます。
image.png

次に改行コードの位置を指定します。グラフいくつ並べてから改行するかを指定できます。
以下は-4行目と2.5行目に改行を入れています。
image.png
最終出力の中に、改行の<br>のタグが埋め込まれているのがわかります。
image.png

スクリプトは以下を修正します。

L06-L11
tatemono = ["2-onder-1 kap","Appartement","Hoekwoning","Tussenwoning","Vrijstaand"]
graphtypes = ["plot","histogram"]
graphsizes = [[600,700],[300,700]]
x = 0
while x < len(tatemono):
    stream.findByID("id8L4WF1NNZPK").setPropertyValue("condition",u"建物種類 = \"" + tatemono[x] + "\"")

graphtypes で出力対象のグラフ種類をリストします。
graphsizes で出力するグラフのサイズをリストで指定します。
tatemono は絞り込むカテゴリです。具体的には以下の列のカテゴリを対象としたグラフとレポートを作っています。

image.png

4. レポートの共有と自動出力

レポートを共有フォルダに出力するようにすれば、Modelerを持っていないユーザーとも結果をシェアすることができます。
また、マツダ様ではSPSS Collaboration and Deployment Services(通称CADS)を使って、週次でレポートを出力し、そのリンクをメールで関係者に送付することを自動化されています。これによって様々な関係者と分析結果を簡単に共有することを実現されています。

5.最後に

Modelerの出力をパワーポイントに貼ってレポートを作っている方はたくさんいらっしゃると思います。しかし、HTMLで自動出力できるようにすることによって、作業時間を大幅削減することができます。
非常にユニークなアイディアでmodeler scriptを作成され、さらにそれを公開していただいたマツダ株式会社 山口 幸司様に改めて感謝いたします。

6
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?