ビュー定義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