Qlik Trainingブログ

  • Qlik Cloud
  • Qlik Sense
  • QlikView
  • 開発者
  • データロード
2023.12.08

複数のExcelファイルから、複数のシートを一括で取り込みたい!

Qlik Sense SaaSを使っている皆さん、こんにちは!

複数のExcelファイルからデータを読み込む経験をお持ちの方は多いと思います。
Qlikで通常の読み込みを行った場合、下記のようにファイル毎、シート毎にLOAD文が分かれます。

以下の例は、「2023年売上データ_東日本.xlsx」「2023年売上データ_西日本.xlsx」という2つのファイルの、「店舗販売」シートと「ネット販売」シートを読み込もうとしているスクリプトです。

しかし、スクリプトをシートの数だけ定義するとスクリプトの行数が増え、編集の抜け漏れが発生する可能性が上がります。

スクリプトを短くまとめるためには、繰り返しの処理が便利です。

Qlik Sense SaaSで繰り返しシート名を指定してロードを行うには、「For each」と「FieldValueList」を使うことで可能です。

今回は、繰り返しの処理をLOAD文に対し行うことで、シートを指定して全てのシートの読み込みを行う方法をご紹介します。

※ 各Excelファイルでシート名、シート数、項目名が同一であることが前提となります。

目次

※本記事は「2023年11月時点のSaaS」で作成しています。

サンプルデータの紹介

Excelファイルのサンプルとして、「店舗販売」「ネット販売」シートが存在する、「2023年売上データ_東日本.xlsx」「2023年売上データ_西日本.xlsx」ファイルを今回は読み込みます。
もし同じレイアウトのファイルを複数読み込むようなアプリがある場合は、是非ご自身のデータで試してみてください!

・2023年売上データ_東日本.xlsx


▼「店舗販売」シート
No 顧客名 売上
001 A様 100
002 B様 200
003 C様 300
▼「ネット販売」シート
No 顧客名 売上
004 D様 400
005 E様 500
006 F様 600

・2023年売上データ_西日本.xlsx

▼「店舗販売」シート
No 顧客名 売上
007 G様 700
008 H様 800
009 I様 900
▼「ネット販売」シート
No 顧客名 売上
010 J様 1000
011 K様 1100
012 L様 1200

アプリの[データ ロード エディタ]にスクリプトを記述する

1) Qlik Sense SaaSでアプリを作成し、「2023年売上データ_東日本.xlsx」「2023年売上データ_西日本.xlsx」ファイルをアップロードします。

2) アプリの[データ ロード エディタ]にスクリプトを記述し、データをロードします。
  ※解説はコメント(//の後)に記載しています。

▼スクリプト例

//取り込むファイル名・シート名を列挙します。
//以下はInlineで指定していますが、別途ファイルを用意し
//データを取り込んでもかまいません。

ファイル名リスト:
LOAD * inline [
ファイル名
2023年売上データ_東日本
2023年売上データ_西日本
];

シート名リスト:
LOAD * inline [
シート名
店舗販売
ネット販売
];

//ファイルごとに繰り返し処理して取り込みます。
For each vFile in FieldValueList('ファイル名')

//シートごとに繰り返し処理して取り込みます。
For each vSheet in FieldValueList('シート名')

LOAD
No,
顧客名,
売上
FROM [lib://DataFiles/$(vFile).xlsx]
//シート名の記述箇所を変数で指定します。
(ooxml, embedded labels, table is '$(vSheet)');

//次のシートに進んで繰り返し処理をおこないます。
NEXT

//次のファイルに進んで繰り返し処理をおこないます。
NEXT

//使用しない「ファイル名リスト」「シート名リスト」テーブルを削除します。
Drop Table ファイル名リスト,シート名リスト;

3) データのロードを行うと、以下のように読み込まれます。

▼データ
No 顧客名 売上
001 A様 100
002 B様 200
003 C様 300
004 D様 400
005 E様 500
006 F様 600
007 G様 700
008 H様 800
009 I様 900
010 J様 1000
011 K様 1100
012 L様 1200

FieldValueListの記述方法について

「FieldValueList」は項目の値をリストで返します。
今回は、変数「vFile」に「ファイル名」の値リスト「2023年売上データ_東日本,2023年売上データ_西日本」の値を格納し、変数「vSheet」に「シート名」の値リスト「店舗販売,ネット販売」の値を格納しています。

For Eachの記述方法について

「For Each」は、For EachからNextの間の処理を繰り返し実行します。

▼記述例

 For Each vSheet in FieldValueList('シート名')
 ~
 Next

さいごに

今回は「For each」と「FieldValueList」の機能についてご紹介いたしましたが、いかがでしたでしょうか。
上記を使いこなせるようになると、Excelファイルに変更があってもまとめてシートを取得できたり、同じような処理のスクリプトを短い文で記載できたりします。

沢山のExcelファイルを読み込むとスクリプトが長くなりがちですが、本記事の内容でスクリプトを管理しやすく実装することを検討してみてはいかがでしょうか。

関連している記事

  • Qlik Cloud
  • Qlik Sense
  • 運用者
2024.04.24

Qlik Cloud 日本リージョンへの移行方法(qlik-cli利用時の注意点)

先日、本ブログにて、日本リージョンへテナントを移行する方法の全体像をご紹介しました。今回は、コマンドラインのqlik-cliを用いたテナント移行時の注意点と、コマンドやスクリプトの記述例をご紹介します。

  • Qlik Sense
  • Qlik Cloud
  • 開発者
  • 運用者
2024.04.17

Qlik Application Automation活用術:Microsoft Teamsにメッセージを配信する

Qlik Sense SaaSを使用していて、メジャーの結果と事前に設定した閾値を比較して、閾値を超えたら通知を飛ばせたら良いな、と考えたことはありませんか?本記事では、Qlik Sense SaaSの「Qlik Application Automation」でMicrosoft Teamsにメッセージを配信する方法を紹介します。

  • Qlik Cloud
  • Qlik Sense
  • 運用者
2024.04.01

Qlik Cloud 日本リージョンへの移行方法

2024 年 3 月 26 日に QlikTech 社より Qlik Cloud の日本リージョン開設の ニュースリリースが発表されました。本ブログではすでに Qlik Cloud(Qlik Sense Enterprise SaaS) をご利用中のユーザー様に向けて、日本リージョンへテナントを移行する方法をご紹介します。

ページの先頭へ戻る