- Qlik Cloud
- Qlik Sense
- QlikView
- 開発者
- データロード
先行ロードを使用してスクリプトを短くまとめよう!
先行ロードの機能を使用すると、すぐ下に記載されたLOAD文の結果をデータソースとして、上のLOAD文で使用することができます。
Qlik Sense SaaSのアプリに、Googleドライブ内の特定のフォルダにある複数のスプレッドシート ファイルを一括で読み込みたいということはありませんか?
そんな希望を叶えるには、ロード スクリプトでループ処理を行うことで、スプレッドシート ファイルを一括で読み込むことが可能です!
本記事ではその方法を紹介します。
※本記事は「2024年06月時点のQlik Sense SaaS」で作成しています。
■前書き
本記事内の説明では、シートとファイルを区別するため、Googleスプレッドシートのファイルを「スプレッドシート ファイル」、ファイル内のシートを「シート」と記載します。
■前提条件
以下2点の条件を満たす全てのスプレッドシート ファイルを読み込むことが前提です。
1. 特定の同じフォルダに存在するスプレッドシート ファイル
2. 同一のシート名を持つスプレッドシート ファイル
1. 特定の同じフォルダに存在するスプレッドシート ファイル
|
2. 同一のシート名を持つスプレッドシート ファイル
|
|
|
以下のような手順で設定を行います。
<設定手順>
1) 以下ブログ記事の「Googleスプレッドシートへのデータ接続作成手順」の手順でデータ接続を作成します。
https://www.ashisuto.co.jp/qlik-training_blog/article/qlikgooglespreadsheet.html
2) [データ ロード エディタ]を開きます。
3) 手順「1)」で作成したデータ接続の一番左のアイコン([接続文字列を挿入]ボタン)をクリックし、「LIB CONNECT TO '~~';」のような接続文字列を挿入します。
|
4) Googleの共有ドライブのスプレッドシート ファイルを読み込む場合は、対象のドライブを開いた時のURLでドライブのIDを確認し、メモ帳やテキスト ファイルなどに残しておきます。
マイドライブの場合はドライブのIDが与えられていないため、確認は不要です。
|
5) スプレッドシート ファイルが保存されているフォルダを開いた時のURLでフォルダのIDを確認し、メモ帳などに残しておきます。
|
6) 以下のようなロード スクリプトを記述します。変更必須の部分を★で示します。
//★手順「3)」で指定する接続文字列です。
LIB CONNECT TO '~~';
//ドライブのIDとフォルダのIDを指定して、読み込みたいスプレッドシート ファイルの「key」を取得します。
スプレッドシートキー:
SELECT key
FROM ListSpreadsheets
WITH PROPERTIES (
//★XXXXXXXXXの部分にドライブのIDを指定します。
//共有ドライブの場合は手順「4)」で確認したドライブのIDを指定し、マイドライブの場合は「driveId=''」と指定します。
driveId='XXXXXXXXX',
//★YYYYYYYYYの部分に手順「5)」で確認したフォルダのIDを指定します。
//「trashed = false」の記述により、ゴミ箱にあるファイルを除外します。
query='parents in ''YYYYYYYYY'' and trashed = false'
);
//FieldValueListを使用して「key」項目の値を変数v_Sheetkeyに設定し、For EachからNextまでの処理を「key」項目の値の分、繰り返し行います。
For Each v_Sheetkey in FieldValueList('key')
//変数v_Sheetkeyと一致するスプレッドシート ファイル内の、読み込みたいシートの「worksheetKey」を取得します。
ワークシートキー:
Load worksheetKey
//★読み込みたいシートのシート名を指定します。
//同一の文字列で始まる全てのシートを読み込みたい場合はワイルドカードとlike演算子を使用して「Where title like 'シート*'」のように記述します。
Where title='シート1';
SELECT worksheetKey,title
FROM ListWorksheets
WITH PROPERTIES (
spreadsheetKey='$(v_Sheetkey)'
);
Next;
//FieldValueListを使用して「worksheetKey」項目の値を変数v_worksheetKeyに設定し、For EachからNextまでの処理を「worksheetKey」項目の値の分、繰り返し行います。
For Each v_worksheetKey in FieldValueList('worksheetKey')
//変数v_worksheetKeyと一致するシートの、読み込みたい項目を取得します。
//★読み込みたい項目の項目名を指定します。
//項目名が読み込み対象のシートにより異なる場合は「Load *」「SELECT *」のように指定する必要があります。
Load [商品ID],[商品名];
SELECT [商品ID],[商品名]
FROM GetWorksheetV2
WITH PROPERTIES (
worksheetKey='$(v_worksheetKey)',
gidOverride='',
generatedNumberedColumns='false',
skipRows=''
);
Next;
//Drop Tablesを使用して不要なテーブルを削除します。
Drop Tables スプレッドシートキー,ワークシートキー;
7) [データをロード]でロードを行い、テーブルのチャートなどから意図したデータが読み込まれていることを確認します。
|
■解説
・ロード スクリプト記述例の中の「query」の条件にはGoogle Drive APIのクエリを指定します。Google Drive APIのクエリはQlik製品外の内容のため、クエリの意味などの詳細な内容はGoogle社の情報をご確認ください。
・「For Each .. Next」は、ループ処理を行います。ForからNextまでの間にあるロード スクリプトの処理が、リストの各値の分だけ実行されます。
「リスト」については、今回の「For Each 変数名 in FieldValueList('項目名')」の場合はFieldValueListにより、指定した項目の値のリストが生成されます。
今回は、ロード スクリプトでループ処理を行うことで、特定のフォルダのGoogleスプレッドシート ファイルをQlik Sense SaaSのアプリに一括で読み込む方法を紹介しました。
この方法で効率的にファイルを読み込むことができます。ぜひ試してみてください!
先行ロードの機能を使用すると、すぐ下に記載されたLOAD文の結果をデータソースとして、上のLOAD文で使用することができます。
テーブルに表示する列や行を、ユーザーが選択できるようにする方法をご紹介します!
Qlik Senseでは運用状況を効率的に把握するための 便利なモニタリングアプリが用意されています。 モニタリングアプリの使い方をご紹介いたします。