1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

QlikSenseで、複数のファイルをループの処理で取り込む方法

Last updated at Posted at 2023-12-21

これは何か。

複数のファイルをまとめて取り込む時に毎回めっちゃ苦労するので、やり方をメモしておいたです。

QlikSenseで複数のファイルを一気に取り込みたいとき

ふつうはワイルドカード(*)を使います。

ワイルドカード使うときの書き方
LOAD
  	ID AS key_ID, 
 	Date(Date#(Text(日付), 'YYYYMMDD')) AS hiduke,
  	Today() AS kyou
FROM ['lib://ここにファイルパスを書いてください/*']
		(ooxml, embedded labels, table is sheet1);

ですが、条件を入れたいときとかに、全然うまくいかないことがあります。
そういう時は、Loop処理で取り込みましょう。

ちなみに、JOINとか別に要らなかったり、ファイル名自体が固定の場合は、下記をご参照ください。
【Qliksense】フォルダにある複数のエクセルファイルをfor文で簡単に読み込む

今回は、ファイル名はばらばらだけど、カラム名は(少なくとも抽出分は)共通の場合の処理になります。

書き方

// フォルダのパスを設定
SET vFolderPath = 'lib://ここにファイルパスを書いてください/';

// ファイルのリストを取得
FileList:
LOAD
    FileName() as FileName
FROM [$(vFolderPath)*];

// ループ処理でファイルを取り込む
FOR i = 0 TO NoOfRows('FileList') - 1
    LET vFileName = Peek('FileName', $(i), 'FileList');

    //ファイルを読み込む処理。ここは、普段のLOADで書いてるのと同じかきかたでOK
    Data: //ここで名前を付けておくと、どんどんConcatenateされていってる。はず。
		LOAD
            //↓ここには好きなカラムをいれてくださいね
  			ID AS key_ID, 
 			Date(Date#(Text(日付), 'YYYYMMDD')) AS hiduke,
  			Today() AS kyou
		FROM [$(vFolderPath)$(vFileName)]


    // ここで必要に応じてデータの処理を行う
    // Dataテーブルに取り込まれたデータに対して行う

NEXT;

正直、BIツールはビジュアライズに能力を振ってるので、ゴリゴリとコードを書くものではないと思います。

こういう書き方はできますが、使わずに済むならそれに越したことはありません。
Load * FROMで済む処理を、わざわざこんな風にゴリゴリ書いてしまうと、再現性もないし、メンテナンスもたいへんです
ぜひ、データとして読み込む前に、前処理をしていただければと思います。

ただ、前処理をする、とかそういうことがわからない人たちに囲まれてしまった場合の誰かのお役に立っていれば、、、うれしいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?