Eclipse Daanse Probe Application β
What is Eclipse Daanse Probe? β
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:
- π Fast Catalog Development: Quickly create, test, and iterate OLAP catalog designs
- π Mock Data Creation: Build realistic test scenarios with CSV-based data simulation
- π OLAP Learning: Comprehensive tutorial collection for mastering multidimensional analysis concepts
- π§ Prototyping: Rapid prototyping of business intelligence solutions
Full OLAP Analysis Server β
Probe is not just a development toolβit's a complete OLAP analysis server that implements the full Eclipse Daanse server stack:
XMLA Protocol Support β
- β Full XMLA Compatibility: Implements XML for Analysis (XMLA) web services
- π Excel Integration: Direct connectivity with Microsoft Excel pivot tables
- π BI Tool Support: Compatible with any XMLA-capable business intelligence tool
Excel Connection β
Connect Microsoft Excel directly to your Probe server:
- Open Excel β Data β Get Data β From Other Sources β From Analysis Services
- Use Excel's Analysis Services connector with endpoint:
http://localhost:8080/xmla
- Or use OLEDB - Connection String:
Provider=MSOLAP;Data Source=http://localhost:8080/xmla
Enterprise-Grade Features β
- Multidimensional Queries: Full MDX (Multidimensional Expressions) query support
- Cube Operations: Drill-down, slice, dice, and pivot operations
- Calculated Members: Dynamic measure and dimension calculations
- Security: Role-based access control and data security
- Caching: Intelligent query result caching for performance
Development-Focused Design β
Live Catalog Reloading β
- π Hot Reload: Modify catalogs and data files while the server is running
- π File Watching: Automatic detection of catalog changes
- β‘ Instant Feedback: See changes immediately without restarts
Tutorial-Rich Environment β
Daanse Server Tutorials ships with 80+ tutorial scenarios covering:
- Basic cube and dimension modeling
- Advanced aggregation strategies
- Parent-child hierarchies and time dimensions
- Security and access control patterns
- KPI and calculated member examples
- Virtual cubes and writeback functionality
Download the Full Tutorial Pack or Learn in our Tutorials Online
Features β
- OLAP Analytics Server: Full-featured multidimensional analysis capabilities
- Tutorial Datasets: Extensive collection of educational examples including:
- Access control tutorials (catalog, column, cube, dimension, hierarchy, member, table)
- Aggregation examples (aggregate tables, exclusions)
- Calculated members and KPI definitions
- Drill-through actions and data exploration
- Parent-child hierarchies and time dimensions
- Virtual cubes and writeback functionality
- Security: Runs as non-root user (UID/GID 1000)
- Logging: Configurable logging with logback
- Data Catalogs: Support for XMI catalog mappings and CSV data files
Running the Probe Server β
Eclipse Daanse Probe can be run in multiple ways depending on your needs and environment.
Container-Based Execution β
Use containers for production deployments, isolated environments, and easy distribution.
Quick Start with Containers β
# 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
Container Parameters Explained β
--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 documnetation-p 8095:8080
: Map host port 8095 to container port 8080-d
: Run in detached modeeclipsedaanse/probe:snapshot
: Container image
Docker Compose β
Use Docker Compose for multi-service setups with databases, reverse proxies, and monitoring:
version: '3.8'
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
Directory Structure β
/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
βββ output/ # Output folder e.g.documentation
βββ log/ # Application logs
Catalog Folder Structure β
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.
Catalog Organization β
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
XMI Mapping Files β
The mapping/catalog.xmi
file describes the OLAP model structure:
- Cubes: Multidimensional data structures
- Dimensions: Ways to slice and analyze data
- Measures: Numeric values to be aggregated
- Database Schema: Logical table and column definitions
- Table Mappings: Relationships between logical and physical data
Data Files (CSV Format) β
The data/
folder simulates database tables using a special CSV format:
CSV File Structure β
"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.
Supported Data Types β
VARCHAR
- String valuesINTEGER
- Whole numbersDECIMAL
- Decimal numbersBIGINT
- Large integersBOOLEAN
- True/false valuesDATE
- Date valuesTIMESTAMP
- Date and time values
Schema Organization β
- Default Schema: CSV files directly in
data/
folder - Named Schemas: CSV files in
data/schema-name/
subfolders - Schema Names: Subfolder names become database schema names
Example: Minimal Cube Catalog β
Here's a complete example of the tutorial.cube.minimal
catalog:
Directory Structure β
tutorial.cube.minimal/
βββ mapping/
β βββ catalog.xmi
βββ data/
βββ Fact.csv
Mapping Definition (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:roma="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping">
<!-- Catalog definition -->
<roma:Catalog id="_catalog_minimal" name="Cube - Minimal"
cubes="_cube_minimal" dbschemas="_databaseSchema_minimal"/>
<!-- Database schema with physical table -->
<roma:DatabaseSchema id="_databaseSchema_minimal">
<tables xsi:type="roma:PhysicalTable" id="_table_fact" name="Fact">
<columns xsi:type="roma:PhysicalColumn" id="_column_fact_key" name="KEY"/>
<columns xsi:type="roma:PhysicalColumn" id="_column_fact_value" name="VALUE" type="Integer"/>
</tables>
</roma:DatabaseSchema>
<!-- Table query -->
<roma:TableQuery id="_query_fact" table="_table_fact"/>
<!-- Physical cube with measures -->
<roma:PhysicalCube id="_cube_minimal" name="MinimalCube" query="_query_fact">
<measureGroups>
<measures xsi:type="roma:SumMeasure" id="_measure_sum"
name="Measure-Sum" column="_column_fact_value"/>
</measureGroups>
</roma:PhysicalCube>
</xmi:XMI>
Data File (data/Fact.csv
) β
"KEY","VALUE"
VARCHAR,INTEGER
A,42
B,21
This creates:
- A cube named "MinimalCube"
- A fact table "Fact" with KEY and VALUE columns
- A sum measure aggregating the VALUE column
- Two data rows with keys A/B and values 42/21
Schema Example β
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.
Creating Custom Catalogs β
To create your own catalog:
Create the directory structure:
bashmkdir -p my-catalog/{mapping,data}
Define the XMI mapping in
my-catalog/mapping/catalog.xmi
Add CSV data files in
my-catalog/data/
Runtime Catalog Management β
π Important: The Eclipse Daanse Probe server provides live catalog monitoring and automatic reloading capabilities:
Dynamic Catalog Updates β
- File Monitoring: The server continuously watches the
/app/catalog/
directory and all subdirectories - Automatic Reloading: Any changes to catalog files trigger automatic reloading into the internal database
- Hot Deployment: No container restart required for catalog updates
Supported Runtime Changes β
- XMI Mapping Files: Modify
catalog.xmi
files to update cube definitions, measures, dimensions - CSV Data Files: Add, modify, or delete CSV files to update table data
- New Catalogs: Add complete new catalog directories
- Schema Changes: Create/modify schema folders and their contents
- File Deletions: Remove catalogs or data files
Development Workflow β
Mount catalog directory with write access (remove
:ro
flag for development):bash# 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:
bash# 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
folderTest changes immediately - no restart needed, connect via odc file in
output/odc
Best Practices β
- Backup Catalogs: Keep backup copies before making changes
- Change Management: Use version control for catalog definitions
- Performance Impact: Large catalog changes may cause temporary performance impact during reload
- Consistent naming: Use descriptive catalog and table names
- Schema organization: Group related tables in schemas
- Data types: Match XMI column types with CSV type definitions
- File encoding: Use UTF-8 encoding for international characters
- Performance: Keep fact tables reasonably sized for tutorials
- Development: Use writable mounts for development, read-only for production
- Monitoring: Watch container logs for catalog reload confirmations
Usage β
XMLA Endpoint β
The Probe server exposes its XMLA (XML for Analysis) endpoint at:
Endpoint URL: http://localhost:8095/xmla
Connecting from Excel β
Excel 2016+:
- Data β Get Data β From Other Sources β From Analysis Services
- Server:
localhost:8095/xmla
- Connection type: HTTP
- Username: Any username (e.g.,
demo
,testuser
, oradmin|role1|role2
) - Password: Leave empty (no password required)
Excel with OLEDB:
- Data β Get Data β From Other Sources β From OLEDB
- Connection string:
Provider=MSOLAP;Data Source=http://localhost:8095/xmla;User ID=demo
- Password: Leave empty
Power BI Desktop:
- Get Data β Analysis Services β Connect live
- Server:
localhost:8095/xmla
- Username: Any username
- Password: Leave empty
Connecting from Other BI Tools β
- Tableau: Use "Microsoft Analysis Services" connector with
localhost:8095/xmla
- Power BI Service: Configure on-premises data gateway pointing to the XMLA endpoint
- Custom Applications: Use any XMLA/OLEDB client library
Authentication & Role Testing β
Eclipse Daanse Probe uses a simplified authentication system designed for development and testing:
Basic Authentication β
- Username: Any username (no validation required)
- Password: Always leave empty (no password needed)
- Purpose: Development-friendly authentication for quick testing
Role-Based Access Control Testing β
For testing catalog security and access control, you can specify roles directly in the username:
Username Format: username|role1|role2|role3|...
Examples β
Basic User:
textUsername: demo Password: (empty) Result: Default access rights
Single Role Testing:
textUsername: testuser|manager Password: (empty) Result: Access with "manager" role permissions
Multiple Roles Testing:
textUsername: admin|sales|finance|reporting Password: (empty) Result: Combined permissions from all specified roles
Role Testing Use Cases β
- π Access Control Validation: Verify that cube and dimension security rules work correctly
- π₯ Multi-Role Scenarios: Test users with multiple organizational roles
- π§ͺ Permission Testing: Validate that restricted data is properly filtered
- π Catalog Security: Ensure tutorial catalogs demonstrate proper security patterns
Troubleshooting β
Common Issues β
Port Already in Use
bash# 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
bash# Ensure correct ownership sudo chown -R 1000:1000 /path/to/catalogs
Memory Issues
bash# Increase memory limit (Docker/Podman) docker run --memory=4g eclipsedaanse/probe:snapshot podman run --memory=4g eclipsedaanse/probe:snapshot
Requirements β
- Java 21+ JRE or JDK
- 512MB+ RAM (recommended: 1GB+)
- Write permissions for log directory
- Network access for XMLA endpoint (port 8080)
Security Considerations β
- Container runs as non-root user (UID 1000)
- Use read-only volume mounts for catalog data
- Implement network policies in production
- Regular security updates for base images
Support β
For issues and feature requests:
- Eclipse Daanse Project: Eclipse Foundation
- GitHub Issues: Report bugs and feature requests
- Documentation: Check the projects Readme Files and (daanse.org)
License β
Eclipse Public License 2.0 (EPL-2.0)
Copyright (c) 2025 Contributors to the Eclipse Foundation