エンティティについて

エンティティは、データ内の様々なカテゴリの直感的な概念ビューを提供します。これらは、Oracle Endeca Serverのフラット・データ・モデルに存在するが直接には表示されないデータのカテゴリ間のリレーショナルな複雑さを反映します。

エンティティ(またはStudioのビュー)は、別名、フィルタおよびグループ化により物理レコードから導出されるレコードの論理セットを表します。 entity (or view, in Studio) represents a logical set of records that are derived from the physical records by aliasing, filtering, and grouping.エンティティには、属性の名前、タイプおよび表示名と、メトリックの名前および定義を含む固有のメタデータがあります。

注意: Studioでは、エンティティはビューと呼ばれます。エンティティ構成Webサービス・インタフェースは、Studioでビューの作成と管理に使用されます。Studioでのビューの作成と管理の詳細は、Oracle Endeca Information Discovery Studioユーザーズ・ガイドを参照してください。

様々なデータ・カテゴリの上にエンティティを作成する場合は、データの分析方法に基づいて、ビジネスの概念を複雑なデータ構造にマップします。エンティティは、すべてのデータがOracle Endeca Serverにロードされた後で、データのカテゴリ間に関係を再確立します。

それらにメトリックなどのメタデータを指定することで、エンティティを定義します。これにより、データ設計者は、データ内の様々なカテゴリ間の関係についてビジネス・アナリストに通知したり、エンティティでリクエストできるメトリックを提示したりできます。たとえば、メトリックは、グループ化または集約することが有用なエンティティに関する情報も提供できます。

エンティティを作成すると、それらはデータの(集約された)論理ビューとして機能し、ビジネス・アナリストはそれらに対して分析問合せを実行できます。

エンティティは、エンティティ構成WebサービスのputEntityまたはputEntities操作を使用して作成します。基礎となる属性がスキーマにすでに定義され、データ・ドメインに存在する場合は、エンティティのみ作成できます。

semanticEntityの一般的な構文

semanticEntity複合タイプは、エンティティとそのすべての属性を定義します。構文は次のとおりです。
<semanticEntity key="?" displayName="?" isActive="?">
   <definition>?</definition>
   <description>?</description>
   <attributes>
      <semanticAttribute name="?" displayName="?" datatype="?" 
         isDimension="?" isKeyColumn="?" description="?">
         <property key="?">?</property>
      </semanticAttribute>
   </attributes>
   <metrics>
      <metric name="?" displayName="?" datatype="?" description="?">
         <definition>?</definition>
         <property key="?">?</ns:property>
      </metric>
   </metrics>
   <groups>
      <group key="?" displayName="?">
         <semanticAttributeKey name="?"/>
         <property key="?">?</property>
      </group>
   </groups>
   <property key="?">?</property>
</semanticEntity>
その要素と属性の意味は次のとおりです。
要素または属性の名前 説明
key 必須属性。エンティティの作成時に提供するエンティティの一意識別子。たとえば、キーSalesでエンティティを作成できます。キー名はNCName書式である必要があります。
displayName オプションの属性。Studioなどのフロントエンド・アプリケーションで使用できる表示名を定義します。表示名にはNCName以外の書式を使用できます。
isActive 必須要素。このエンティティがアクティブか非アクティブかを指定するブール値(trueまたはfalse)。非アクティブ・エンティティのdefinitionは、put操作の一部やEQL問合せとして評価されず、その定義は問合せに連結されません。非アクティブ状態。これにより、無効または不完全なEQL定義(後で修正する)でエンティティを保存したり、後で(アクティブにする時点で)使用するためにエンティティを保存したりすることができます。他のEQL問合せがエンティティを参照する場合、そのエンティティをアクティブにする必要があります。エンティティを保存する場合、isActiveを明示的に設定する必要があります。ベース・エンティティは常にアクティブであることに注意してください。
definition 必須要素。エンティティを定義するEQL文。このEQL文は、その中に含まれるEQL式に基づいてレコードの仮想コレクションを作成(またはフィルタ処理)する必要があります。

エンティティのEQL定義は、セミコロンで区切られた1つ以上のDEFINE文から構成されます。DEFINE文の名前は、エンティティの名前と一致する必要があります。

たとえば、SalesエンティティのDEFINE文は次のようになります。
<definition>
DEFINE Sales AS SELECT FactSales_SalesAmount AS SalesAmount, DimReseller_ProductLine AS ProductLine, DimSalesTerritory_SalesTerritoryCountry AS SalesTerritoryCountry, DimDate_FiscalYear AS FiscalYear, FactSales_SalesOrderNumber AS SaleOrderNumber
</definition>
description オプションの属性。エンティティに関する説明テキストを提供します。
attributes オプションの要素。エンティティ内の属性のリストを表します。attributes要素には、ゼロ個以上のsemanticAttribute要素を含めることができます。詳細は、後述の項を参照してください。
metrics オプションの要素。1つ以上の推奨メトリック要素のリストを提供します。metrics要素には、ゼロ個以上のmetric要素を含めることができます。詳細は、後述の項を参照してください。
groups オプションの要素。1つ以上のエンティティ属性グループを作成できます。詳細は、後述の項を参照してください。
property オプションの要素 (これがsemanticEntity全体のproperty要素であることに注意してください)。エンティティ全体の文字列メタデータ・グローバル・プロパティを指定できます。キー名はNCName書式である必要があります。

