はじめに
QlikSenseで複数データファイルのあるフォルダ内の最新年度のファイルを取得するスクリプトを紹介します。
前提条件
任意のフォルダに「売上_20*.xlsx」の命名規則でデータファイルが複数配置されているとする。
ロードスクリプト
SET vRoot = 'lib://DataFiles';//ファイルリストを保持するテーブルを作成For Each File in filelist ('$(vRoot)/売上_20*.xlsx')FileList:Load'$(File)' as FileNameAutoGenerate 1;Next FileLatestFile:LoadMaxString(FileName) as LatestFileNameResident FileList;LET vPath = Peek('LatestFileName', 0, 'LatestFile');
//以下の記載でも同様に最新ファイルを抽出可能//LET vPath = FieldValue('LatestFileName', 1);Drop 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」の場合も対応できると思いますので参考にしていただければ幸いです。














