Qlik Community

Qlik Japan

Qlik Communityの日本語のグループです。 Qlik製品に関する日本語資料のダウンロードや質問を日本語で投稿することができます。質問に関する回答は基本的に日本語で行われます。 日本語資料はグループにJoinしなくてもダウンロード可能ですが、 質問を投稿したい場合は、CommunityへのログインをしてグループにJoin Requestを行って下さい。 承認を受けた後に質問を投稿することが可能になります。 ログインはQlikIDを登録してください。

konainma
New Contributor

シート名を項目名として扱うロードスクリプト

質問させてください。

シート名(エクセルファイルです)をクリックビューで項目名として取り込むための

ロードスクリプトがあればご教授くださいませ。

Tags (1)
1 Reply
Highlighted
Employee
Employee

Re: シート名を項目名として扱うロードスクリプト

サンプルのスクリプトを作成してみました。ODBCドライバを利用してExcelファイルにアクセスしてテーブル情報としてシート情報を取得し、その後にシートごとにロードを実行するような処理となっています。

実現されようとしている内容によって修正が必要にはなりますが、大まかな流れをご参考にして頂ければと思います。以下サンプルの使用方法についてご説明を記載させて頂きます。

1. 以下のリンク先からファイルをダウンロードします。(中にinput.xlsxとSample.qvwが含まれています。)

http://community.qlik.com/servlet/JiveServlet/downloadBody/8138-102-1-11249/Sheet.zip

2. input.xlsxをC:\Excelディレクトリ以下に保存します。

3. input.xlsxをデータソースとして以下の様に「Microsoft Excel Driver」のデータソースを作成します。(名称はinputとしています。)

img.png

4. Sample.qvwを任意のフォルダに配置して実行します。ロードスクリプトは以下の様になっています。

-----------------------

//Excelから抽出したデータの結果を纏めるテーブルを作成

Result:

Load * Inline

[Sheet1,Sheet2,Sheet3];

ODBC CONNECT TO [input;DBQ=C:\Excel\input.xlsx];

//SQLtablesステートメントでExcelのテーブル情報(=シート情報)を取得

tables:

SQLtables;

//Excelのテーブル(=シート)の数を取得して、シート数分ループ処理を実行

FOR i = 0 to NoOfRows('tables')-1

  //tablesのTABLE_NAME列からテーブル名(=シート名)を取得(列名に$が含まれるため、$をreplace関数で削除)

  LET sheetName = replace(peek('TABLE_NAME', i, 'tables'), '$','');

 //シート上のA列のデータを抽出してシート名の列にロード。(ロード先は最初に作成したResultテーブルにConcatenate)

  Concatenate(Result)

  LOAD A AS [$(sheetName)]

  FROM C:\Excel\input.xlsx(ooxml, no labels, table is [$(sheetName)]);

NEXT

-----------------------

5. シート名を列名として一つのテーブルに纏める処理としています。

img2.png