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