# IcCube

icCube ist eine Software des gleichnamigen Schweizer Unternehmens, die für seine einbettbare Datenanalyse- und Visualisierungssoftwareplattform bekannt ist, die speziell auf B2B-Software-as-a-Service (SaaS)-Anwendungen, also eingebettete Analysen, zugeschnitten ist.
Seine Kunden bedienen verschiedene Branchen, von Finanzen und Gesundheitswesen bis hin zu E-Commerce und Logistik und vielen anderen. Die Software ermöglicht SaaS-Lösungen aus mehreren Sektoren die Bereitstellung von Datenanalysen, Dashboards und Visualisierungen für ihre jeweiligen Endkunden (d. h. Kundenorientierte Analysen).

## Geschichte

Die Firma icCube wurde 2010 von David Alvarez-Debrot und Marc Polizzi gegründet, da sie den Bedarf an einem Analyseserver erkannten, der sich nahtlos in Produkte von Drittanbietern integrieren lässt.
Die Technologie basiert auf Java und gewährleistet die Kompatibilität mit den meisten Architekturen. Der In-Memory-Server verwendet die Abfragesprache Multidimensional Expressions (MDX), die im Gegensatz zu anderen gängigen Abfragesprachen stark für Analysen optimiert ist.
icCube wurde 2012 mit einem Web Reporting-Server, 2016 mit einer Serverberechnungs-Engine sowie 2022 mit einem Dashboard-Modul auf Basis von TypeScript, React, Redux, und Material UI (MUI) ergänzt.

## Technologie
### Architektur

Das Produkt ist eine vollständig browserbasierte Anwendung, wobei der Server in der Programmiersprache Java gemäß J2EE-Standards implementiert ist. Für Letzteres werden sowohl ein HTTP-Server (Jetty) als auch ein Servlet-Container zur Abwicklung aller Kommunikationsaufgaben eingebettet. Die Berichterstellung wird in TypeScript / React / Redux entwickelt.
Da es sich um einen In-Memory-Server handelt, muss der Server seine Daten nicht von einem RDBMS beziehen; Tatsächlich kann jede Datenquelle verwendet werden, die ihre Daten in tabellarischer Form bereitstellt. Es gibt mehrere Plugins für den Zugriff auf Dateien, HTTP-Streams usw. Der Zugriff auf Datenquellen, die JSON-Objekte verfügbar machen, wird ebenfalls unterstützt (z. B. MongoDB). Die Plattform kümmert sich dann um möglicherweise komplexe Beziehungen (z. B. Viele-zu-Viele), die durch die JSON-Struktur impliziert werden.
icCube verwendet Multidimensional Expressions (MDX) als Abfragesprache und mehrere Erweiterungen der Originalsprache : Funktionsdeklarationen, Vektoren (auch auf Kennzahlenebene), Matrix, Objekte, Java- und R-Integrationen. icCube patentierte einen MDX-Debugger.
Der Zugriff auf die Plattform (Datenmodellierung, Serverüberwachung, MDX-Abfragen, Dashboards) erfolgt über eine Webschnittstelle und eine JSON REST API.

### icCube ausführen

Das Produkt kann vor Ort und/oder in der Cloud selbst bereitgestellt werden. Es ist als Windows-Installer, Linux-ZIP-Datei, Mac-Version und als Docker-Container verfügbar, der im Docker Hub veröffentlicht wird.

### Schlüsselkomponenten
#### Server

* Datenmodellierung – der Builder ermöglicht die Erstellung von Datenmodellen (Schemata) über eine webbasierte Benutzeroberfläche. Alle erforderlichen Teile eines Schemas: Datenquellen, Dimensionen, Hierarchien, berechnete Elemente usw. können dort definiert werden.
* API-Authentifizierung und -Autorisierung (SSO) – icCube hostet einen J2EE-Servlet-Handler (Jetty), um die gesamte Kommunikation mit dem Server abzuwickeln. Die Authentifizierung wird über dedizierte Servlet-Filter und einen internen Authentifizierungsdienst konfiguriert. Beide können über dedizierte Java-Plugins geändert werden, um Unternehmensrichtlinien (z. B. SSO) zu erfüllen. Einige Kunden verwenden beispielsweise Windows SSO, verschlüsselte Web-Token usw. Die Autorisierung wird mithilfe von Rollen erreicht, die Zugriff auf Ressourcen gewähren (d. h. Überwachung, Schema-Builder, Schema-Daten). Rollen können innerhalb von icCube definiert oder spontan generiert werden, wenn Benutzer mithilfe dedizierter Informationen (z. B. einer Liste von Schemata, auf die die Benutzer Zugriff haben) eine Verbindung zur Plattform herstellen.
* Verwaltungs-API – Für die Verwaltung des Servers und der verfügbaren Schemata wird eine REST-API (d. h. JSON über HTTP-Anfragen) bereitgestellt.

#### Dashboards

Die Anwendung „Dashboards“ ermöglicht die Erstellung webbasierter Dashboards, basierend auf Widgets, Gadgets und Ereignissen:
* Widgets sind visuelle Elemente wie Grafiken, Diagramme, Karten, Filter usw.
* Gadgets sind vorkonfigurierte, wiederverwendbare Widgets.
* Ereignisse verwalten Interaktionen zwischen Widgets. Beispielsweise generiert ein Filter ein Ereignis, das eine Aktion in einem Diagramm auslöst. Außerdem können Widgets auch Ereignisse enthalten und Aktionen aufeinander ausüben.

### icCube einbetten

Die icCube Dashboards API ermöglicht:
* Entwicklung neuer Themen, Widgets (Diagramme, Karten usw.), Datentransformationen usw.
** Plugin dev kit
** Github: ic3-reporting-api
** Beispiele für Quellcodes
* einbetten von icCube Dashboards in eine Webanwendung
** Embedded API
** Github: ic3-reporting-api-embedded

## AnalyticsOps

Mit icCube v8.4.10 wurde ein neues öffentliches Github-Projekt veröffentlicht: ic3-analytics-ops. Diese Projekte ermöglichen das (automatisierte) Testen der mit icCube erstellten Analysen und Dashboards.