前回の記事でパーシャルリロードの実行について解説しました。

その際、ロードスクリプトについて、
『通常リロードの部分を「If not IsPartialReload() then~End If」で囲み、パーシャルリロードの部分を「Replace Load」と書きます。』
と説明しました。
実際には、「If not IsPartialReload() then~End If」の部分は必ずしも必要はなく、「Replace」の部分は、AddやMergeと書くことも可能です。
しかし、「If not IsPartialReload() then~End If」を使っていないと、DropやJoinの構文でパーシャルリロードがエラーとなる現象があります。
これは、Qlikの仕様による制限によるものです。今回はこの内容について説明します。
パーシャルリロードでのエラー
Error: Table 'Temp_Fact' not foundQlik Community のスレッドでは、JOINやDROPを含むスクリプトをパーシャルリロードで実行した際に、上記のように一時テーブルが見つかりませんというエラーが出ると報告されています。
このエラーは、パーシャルリロードの仕様による制限です。
パーシャルリロードはデータモデルを再構築しません。既存のデータモデルをそのまま保持し、Add / Replace / Merge の部分だけリロードを実行します。
そのため、JOIN の対象テーブルが存在しない、DROP しようとしているテーブルが今回のリロードで作られない、といった状況が発生し、結果として 「Table not found」のエラーが出ます。
対処法
この仕様のため、スクリプトにて、フルリロードで読み込む部分とパーシャルリロードで読み込む部分を明記することが望ましいです。
前回記事では、『If not IsPartialReload() then~End If』を使い、明記していました。
その他、テーブル存在チェック(NoOfTables)等も有効です。
さいごに
パーシャルリロードは制限はありますが、便利な機能です。
エラーを回避し、ぜひパーシャルリロードを活用してください。