attributes要素

attributes要素には、1つ以上のsemanticAttribute要素を含めることができます。エンティティ内の各属性は、definitionに含まれるEQL文で指定された属性に対応する必要があります。各semanticAttribute要素は、エンティティのメンバー属性を定義します。

semanticAttribute要素の構文は次のとおりです。
<semanticAttribute name="?" displayName="?" datatype="?" 
   isDimension="?" isKeyColumn="?" description="?">
   <property key="?">?</property>
</semanticAttribute>
semanticAttribute要素ごとに、次のように指定します。
  • nameには、属性の一意の識別子を指定します。識別子はNCName書式に従う必要があります。
  • displayNameは、わかりやすい形式でのエンティティ属性の名前です。表示名にはNCName以外の書式を使用できます。
  • datatypeには、mdex:stringなどの有効なデータ型を指定します。有効な型はmdex.xsdにリストされています。
  • isDimensionは、GROUP BYの実行に役立つ属性でtrueに設定されます。たとえば、Size、RegionまたはCategoryなどの属性にはisDimension="true"が必要です。これは、これらが階層を含む管理属性であり、EQLのGROUP BY文の候補であることを示します。
  • isKeyColumnは、この属性がエンティティの複合キーの一部である場合、trueに設定されます。 エンティティの複合キーは、isKeyColumntrueに設定される場合、エンティティ属性のセットになります。 デフォルトはfalseです。
  • descriptionには、属性の簡単な説明を提供します。
  • propertyには、この属性の名前(key)と文字列メタデータの値を設定します。キー名はNCName書式である必要があります。
次の省略された例では、Salesエンティティの作成に基づく複数の属性の1つを示します。
<attributes>
  <semanticAttribute name="SalesAmount" displayName="Sales Amount" datatype="mdex:double"
     isDimension="false" isKeyColumn="true" description="sales info">
     <property key="locale">EN</property>
  </semanticAttribute>
  ...
</attributes>

metrics要素

metrics要素には、1つ以上のmetric要素を含めることができます。metric要素の構文は次のとおりです。
<metrics>
  <metric name="?" displayName="?" datatype="?" description="?">
     <definition>?</definition>
     <property key="?">?</property>
  </metric>
</metrics>
metric要素の次の属性を指定します。
  • nameには、メトリックの一意識別子を指定します。識別子はNCName書式に従う必要があります。
  • displayNameは、わかりやすい形式でのメトリックの名前です。表示名にはNCName以外の書式を使用できます。
  • datatypeには、mdex:doubleなどの有効なデータ型を指定します。
  • descriptionには、メトリックの簡単な説明を指定します。
  • definitionは、メトリックを定義するEQL文です。definition要素には、エンティティの属性に対して問合せを行うときに集約に使用したEQLの算術式が含まれている必要があります。
  • propertyには、このメトリックの名前(key)と文字列メタデータの値を設定します。キー名はNCName書式である必要があります。

各メトリックには、SUM(X)またはAVG(Y)などの集約関数を1つ以上含める必要があります。ここで、XおよびYは、エンティティに定義される属性になります。

たとえば、エンティティには、属性SalesAmountと、SalesAmount属性の値の合計として定義されたメトリックTotalSalesが含まれる場合があります。
<metrics>
  <metric name="TotalSales" displayName="Total Sale" datatype="mdex:double">
    <definition>sum(SalesAmount)</definition>
    <property key="currency">$</property>
  </metric>
</metrics>

groups要素

エンティティ属性グループ(ビュー属性グループとも呼ばれる)は、(semanticAttribute要素を介して設定された)エンティティ属性のセットで構成されます。

エンティティ属性グループでは、グループに関連付けられるプロパティのセット(キー/値ペア)も使用できます。これらのプロパティでは、フロントエンド・アプリケーション(Studioなど)で使用できるグループのメタデータも提供できます。たとえば、注文制御にこのメタデータを指定できます(結果のソートに使用する属性の指定など)。

各グループはgroup要素で定義され、このエンティティの属性で構成されます。metric要素の構文は次のとおりです。
<groups>
  <group key="?" displayName="?">
     <semanticAttributeKey name="?">
     <property key="?">?</property>
  </group>
