データアクセスのファインチューニング
CData ODBC Driver for JSON を使うと、より複雑な開発やネットワークトポロジに役立つきめ細かな制御が可能になります。次のプロパティを使用して、データアクセスを微調整したり、ファイアウォールを介して接続したり、接続のトラブルシューティングを行ったりできます。
複数ファイルを単一テーブルにパースおよびマージ
本製品 は単一ディレクトリ内の複数のファイルの読み込みとパースをサポートし、データを単一の結果セットにマージします。
この機能を有効にするには、URI プロパティをファイルマスクのディレクトリ(例:C:\MyDataFiles\*.json)、またはディレクトリ(例:C:\MyDataFiles)に設定できます。
ディレクトリがURI として指定されている場合、IncludeFiles を使用して含めるファイルの種類を識別します。
この機能は、Google Drive (e.g. gdrive://remotepath/*.json)、Amazon S3 (e.g. s3://remotepath/*.json)、FTP (ftp://server:port/remotepath/*.json) などクラウドベースのサービスプロバイダーでも利用できます。
URI をディレクトリに設定するときは、ディレクトリであることを示すために必ずスラッシュ (e.g. s3://remotepath/) を最後に含めてください。
複数のファイルを含めるために、カンマ区切りのURI のリストがサポートされています。
すべてのファイル(ファイル拡張子のないファイルを含む)を取得するには、'*' のファイルマスクを使用するか (e.g. s3://remotepath/*)、'*' エントリを含めるようにIncludeFiles を設定します。
拡張子のないファイルだけを含めるには、IncludeFiles を設定して'NOEXT' エントリを含めます。
ファイル一式をパースするとき、ファイルはキューに入れられます。
各ファイルはストリーミング形式で取得され、パースされます。各行はパースされるときにプッシュされます。
したがって、ファイルは決してメモリに格納されたり、ディスク上のテンポラリロケーションに格納されたりすることはありません。
そのため、必要なメモリ使用量が制限されます。
メタデータの検出
複数のファイルを読み込むとき、本製品 は最初に識別されたファイルをメタデータ検出に使用します。
パフォーマンス上の理由から、メタデータの検出には1つのファイルが使用されます。
最初に識別されたファイルに、部分的なJSON データが含まれている場合
(ディレクトリ内の他のファイルと比較して)、他のファイルのカラム/データは返されないことがあります。
これは、本製品 が、メタデータ検出に使用される単一のファイルから、選択したファイルで使用可能なすべてのカラムを適切に識別できないためです。
これらのケースを回避するには、"MetadataDiscoveryURI" オプションをOther プロパティから設定できます(例:MetadataDiscoveryURI=file:///C:\MyDataFiles\main.json)。
MetadataDiscoveryURI が指定された場合、本製品 は
指定されたURI を使用してテーブルとカラムを検出します。
メタデータが検出されると、URI の値がJSON データの取得と解析に使用されます。
エラー処理
複数のファイルをパースする場合、ファイルをパースできない場合があります(無効なJSON、ネットワーク接続の問題、など)。
そのような場合、本製品 は例外メッセージを返しませんが、ErrorInfo#TEMP という
テンポラリテーブルにエラーを記録します。
これは、大きなバッチのファイルを読み込んでいる最中に、失敗してやり直しが発生しないためです。代わりに、初期クエリが終了した後でテンポラリテーブル(ErrorInfo#TEMP)をクエリすることができます。
これにより、パースに失敗したファイルがあるかどうかを識別でき、失敗した要求を再試行して、それらを最初の結果セットとマージすることができるようになります。
エラーリストを取得するには、次のクエリを発行します:SELECT * FROM ErrorInfo#TEMP。
このテーブルには次の2つのカラムが含まれます:URI およびDescription。URI には、失敗した1つのファイルのURI が含まれます(URI プロパティで設定して再試行できます)。
Description には、ファイルがパースに失敗した理由に関する説明が含まれています。エラーが発生しなかった場合、空の結果セットが返されます。
サブディレクトリの移動
本製品 は、ローカルファイルをパースするときにサブディレクトリの移動をサポートします。
この機能は、URI 値のディレクトリ名に'*' ワイルドカード文字を使用することで公開されます。
例えば、一意の名前(日付値など)を持つフォルダを含む'Data' ディレクトリがあり、それぞれに似たようなJSON データファイルがあるとします。
URI を'file:///C:\Data\*\*.json' に設定するか、ファイルマスクなしのディレクトリ
'file:///C:\Data\*' に設定することで、これらすべてのファイルを単一のテーブルに読み込むことができます。
また、ディレクトリの部分一致もサポートされています。
例えば、 '2018' で始まるフォルダ内のすべてのJSON ファイルを取得するには、次のURI 値:file:///C:\Data\2018*\*.json を使用できます。
Note:クラウドリソースに接続するときは、ディレクトリ名にワイルドカードを使用することはできません。