プライマリ・コンテンツに移動
Oracle® Big Data Discovery Cloud Service Studioユーザー・ガイド

E65365-05
目次へ
目次
索引へ移動
索引

前
次
機械翻訳について

EQLを使用してビューを定義するためのガイドライン

ビュー定義EQLでビューのコンテンツが定義されます。 ビューを定義する際には、次のガイドラインに留意する必要があります。 EQL構文の詳細は、「EQLリファレンス」を参照してください。

View DEFINEおよびSELECT文

ビュー定義には、複数のDEFINE文とSELECT文を含めることができます。

最後の文は、すべてのビュー属性を含むDEFINE文である必要があります。 このDEFINE文の名前はビューのキーとして使用されているため、変更できません。 既存のビューの表示キーを変更しようとすると、対応するコンポーネントが機能しなくなります。

RETURN文の表示

「EQLリファレンス」では、コード例にRETURN文が使用されますが、Studioで作成するビューにRETURN文を追加しないでください。 StudioはEQLをRETURN文で自動的にラップします。

EQLの例を「EQLリファレンス」からビューにコピーしてから、RETURN文を削除できます。 これにより、Studioは暗黙的なRETURNを使用してEQLをラップし、例は正しく機能します。 RETURNを明示的に追加すると、ビューは失敗します。

ビュー属性のソース・ビューの提供

すべてのカスタム・ビュー定義では、FROMパラメータを使用してビュー属性の元のソースを指定する必要があります。

たとえば、ベース・ビューのコピーを作成すると、ビュー定義にそのベース・ビューのビュー・キーが含まれていることがわかります。

DEFINE Customers as SELECT 
ARB(Customer_Name) as Customer_Name,
ARB (Customer_Address) as Customer_Address,
ARB(Cities) as Cities,
ARB(States) as States,
ARB(CustomerZip) as CustomerZip,
ARB(LatLong) as LatLong,
ARB(Business_Types) as Business_Types,
ARB(CustomerAgreedDaysCredit) as CustomerAgreedDaysCredit,
ARB(Credit_Rating) as Credit_Rating,
ARB(CustomerDiscount) as CustomerDiscount,
SUM(Number_of_Cases_Sold) as TotalCustomerCases,
CountDistinct(Transaction_Id) as TotalCustomerTransactions,
SUM(GrossDollars) as TotalCustomerGross,
SUM(MarginDollars) as TotalCustomerMargin,
SET(Shipping_Companies) as ShippingCompaniesUsed
FROM "wine-sales"
GROUP BY Customer_Id

ソース・ビューを識別する場合、ビューの表示名ではなく、必ずビュー・キーを使用してください。

また、別のビューを参照する場合は、他のビューの属性を識別する最終的なDEFINE文のみを参照できます。 そのビュー定義の中間のDEFINE文またはSELECT文は参照できません。

ビューのグループ化

すべてのカスタム・ビューには、少なくとも1つのグループ(GROUP BY)属性が必要です。

Studioでは、GROUP BY属性がビュー・レコードの識別属性として使用されます。

GROUP BY属性がない場合、識別属性はありません。ビューは「レコード詳細」または「比較」では使用できません。 コンポーネント編集ビューで、「レコード詳細」および「比較」オプションが自動的に無効になります。

グループ化に複数値属性を使用

グループ化に複数値属性を使用する場合は、個々の値でグループ化するか、レコードに割り当てられた値のセットによってグループ化するかを指定する必要があります。
  • 値のセットでグループ化するには、GROUP BYを使用します。
  • 個々の値でグループ化するには、GROUP BY MEMBERSを使用します。 GROUP BY MEMBERSの構文は、GROUP BYとは若干異なります:
    GROUP BY MEMBERS(attributeName) as attributeName

たとえば、次のデータは、使用可能な製品の色と各製品を所有するコンセント数を示しています:

