Qlik Community

Japan

cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

大きなサイズのファイルをLoadしている訳ではないのにソフトがフリーズ

TAB区切りテキストファイルを3つほどLoadしようとしています。

3つとも約10万件のテキストファイルです。

リロードを実行すると「ロードスクリプトの進歩」画面が終了しなかったので、「中止」ボタンを押してから「閉じる」ボタンを押し、「ロードスクリプトの進歩」画面を終了させた後、ソフトがフリーズ状態になってしまいます。

2つのファイルのロードの時は、問題なかったのですが...。

でもう少し調べたのですが、3つのファイルA,B,CのうちAとCをLoadするとフリーズ状態になってしまう事が分かりました。

AとB,BとCは正常にLoadしました。

AとCのファイルにおいて、どの点に関してチェックすれば良いでしょうか?

Labels (1)
1 Solution

Accepted Solutions
hka
Employee
Employee

原因がわかりました。

Tab1とTab3で重複する項目名が多すぎて、ロード後にデータ構築するのに時間がかかっています。

重複する項目でTab1とTab3をユニークに接続する項目を残していらない項目を削除してロードしてください。

例えば、以下のテーブル構造の場合、

(Tab1が明細、Tab3がマスタとします。)

Tab1

a,b,c,d,e,f

Tab3

a,b,c,d,e,g,h

Tab1とTab3をユニークに接続する項目がa,b,cの場合、

ロードスクリプトは、

LOAD

a,

b,

c,

f

FROM Tab1

LOAD

a,

b,

c,

d,

d,

g,

h,

FROM Tab3

というように明細側でマスタにある項目は削除してください。

例の場合、Tab1のd,eを削除してください。

上記のデータモデルの理論や作成の仕方に関しては有償トレーニングを受けていただいた方が良いと思います。

View solution in original post

10 Replies
tsi
Employee
Employee

スプリプトの実際の記述がわからないのでなんとも原因は特定しずらいですが、

以下、試してみてください。

A,B,Cのファイルのレコード数を減らして、実行。

  スクリプトの文法エラーがないか、ファイル容量が大きくメモリオーバーで停止していないかなどを切り分けることが

  できるかと思います。

Not applicable
Author

回答ありがとうございます。

デバッグで10レコード制限で実行しましたが、やはりフリーズしてしまいます。

tsi
Employee
Employee

それでは、メモリオーバーフルではないですね。

そうなるとスプリプト上のエラーかもしれませんので、例えば、AとBのロードまでをいかし、

Cの記述をコメントアウトして実行してみる、Cのみのロードスクリプトを単独で実行などで、もう少しエラー箇所を切りわける方法はどうでしょうか。

Not applicable
Author

> 例えば、AとBのロードまでをいかし、

> Cの記述をコメントアウトして実行してみる、Cのみのロードスクリプトを単独で実行などで、

> もう少しエラー箇所を切りわける方法はどうでしょうか。

Cの記述をコメントアウトしてAとBをロードすると言うのは理解できるのですが、

その後で「Cのみのロードスクリプトを単独で実行」とは、どのような操作を実施すれば良いのでしょうか?

hka
Employee
Employee

スクリプト文はどんなものですか。

あと、デバッグモードでステップを行った際にどのようなメッセージが出ていますか。

サンプルでいいのでデータを添付してもらえますか。

Not applicable
Author

> あと、デバッグモードでステップを行った際にどのようなメッセージが出ていますか。

エラーメッセージは表示されません。

サンプルデータが準備できたので添付します。

尚、このサンプルデータでも3つ全て(少なくとも「001」と「003」を読み込むと)を呼び込むとフリーズします。


hka
Employee
Employee

原因がわかりました。

Tab1とTab3で重複する項目名が多すぎて、ロード後にデータ構築するのに時間がかかっています。

重複する項目でTab1とTab3をユニークに接続する項目を残していらない項目を削除してロードしてください。

例えば、以下のテーブル構造の場合、

(Tab1が明細、Tab3がマスタとします。)

Tab1

a,b,c,d,e,f

Tab3

a,b,c,d,e,g,h

Tab1とTab3をユニークに接続する項目がa,b,cの場合、

ロードスクリプトは、

LOAD

a,

b,

c,

f

FROM Tab1

LOAD

a,

b,

c,

d,

d,

g,

h,

FROM Tab3

というように明細側でマスタにある項目は削除してください。

例の場合、Tab1のd,eを削除してください。

上記のデータモデルの理論や作成の仕方に関しては有償トレーニングを受けていただいた方が良いと思います。

Not applicable
Author

回答ありがとうございます。

> 原因がわかりました。

> Tab1とTab3で重複する項目名が多すぎて、ロード後にデータ構築するのに時間がかかっています。

> 重複する項目でTab1とTab3をユニークに接続する項目を残していらない項目を削除してロードしてください。

「重複する項目名が多すぎて...」と言う事は、読み込み不要な項目を削除しても、削除した項目が「重複」していなかったら、あまり意味が無いと言う事ですね!

現在、QlikViewを使用する事で、バックアップデータ閲覧を「単なるデータ閲覧」から「分析閲覧」に品質向上させたいと考えており、過去の実績データであるバックアップデータの読み込みは、

例で挙げて頂いたように「Tab1が明細、Tab3がマスタで...」と言うように重複する項目(コード)でデータ参照と言う訳にはいかないかと...。

とにかく、「不要な項目」を削除して、結果として「重複項目数」が減り、フリーズしなければ「OK」と判断しようと考えていますが、方向性は間違っているでしょうか?

hka
Employee
Employee

データを見る限り、きちんとデータモデルを構築した方が良いと思います。

単純に不要な項目を削除したとしても正確な値がでるかどうかの検証が必要になります。

既にQlikViewのユーザでしょうか。

もしそうなのであれば、販売パートナーに問い合わせてアドバイスを受けてください。

現在QlikViewを検討中で、検証されているということであれば一度QlikTech Japanに問い合わせて頂き

QTJの技術者にアドバイスをもらうのが良いです。

このディスカッションでは伝えきれないことが多々あるので、直接アドバイスを受けていただくのが一番です。