AlteryxでOracleから取得したデータの文字化け回避
こんにちは、小澤です。
今回は、Alteryxの小ネタとして、Input Data Toolのソースとして、Oracleを利用した際の文字化けについて書かせていただきます。
データソースとしてOracleを利用する
まず、文字化けの前にOracleをデータソースとして利用する方法ですが、こちらは非常に簡単です。
Input Data Toolの入力一覧に「Oracle」という項目があるので、そちらを選択します。
下記のようなダイアログが出た場合は、クライアントのインストール先を指定してあげてください。
接続先に関する情報を記載し、必要に応じてコネクションのテストを行います。
あとは、他のRDBへの接続などと同様にSQLなどで取得するデータの指定を行えば完了です。
日本語の文字化け
今回は、データベース側の文字コードとしてJA16SJIS(Shift_JIS)を利用しています。 Alteryx 11.0ではShift_JISは扱えないため、文字化けします。
これを解消するにはMulti-Filed Formula Toolなどを利用して文字コードの変換を行います。 やり方については
などをご覧ください。
しかし、Oracleの場合、この設定だけではうまくいきません。 試しにOracleを入力として、変換を行うだけのWorkflowを実行してみます。
のように日本語のデータが「??」となってしまっています。
これを解決するには、NLS_LANGという値を設定してやる必要があります。 これはどういうことかというと、Oracleの場合、データベース上に格納されているデータの文字コードとは別に、クライアントが指定された文字コードで変換を行ってから出力する機能があるためです。 クライアント側で利用する文字コードの指定がこのNLS_LANGとなります。
コマンドプロンプトなどからsql plusを利用する場合は
set NLS_LANG=Japanese_japan.JA16SJIS
としても対応できますが、実行したコマンドプロンプト上でのみしか反映されないためAlteryxから利用する場合は、システム環境変数などで指定してやる必要があります。
システム環境変数の指定は、OSのバージョンによって手順が多少異なりますが、Windows10の場合
デスクトップ上にある「PC」を右クリックし、プロパティを選択
出てきたウインドウの「システムの詳細設定」を選択
「システムのプロパティ」ウインドウが開くので、さらに「環境変数」を選択
「環境変数」の設定ウインドウが表示されたら「システム環境変数」の方で「新規」を選択します。
「新しいシステム変数」で
- 変数名:NLS_LANG
- 変数値:Japanese_japan.JA16SJIS
を入力して、「OK」を選択します。
「環境変数」ウインドウ、「システムのプロパティ」ウインドウも同様にOKを押して閉じたら、新しい変数を読み込ませるためAlteryxを再起動して、再度実行してみます(workflowの変更は行っていません)。
Input Data ToolでOracleから読み込んだデータは先ほどの「??」表示とは異なり、文字化けしたような値になっています。
Multi-Filed Formula Toolで文字コードの変換を行うと、正しく日本語が表示されているのが確認できます。
終わりに
今回は、AlteryxでOracleを入力ソースとした際の文字化けの解消方法について書かせていただきました。 RDBMSはそれぞれ独自の機能を持っているため、ものによって対応すべき事柄が異なったりします。
今回はOracleのみで利用可能な例ですが、本文中で紹介したMulti-Field Formulaを利用した文字コード変換のようにAlteryxでは様々な方法で文字コード問題を解消する手段があるので、諦めずに頑張ってみることをオススメします。