Web サービスのクエリ

Web サービスからデータを取得するリクエストを [クエリ] タブから作成できます。このウィザードの機能は、 ビューのクエリ で説明したものと基本的に同じですので、ここでは次の操作に関して Web サービスのクエリに特有の事項に焦点を当てて説明します。

注釈

[クエリ] タブは、REST サービスに対してのみ利用できます。現在のところ、SOAP Web サービスのクエリには対応していません。

クエリの作成

REST Web サービスには、複数のリソースが含まれていることがあり、各リソースによって個別のビューのデータが公開されます。したがって、Web サービスに対するリクエストを作成するには、まずクエリ対象のリソースを選択します。ツールバーの [リソース] セレクターに、利用できるリソースがすべて表示されます。いずれかを選択すると、それに応じて [定義] セクションのウィザードが更新されます。

Wizard to define a query on a web service graphically

Web サービスに対するクエリをグラフィカルに定義するためのウィザード

このウィザードは、すでに説明した 5 つのパネル (フィールドリレーションシップフィールド出力列フィルタorder by) で構成されています。各パネルについて詳しく見ていきましょう。

フィールド

[フィールド] パネルには、Virtual DataPort 内にある現在のリソースのスキーマに含まれるすべてのフィールドのリストが表示されます。各フィールドの横には、状態を示す以下のアイコンが表示されます。

  • mandatory: このフィールドは必須であり、リクエストではこのフィールドに値を指定する必要があります。クエリを実行する要件として、このフィールドに対するフィルタが存在していなければなりません。

  • input: このフィールドは、リクエストの入力として使用できます。つまり、フィルタに使用できるということです。[スキーマ] タブで No searchable タグが付いているフィールドには、このアイコンは表示されません。

  • output: このフィールドは、リクエストの出力として使用できます。つまり、[出力列] パネルと [order by] パネルに表示できるということです。[スキーマ] タブで Do not ouput タグが付いているフィールドには、このアイコンは表示されません。

以下で説明するように、Web サービスのクエリでは集約フィールドはサポートされません。そのため、[フィールド] パネルに追加フィールド NUMBER_OF_RECORDS は表示されません。

リレーションシップフィールド

[リレーションシップフィールド] パネルには、関連リソース (つまり、この Web サービスで公開され、現在のリソースと「対 1」のアソシエーションがあるビュー) のリストが表示されます。なお、関連リソースには <resource name> (<role name>) というラベルが付きます。関連リソースを開くと、展開フィールドにアクセスできます。展開フィールドの横には、[フィールド] パネルのエレメントと同様に、その状態が表示されます。

ビューのクエリの場合とは違い、展開フィールドは現在のリソースのフィールドを使用する場所で使用できません。以下の制約を考慮する必要があります。

  • 関連リソースに必須フィールドがある場合、どのフィールドも展開できません。

  • 展開フィールドはフィルタに使用できません。

  • 出力フィールドとして表示された展開フィールドのみ、[出力列] パネルと [order by] パネルで使用できます。

参考

クエリでの関連リソースの使用については、「 アソシエーションの利用 」のセクションを参照してください。

出力列

[出力列] パネルでは、クエリ結果のスキーマ (つまり、どのフィールドを含め、どの順序で表示するか) を定義します。

リクエストの出力スキーマを作成する際の選択肢は、次のようにビューの場合よりも制約されています。

  • 出力フィールドとして表示されているフィールドおよび展開フィールドのみ追加できます。

  • ビューと同様に、すべてのフィールドを出力スキーマとして設定できます。

  • 派生フィールドと集約フィールドはサポートされません。

  • フィールドの削除と順序変更はできますが、編集はできません。

フィルタ

[フィルタ] パネルでは、リソースのタプルに対する条件のリストを定義できます。タプルがクエリ結果に表示されるには、 すべての条件 が一致する必要があります。

フィルタに関する以下の点に注意してください。

  • フィールドが必須として表示されている場合、リクエストを実行するにはそのフィールドに対してフィルタを設定する必要があります。

  • フィルタに使用できるのは、入力フィールドとして表示されているフィールドのみです。

  • 展開フィールドはフィルタの作成に使用できません。

order by

