お問い合わせ
8 分で読むことができます。

【Qlik Sense】部分的なリロード(Partial Reload)

2024年5月31日

はじめに

 Qlik Senseにおける「通常リロード(Full Reload)」とは異なるリロード方法をご存知でしょうか。今回は新たなアプローチ方法「部分的なリロード(Partial Reload)」についてご紹介いたします。

Partial Reload - 概要編 -

 部分的なリロード(Partial Reload)は、通常リロード(Full Reload)のように既存のデータモデルをすべて新規に作成するのではありません。

 データモデル内の全テーブルを保持し、Replace、Add、またはMerge接頭辞が付いたLoad文を利用して、指定された部分的なリロードのみを実行します。

 これにより、データの変更分のみを追加、更新、または削除することが可能となります。

 

 Partial Reload - 利点 - 

  • 高速処理:変更されたデータのみをロードするため、処理速度が向上します。
  • メモリ効率:ロードされるデータ量が少なくなるため、メモリ消費が抑えられます。
  • ネットワーク負荷軽減:ソースデータへのクエリがより高速に実行されます。

 

 Partial Reloadで利用できるスクリプト

 Partial Reloadで利用できるスクリプトには以下のものがあります。

スクリプト 内容 基本構文

Add

指定したテーブルにレコードを追加可能。
フルリロードの場合、通常のLoad文として機能する。
Concatenateが使用された場合や同じ項目情報を持つテーブルが存在する場合、既存テーブルに追加される。
※重複チェックは実施されない。
Add [only] [Concatenate (tablename)] ...

Replace

ロードされたテーブルを別のテーブルに置き換えることが可能。
フルリロードの場合、通常のLoadステートメントとして機能するが、Drop Tableが実行される。
Replace [only] [Concatenate [(tablename)]] …
Merge ロードされたテーブルに、insert、update、deleteといった3つのオプションを適用することが可能。 Merge [only] [(SequenceNoField)] on ListOfKeys [Concatenate [(tablename)]] …
Operation, —-, —-,

SequenceNoField:操作の順序を定義するシーケンス番号
ListOfKeys:キーを指定する項目名
Operation:insert, update, deleteを指定
Only ステートメントが部分的なリロード中にのみ実行される必要がある場合に記載する。
フルリロード中は無視される。
Add Only …
Replace Only …
Merge Only …

 

Full Reload vs Partial Reload

 以下はFull Reload(通常リロード)とPartial Reload(部分的なリロード)の比較です。

Statement Full Reload Partial Reload
Load ...
Add / Replace / Merge Load ...
Add / Replace / Merge Only Load ...

 

 〇:実行される

 ✖:実行されない

 【注意点】Partial Reloadを明示的に記載するためには、Only関数を使用します。

 

Partial Reload - IsPartialReload()関数 -

IsPartialReload()

現在のリロードが、

 Partial Reload(部分的なリロード)の場合、True(-1)

 Partial Reload以外の場合、False(0)

を返してくれます。

以下のように、スクリプトがPartial Relaodかどうかを判定することができます。

//Partial Reloadの処理であることを以下に明示的に記載
If(IsPartialReload() = True()) then
    //Partial Reloadの処理を以下に記載
    …
End if;

【注意点】Partial Reloadのみ有効なスクリプト(Only)をFull Reloadの処理に対して記載しても無視されてしまいます。

 

Partial Reload - 活用編 -

 続いて、Partial Reloadの具体的な活用方法をご紹介します。Replace、Add、またはMerge接頭辞が付いたLoad文を使用します。

 

1. Replace - テーブルを置換する -

 Replaceを使用して、テーブル名は一緒ですが、データを入れ替えることが可能です。

PartialReload_Replace例 1-1)Full Reloadの場合

FullReload_Replace_LoadScriptFullReload_Replace_Table

 

例 1-2)Partial Reloadの場合 (Replace Only)

PartialReload_ReplaceOnly_LoadScriptPartialReload_ReplaceOnly_Table

 

