Power BI Connector for JSON

Build 20.0.7593

高度な設定

CData Power BI Connector for JSON を使うと、より複雑な開発やネットワークトポロジに役立つきめ細かな制御が可能になります。次のプロパティを使用して、データアクセスを微調整したり、ファイアウォールを介して接続したり、接続のトラブルシューティングを行ったりできます。

自動スキーマ検出の設定

デフォルトで、本製品 はJSON を自動スキーマ検出 を使用してテーブルとしてモデル化します。利用可能な接続プロパティを使用すると、検出されたスキーマを高度に制御できます。次のセクションでは、本製品 のデフォルトと、さらにカスタマイズする方法について説明します。

  • FlattenArrays:このプロパティを、カラム値として返すプリミティブ配列のエレメント数に設定します。このプロパティをFlattenObjects とともに使用して、配列にネストされたオブジェクトのプロパティを抽出することもできます。配列は、デフォルトで集約として返されます。
  • FlattenObjects:デフォルトではtrue です。つまり、オブジェクトおよびネストされたオブジェクトのプロパティはカラムとして返されます。FlattenArrays を設定すると、指定した配列エレメントにネストされたオブジェクトもフラット化され、カラムとして返されます。

ネスト化されたオブジェクトにアクセスするその他のメカニズムの詳細は、JSON データのモデリング を参照してください。

データアクセスのファインチューニング

次のプロパティを使って、本製品 がJSON データを行にパースする方法をさらに制御できます。また、接続文字列に基づいて検出されたスキーマをカスタマイズすることもできます。

  • RowScanDepth:このプロパティは、テーブルメタデータを生成する際にカラムのデータ型を検出するためにスキャンされる行数を指定します。
  • JSONPath:行スキャン中に検出する代わりに、ネストされたオブジェクト配列へのパスを明示的に指定します。
  • GenerateSchemaFiles:このプロパティを使用すると、例えばテーブルメタデータを、カスタマイズしやすい静的スキーマファイルに永続化したり、カラムのデータ型の変更を永続化したりできます。このプロパティを"OnStart" に設定すると、接続時にデータベース内のすべてのテーブルのスキーマファイルを生成します。あるいは、"OnUse" に設定すると、テーブルにSELECT クエリを実行したときにスキーマを生成します。生成されるスキーマは、自動スキーマ検出 の設定に使用する接続プロパティに基づいています。

    生成されたスキーマファイルを使用するには、Location プロパティをスキーマを有するフォルダに設定します。詳しくは、スキーマのカスタマイズ を参照してください。

複数ファイルを単一テーブルにパースおよびマージ

本製品 は単一ディレクトリ内の複数のファイルの読み込みとパースをサポートし、データを単一の結果セットにマージします。

この機能を有効にするには、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/) を最後に含めてください。

すべてのファイル(ファイル拡張子のないファイルを含む)を取得するには、'*' のファイルマスクを使用するか (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:クラウドリソースに接続するときは、ディレクトリ名にワイルドカードを使用することはできません。

SSL コンフィギュレーションのカスタマイズ

デフォルトでは、本製品 はサーバーの証明書をシステムの信頼できる証明書ストアと照合してSSL/TLS のネゴシエーションを試みます。別の証明書を指定するには、利用可能なフォーマットについてSSLServerCert プロパティを参照してください。

Firewall またはProxy 経由の接続

HTTP プロキシ

Windows システムプロキシ経由の接続では、接続プロパティを追加で設定する必要はありません。他のプロキシに接続するには、ProxyAutoDetect をfalse に設定します。

さらに、HTTP プロキシへの認証には、ProxyServerProxyPort に加えてProxyAuthSchemeProxyUser、およびProxyPassword を設定します。

その他のプロキシ

次のプロパティを設定します。

  • プロキシベースのファイヤーウォールを使用するには、FirewallTypeFirewallServer、およびFirewallPort を設定します。
  • 接続をトンネルするには、FirewallType をTUNNEL に設定します。
  • 認証するには、FirewallUserFirewallPassword を設定します。
  • SOCKS プロキシへの認証には、さらにFirewallType をSOCKS5 に設定します。

接続のトラブルシューティング

クエリ実行からネットワークトラフィックまでの本製品 アクティビティを表示するには、Logfile およびVerbosity を使用します。以下の一般的な接続エラーの例は、これらのプロパティを使ってより多くのコンテキストを取得する方法を示します。エラーの原因の追跡やパフォーマンス問題を回避する方法については、弊社サポートチームまでお問い合わせください。

  • 認証エラー:通常、認証エラーの詳細を取得するには、LogfileVerbosity 4 で記録する必要があります。
  • クエリのタイムアウト:応答に時間がかかり過ぎるサーバーでは、本製品 のクライアント側のタイムアウトを超えます。大抵の場合、Timeout プロパティをより高い値に設定すると、接続エラーを回避することができます。他のオプションとして、このプロパティを0 に設定してタイムアウトを無効にする方法があります。Verbosity を2 に設定すると、どこに時間がかかっているかを見ることができます。
  • サーバーによって提供された証明書は検証できません:このエラーは本製品 が信頼チェーンを通じてサーバーの証明書を検証できないことを示します。自己署名証明書を使用している場合、チェーンには証明書が1つしかありません。

    このエラーを解決するには、証明書が信用できることを確認し、証明書を信頼することを本製品 に指定する必要があります。証明書を信頼していることを指定する1つの方法は、信頼できるシステムストアにその証明書を追加することです。もう一つはSSLServerCert を設定することです。

Copyright (c) 2020 CData Software, Inc. - All rights reserved.
Build 20.0.7593