Qlik Trainingブログ

  • SaaS
2022.05.13

ワイルドカード「*」が使えない!?Qlik Sense SaaSでデータをまとめて取り込む方法

Qlik Senseでは、ファイル名に「*」の記号(以下、「ワイルドカード」という)を用いることで、複数ファイルを一括でロードできます。Qlikユーザーの皆さまにはおなじみの便利機能ですが、 Qlik Sense SaaSをご利用の場合、一部のクラウドサービスではこの方法が使えないことがあります。

  • ワイルドカード指定が利用できない代表的なクラウドサービスの例
  • Amazon S3
  • Azure Storage
  • Dropbox
  • Google Cloud Storage
  • Google Drive
  • OneDrive

こちらの記事では、そんなワイルドカード指定が利用できないクラウドサービスから、データをまとめて取り込む方法について紹介します。

目次

※本記事は「2022年04月時点のSaaS」で作成しています。

ワイルドカードを使って、ファイルをまとめて取り込む方法

Qlik Senseでは、データを取り込む際、ロードスクリプトに「FROM」から始まる一文が記述されます。

こちらは「データの接続定義」を表しており、上記の例の場合、「data」という接続先にある「実績_202201.xlsx」を取り込みます。
※Qlik Senseでは、各種データソースへの接続定義に接続先名(例:data)をつけて管理します。

このとき接続先「data」に、項目名や項目数などレイアウトが同じ実績ファイル(例:実績_202202.xlsx、実績_202203.xlsx 等)がある場合、From文のファイル名部分をワイルドカードに変更することで、まとめて取り込むことが可能です。

※上図の場合、「data」という接続先にある「実績_」からはじまるExcelファイルを全て取り込みます。

ワイルドカードを使わず、ファイルをまとめて取り込む方法

ではここからは、ワイルドカードを使わずに、同一レイアウトのファイルをまとめて取り込む方法について紹介します。

処理内容としては、まず所定のフォルダにあるファイル名のリストを取得し、その後、ループ処理で1ファイルずつ順番にデータを取り込みます。今回は例として「Azure Storage」に接続し、「実績」と名前のつくExcelファイルをまとめて取り込むことを想定して解説します。

※Azure Storageへの接続先を事前に作成している前提です。下記のスクリプトでは、この接続先名を「Azure_Storage」としています。
※スクリプトは、解説下の「サンプルスクリプト」からコピーしていただけます。

▼解説

①接続先「Azure_Storage」にあるファイル名を順番に取得

接続先「Azure_Storage」にあるファイルパスを順番に全て取得し、「ファイル名」という項目名として「ファイルリスト_temp」テーブルに格納します。

▼Tips

②「実績」とつくファイル名だけを抜粋

①では、接続先のすべてのファイルを取得しますが、そこから指定のファイル(例:ファイル名に「実績」とつくファイル)のみ取り込みたい場合、こちらの②の記述が必要となります。①で作成した「ファイルリスト_temp」テーブルから、指定のファイルのみに絞りこんだ「ファイルリスト」テーブルを作成します。

▼Tips

③「実績」とつくファイルを順番に取り込むループ処理

変数の指定と、その変数を用いたFor文での繰り返し処理を行います。

▼Tips

④データを順番に取り込む

From文のファイル名を指定する箇所を変数にしておくことで、ループ処理の中で複数のファイルを取り込むことができます。

サンプルスクリプト

※コピーしてご活用ください。
※赤字部分は必要に応じて修正をお願いいたします。
※弊社では、以下環境にて検証を実施しました。
  Azure Storage・Google Drive
  環境によって、接続定義部分の記述方法が異なるため、注意してください。
<例>
■Azure Storageの場合
 For each filePath in filelist ('lib://Azure_Storage/')
 ※接続先の最後に、スラッシュ(/)が必要

■Google Driveの場合
 For each filePath in filelist ('lib://Google_Drive/○○○○○')
 ※接続先の最後に、スラッシュ(/)は不要

★サンプルスクリプト(以下をご利用ください)★

For each filePath in filelist ('lib://Azure_Storage/')

ファイルリスト_temp:
Load '$(filePath)' as ファイル名 AutoGenerate(1);

Next filePath;

NoConcatenate

ファイルリスト:
Load
*
Resident ファイルリスト_temp
Where ファイル名 like '*実績*';

Drop Table ファイルリスト_temp;

Let NumRows = NoOfRows('ファイルリスト');
For i = 0 to $(NumRows) - 1
Let vFILEName = Peek('ファイル名',$(i),'ファイルリスト');

データ:
Load
*
From [$(vFILEName)]
(ooxml, embedded labels, table is Sheet1);

Next

Drop Table ファイルリスト;

さいごに

クラウドサービスへ接続する場合、複数ファイルをまとめて取り込むときに便利なワイルドカードの指定が使えないことがあります。そんな場合は、ぜひ今回紹介したスクリプトを活用してみてください。スクリプト内で使用した関数について、さらに詳しく学び、他のケースにも活用されたいという方は、下記コンテンツも参考にしていただければと思います。

関連している記事

  • SaaS
2022.06.16

Qlik Sense SaaSの利用状況を調査しよう!~利用ログ分析アプリ~

想定どおりのユーザーが利用しているか?何名くらいが利用しているか?どのアプリが利用されているか?など、データ活用の浸透度合いを把握する際にも重要な情報となりますので、定期的に利用状況をチェックして、データ活用の推進に向けた施策へ反映していきましょう。

  • SaaS
2022.04.27

Qlik Senseで日付データを使いこなす!「年度」や「四半期」などの作成方法

Qlik Senseは簡単な加工を行うことで「年度」や「四半期」「曜日」など様々な時系列の分析軸を作成できます。「年度」や「四半期」、「曜日」などもまとめてご紹介します。

  • SaaS
2022.04.26

Qlik Sense ピボットテーブルの合計行に色を付けたい

Qlik Senseは複数ファイルを一括ロードする際、ファイル名にワイルドカード(*)が利用できますが、Qlik Sense SaaSをご利用の場合、一部のクラウドサービスではこの方法が使えないことがあります。そんなときの対処法をご紹介します。

ページの先頭へ戻る