Alteryx上で日本語ファイルの(UTF-8への)文字コード変換を行う(Multi Field Formula Tool編)

2015.02.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Alteryxで日本語ファイルの文字コード変換を行うというテーマについて下記エントリを投下しましたが、その後の調査で他にも方法がある事が分かりました。当エントリでは(セルフ)アンサーエントリとして(と言うよりもこっちのほうが正攻法ではありますが)ご紹介して行こうと思います。Multi Field Formula Toolというツールを使った方法となります。

目次

『Multi Field Formula Tool』で利用可能な『ConvertFromCodepage(s, codePage)』という関数がありました。

上記ページの[Convert]欄に、以下の様な関数を発見。

ConvertFromCodepage(s, codePage):
  Translates text from a code page to Unicode.

この関数を使う事が出来る以下ツールは以下4つが紹介されていますが、Multi-Field Formulaツールでも利用が可能であり、このツールであれば要件を満たせそうです。

Formula,Filter,Generate Rows, Multi-Row Formula

実践:Multi-Field Formula Toolを使った文字コード変換処理

では早速試してみましょう。例に拠ってTableauのSuperStoreサンプルのEXCELをCSVに起こしたファイルを使ってみます。文字コードはShift_JISです。このファイルではヘッダーも日本語になっています。

alteryx-file-encode-by-multi-field-formula-01

ヘッダーの部分は、以下の様に日本語を使わない項目名に書き換えておいてください。データの変換については後述する方法で変換出来ましたが、フィールド名については上手く変換が出来てませんでした。フィールド名変換について上手くやる方法が見つかり次第何らかの形でご紹介したいと思いますが、ひとまず今回は『フィールド名が英語表記、中身は日本語が入っている可能性がある』という前提で進めたいと思います。

alteryx-file-encode-by-multi-field-formula-02

Alteryxを起動し入力ファイル、出力ファイルをそれぞれツールで指定した後、[Preparation]から[Multi-Field Fomula]ツールアイコンをドラッグアンドドロップでキャンバスに持って来ます。

フィールド項目は全選択、新しい列としての追加は行わない設定に変更。また、項目の出力タイプは[V_WString]に設定しておきます。

alteryx-file-encode-by-multi-field-formula-06

[Expression]の部分に変換を行う処理を記述して行きます。まずは[Function]の中から該当する関数(ConvertFromCodePage)を選び、ダブルクリックで転記。

alteryx-file-encode-by-multi-field-formula-04

その後、[Variables]から[CurrendField]という変数を選び、こちらもダブルクリックで転記。また、変換元のコードページ(文字コードを指し示す数値)を書き換えます。Shift_JISの場合、以下ページによると932となりますのでここは手動で書き換えます。

alteryx-file-encode-by-multi-field-formula-05

ポチッとな、で処理実行、8000行程のファイルでしたが処理は一瞬で終わりました。

alteryx-file-encode-by-multi-field-formula-07

生成されたファイルの中身を確認してみます。文字コードがUTF-8のファイルが生成され、中身の日本語もちゃんと変換されているようです。

alteryx-file-encode-by-multi-field-formula-08

まとめ

以上、日本語ファイルエンコードの変換処理に関する方法のご紹介2本目でした。ヘッダ部分の日本語変換処理が未だ未解決部分でありますが、この部分についてもこちらのツールで賄えるのであればベストですし、もし叶わなかった場合であれば先に御紹介したRun Command Toolを使ってファイルを丸ごと変換掛けてしまう方法で対処する策も取る事が出来そうです。この辺りは要件や状況に応じて選択して頂ければと思います。こちらからは以上です。