はじめに
QlikSenseで複数データファイルのあるフォルダ内の最新年度のファイルを取得するスクリプトを紹介します。
前提条件
任意のフォルダに「売上_20*.xlsx」の命名規則でデータファイルが複数配置されているとする。
ロードスクリプト
SET vRoot = 'lib://DataFiles';
//ファイルリストを保持するテーブルを作成
For Each File in filelist ('$(vRoot)/売上_20*.xlsx')
FileList:
Load
'$(File)' as FileName
AutoGenerate 1;
Next File
LatestFile:
Load
MaxString(FileName) as LatestFileName
Resident FileList;
LET vPath = Peek('LatestFileName', 0, 'LatestFile');
//以下の記載でも同様に最新ファイルを抽出可能
//LET vPath = FieldValue('LatestFileName', 1);
D
rop Tables FileList, LatestFile;
// 最新年度のファイルをロード
LatestSales:
LOAD
*
FROM [$(vPath)](ooxml, embedded labels, table is Sheet1);
スクリプト詳細
最新のデータファイルの取得
filelist()
で ファイル名が「売上_20*.xlsx」
のリストを取得する。AutoGenerate 1
で1行のデータ (FileName
) を持つレコードを FileList テーブルに保存する。MaxString(FileName)
で文字列の 辞書順(アルファベット順)で最も新しいファイルを取得し、LatestFile テーブルに保存する。vPath
に最新ファイル名がセットされる。
→以下の記載でも最新ファイル名が抽出可能LET vPath = FieldValue('LatestFileName', 1);
※'lib://DataFiles'
及び売上_20*.xlsx
の部分は配置するデータファイル名に応じて適宜変更してください。
中間テーブルの詳細
LatestFile時点で最新年度のデータファイルが抽出できていることが確認できます。
最新のデータファイルをロード
FROM [$(vPath)]
で、変数vPath
に格納されたファイルをロードする。
※ooxml, embedded labels, table is Sheet1
の部分はデータファイルの形式やシート名に応じて適宜変更してください。
おわりに
今回フォルダ内の最新年度のファイルを取得するスクリプトを紹介しました。このスクリプトを応用して
ファイル名が「売上_YYYYMM.xlsx」や「売上_YYYYMMDD.xlsx」の場合も対応できると思いますので参考にしていただければ幸いです。