</groups>
group属性の意味は次のとおりです。
  • group keyは、エンティティ属性グループの一意の識別子です。識別子は、NCName書式に従う必要はありません。
  • displayNameには、グループに対してさらにユーザーフレンドリーな名前を指定できます。
  • semanticAttributeKey (そのname属性を介する)は、グループに追加されるエンティティ属性を指定します。そのため、semanticAttributeKeyname属性は、前述のsemanticAttribute要素のname属性に対応します。
  • propertyには、このグループの名前(key)と文字列メタデータの値を設定します。キー名はNCName書式である必要があります。
この例では、Productというエンティティを作成します。このエンティティには、ProdDescriptionというエンティティ属性グループがあります。
<semanticEntity key="Product" displayName="Product" isActive = "true">
   <definition>
    DEFINE Product AS SELECT productId AS productId, description AS description, price AS price
   </definition>
   <attributes>
      <semanticAttribute name="productId" datatype="mdex:string" 
         isDimension="true" isKeyColumn="true">
      </semanticAttribute>
      <semanticAttribute name="description" datatype="mdex:string" 
         isDimension="true" isKeyColumn="false">
      </semanticAttribute>
      <semanticAttribute name="price" datatype="mdex:double" 
         isDimension="true" isKeyColumn="false">
         <property key="currency">$</property>
      </semanticAttribute>
   </attributes>
   <metrics/>
   <groups>
      <group key="ProdDescription" displayName="ProductId and Description Group">
         <semanticAttributeKey name="productId"/>
         <semanticAttributeKey name="description"/>
         <property key="sortBy">productId</property>
      </group>
   </groups>
   <property key="sales_area">North America</property>
</semanticEntity>

このグループには、2つのエンティティ属性("productId"と "description")がメンバーとして存在します。また、メタデータ・プロパティ("sortBy")もあり、その値を使用して"productId"属性で結果をソートできます。

エンティティの例

前に説明したエンティティ定義の各部分をまとめるために、次の使用例について考えます。

販売トランザクションのリストをロードする場合は、顧客、製品およびサプライヤに関する情報もロードします。それぞれのエンティティを作成できます。SalesAmountProductLineおよびFiscalYearの各属性から導出されるレコードの仮想セットとしてSalesエンティティを作成する例を考えます。

Salesエンティティを定義するときは、そのメトリックも提供して、ビジネス・アナリストがこのエンティティに対してEQLで問合せを発行できるようにします。これらのメトリックは、SalesAmountの合計として定義されるTotalSales、またはSalesAmountの平均として定義されるAvgSalesになります。

次の例は、複数のエンティティ属性の上に定義されるSalesエンティティと、このエンティティに対する後続の分析問合せで使用できる2つのメトリックをリストします。
<semanticEntity key="Sales" displayName="Sales Transactions" isActive="true">
<definition>
  DEFINE Sales AS 
  SELECT FactSales_SalesAmount AS SalesAmount, 
  DimReseller_ProductLine AS ProductLine, 
  DimSalesTerritory_SalesTerritoryCountry AS SalesTerritoryCountry, 
  DimDate_FiscalYear AS FiscalYear, 
  FactSales_SalesOrderNumber AS SaleOrderNumber
</definition>
<description>Sales transaction information</description>
<attributes>
  <semanticAttribute name="SalesAmount" displayName="Sales Amount" 
      datatype="mdex:double" isDimension="false" isKeyColumn="true">
      <property key="locale">EN</property>
  </semanticAttribute>
  <semanticAttribute name="ProductLine" displayName="Product Line" 
      datatype="mdex:string" isDimension="true" isKeyColumn="false">
  </semanticAttribute>
  <semanticAttribute name="SalesTerritoryCountry" displayName="Sales Territory Country"
      datatype="mdex:string" isDimension="true" isKeyColumn="false">
  </semanticAttribute>
  <semanticAttribute name="FiscalYear" displayName="Year" datatype="mdex:int"
      isDimension="true" isKeyColumn="false">
  </semanticAttribute>
  <semanticAttribute name="SaleOrderNumber" displayName="Sale Order Number" 
      datatype="mdex:string" isDimension="false" isKeyColumn="false">
  </semanticAttribute>
</attributes>
<metrics>
  <metric name="TotalSales" displayName="Total Sale" datatype="mdex:double">
    <definition>sum(SalesAmount)</definition>
    <property key="currency">$</property>
  </metric>
  <metric name="AvgSales" displayName="Average Sale" datatype="mdex:double">
    <definition>avg(SalesAmount)</definition>
  </metric>
</metrics>
</groups>
<property key="SalesArea">North America</property>
</semanticEntity>

ベース・エンティティに関する注意事項

レコードがEndecaデータ・ドメインにロードされた後、データ・ドメイン内の属性ごとに1つのベース・エンティティ・レコードが作成されます。ベース・エンティティ・レコードは、物理レコードの各属性を定義するPDRに基づいて作成されます。ベース・エンティティは、固有のカスタム・エンティティを作成するための便利な方法を提供します。

注意: ベース・エンティティはシステムに存在する実際の属性から導出されたレコードを表すため、ベース・エンティティを作成、変更または削除することはできません。