Alteryxでテキストファイルを読み込む場合に、区切り記号などがない場合、1つのセルに巨大なデータを入れざるを得ないケースがあります。
このような場合、1つのセルに16M以上のデータを格納するような場合は、以下のようなエラーが出るケースがあります。
今回は、Blobツールを使ってこの制限を回避する方法をご紹介します。
16M以上のデータとは
まず、適当なデータを用意しました(インターネットで落としてきたフリー画像をリサイズしたあと、PPM形式にしました)。ファイルサイズは、16,587KBytesです。これを、区切り記号なし設定で読んでみました。つまり、以下のような感じの設定です(以下の画像は上記ファイルではありません)。
以下のようにエラーが出ています。
ちなみに、フィールド長を変えたところで同じです・・・。
これは、区切り記号で区切られた後のデータを16M以内にしないといけないということで、今回全く区切り記号のないデータのため、このようなことになっています。
正確に言うと今回のデータは、以下のように空白区切りではあるのですが、1行目~3行目を空白区切りにしてしまうと、フィールドの数が行によって変わってしまうため不正な区切り記号付きファイルを判定され、読み込めません。区切り記号なしで読み込むために区切り記号を「\0」にするのですが、今度は16M超えてしまうのでNGといったことになってしまいます。
Blob入力ツール
Blob入力ツールは、開発者カテゴリ内にひっそりたたずんでいるツールです。開発者ツールだけあってほとんど脚光を浴びないツールですが、バイナリファイルを直接読むことができるツールです。読み込んだあとは、Blob変換ツールで変換してからAlteryx内で使うようになります。
ファイルを指定すれば読み込むことができます。
読み込むと、Blob形式のフィールドが作成されます。
次に使うのが、Blob変換ツールです。
Blob形式のフィールドを様々な形式に変換し、Alteryx内で使えるようにします。今回の設定は以下のとおりです。
- 変換モード:Blobフィールドから変換する
- Blobフィールド:Blob入力ツールで読み込んだフィールドを指定
- 以下のコードページを使用してBlobをエンコードされたテキストに変換する:を選択
- Unicode UTF-8:を選択していますが、今回アルファベット・数値のみなのでほぼなんでもいけます
これを結果ウィンドウで見てみると、以下のようにテキストエディタで開いたときのようなデータが取得できています。
このようなワークフローになります。
ここまで得られれば、そのまま普通のテキストとして扱えます。例えば今回のような場合であれば、改行コードでまず行を分割し、そこから空白区切りで各値を取り出すことができます。
とはいえ、区切り記号なしで16Mというテキストファイルもなかなかヤバいファイルかと思いますのであまりこのような手法の出番はないかと思いますが、もし役に立つときのために覚えておいていただければと思います。
コメント