DF データソース¶
DF データソースは、区切り形式テキストファイルからデータを取得します。最も一般的な区切り形式ファイルはカンマ区切り (CSV) 形式ですが、他の形式でデータを取得するデータソースも作成できます。
DF データソースを作成するには、CREATE DATASOURCE DF ステートメントを使用します。
CREATE [ OR REPLACE ] DATASOURCE DF <name:identifier>
[ FOLDER = <literal> ]
[ IGNOREMATCHINGERRORS = { TRUE | FALSE } ]
ROUTE <route> [ CHARSET = <literal> ] [ <route filters> ]
{ COLUMNDELIMITER = <literal>
| TUPLEPATTERN = <literal> [ HEADERPATTERN = <literal> ]
| COLUMNWIDTHS = '<integer>[,<integer>]'
[PADCHARACTER = <literal>]
[REPLACECHARACTER = <literal>]
[ALIGNMENT = { LEFT | RIGHT } ]
}
[ ENDOFLINEDELIMITER = <literal> ]
[ BEGINDELIMITER = { <literal> | VAR <variable name:identifier> }
[ ISDATA ]
]
[ ENDDELIMITER = <literal> [ ISDATA ] ]
[ HEADER = <boolean> ]
[ MULTI_CHARACTER_DELIMITER = <boolean> ]
[ TRANSFER_RATE_FACTOR = <double> ]
[ DESCRIPTION = <literal> ]
<route_filters> ::=
FILTER ( <filter> [, <filter> ]* )
<route> ::= (「 DF、JSON または XML データソースにパスを設定するための構文 」を参照)
<filter> ::= (「 DF、JSON または XML データソースにフィルタを設定するための構文 」を参照)
DF データソースを変更するには、ALTER DATASOURCE DF ステートメントを使用します。
ALTER DATASOURCE DF <name:identifier>
[ IGNOREMATCHINGERRORS = { TRUE | FALSE } ]
ROUTE <route> [ CHARSET = <literal> ] [ <route_filters> ]
{ COLUMNDELIMITER = <literal>
| TUPLEPATTERN = <literal> [ HEADERPATTERN = <literal> ]
| COLUMNWIDTHS = '<integer>[,<integer>]'
[PADCHARACTER = <literal>]
[REPLACECHARACTER = <literal>]
[ALIGNMENT = { LEFT | RIGHT } ]
}
[ ENDOFLINEDELIMITER = <literal> ]
[ BEGINDELIMITER = { <literal> | VAR <variable name:identifier> }
[ ISDATA ]
]
[ ENDDELIMITER = <literal> [ISDATA] ]
[ HEADER = <boolean> ]
[ MULTI_CHARACTER_DELIMITER = <boolean> ]
[ TRANSFER_RATE_FACTOR = <double> ]
[ DESCRIPTION = <literal> ]
<route> ::= (「 DF、JSON または XML データソースにパスを設定するための構文 」を参照)
<route_filters> ::= (「 CREATE DATASOURCE DF ステートメントの構文 」を参照)
これらのステートメントで利用する一部のパラメータの説明 :
OR REPLACE
: 指定されている場合、同じ名前のデータソースが存在すれば、現在の定義が新しい定義で置き換えられます。IGNOREMATCHINGERRORS
:TRUE
の場合、クエリでこのデータソースを扱う際に、データファイルの中で想定している構造を持たない行が Virtual DataPort サーバーによって無効にされます。このような行とは、想定した列数とは異なる行や、タプルパターンを指定している場合にそのパターンに一致しない行のことです。FALSE
に指定されている場合、想定している構造を持たない行があると、サーバーからエラーが返されます。値が
TRUE
の場合、クエリを実行したときに、Virtual DataPort サーバーによって無効にされた行があるかどうかを確認できます。これを行うには、Administration Tool でクエリを実行します。続いて、[View execution trace]、[Route] ノードの順にクリックすることによって Number of invalid tuples 属性を確認します。このパラメータを指定しない場合、Virtual DataPort サーバーは
TRUE
と見なします。ROUTE
: データを収めた区切り形式ファイルへのパス。データファイルへのパスの詳細については、「 Virtual DataPort におけるパスの指定 」を参照してください。FILENAMEPATTERN
パラメータ は、区切り形式ファイルのデータソースへのパスにおいてのみ使用が可能となり、XML または JSON データソースへのパスでは使用できない点に注意してください。ローカル、FTP、および HDFS ルートで、
uri
がディレクトリを参照している場合、このデータソースから作成した基本ビューにクエリを実行すると、Virtual DataPort サーバーは 1 つのファイルだけからではなく、そのディレクトリにあるすべてのファイルからデータを取得します。FILENAMEPATTERN
の値は正規表現で、指定されている場合、サーバーは名前がこの正規表現に一致するファイルからのみデータを取得します。複数のファイルからデータを取得する場合は、すべてのファイルが同じスキーマを保持している必要があります。
FILTER
: データファイルを処理する前に、そのファイルに適用されるフィルタのリスト。使用可能なフィルタはUNZIP
、GUNZIP
、DECRYPT
、CUSTOM
です。詳細については、「 フィルタ 」を参照してください。CHARSET
: ファイルが使用する文字セットエンコードを指定します。Java でサポートされているすべての文字セットエンコードを使用できます。COLUMNDELIMITER
: 行の値を区切る文字。TUPLEPATTERN
が指定されていない場合にのみ使用されます。タブを示すには、
\t
を入力します。これはタブを表す単一の文字です。複数の文字を入力すると、すべての文字が区切り文字とみなされます。たとえば、
,|
を入力すると、各値をカンマ (,) または縦棒 (|) で区切ることができます。TUPLEPATTERN
: 区切り形式ファイルから抽出されるタプルの形式を指定する正規表現。この正規表現は、取得する部分のみではなく、行全体と一致している必要があります。使用される形式は、 Java 言語 の正規表現です。
ビューの各フィールドは、データを取得する正規表現の集合になります。
タプルパターンの例については、『Virtual DataPort 管理者ガイド』の「 区切り形式ファイルソース 」を参照してください。
注釈
タプルパターンには補間変数を含めることができます。
COLUMNWIDTHS
: 整数のカンマ区切りリスト。各値はバイト数で表した列のサイズです。PADCHARACTER
: 値のサイズが列幅より小さいときに使用される埋め込み文字。複数の文字を入力すると、すべての文字が埋め込み文字とみなされます。文字は Java String ルールを使用してエスケープする必要があります。たとえば、
a
を埋め込み文字として使用するにはa
を入力しますが、á
を使用するには\u00E1
を入力します。デフォルトでは、埋め込み文字はありません。
REPLACECHARACTER
: 指定された文字セットで値を表すことができない場合に返される文字。文字は Java String ルールを使用してエスケープする必要があります。たとえば、
a
を置換文字として使用するにはa
を入力しますが、á
を使用するには\u00E1
を入力します。デフォルトでは、空白文字です。
ALIGNMENT
: テキスト配置。埋め込みに関連します。ENDOFLINEDELIMITER
: 区切り形式ファイルでデータタプル区切り文字として使用される文字列 (デフォルトではキャリッジリターンの \n が使用されます)。BEGINDELIMITER
: Virtual DataPort サーバーがタプルの検索 (または、HEADER
パラメータがTRUE
の場合はヘッダーの検索) を開始する必要がある場所を特定する Java 正規表現。パラメータが指定されていない場合は、ファイルの先頭から解析を開始します。このパラメータにはリテラルまたは補間変数の名前を指定できます (「 クエリの実行コンテキストと補間文字列 」を参照)。補間変数を渡す場合は、
VAR
パラメータに続けて変数名を指定する必要があります。ISDATA
が指定されている場合、この正規表現に一致するテキストはデータの一部とみなされます。ENDDELIMITER
: システムがタプルの検索を停止する必要があるファイル内の位置を特定する Java 正規表現。値が指定されていない場合、検索はファイルの末尾まで続行されます。ISDATA
修飾子が追加された場合、正規表現に一致するテキストは検索対象の一部とみなされます。これには、データソースで実行されるクエリの条件に応じてアクセスパスをパラメータ化する補間変数が含まれる場合があります (「 クエリの実行コンテキストと補間文字列 」を参照)。HEADER
:true
の場合、ファイルのデータ領域から抽出された最初のタプルにフィールド名が記述されていると見なされます。これらの名前は、Virtual DataPort の基本リレーションの属性を作成するために使用されます。MULTI_CHARACTER_DELIMITER
:true
の場合、区切り文字を複数の文字で構成できます。たとえば、|~
を区切り文字として使用できます。HEADERPATTERN
: ヘッダーを構成するフィールド名を抽出するために使用する正規表現型のパターンを指定します。ヘッダーを抽出するために使用されるパターンがタプルを抽出するために使用されるパターンと異なる場合にのみ、指定する必要があります。正規表現の形式はタプルパターンで使用される形式と同じです。このフィールドは、[Header] チェックボックスがチェックされている場合にのみ使用できます。TRANSFER_RATE_FACTOR
: Denodo サーバーとデータソース間のネットワーク接続速度の相対的な測定値。従来の 100 Mbps LAN を介してデータソースにアクセス可能な場合は、デフォルト値 (オンプレミスの JDBC データベースの場合は 1) を使用します。より高速なネットワークの場合はより大きな値を、WAN 経由でアクセス可能なデータソースの場合はより小さな値を使用します。
DF データソースのパフォーマンスを向上させる方法の詳細については、管理ガイドの「 DF データソースの最適化 」を参照してください。