Excel ソース

Excel データソースは、Apache POI ライブラリ (Apache POI API - the Java API for Microsoft Documents) を使用して、Excel ファイルからデータを抽出します。

新しい Excel データソースを作成するには、[File] > [New] > [Data source] メニューで [Excel] をクリックします。データソースを作成するダイアログが表示されます。

Creating an Excel data source

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] オプションをチェックした場合に、行のデータをどのワークシートから取得したかがわかると便利です。

  • StartCellEndCell (オプション): 処理するセル範囲の最初のセルと最後のセル。

    [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 つの方法があります。

  1. [Stream tuples] チェックボックスのチェックをはずします。これによって、日付値が格納されている列が基本ビューでは日付型のフィールドと推測されます。この場合、SAX パーサーを使用できなくなるので、パフォーマンスの面で不利になる問題があります。

  2. この基本ビューから選択ビューを作成し、 TO_LOCALDATETO_TIMETO_TIMESTAMP 、または TO_TIMESTAMPTZ の各関数を使用して、テキストフィールドを日時フィールドに変換します。

[Metadata] タブでは、データソースを保存するフォルダーを設定して説明を指定できます。データソースを編集する際、 image1 ボタンをクリックして、その所有者を変更することもできます。

[Save] をクリックするとデータソースが作成されます。次に、[Create base view] をクリックすると、新しい基本ビューに設定されるスキーマが表示されます。[Save] をクリックすると基本ビューが作成されます。

他のデータソースと異なり、1 つの Excel データソースから作成できる基本ビューは 1 つだけです。同じファイルからデータを取得する基本ビューをもう 1 つ作成する必要がある場合は、Excel データソースをもう 1 つ作成します。

管理ツールでは、Excel データソースはデータソースの一種と見なされますが、内部的にはカスタムデータソースです。そのため、以下のように軽微な影響がいくつかあります。

  • Excel データソースを列挙する VQL コマンドは LIST DATASOURCES CUSTOM ですが、これによって、Excel データソースだけでなく、すべてのカスタムデータソースのリストが返されます。

  • Excel データソースをエクスポートする場合 (データソースを右クリックして [Export] を選択)、選択されるソースのタイプは [Custom] です。