Tableau Prepで半角カナを全角カナに変換(Pythonを利用)

2020/03/08 18:32 Shingo 0 Comments

Tableau Prep Builderはデータクリーニングのために様々なクリーニング作業ができますが、「半角カナから全角カナに変換」というメニューは有りません(2020年2月現在)。今回のブログでは、前回作ったPython環境を使って、半角全角変換処理を実施したいと思います。



なお、今はまだTableau Prep Builderだけでは半角全角変換はできませんが、こちらの投票サイトより機能リクエストができるので、是非標準機能として搭載されるよう皆さん投票をお願いします。

では手順をご紹介します。

Tableau Prepを起動し、半角カナが含まれているファイルやデータベースを入力として定義します。

今回はサンプルスーパーストアのデータで、製品名の一部を半角にしてみました。半角にしたのは「パック」と「コンロ」だけで、その他のカナは全角です。











Pythonを呼び出すには、「スクリプト」を配置します。+をクリックして「スクリプト」を選択します。最初は赤い!アイコンが出ますが、気にせず設定を続けます。
「接続タイプ」の「Tableau Python(Tabpy) Server」を選択します。つぎに「サーバー」の「Tableau Python(Tabpy) Serverに接続」ボタンをクリックします。




「サーバー」にlocalhost、「ポート」に9004を入力します。ユーザやパスワードは空欄でかまいません。「サインイン」ボタンをクリックします。






スクリプトを準備します。下記青字を全部コピーし、メモ帳やエディタに貼り付けて保存してください。今回は「製品名」というフィールドを半角から全角に変換するスクリプトを用意しました。単純に1列のデータで半角を全角に変更するだけなら、2箇所あるdf['製品名']をご自身のデータの列名に変更するだけでOKです。任意のフォルダに名前をつけて保存します。今回私はc:\python\hankaku_zenkaku.pyという名前で保存しました。

import mojimoji
def hankaku_zenkaku(df):
    df['製品名'] = df['製品名'] .apply(mojimoji.han_to_zen, ascii=False, digit=False)
    return df



最後にPythonのスクリプトを参照します。先程保存した.pyのファイルを参照し、「関数名」には先程のスクリプトの関数名、defの後の「hankaku_zenkaku」を入力します。









すべてを入力すると自動的にスクリプトが実行され、アイコンの上の!マークが消えます。「製品名」の値を確認すると、もう全角に変換されています。





今回のテストでは少し意地悪に「パック」という文字で変換してみました。半角カナは「パ」等の文字を2文字にしてしまうため、それを全角に変換するのは処理として難しいのですが、ちゃんと1文字の「パ」に変換してくれていました。

半角全角の変換には「mojimoji」を利用しました。前回の手順でpython上にmojimojiと、mojimojiを動作させるために必要なものをインストールしていました。そうするとスクリプトを数行用意するだけで文字の変換をPythonに実行させることができました。

今回はTableau Prep BuilderとPythonを連携させ、半角カナを全角カナに変換する処理を作りました。古いシステムからデータを取ったら半角カナばっかりで困っている、という方、クリーニングのフローの途中で半角を全角に変換する、などに是非活用してみてください。



0 コメント:

Tableau+Python連携環境(Tabpy)をDockerで作ろう

18:28 Shingo 0 Comments

Tableau Desktop、Tableau Server、Tableau PrepとPythonを連携できる、というのをご存知の方もいらっしゃると思いますが、連携させるための環境をつくるのに尻込みされている方々、こちらの手順で簡単に環境をつくることができます。コンテナ技術のDockerを使って、Tabpyサーバを作ってみましょう。


まず、環境を作りたいマシンにDockerをインストールします。今回は私のPC(Windows 10)に環境を作ります。



Dockerのダウンロードはこちらから。

インストーラーを実行します。選択項目はすべて初期値のままでOKを押下。



再起動が完了すると以下のような画面があらわれ、Dockerの環境が整います。




再起動が完了すると以下のような画面があらわれ、Dockerの環境が整います。



次にDockerファイルを準備します。DockerファイルはDocker上につくるコンテナイメージを定義したテキストファイルです。メモ帳やエディタ等を使って作成します。



今回はCent OSにPython3とTabpy、そしてTabpyを使って全角半角の文字変換を行いたかったのでそのライブラリを入れるように書きました。よくわからなければとりあえずこのままの状態で、下記青字部分をコピーし、メモ帳に貼り付けてPC内のフォルダにDockerfileという名前で保存しましょう。

# Cent OSをベースイメージとして使用
FROM centos:latest

# Tabpyとその前提パッケージ、半角変換のためのmojimojiとその前提パッケージをインストール
RUN yum install -y python3
RUN yum install -y gcc-c++
RUN yum install -y python3-devel
RUN python3 -m pip install --upgrade pip
RUN pip install tabpy
RUN pip install pandas
RUN pip install mojimoji

# コンテナのポート9004をホストに開示
EXPOSE 9004

# Tabpyを実行
CMD ["tabpy"]
                   

私はCドライブの下にdockerというフォルダを作成し、その中にDockerfileを作成しました。




コマンドプロンプトを起動します。コマンドプロンプトはWindowsアイコンを押してcmdと入力すると候補が出てきます。コマンドプロンプトが起動されます。黒い画面にコマンドを打ちますが、もうすぐ完了ですのでめげずに頑張ってください。

Dockerファイルを保存した場所へ移動します。cd (シー、ディー、スペースキー)と入力し、保存先フォルダをドラッグ・アンド・ドロップします。フォルダの場所が自動入力されるので、キーボードのEnterキーを押します。

次に、以下の青字をコピーし、コマンドプロンプトの上で右クリックします。コマンドが貼り付けらえるのでEnterキーを押します。(最後のピリオドまでコピーします)

docker build -t tabpy/tabpy .

Dockerイメージを作成する処理が始まります。しばらく待って処理が終わると、最初の画面のようにC:\docker> 等のように入力できるようになります。



イメージが正しく作成されたか確認します。以下の青字を貼り付けます。

docker image list


tabpy/tabpyがリストの中にあればイメージ作成は成功です。


作成したイメージをつかってコンテナを起動します。以下のコマンドを貼り付けます。

docker run -it -d -p 9004:9004 tabpy/tabpy


これでTabpyサーバが起動ができました。


動作確認してみましょう。

Tableau Desktopを起動し、ヘルプメニューから「設定とパフォーマンス」>「外部サービス構成の管理」を選択します。










外部サービスはTabpyを選択し、サーバーにはlocalhostと入力、ポートには9004と入力し、左下の「テスト接続」をクリックします。












接続が成功するとこのようなメッセージが出ます。



これでご自身のPC上にTabpyが動く環境ができました。PCを再起動したりするとTabpyは停止するので、docker runコマンドで再度実行してください

今回はTabpyを動作させる環境をつくる手順をご紹介しました。次回はこの環境を使ってTableau Prepで半角文字を全角文字に変換する処理を作りたいと思います。

なお、2020.1リリースとともに、Tabpyはバージョン1.0となり、Tableauからのサポートが受けられるようになりました。より安心してお使いいただけます。


0 コメント: