Qlik便利関数 : データの一時保存

「巨大なデータを扱っていて、途中でコケた場合、また最初から回さなければならない。途中段階で一時的にデータを保存したいなぁ」というときに役立つ便利関数です。

使い方

/*---------------*/
重たい処理
いろいろなデータ処理
いろいろなデータ処理

call Benri.MyStore('テーブル名');
/*---------------*/
call Benri.MyLoad('テーブル名');

といった感じで使います。

まずそのまま回すと、[c:\temp]にQVDとしてデータが保存されます。2回目以降は、1つ目の「/*————-*/」の右端を消してあげれば、MyLoadの直前までコメントアウトされ、重たい処理をすっ飛ばして一時保管されたデータが読み込まれます。

サンプルプログラム

最初はそのまま回します。すると、testdataがc:\temp\QVW名_testdata.qvdとして保存されます。

2回目以降は、「★」部分の右端「/」を削除して回します。すると、MyLoadまでの処理がすっ飛ばされて、MyLoadによってtestdataが読み込まれます。

ただし、すっ飛ばしたい部分までは別のコメントアウト「/*—-*/」は使えなくなります。すっ飛ばしたい部分内にコメントを残す場合は、「//」を使ってください。

//便利関数の読み込み
$(Include=C:\temp\Benri.txt);

/*------------*/ //←★次に回すときは、右端の「/」を消して回す
//テストデータ
testdata:
	load		*
	Inline [
		prod, ym  , a1, a2
		魚, 201901, 10, 10
		魚, 201902, 20, 
		魚, 201903,   , 30
	]
;

//使用例
call Benri.MyStore('testdata');
/*-----------*/
call Benri.MyLoad ('testdata');

仕様

以下のような内容です。超絶シンプル♪


sub Benri.MyStore(__tbl)
	let __aaa =  Left(DocumentName(), len(DocumentName())-4) ;
	store $(__tbl) into [c:\temp\$(__aaa)_$(__tbl).qvd](qvd) ;
	drop Table $(__tbl) ;
	set __aaa=;
end sub

sub Benri.MyLoad (__tbl)
	let __aaa =  Left(DocumentName(), len(DocumentName())-4) ;
	$(__tbl): NoConcatenate
		load * from [c:\temp\$(__aaa)_$(__tbl).qvd](qvd)
	;
	set __aaa=;
end sub