Analytica is built on 3 core concepts, which make it uniquely suited to non-relational data and NoSQL databases.
Analytica implements a native JSON/BSON data model at all levels of its architecture. Consequently, as data is read from a database, analyzed, and finally presented, it retains its rich document-oriented structure. A user is able to access the same document structures as are present in the database, down to the scalar properties and their types, without losing fidelity or having to flatten out their structure. This prevents “impedance mismatch” as data is analyzed
Hierarchical Document Algebra
All JSON document access is done through Analytica Script, a language that implements a hierarchical document algebra. Properties are accessed using dot notation. For example, “GAMES.players” refers to the “players” collection in the database “GAMES”. “GAMES.players.login” refers to the scalar property “login” inside the documents of “players”.
Any operations on JSON documents, retrieval or update, are expressed in hierarchical form. “GAMES.players.login” retrieves the login property from all players. And the result is a (temporary) collection of JSON documents, each containing the “login” property.
The algebra supports retrieval functions, string and date manipulation functions and many mathematical functions. In addition, it supports document-specific joins, projections, ordering, and group-by operations.
Data Model Augmentation
A key concept in Analytica is the use of calculated properties and calculated collections, which are extensions or augmentations to your data model. Calculated (or virtual) properties can be added to documents by defining their location and an expression to compute its value. For example, set(GAMES.players.totalscore, sum(games.sessions.score)) defines a calculated (virtual) property called “totalscore” as property in each document of the collection “players”. The value is the sum aggregation of the scores of the player across all sessions and games the player has ever played. This property can then be reused in subsequent computations. An Analytica user formulates the reporting needs in terms of these additional properties and their computation. In addition to calculated properties, collections can filtered, grouped or transformed into calculated collections and any properties calculated on base collections is available in their derived calculated collections. This allows one to iteratively develop complicated calculations and models without having to worry about result set management.
Developed to enable quick and powerful analysis on non-relational data, these three concepts are the cornerstones of Analytica. You can see how these work in practice in an introductory tutorial, Analytica in 5 Steps