Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Qlikviewでデータをロードの際に以下のメッセージが出てロードが完了できませんでした。
Out of virtual and/or Logical Memory, allocating 2MB
これは読み込むデータが大きすぎることが原因なのでしょうか?
対応策としてはデータを分散して読み込む以外の手法はないのでしょうか?
データは約200万行で1.5GBのものを読み込んでいます。
一度生データを読み込み、この際は無事にロードが完了しています。
この際にQVDを作成しておき(作業性向上のため)、このQVDファイルをロードする際に事象が発生します。
アドバイスを頂きたく、よろしくお願いします。
基本的には、再度QVD化してもファイルサイズは変わらないので、そこはおさえておいて下さい。
本来変わらないはずの事象が出た一例としての紹介です。
また、データ取り込みはQVD化する事によって大きなメリットが発生しますが、ファイルサイズとなると一概にそうではないので注意が必要です。
同じ項目内に同一の値が複数あるような項目が多いと、QVD化によって大幅にサイズダウンしますが、一意の値ばかりだとQVD化してもファイルサイズは下がらなかったり、逆に大きくなるケースも発生します。
添付ファイルは、同一テーブルから
(ア)同一の値が何度も発生する項目として「店舗コード」
(イ)データの連番として「管理コード」
(ウ)文書情報として「内容」
を抜き出して、項目ごとにテキストファイルとQVDファイルを出力した結果ですが、一意情報が多い(イ)や(ウ)はQV独自の圧縮が行なえないため、ファイルサイズはテキストの方がわずかですが小さいです。逆に同一の値が何度も出てくるような(ア)だと大幅に圧縮効果が発生します。
元データとQVDファイルの両方を保存する場合、圧縮されたとしても余分にファイルを置くこととなるので、特にPC内で個人利用している場合には、さまざまなメリット、デメリットでQVD化するかどうかは判断した方が良いとおもいます。
QVバージョンは何でしょうか。32/64bitのどちらでしょうか。
一度は取り込み出来ているということなので、純粋なデータの大きさによるものでは無い気がしますが。
タスクマネージャーでメモリの状況を確認しながら、ロードスクリプトのどの処理をしているときにメモリ溢れしているか確認してみてください。
簡単な切り分け方法として、
・QVDデータを読み込んでいる最中にメモリが限界まで行ってしまったらデータ量(PCスペック)の問題。
・スクリプトの処理が終わった後にメモリがグングン上がって限界になったらデータの取り込み方の問題。
QVDデータと一緒に他のデータも取り込んでいませんか?
何となくですが、
・エクセル等の他データを取り込み
・QVDデータを取り込み
・取り込んだデータ間の紐づけをする内部処理 ← ここでエラー
となっているんじゃないかなーと予想しています。
他のデータも取り込んでいる場合、
・まずはQVDだけのデータを取り込んでエラーにならないか
・デバックモード等を使って少量のデータだけを取り込んだ時、テーブルビューアに【$Syn-1】と言うようなテーブルが表れていないか
の確認をしてみてください。
お世話になります。
回答頂きありがとございます。状況は以下のとおりです。
・Qlikviewは32bit版
・タスクマネージャーで確認するとロードスクリプトボタンを押してすぐにメモリが上がってしまい、その後エラーとなる
(QVDファイルの容量は約420MB)
・読み込みはQVDファイル一つのみを読み込んでおり、他のファイルは読み込んでいない
・QVDファイル一つのみの取り込みのためテーブルは一つしか作成されておらず、合成キーになる要素がない
ちなみに生データを取り込む際にデータ量を減らして、QVD化したものを読み込むとうまくいきます。
(この際のQVDファイルの容量は約200MB)
分析をする上で複数のファイルに分散されてしまうと集計効率が悪くなるため、なんとか一つのファイルで読み込みが
できないかと思います。
32bitのPCだと、そもそも利用できるメモリに限界がありますよね。
ハード側の限界 > データ量となるように工夫するくらいしかアイデアがありません。
・AutoNumber()関数等を使ってデータ量を減らす。
・分析に不要な項目を取り込まないようにする。
あたりがパッと思いつきますが、たぶん焼け石に水ですよね。
QVDにする前はなぜ取り込めていたんでしょうね。
QVD化でデータ圧縮しているので、展開時(再取り込時)の制御などで
一時的に取扱いデータ量が大きくなったりするんでしょうか。
すみません、ちょっと知識が無いのでお力になれないです。
おっしゃるとおりです。
生データ自体は約2GBの容量があり、これをQVDに置き換えて最適化しているので、生データが読み込めたのであれば
QVDはもっと容易に読み込めるはずなのですが。
まずは最低限の分析に必要なデータのみを取り込むようにして、その他はコメント設定するなどでさらに容量を減らして
取り込むこともTRYしてみます。
度々の回答ありがとうございました。
QVDですが、あくまで憶測でしかないですが、QVDは内部的にはQV独自のアルゴリズムで整理されていると思うので、最初にQVD以外から取得した際よりも、出力したQVDからの展開時に、余分にメモリを利用しているかもしれませんね。
これとは少し別件ですが、大量データをQVD化した際に、目だってサイズが大きかったので再度同じ処理をしても変わらず、今度は出力したQVDをそのまま取り込んでそのまま再度STOREで出力すると半分近くまでサイズダウンした経験があります。
両方のQVDを比較しても、値、データ行ともに完全一致。
代理店に確認しましたが、「中身の原因まではわからない」という回答だったので、原因がわからずに無駄な「再取り込み⇒再出力」処理をスクリプトに追加して運用していました。
QVD、、、なぞです。
元データが200万行で1.5GBのサイズということはカラム数がかなりあるのではないでしょうか。
カラム数が多いデータに関してはメモリ消費が多くなる傾向があります。
取り込むデータのカラム数を減らしてみてはいかがでしょうか。
また、QVDを使用したからと言ってメモリ消費量が少なくなるということはありません。
一般的にメモリへの展開量はCSVなどのテキストファイルで保存されたデータのサイズの
7、8割程度になります。
これはCSV、QVDどちらからから取り込んでも変わりません。
カラム数を減らさずにデータをそのまま使用されたいのであれば64ビットPCで実行することをお奨めします。
QVD化したものを再度QVD化ということですかね?
そういうやり方もあるんですね。
ただ今回はそのQVDが読み込めないので、それができないという状況です。
別の状況のときに試してみる価値はあると思うので参考にさせて頂きます。
ご回答ありがとうございました。
お世話になります。回答頂きありがとうございました。
確かにカラム数は多いです。ただし全て読み込む必要があるデータのため、ファイルを分割して
読み込むということをしております。
今回の場合、生データは読み込みができてQVD化したものが読み込めないという事象が発生し、
これの原因がわからずに困っているところです。
基本的には、再度QVD化してもファイルサイズは変わらないので、そこはおさえておいて下さい。
本来変わらないはずの事象が出た一例としての紹介です。
また、データ取り込みはQVD化する事によって大きなメリットが発生しますが、ファイルサイズとなると一概にそうではないので注意が必要です。
同じ項目内に同一の値が複数あるような項目が多いと、QVD化によって大幅にサイズダウンしますが、一意の値ばかりだとQVD化してもファイルサイズは下がらなかったり、逆に大きくなるケースも発生します。
添付ファイルは、同一テーブルから
(ア)同一の値が何度も発生する項目として「店舗コード」
(イ)データの連番として「管理コード」
(ウ)文書情報として「内容」
を抜き出して、項目ごとにテキストファイルとQVDファイルを出力した結果ですが、一意情報が多い(イ)や(ウ)はQV独自の圧縮が行なえないため、ファイルサイズはテキストの方がわずかですが小さいです。逆に同一の値が何度も出てくるような(ア)だと大幅に圧縮効果が発生します。
元データとQVDファイルの両方を保存する場合、圧縮されたとしても余分にファイルを置くこととなるので、特にPC内で個人利用している場合には、さまざまなメリット、デメリットでQVD化するかどうかは判断した方が良いとおもいます。