ItemColors AvailableOutlets
赤、青 3
5
赤、青、白 6
赤、青、白 4
赤、青 1
品目の色でグループ化した使用可能なコンセントの合計数を計算する場合は、次のようにします:
  • DEFINE NewView as SELECT TotalOutlets as sum(AvailableOutlets) FROM Sales GROUP BY ItemColorsを使用すると、次のような結果になります:
    ItemColors TotalOutlets
    赤、青 4
    5
    赤、青、白 10
  • DEFINE NewView as SELECT TotalOutlets as SUM(AvailableOutlets) FROM Sales GROUP BY MEMBERS(ItemColors) as ItemColorsを使用すると、次のような結果になります:
    ItemColors TotalOutlets
    19
    14
    10

ビュー属性をグループ化する際の集計メソッドの提供

ビューを定義する際に、グループ化を使用している場合は、グループ化属性を除いて、ビュー内のすべての属性に集計メソッドを指定する必要があります。

集計を使用して物理属性から属性を導出する場合、属性データ型に適用可能な集計メソッドを使用できます。 「集計メソッドおよびこれらのメソッドを使用可能なデータ型」を参照してください。

場合によっては、グループ化されたビューに物理属性の実際の値を表示することがあります。 たとえば、製品識別子別にグループ化する場合は、製品名、製品説明および使用可能なサイズを含めることができます。 ビューのグループ化を使用する場合、物理属性の実際の値を含めるには:
  • 単一値の属性には、ARBの集計メソッドを使用します。 次に例を示します。
    SELECT ARB(Region) as Region

    グループ化内の属性に異なる値が存在する場合は、Studioによって単一の任意の値が選択されます。

  • 複数値属性の場合:
    • 各レコードから属性の単一の任意の値を取得するには、ARB集計メソッドを使用します。 次に例を示します。
      SELECT ARB(ItemColors) as ItemColors
    • レコードの完全な値セットを取得するには、SET_UNIONS集計メソッドを使用します。 次に例を示します。
      SELECT SET_UNIONS(ItemColors) as ItemColors

グループ化を使用していない場合、集計メソッドは必要ありません。 次に例を示します。

SELECT ProductName as ProductName

この場合は、名前を指定する必要はないため、次のように指定することもできます:

SELECT ProductName

ビュー属性の命名

ビュー内で属性に名前を付ける場合:
  • 物理データから(別名とも呼ばれる)属性の名前を変更しないでください。

    たとえば、Region属性の場合、ビューに属性を追加するときにはRegionとして定義します。

    SELECT ARB(Region) AS Region

    次のように、異なる名前で属性を定義しないでください:

    SELECT ARB(Region) AS RegionList

    エンド・ユーザーは、物理データに存在する属性によってのみ調整できます。 属性に別名を付けると、エンド・ユーザーはその属性を絞込みに使用できなくなります。

  • 導出属性には、物理データからの属性と同じ名前を付けないでください。

    たとえば、Sales属性の値を平均化する属性の場合、新しい属性を次のように定義しないでください:

    SELECT AVG(Sales) as Sales

    かわりに、次のようなコードを使用します:

    SELECT AVG(Sales) as AvgSales

    また、これにより、物理データに含まれていない属性によってエンド・ユーザーが絞込みを試行するのを防ぐこともできます。

サンプルのビュー定義

次に、個別のトランザクションで構成される単一のデータ・セットから、価格、使用可能な色、販売番号など、製品のリストを生成するEQL問合せの例を示します。

DEFINE Products AS SELECT
ARB(ProductSubcategoryName) AS ProductSubcategoryName,
ARB(ProductCategoryName) AS ProductCategoryName,
ARB(Description) AS Description,
SET_UNIONS(AvailableColors) AS AvailableColors,
AVG("FactSales_SalesAmount") AS AvgSales,
SUM("FactSales_SalesAmount") AS SalesSum,
AVG(StandardCost) AS AvgStandardCost,
AVG(ListPrice) AS AvgListPrice,
(AvgListPrice - AvgStandardCost) AS Profit
FROM Sales
GROUP BY ProductName