- Qlik Cloud
- Qlik Sense
- QlikView
- 開発者
- データロード
項目名のゆらぎをまとめる方法
各データファイル内に項目名のゆらぎが存在することはありませんか?今回は、項目名のゆらぎを1つのテーブルにまとめる方法を紹介します。
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」は項目の値をリストで返します。
今回は、変数「vFile」に「ファイル名」の値リスト「2023年売上データ_東日本,2023年売上データ_西日本」の値を格納し、変数「vSheet」に「シート名」の値リスト「店舗販売,ネット販売」の値を格納しています。
「For Each」は、For EachからNextの間の処理を繰り返し実行します。
▼記述例
For Each vSheet in FieldValueList('シート名')
~
Next
今回は「For each」と「FieldValueList」の機能についてご紹介いたしましたが、いかがでしたでしょうか。
上記を使いこなせるようになると、Excelファイルに変更があってもまとめてシートを取得できたり、同じような処理のスクリプトを短い文で記載できたりします。
沢山のExcelファイルを読み込むとスクリプトが長くなりがちですが、本記事の内容でスクリプトを管理しやすく実装することを検討してみてはいかがでしょうか。
各データファイル内に項目名のゆらぎが存在することはありませんか?今回は、項目名のゆらぎを1つのテーブルにまとめる方法を紹介します。
Qlik Senseを使用したデータ分析の際、一つのチャート内で簡単に異なる角度からデータを見たいと思ったことはありませんか?それはサイクリック軸で可能です。本記事では、サイクリック軸の作成/設定手順と、使用例を紹介します!
Qlik Cloud Data Integration(QCDI)は、データの抽出、ロード、変換を簡素化し、リアルタイム分析と意思決定を加速する、Qlikの強力なクラウドプラットフォームです。