制限事項¶
ここでは、OData サービスの制限事項について説明します。
読み取り専用アクセス
このサービスを介した Denodo データベースへのアクセスは読み取り専用です。
$filter システムクエリオプションで使用できない関数
このサービスは、 has
演算子をサポートしていません。
このサービスは、以下の関数をサポートしていません。
fractionalseconds
、date
、time
、totaloffsetminutes
、mindatetime
、およびmaxdatetime
isof
およびcast
geo.distance
、geo.length
、およびgeo.intersects
上記の関数を使用したリクエストでは、エラーコード 501 Not Implemented
が返されます。
$filter システムクエリオプションで使用できない演算子
$filter システムクエリオプションで使用できないリテラル
このサービスは、リソースパスで特定されているコレクションの現在のインスタンスを参照する式でリテラル $it
をサポートしていません。
このサービスは、そのサービスのリソースを参照する式でリテラル $root
をサポートしていません。
$select システムクエリオプションのナビゲーションプロパティ
このサービスでは、選択句としてナビゲーションプロパティを使用できません。
使用できない $search システムクエリオプション
$search
クエリパラメータは使用できません。
使用できない $levels 展開オプション
このサービスは、再帰的展開を要求できるようにする $levels
展開オプションをサポートしていません。
使用できない交差結合クエリ
このサービスは、エンティティのデカルト積を表すリソース ~/crossjoin
をサポートしていません。
$entity リソースを介した参照の解決
このサービスは、 $id
クエリオプションを使用してエンティティ参照を解決できるようにする ~/$entity
リソースをサポートしていません。
URL の空白文字
このサービスでは、関数のパラメータの間に空白文字を使用できず、クエリオプションの指定に使用する等号 (=
) の前後にも空白文字を使用できません。
依存側エンティティの冗長なキー
このサービスでは、リレーションシップの親によって決まる重要なプロパティが存在する場合に、冗長なキーを省略できません。レベルごとにすべての重要なプロパティを追加する必要があります。
$expand システムクエリオプションによる並べ替え
このサービスでは、 $expand
システムクエリオプションの内側に $orderby
クエリオプションを使用できません。
複合プロパティによる並べ替え
このサービスは、レジスターのフィールドを使用する Order By 句をサポートしていません。したがって、複合プロパティでは $orderby
クエリオプションを使用できません。
複合プロパティによる移動
アソシエーションのエンドポイントがレジスターのフィールドである場合、Virtual DataPort では、そのエンドポイントからアソシエーションをたどることはできません。
展開したエンティティの参照
$expand
クエリオプションを使用して関連データを要求し、結果を JSON 表現で返すように選択した場合、このサービスでは「多対 1」のリレーションシップにある単一エンティティの参照をサポートしません。
この制限事項の例:
/denodo-odata.svc/movies/city?$expand=country/$ref
JSON がデフォルト形式なので、このリクエストは失敗します。
Admin ユーザーと Kerberos 認証
このサービスは、Kerberos 認証を使用している場合に、 admin
ユーザーへのユーザーアクセスを無効にしません。
関数のパラメータとしてのナビゲーションプロパティの使用
このサービスでは、エンティティのナビゲーションプロパティが子エンティティに属する場合、このプロパティをクエリ関数のパラメータとして使用することができます。ただし、ナビゲーションフィールドが 2 つ以上のロールをたどる場合、クエリは機能しません。
たとえば、次のようなクエリは機能します。
/denodo-odata.svc/test/ADDRESS?$filter=toupper(city/city_name) eq 'CARACAS'
しかし、フィールド country_name
が 2 つのロールをたどるため、次のようなクエリは失敗します。
/denodo-odata.svc/test/address?$filter=toupper(city/country/country_name) eq 'SPAIN'
ラムダ演算子のサポートに関する制限
このサービスでは、 any
ラムダ演算子のみがサポートされています。これは、サポートすべきラムダ演算子を規定していない『Intermediate Conformance Level for the OData 4.0 Specification』に準拠しています。
ラムダフィルタ内のナビゲーションフィールドおよび通常のフィールドのフィルタリング
同じ any
ラムダフィルタでナビゲーションフィールドと通常の (親) フィールドを使用することは許可されません。たとえば、次のクエリは機能しません。
/denodo-odata.svc/test/country?$filter=city/any(f:f/city_id eq 1 or country eq 'Spain')