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」の場合も対応できると思いますので参考にしていただければ幸いです。