2. Add - 既存テーブルへ行を追加する -

 Addを使用して、既存テーブルへ行を追加することが可能です。

【注意点】重複チェックが実施されないため、データ重複の可能性があることに注意が必要です。

PartialReload_Add

例 2-1)Full Reloadの場合

FullReload_Add_LoadScriptFullReload_Add_Table

例 2-2)Partial Reloadの場合 (Add Only)

PartialReload_AddOnly_LoadScriptPartialReload_AddOnly_Table

 

3. Merge - 既存テーブルに対する複雑な処理 -

 Mergeを使用して、別のテーブルを既存テーブルに対して挿入、更新、削除を行うことが可能です。

  ● MergeスクリプトのOperation 

   MergeはLoad文の最初の項目に、Operationという項目名が必要です。

  Operationには以下3つの操作を指定できます。今回は特に"Update"についてご紹介します。

Insert:挿入

Update:更新

Delete:削除

● Update - 既存テーブルの行を更新する -

 Merge、かつUpdateというOperationを使用することで、既存テーブルの行を更新することが可能です。

PartialReload_Merge例 3-1)Full Reloadの場合

FullReload_Merge_LoadScriptFullReload_Merge_Table

例 3-2)Partial Reloadの場合(Merge Only)

PartialReload_Merge_LoadScriptPartialReload_Merge_Table

 

Partial Reload - 実践編 -

 Qlik Senseにて "Replace" を使用し、Full Reload および Partial Reloadそれぞれの挙動を確認してみます!

 

● Qlik Sense - ロードスクリプト -

 ロードスクリプトは下図になります。下図のように、Table1について IsPartialReload()関数 を使用してFull ReloadとPartial Reloadの処理を区別しています。

PartialReload_実践_LoadScript目的としては、Partial Reloadにより、Table1が ID = {106, 107, 108} のデータに置き換わるかどうかを確認します。

 

● Qlik Sense - シート (Full Reload バージョン) -

 以下は、Full Reload(通常リロード)を行った際のQlik Senseシート画面になります。

テーブルでデータを確認すると、ID = {101, 102, 103, 104, 105}のレコードが追加されていることがわかります。

FullReload_実践_Table1

 

● Qlik Sense - シート (Partial Reload バージョン) -

 さて、Partial Reloadは一体どこで、どのように実行するのでしょうか。

それは... チャートの『ボタン』になります!

 〇 設定方法
      1. ボタンのアクション ”データのリロード" を選択する
      2.  ”部分的なリロード”に✅を入れる

   (※最終イメージとしては下図のようになります。)

PartialReload_setup

上記実装したボタンを押下することで、Partial Reloadが実行されます。

実際に実行してみます! 下図はPartial Reload実行後の結果です。

PartialReload_実践_Table1

Table1が ID = {106, 107, 108} のレコードに置き換わったことが確認できます。

 

おわりに

 通常リロードでは、多くのメモリが消費され、かつロードに時間がかかってしまいます。そんなときに『部分的なリロード(Partial Reload)』を有効に活用していきましょう!

 この情報が少しでもお役に立てれば幸いです。

 

参考文献

  1. 部分的なリロード | Windows 用 Qlik Sense ヘルプ(https://help.qlik.com/ja-JP/sense/February2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/PartialReload.htm)
  2. Qlik Tips: 部分的なリロード (Partial Reload)の実践 |Qlik Japan - YouTube(https://www.youtube.com/watch?v=F1SMm9TWJJg)

 

 

Topics: QlikSense Qlik
Shine

Written by Shine

埼玉県出身。2023年新卒入社。1年目よりQlik Senseにおけるデータ分析作業を支援。邦ロック好き。

Qlik_No1_2022
QSナレッジ事例バナー
DXバナー
Qlikseminar
qs_trial
Qllikseminar
Vizlibナレッジ
Vizlibセミナー
qv_knowledge
book_kawaii
Snowflake_バナー

新着記事

タグ別の記事

全て表示