[order by] パネルでは、クエリ結果でのタプルの配列方法を決定するフィールドのリストを定義できます。デフォルトでは空であるため、結果の順序は未定義です。[order by] パネルに複数のフィールドを追加すると、定義に応じてタプルが並べ替えられます。

[order by] パネルでフィールドおよび展開フィールドを使用できるのは、そのフィールドが出力フィールドとして表示されている場合のみであることに注意してください。

クエリの実行

クエリが準備できたら、ツールバーの [実行] ボタンをクリックしてリクエストを開始するか、[エクスポート] ボタンをクリックし、形式を指定してクエリ結果を保存します。

Web サービスでは、不正アクセスから保護するために認証が要求される場合があります。その場合、次のことに注意してください。

  • Web サービスが次のいずれかの認証方法で構成されている場合、有効な資格情報を提供する必要があります。

    • HTTP Basic

    • HTTP Basic with VDP

    • HTTP Digest

  • Web サービスが HTTP SPNEGO (Kerberos) 認証で構成されていて、Data Catalog にログインするときにも Kerberos を使用した場合、その際の資格情報が Web サービスの認証に再利用されます。

  • Web サービスが HTTP SPNEGO (Kerberos) 認証で構成されていて、Kerberos 以外の認証方法で Data Catalog にログインした場合、Web サービスの認証のために有効な資格情報を提供する必要があります。

    重要

    Web サービスにクエリを発行するための URL は、接続している Virtual DataPort サーバーの URL から作成されます。Web サービスが HTTP SPNEGO (Kerberos) 認証で構成されている場合、Virtual DataPort サーバーの URL には、サーバープリンシパル名として構成された同じホストを使用することが重要です。たとえば、Virtual DataPort サーバーが HTTP/denodo-prod.subnet.acme.com@ACME.COM というサーバープリンシパル名で構成されている場合、このサーバーは Data Catalog の サーバー構成//denodo-prod.subnet.acme.com:9999/admin という URL を使って定義する必要があります。

  • 現在、次のいずれかの認証方法で構成された Web サービスはサポートされていません。

    • OAuth 2.0

    • SAML 2.0

Popup to provide the credentials required to authenticate the web service

Web サービスの認証に必要な資格情報を入力するためのポップアップ

Web サービスにクエリを発行するために資格情報を入力した場合、ツールバーに [認証] ボタンが表示されます。資格情報を変更する場合には、これをクリックします。

その他にも、ビューのクエリとは次のような違いがあることに注意してください。

  • Web サービスがデプロイされていない場合、クエリは失敗し、「 The resource is not available 」というメッセージが表示されます。

  • Data Catalog は、クエリを Web サービスの URL に変換する必要があります。その URL を確認するには、ツールバーの [WS URL] ボタンをクリックします。すると、URL を含んだ通知が表示されます。Web サービスがデプロイされていない場合は、[WS URL] ボタンは無効になります。

    Notification with the URL generated from your query

    通知のタイトルにある copy アイコンをクリックして URL をクリップボードにコピー

  • クエリ結果の中のバイナリ値には、 binary アイコンが表示されます。それをクリックすると、値をファイルとしてダウンロードできます。

    注釈

    バイナリ値をダウンロードできるようにするには、現在のリソースの基盤となるビューにプライマリキーが定義されている必要があります。

アソシエーションの利用

REST Web サービスを Virtual DataPort に作成するには、公開するビューを追加します。それらのビューの間にアソシエーションがある場合、Web サービスによって自動的に追加されます。

A REST web services with several resources and their associations

複数のリソースを含む REST Web サービスおよびリソース間のアソシエーション

参考

複数のビューを含む REST Web サービスおよびビュー間のアソシエーションの作成については、『 Virtual DataPort 管理ガイド 』を参照してください。

ビューの説明で触れたように、クエリでは Web サービス内で公開されているアソシエーションを利用できます。

  • 現在のリソースと「対 1」のアソシエーションによって関連するリソースは、[リレーションシップフィールド] パネルに表示されます。その出力フィールドを展開し、[出力列] パネルまたは [order by] パネルに追加することができます。

  • アソシエーションをたどりながら、クエリ結果を調査することができます。結果には、関連リソースごとにリンクがあります。タプルのリンクをクリックすると、それに関連する他のリソースのタプルにアクセスできます。


参考

クエリの作成方法の詳細については、「 ビューのクエリ 」のセクションを参照してください。