cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
New to using JMP? Hit the ground running with the Early User Edition of Discovery Summit. Register now, free of charge.
Register for our Discovery Summit 2024 conference, Oct. 21-24, where you’ll learn, connect, and be inspired.
Choose Language Hide Translation Bar
「JMP 18」でディスク容量を節約!文字列コンパクト化の実践

近年、JMPユーザの中で、センサーから秒単位で取得されたデータ、多くのパラメータがある製造データ、ゲノムデータなど、いわゆるビッグデータを扱う方が増えています。

 

大きなデータの場合、その分ファイルサイズが大きくなるので、ディスクの容量が必要になります。

 

JMPではもともと、データテーブルを保存時にファイルを圧縮する機能がありますが、最新バージョンの「JMP 18」では、文字タイプの列をコンパクトにする機能が追加されました。この機能を使うと、ファイルサイズを小さくする、メモリを節約することが期待できます。

 

Masukawa_Nao_0-1718765860494.png

このブログでは、JMP 18で列をコンパクトにする操作方法を説明し、コンパクトにする内部的な仕組みや、いくつかのデータでコンパクトにしたときのファイルサイズの比較を行います。

 

文字タイプの列をコンパクトに

この機能を述べる際に重要なこととして、コンパクトにできるのは文字タイプの列であることです。数値タイプの列はコンパクトにできません。

 

下図のデータ*は、東京都の不動産価格を記録したもので、約40万行、38列あります。この中で、地域を示す列「Region」をコンパクトにしてみます。

 

特定の文字タイプの列をコンパクトにする操作

  1. 列「Region」を選択し、[列] > [列情報] を選択します。
  2. JMP 18では、データタイプが「文字」の場合、サブタイプを指定できます。デフォルトでは [通常] になっていますが、ここを [コンパクト] に変更します。

Masukawa_Nao_0-1718764230201.png

 

このデータには「Region」のほかにも、「Type」や「Prefecture」などさまざまな文字列があります。これらを一度にコンパクトにするには、これもJMP 18の新機能である「列マネージャー」を使うと良いでしょう。

 

列マネージャーを使って複数の文字列を一度にコンパクトにする方法

  1.  [列] > [列マネージャー] (または列パネルにあるアイコンをクリック)を選択します。
  2. 列マネージャーの上側にある項目「種類」をクリックして、タイプ順(文字、数字)に並べ替えます。
  3. タイプが文字("ABC"と記載)の列をすべて選択し、Ctrlキーを押しながら「種類」の右側の項目をクリックし、[コンパクト] を選択します。

 

Masukawa_Nao_3-1718764906867.png

 

コンパクトにした文字タイプの列には、列パネルの列名の右側に下図のようにアイコンが付加されます。

 

Masukawa_Nao_2-1718764873746.png

 

上記の手順でコンパクトにしたデータテーブルを保存し、コンパクト前とコンパクト後でファイルサイズを比較してみます。

 

Masukawa_Nao_9-1718765410710.png

 

130MBのデータが、コンパクトにすることによって67.1Mと約半分のサイズになりました。ディスクの容量を心配している方には朗報です!

 

注意点として、文字列をコンパクトにしたデータテーブルは、JMP 17以前のバージョンでは開くことはできません。あくまでもJMP 18で利用できるデータテーブルとなります。

 

列をコンパクトにする仕組み

では、どのような仕組みで文字列をコンパクトにしているのでしょうか。

 

コンパクトにした場合、内部的には、文字列のストレージと行のストレージという2つのデータ構造に格納されます。

 

例えば上記の東京都のデータでは、その不動産がある区や市を示す「Municipality」とう文字列がありますが、各異なる文字列は文字列ストレージに格納され、そのインデックスは行ストレージに格納されます。

 

Masukawa_Nao_5-1718765144465.png

 

そのため、長い文字が入力されている列や重複のあるデータ値を持つ列に対してコンパクトにすることで、ファイルサイズが小さくなることが期待されます。

 

逆に、一つの行に対して一意のID番号をつけてデータを識別するような文字列をコンパクトにしても効果が得られない可能性があります。例えば、100行の患者データにて、患者を識別するために(P1, P2, ・・・・, P100)といった値をもつID列がある場合、重複のない一意な値をもつので、コンパクトのメリットが得られないことになります。

 

いくつかのJMPサンプルデータに対し、文字列をコンパクトにしてみた結果を示します。

 

Masukawa_Nao_8-1718765346204.png

 

多少ファイルサイズが小さくなっているものもあれば、「Probe.jmp」のようにコンパクトにした恩恵を受けていないデータもあります。

 

実際のところ、数MB程度のファイルをコンパクトにして、例えファイルサイズが小さくなったとしても、ディスク容量の節約にもなりませんし、メモリサイズの節約によるパフォーマンスの向上も体感できないでしょう。

 

メリットがあるのは、数十MB以上あるようなデータをコンパクトにしたときでしょう。

 

もし文字列を多く持つ大きなデータがあれば、試しにコンパクトにしてみて、ファイルサイズが小さくなるかどうか試してみてください。

 

常に文字タイプの列をコンパクト列として開く方法

ここまではJMPのデータテーブルを開いて、文字列をコンパクトにする方法を紹介しましたが、JMPでデータを開いたときに、文字列を自動的にコンパクトにする設定もあります。

 

JMPのメニューバーから、[ファイル] > [環境設定] を開き、「一般」のカテゴリにある 「文字タイプの列をコンパクト列として開く」にチェックをいれます。

 

Masukawa_Nao_7-1718765240771.png

 

この設定をしておくと、JMPのデータテーブルだけでなく、Excelやcsv, txtなどのファイルをJMPで開いたときも、開いた時点で文字列をコンパクトにします。

 

 

※データの出典 Kaggle, Japan Real Estate Prices

Japan Real Estate Prices (kaggle.com)

 

※関連動画(日本語)

「JMP 18」 業務で役立つ新機能  ~データテーブル、レポーティング編(日本語)~ - JMP User Community

 

 

by 増川 直裕(JMP Japan)

Naohiro Masukawa - JMP User Community

Last Modified: Jun 19, 2024 10:04 PM