Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
質問させてください。
シート名(エクセルファイルです)をクリックビューで項目名として取り込むための
ロードスクリプトがあればご教授くださいませ。
サンプルのスクリプトを作成してみました。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としています。)
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. シート名を列名として一つのテーブルに纏める処理としています。