Excel ソース¶
Excel データソースは、Apache POI ライブラリ (Apache POI API - the Java API for Microsoft Documents) を使用して、Excel ファイルからデータを抽出します。
新しい Excel データソースを作成するには、[File] > [New] > [Data source] メニューで [Excel] をクリックします。データソースを作成するダイアログが表示されます。

Excel データソースの作成¶
このダイアログでは、以下のデータを指定する必要があります。
Name: データソースの名前。
Type of file: ファイルのバージョンに応じて、[Stream tuples] オプションが有効または無効になります (下記参照)。
File location: Excel ファイルへのパス。このパスは、補間変数を使用することで、作成したクエリに応じてパラメータ化できます (「 補間変数によるパスなどの値 」を参照)。使用可能なパスの形式と、そこでパラメータを使用する方法については、「 Virtual DataPort でのパスの種類 」を参照してください。
Worksheet (オプション): データの抽出元とするワークシートの名前。
空のままにすると、ファイルの 1 番目のシートから基本ビューにデータが取得されます。
「Sheet1, Sheet2」のように、複数のシートをカンマ区切りで指定することもできます。
Excel ファイルのワークシート 1 つのみではなく、すべてのワークシートからデータを抽出する場合は、[Extract data from all sheets] をチェックします。この場合、基本ビューの各フィールドは、ファイルの 1 番目のワークシートの列によって決まります。したがって、以下の点を考慮する必要があります。
2 番目以降のシートに、1 番目のシートにない列があると、その列は無視されます。
1 番目のワークシートの列の一部が存在しないワークシートからデータを取得した行では、それらの列の値は NULL になります。
たとえば、Excel ファイルに 2 つのワークシートがあり、1 番目のシート (Sheet1) に A 列、B 列、および C 列が存在し、2 番目のシート (Sheet2) に A 列、C 列、および D 列が存在するとします。
基本ビューには、ファイルの 1 番目のシートにある A、B、および C の各列に対応するフィールドが存在します。このビューにクエリを実行して、ファイルの 2 番目のシートからデータを抽出すると、Virtual DataPort によって以下の処理が実行されます。
2 番目のシートには B 列が存在しないので、B フィールドの値として NULL が返されます。
D 列の値は無視されます。
これらのルールは、[Worksheets] ボックスに複数のワークシートを入力した場合にも適用されます。この場合、基本ビューのフィールドは、このリストの最初のワークシートの列によって決まります。
各行のデータの取得元であるワークシートの名前を格納するフィールドを基本ビューに追加するには、[Extract sheet name as a new column] をチェックします。このフィールドは、デフォルトで「sheet_name」という名前で追加されます。
[Extract data from all sheets] オプションをチェックした場合に、行のデータをどのワークシートから取得したかがわかると便利です。
StartCell と EndCell (オプション): 処理するセル範囲の最初のセルと最後のセル。
[StartCell] が
B2
、[EndCell] がZ99
の場合、範囲 B2:Z99 にあるデータが返されます。[StartCell] が
B2
、[EndCell] が空の場合、B2 からファイル末尾までのすべてのデータが取得されます。[StartCell] が空、[EndCell] が
Z99
の場合、範囲 A1:Z99 にあるすべてのデータが取得されます。両方のパラメータが空の場合、シートにあるすべてのデータが取得されます。
[Extract data from all sheets] オプションをチェックしている場合、このデータソースから作成した基本ビューからは、ファイルの各ワークシートにあるこのセル範囲のデータが返されます。
Has headers: 取得するデータの最初の行に、データではなく列名が格納されている場合は、このチェックボックスをチェックします。
Stream tuples: チェックすると、ファイルは SAX パーサー (Excel 2007 ファイル (*.xslx) でのみ使用可能) を使用して読み取られます。チェックしていない場合、ファイルは DOM パーサーを使用して読み取られます。
DOM パーサーと比較した SAX パーサーの利点は、メモリの使用量がきわめて少ないことです。サイズが大きい Excel ファイルを扱う場合に重要な利点となります。
[Stream tuples] をチェックするかどうかによって、このデータソースから作成する基本ビューのデータ型が影響を受けます。
[Stream tuples] をチェックしていない場合、Virtual DataPort サーバーでは、ファイルのメタデータから各フィールドの型が取得されます。
[Stream tuples] をチェックしている場合、Virtual DataPort サーバーでは、ファイルの最初の数行から各列の型が推測されます。
この型の推測に使用する行数は、
<DENODO_HOME>/conf/vdp/VDBConfiguration.properties
ファイルのcom.denodo.vdb.contrib.wrapper.xls.event.content.introspection.maxrows
プロパティで制御します。この値を変更するには、VQL シェルで以下のコマンドを実行します。
SET 'com.denodo.vdb.contrib.wrapper.xls.event.content.introspection.maxrows'
= '<number of rows>';
[Stream tuples] をチェックしている場合、日付値が格納されている列は必ずテキストフィールドと推測されます。日時値 (localdate、timestamp など) を取得するには、以下の 2 つの方法があります。
[Stream tuples] チェックボックスのチェックをはずします。これによって、日付値が格納されている列が基本ビューでは日付型のフィールドと推測されます。この場合、SAX パーサーを使用できなくなるので、パフォーマンスの面で不利になる問題があります。
この基本ビューから選択ビューを作成し、 TO_LOCALDATE 、 TO_TIME 、 TO_TIMESTAMP 、または TO_TIMESTAMPTZ の各関数を使用して、テキストフィールドを日時フィールドに変換します。
[Metadata] タブでは、データソースを保存するフォルダを設定して説明を指定できます。データソースを編集する際、 ボタンをクリックして、その所有者を変更することもできます。
[Save] をクリックするとデータソースが作成されます。次に、[Create base view] をクリックすると、新しい基本ビューに設定されるスキーマが表示されます。[Save] をクリックすると基本ビューが作成されます。
他のデータソースと異なり、1 つの Excel データソースから作成できる基本ビューは 1 つだけです。同じファイルからデータを取得する基本ビューをもう 1 つ作成する必要がある場合は、Excel データソースをもう 1 つ作成します。
管理ツールでは、Excel データソースはデータソースの一種と見なされますが、内部的にはカスタムデータソースです。そのため、以下のように軽微な影響がいくつかあります。
Excel データソースを列挙する VQL コマンドは LIST DATASOURCES CUSTOM ですが、これによって、Excel データソースだけでなく、すべてのカスタムデータソースのリストが返されます。
Excel データソースをエクスポートする場合 (データソースを右クリックして [Export] を選択)、選択されるソースのタイプは [Custom] です。