再正規化

再正規化は、Endeca Server内の非正規化データ・モデルにおいても、また複数値属性を分析するときにも重要です。

サンプルのデータ・セットでは、次の例に示すように、Employeesソース・レコードは非正規化状態でTransactions上に存在していました。

DimEmployee_FullName: Tsvi Michael Reiter
DimEmployee_HireDate: 2005-07-01T04:00:00.000Z
DimEmployee_Title: Sales Representative
FactSales_RecordSpec: SO49122-2
FactSales_SalesAmount: 939.588

間違った例

次に示すEQLコードでは、複数のトランザクションに存在する従業員の在籍期間が二重にカウントされてしまいます。
RETURN AvgTenure AS
SELECT
   AVG(CURRENT_DATE - DimEmployee_HireDate) AS AvgTenure
GROUP BY DimEmployee_Title

正しい例

この例では、各従業員を再正規化してから、その結果をFROMを使用して操作します。
DEFINE Employees AS 
SELECT
   ARB(DimEmployee_HireDate) AS DimEmployee_HireDate,
   ARB(DimEmployee_Title) AS DimEmployee_Title
GROUP BY DimEmployee_EmployeeKey;

RETURN AvgTenure AS 
SELECT
   AVG(CURRENT_DATE - DimEmployee_HireDate) AS AvgTenure
FROM Employees 
GROUP BY DimEmployee_Title