ノーコードでクラウド上のデータとの連携を実現。
詳細はこちら →CData
こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。
Python エコシステムには、多くのモジュールがあり、システム構築を素早く効率的に行うことができます。CData Python Connector for Sage50UK を使うことで、pandas モジュールとDash フレームワークでSage 50 UK にデータ連携するアプリケーションを効率的に開発することができます。本記事では、pandas、Dash とCData Connector を使って、Sage 50 UK に連携して、Sage 50 UK データ をビジュアライズするシンプルなウェブアプリを作る方法をご紹介します。
CData Python Connectors は、以下のような特徴を持った製品です。
まずは、pip で必要なモジュールおよびフレームワークをインストールします:
pip install pandas pip install dash pip install dash-daq
必要なモジュールとフレームワークがインストールされたら、ウェブアプリを開発していきます。コードのスニペットは以下の通りです。フルコードは記事の末尾に掲載しているので、参考にしてください。
まず、CData Connector を含むモジュールをインポートします:
import os import dash import dash_core_components as dcc import dash_html_components as html import pandas as pd import cdata.sage50uk as mod import plotly.graph_objs as go
接続文字列を使ってデータへの接続を確立します。connect 関数を使ってCData Sage 50 UK Connector からSage 50 UK データ との接続を確立します。
cnxn = mod.connect("URL=http://your-server:5493/sdata/accounts50/GCRM/your-address;User=Manager;")
Note:Sage 50 UK 2012 以降のみサポートされています。
「接続」セクションのUser およびPassword プロパティを、有効なSage 50 UK のユーザー資格情報に設定する必要があります。これらの値は、Sage 50 UK に ログインするために使用するものと同じです。
さらに、「接続」セクションのURL プロパティを、希望する会社データセットのアドレスに設定する必要がります。アドレスを取得するには、以下を行ってください:
read_sql 関数を使って、padas からSQL 文を発行し、DataFrame に結果を格納します。
df = pd.read_sql("""SELECT Name, FinanceBalance FROM TradingAccounts WHERE TradingAccountUUID = 'c2ef66a5-a545-413b-9312-79a53caadbc4'""", cnxn)
DataFrame に格納されたクエリ結果を使って、ウェブアプリにname、stylesheet、title を設定していきます。
app_name = 'dash-sage50ukedataplot' external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css'] app = dash.Dash(__name__, external_stylesheets=external_stylesheets) app.title = 'CData + Dash'
次に、Sage 50 UK データ をベースにした棒グラフを作詞し、アプリのレイアウトを設定します。
trace = go.Bar(x=df.Name, y=df.FinanceBalance, name='Name') app.layout = html.Div(children=[html.H1("CData Extention + Dash", style={'textAlign': 'center'}), dcc.Graph( id='example-graph', figure={ 'data': [trace], 'layout': go.Layout(alt='Sage 50 UK TradingAccounts Data', barmode='stack') }) ], className="container")
接続、アプリ、レイアウトを定義したら、アプリを実行してみましょう。以下のコードで実行できます。
if __name__ == '__main__': app.run_server(debug=True)
最後に、Python でウェブアプリを起動してブラウザでSage 50 UK データ を見てみましょう。
python sage50uk-dash.py
ちゃんとデータが表示できてますね!
Sage 50 UK Python Connector の30日の無償トライアル をぜひダウンロードして、Sage 50 UK データ への接続をPython アプリやスクリプトから簡単に作成してみてください。
import os import dash import dash_core_components as dcc import dash_html_components as html import pandas as pd import cdata.sage50uk as mod import plotly.graph_objs as go cnxn = mod.connect("URL=http://your-server:5493/sdata/accounts50/GCRM/your-address;User=Manager;") df = pd.read_sql("SELECT Name, FinanceBalance FROM TradingAccounts WHERE TradingAccountUUID = 'c2ef66a5-a545-413b-9312-79a53caadbc4'", cnxn) app_name = 'dash-sage50ukdataplot' external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css'] app = dash.Dash(__name__, external_stylesheets=external_stylesheets) app.title = 'CData + Dash' trace = go.Bar(x=df.Name, y=df.FinanceBalance, name='Name') app.layout = html.Div(children=[html.H1("CData Extention + Dash", style={'textAlign': 'center'}), dcc.Graph( id='example-graph', figure={ 'data': [trace], 'layout': go.Layout(alt='Sage 50 UK TradingAccounts Data', barmode='stack') }) ], className="container") if __name__ == '__main__': app.run_server(debug=True)