LoginSignup
0
0

More than 5 years have passed since last update.

QlikViewのデータ圧縮はファイルの種類によって異なる?

Last updated at Posted at 2018-06-17

QlikViewのファイル圧縮には謎が多い。
とりあえず、こんなスクリプトでデータファイルを作ってみる。

データの作成

Customer=1,000,000件,Product=10,000件、Transaction=100,000,000件のデータをテキトーに作ってみる。

QVDファイルの作成
LET vCustomerCnt =1000000;
LET vProductCnt = 10000;
LET vTranCnt = 100000000;

Customer:
LOAD RowNo()            as customer_id,
     Hash128(RowNo())   as customer_name
AutoGenerate $(vCustomerCnt);

Product:
LOAD RowNo()                as product_id,
     'Product_' & RowNo()   as product_name
AutoGenerate $(vProductCnt);

Transaction:
LOAD RowNo()                                        as tran_id,
     Ceil(Rand()*$(vCustomerCnt))               as customer_id,
     Ceil(Rand()*$(vProductCnt))                    as product_id,
     Mod(Floor(pow(Rand(),2)),3)+1              as unit,
     Ceil(Sqrt(Rand()*10000000))                    as amount
AutoGenerate $(vTranCnt);

STORE Customer into Customer.qvd(qvd);
STORE Product into product.qvd(qvd);
STORE Transaction into Transaction.qvd(qvd);

上の方法でCSVとQVD形式でStoreするとファイルサイズはこんな感じになる。
まずはCSV

csv.png

qvdにすると当然圧縮できるわけだけど、重複度にもよるが、上のスクリプトでロードして作成した場合はこれくらいに圧縮できる。

qvd.png

Transaction(100,000,000件)で約54%くらいにはなるね。

データロード実験

QlikViewでのロードがテキストファイルよりQVDからロードしたほうが数倍速いと言われている。
じゃあ、数倍ってどの程度なのか。
以下のロードスクリプトでベンチマークしてみる。
因みにマシンスペックは以下のとおり
- CPU: i7-3520M (2.9GHz)
- メモリ:12GB

データのロード
Customer:
LOAD *
FROM
Customer.qvd(qvd);

Product:
LOAD *
FROM
Product.qvd(qvd);

LET vRap = Now();

Transaction:
LOAD * FROM
Transaction.qvd(qvd);

LET vRap1 = interval(Now() - '$(vRap)');

リロード時間を比較すると
qvd_load.png

QVDからロードしたほうが、3.57倍速いことになる。

データソースがCSVとQVDの場合でファイルサイズは異なる?

今回の記事のメインはこれ。
ちょっと意外な結果なのだが、実はCSVからデータロードした場合とQVDからロードした場合でファイルサイズが異なる。

filesaize.png

ホントかよ。
なぜ違うのかわからないが、QVDからロードするとCSVに比較して77.4%のファイルサイズになる。
何かの間違いではと思って何度もやったのだが、結果は同じ。

で、結論は..

”QVWのファイルサイズはQVDからロードしたほうが小さくなる。”

未だに信じられないけどね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0