In one word, "denormalized" summarizes how data is modeled into the Endeca Server. In this case, during data ingestion, we join data together from disparate sources into an Endeca record. The Endeca Server does not model the data that is passed to it, it merely serves it and supplies search and faceted filtering as mechanisms to query it. The Endeca Server is a common record store containing self-describing records. I typically think of a chain of name-value pairs when I think of an Endeca record, where each record shares attributes and their values in common which help power the guided navigation experience.
When consuming records from a database, we typically create a database view that denormalizes the data ahead of time, before it is pushed into the Endeca Server. From a data warehousing perspective, you can think of creating a database view that joins the dimension tables onto the fact table.
Plenty of related topics are often brought up when discussing Endeca data modeling: picking the right "grain" for the Endeca record, ingesting multiple denormalized "record types" into the Endeca Server, etc. Do you have a particular question or are you just looking to understand it better? If the latter you might want to check out some of the resources below:
How to decide the grain when there are two different metrics, Forecast and Actual, at two different levels. Say,for a retail chain Forecast is done at State level whereas Actuals are received at Store for every item sold. So grain of Forecast is State and grain of Actual is Item. In a traditional data mart, we would create two fact tables with their respective grains.
For Endeca, what if I go with just one record type, say "Sales",and bring down and assign Forecast value to every Item sold? So all items sold in all Stores in that State will have the same forecast value. I can use ARB function and group by State to get the right forecast value. The reason I want to do this is to make sure that my dashboard won't break when a Store level filter, say Store Manager, is selected.Will this work or do I need to create two record types, "Forecast" and "Actual"?
Appreciate your thoughts on this approach.