Eclipse Daanse Probe is a rapid development and testing platform for OLAP (Online Analytical Processing) catalogs and multidimensional data analysis. It's designed as the perfect tool for:
Probe is not just a development toolβit's a complete OLAP analysis server that implements the full Eclipse Daanse server stack:
Connect Microsoft Excel directly to your Probe server:
http://localhost:8080/xmlaProvider=MSOLAP;Data Source=http://localhost:8080/xmlaDaanse Server Tutorials ships with 80+ tutorial scenarios covering:
Download the Full Tutorial Packβ or Learn in our Tutorials Onlineβ
Eclipse Daanse Probe can be run in multiple ways depending on your needs and environment.
Use containers for production deployments, isolated environments, and easy distribution.
# Docker
docker run --name probe \
--userns=keep-id \
-v ~/temp/probe/catalog:/app/catalog/:rw,Z \
-v ~/temp/probe/output:/app/output/:rw,Z \
-p 8095:8080 \
-it eclipsedaanse/probe:snapshot
--name probe: Container name-v ~/temp/probe/catalog:/app/catalog/:rw,Z: Mount local catalog directory ( read-write with SELinux context)-v ~/temp/probe/output:/app/output/:rw,Z: Mount the output folder, e.g. for the generated documentation-p 8095:8080: Map host port 8095 to container port 8080 - the single HTTP server carrying the XMLA endpoint (/xmla)-it: Attach a terminal (use -d to run detached instead)eclipsedaanse/probe:snapshot: Container imageUse Docker Compose for multi-service setups with databases, reverse proxies, and monitoring:
services:
probe:
image: eclipsedaanse/probe:snapshot
container_name: daanse-probe
ports:
- "8095:8080"
volumes:
- type: bind
source: ~/temp/probe/catalog
target: /app/catalog/
bind:
selinux: Z
- type: bind
source: ~/temp/probe/output
target: /app/output/
bind:
selinux: Z
- type: bind
source: ./logs
target: /app/log/
bind:
selinux: Z
networks:
- daanse-network
user: "1000:1000"
networks:
daanse-network:
driver: bridge
name: daanse-network
Start services
docker-compose -f compose/docker-compose.yml up -d
The probe carries its own in-memory DuckDB database and loads the CSV files of every catalog into it - no external database is needed or possible.
When running the JAR directly (outside the container), two system properties
adjust the probe. The XMLA endpoint is served on the single HTTP server on
port 8080 at /xmla.
| Property | Default | Description |
|---|---|---|
daanse.probe.catalog.dir | ./catalog | Directory the catalogs are read from (watched for changes) |
daanse.probe.requireLogin | false | Challenge requests instead of accepting them anonymously |
java -Ddaanse.probe.requireLogin=true -Dlogback.configurationFile=./logback.xml -jar daanse.probe.jar
/app/
βββ daanse.probe.jar # Main application JAR
βββ start # Startup script
βββ logback.xml # Logging configuration
βββ catalog/ # Data catalogs and mappings
β βββ */data/ # CSV data files
β βββ */mapping/ # XMI catalog definitions
βββ import/ # Drop zone for catalog imports
βββ output/ # Output folder, e.g. generated documentation and ODC files
βββ log/ # Application logs
The /app/catalog/ directory is the core of the Eclipse Daanse Probe system. It contains OLAP catalogs that define multidimensional data models and their associated data files.
Each catalog is organized in its own subdirectory with the following structure:
catalog/
βββ my-catalog/ # Catalog name (directory)
β βββ mapping/
β β βββ catalog.xmi # XMI mapping definition
β βββ data/ # Database simulation
β βββ table1.csv # Default schema tables
β βββ table2.csv
β βββ schema1/ # Named schema
β βββ table3.csv # Tables in schema1
β βββ table4.csv
The mapping/catalog.xmi file describes the OLAP model structure:
The data/ folder simulates database tables using a special CSV format:
"Column1","Column2","Column3" # Line 1: Header (column names)
VARCHAR,INTEGER,DECIMAL # Line 2: Data types
"Value1",42,123.45 # Line 3+: Data rows
"Value2",84,246.90
Important: Line 2 contains the database column types, not data values.
VARCHAR - String valuesINTEGER - Whole numbersDECIMAL - Decimal numbersBIGINT - Large integersBOOLEAN - True/false valuesDATE - Date valuesTIMESTAMP - Date and time valuesdata/ folderdata/schema-name/ subfoldersHere's a complete example of the tutorial.cube.minimal catalog:
tutorial.cube.minimal/
βββ mapping/
β βββ catalog.xmi
βββ data/
βββ Fact.csv
catalog.xmi)<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:businessinformation="http://www.omg.org/spec/CWM/1.1/foundation/businessinformation" xmlns:relational="http://www.omg.org/spec/CWM/1.1/resource/relational" xmlns:rolapcat="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/catalog" xmlns:rolapcube="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/cube" xmlns:rolapmeas="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/cube/measure" xmlns:rolapsrc="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/database/source">
<rolapcat:Catalog xmi:id="_catalog_cube_minimal" name="Daanse Tutorial - Cube Minimal" importedElement="_schema">
<ownedElement xsi:type="rolapsrc:TableSource" xmi:id="_tablesource_fact" name="Fact" table="_table_fact"/>
<ownedElement xsi:type="rolapcube:PhysicalCube" xmi:id="_physicalcube_minimalcube" name="MinimalCube" source="_tablesource_fact">
<measureGroups xmi:id="_measuregroup_minimalcube" name="MinimalCube">
<measures xsi:type="rolapmeas:SumMeasure" xmi:id="_summeasure_measure_sum" name="Measure-Sum" column="_column_fact_value"/>
</measureGroups>
</ownedElement>
<ownedElement xsi:type="businessinformation:Description" xmi:id="_description_cube_minimal_documentation_und" name="Daanse Tutorial - Cube Minimal_documentation_und" body="Basic cube structure with measures only" language="und" type="documentation" modelElement="_catalog_cube_minimal"/>
</rolapcat:Catalog>
<relational:SQLSimpleType xmi:id="_sqlsimpletype_character_varying" name="CHARACTER VARYING" typeNumber="12"/>
<relational:SQLSimpleType xmi:id="_sqlsimpletype_integer" name="INTEGER" typeNumber="4"/>
<relational:Schema xmi:id="_schema" importer="_catalog_cube_minimal">
<ownedElement xsi:type="relational:Table" xmi:id="_table_fact" name="Fact">
<feature xsi:type="relational:Column" xmi:id="_column_fact_key" name="KEY" type="_sqlsimpletype_character_varying"/>
<feature xsi:type="relational:Column" xmi:id="_column_fact_value" name="VALUE" type="_sqlsimpletype_integer"/>
</ownedElement>
</relational:Schema>
</xmi:XMI>
data/Fact.csv)"KEY","VALUE"
VARCHAR,INTEGER
A,42
B,21
This creates:
For catalogs with multiple schemas like tutorial.database.schema:
tutorial.database.schema/
βββ mapping/
β βββ catalog.xmi
βββ data/
βββ theTable.csv # Default schema
βββ theschema/
β βββ theTable.csv # "theschema" schema
βββ nonref/
βββ theTable.csv # "nonref" schema
Each subfolder (theschema, nonref) becomes a database schema containing the CSV files within it.
To create your own catalog:
Create the directory structure:
mkdir -p my-catalog/{mapping,data}
Define the XMI mapping in my-catalog/mapping/catalog.xmi
Add CSV data files in my-catalog/data/
π Important: The Eclipse Daanse Probe server provides live catalog monitoring and automatic reloading capabilities:
/app/catalog/ directory and all subdirectoriescatalog.xmi files to update cube definitions, measures, dimensionsMount catalog directory with write access (remove :ro flag for development):
# Docker/Podman - Development mode
podman run -v ~/temp/probe/catalog:/app/catalog/:Z -v ~/temp/probe/output:/app/output/:Z -p 8095:8080 eclipsedaanse/probe:snapshot
Edit catalogs using any text editor or IDE
Observe automatic reloading in the container logs:
# Docker/Podman - Watch logs
podman logs -f probe
docker logs -f probe
# Watch for catalog reload messages
Verify Documentation - verify the docs in output/documentation folder
Test changes immediately - no restart needed, connect via odc file in output/odc
The Probe server exposes its XMLA (XML for Analysis) endpoint at:
Endpoint URL: http://localhost:8095/xmla
Excel 2016+:
localhost:8095/xmlademo, testuser, or admin|role1|role2)Excel with OLEDB:
Provider=MSOLAP;Data Source=http://localhost:8095/xmla;User ID=demoPower BI Desktop:
localhost:8095/xmlalocalhost:8095/xmlaEclipse Daanse Probe uses a simplified authentication system designed for development and testing - nothing is verified:
Requests without credentials are served as the stand-in identity probe
carrying the role Administrator. Roles are intersected with the roles a
catalog declares, so this only opens catalogs that actually declare an
Administrator role (the shipped FoodMart tutorial does). Set
-Ddaanse.probe.requireLogin=true to challenge instead.
Daanse Probe)For testing catalog security and access control, you can specify roles directly in the username:
Username Format: username|role1|role2|role3|...
The role names must be roles the catalog declares - roles are intersected
with the catalog's own, and an unknown name leaves the caller with none
(FoodMart declares Administrator, California manager and No HR Cube).
Basic User:
Username: demo
Password: (empty)
Result: Default access rights
Single Role Testing:
Username: testuser|manager
Password: (empty)
Result: Access with "manager" role permissions
Multiple Roles Testing:
Username: admin|sales|finance|reporting
Password: (empty)
Result: Combined permissions from all specified roles
Port Already in Use
# Use different host port (Docker/Podman)
docker run -p 8096:8080 eclipsedaanse/probe:snapshot
podman run -p 8096:8080 eclipsedaanse/probe:snapshot
Permission Issues with Volumes
# Ensure correct ownership
sudo chown -R 1000:1000 /path/to/catalogs
Memory Issues
# Increase memory limit (Docker/Podman)
docker run --memory=4g eclipsedaanse/probe:snapshot
podman run --memory=4g eclipsedaanse/probe:snapshot
For issues and feature requests:
Eclipse Public License 2.0 (EPL-2.0)
Copyright (c) 2025 Contributors to the Eclipse Foundation
Content type
Image
Digest
sha256:08759df52β¦
Size
216.6 MB
Last updated
29 days ago
docker pull eclipsedaanse/probe:snapshot