再正規化

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

サンプルのデータ・セットでは、次の例に示すように、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
FROM EmployeeState
GROUP BY DimEmployee_Title

正しい例

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

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