All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added PBIP/TMDL project support in
PBIXReader:- Accepts directory paths for PBIP projects
- Accepts
.pbipdescriptor file paths (uses project root) - Parses
.tmdlfiles to extract tables, columns, measures, and relationships
PowerBIExtractor.extract()now works for newer Power BI Project (PBIP/TMDL) inputs that do not containmodel.bim- Prevented accidental directory deletion in cleanup when reader is used in PBIP project mode
- Added integration and unit tests for PBIP/TMDL workflows
- Fixed circular import triggered by
from powerbi_ontology.utils.pbix_reader import PBIXReader - Updated
powerbi_ontology.utilsto use lazy attribute imports so importingpbix_readerdoes not forceOntologyVisualizerand related modules during package initialization
- Fixed packaging configuration so subpackages are included in PyPI distributions (
powerbi_ontology.utils,powerbi_ontology.export, and other nested modules) - Resolved
ModuleNotFoundError: No module named 'powerbi_ontology.utils'after installing from PyPI
- Fixed
AttributeError: 'float' object has no attribute 'lower'inOntologyGenerator._determine_relationship_type()when Power BI model has null/missingtoTableorfromTablein relationships - Added defensive
str()coercion across all extraction points inPowerBIExtractor(entities, relationships, measures, hierarchies, security rules) to handle null/NaN values from Power BI JSON models - Hardened
OntologyGenerator._classify_entity_type(),detect_patterns(), andsuggest_enhancements()against non-string entity/property names
- Bug fixes
- Security improvements
0.1.0 - 2025-01-31
- PBIX Reader: Extract semantic models from Power BI .pbix files (ZIP-based format)
- PowerBI Extractor: Extract entities, relationships, measures, hierarchies, and security rules
- DAX Parser: Parse DAX formulas and convert to structured business rules
- Support for CALCULATE, IF, SWITCH statements
- Dependency identification
- Measure type classification (aggregation, conditional, filter, time intelligence)
- Ontology Generator: Convert Power BI semantic models to formal ontologies
- 70% automatic generation from Power BI models
- Entity and property mapping
- Relationship mapping with cardinality
- Pattern detection (date tables, dimensions, facts)
- Enhancement suggestions
- Schema Mapper: Map logical ontologies to physical data sources
- Schema Drift Detection: Detect column renames/deletions (prevents $4.6M mistakes!)
- Critical drift detection
- Rename detection with heuristic matching
- Type change detection
- Fix suggestions
- Schema Binding Validation: Validate schema bindings before AI agent execution
- Semantic Analyzer: Analyze multiple Power BI dashboards
- Conflict detection across dashboards
- Duplicate logic identification
- Semantic debt calculation ($50K per conflict)
- Canonical definition suggestions
- HTML consolidation reports
- Fabric IQ Exporter: Export ontologies to Microsoft Fabric IQ format
- OntoGuard Exporter: Export to OntoGuard format for validation firewalls
- JSON Schema Exporter: Export to JSON Schema (draft-07) format
- OWL Exporter: Export to OWL/RDF format for semantic web tools
- Contract Builder: Create semantic contracts for AI agents
- Permission management (read, write, execute)
- Business rule integration
- Validation constraints
- Audit settings
- Semantic Contracts: Define agent capabilities and constraints
- Command-line interface with Click framework
extract: Extract ontology from .pbix fileanalyze: Analyze multiple dashboards for conflictsexport: Export to different formatsvalidate: Validate schema bindingsvisualize: Generate ontology visualizationsbatch: Process multiple files
- Entity-Relationship Diagrams: Generate ER diagrams with matplotlib
- Interactive Graphs: Create interactive visualizations with plotly
- Mermaid Diagrams: Export to Mermaid format for documentation
- Multiple Formats: PNG, SVG, PDF, HTML export
- Comprehensive README: Project overview, quick start, examples
- Getting Started Guide: Installation and basic usage
- Power BI Semantic Models Guide: Understanding .pbix structure
- Ontology Format Specification: Ontology structure and definitions
- Fabric IQ Integration Guide: Exporting to Microsoft Fabric
- Use Cases Documentation: Real-world scenarios
- API Reference: Complete API documentation
- Contributing Guide: Guidelines for contributors
- Examples: Supply chain, conflict detection, customer ontology examples
- Comprehensive Test Suite: 85%+ code coverage
- Unit tests for all core modules
- Integration tests for complete workflows
- Schema drift detection tests (100% coverage)
- DAX parsing tests
- Export format validation tests
- CLI command tests
- Test Fixtures: Reusable test data and mocks
- Pytest Configuration: Coverage reporting and test markers
- GitHub Actions Workflows:
- Multi-platform testing (Linux, Windows, macOS)
- Multiple Python versions (3.9, 3.10, 3.11, 3.12)
- Code quality checks (black, flake8, mypy, isort)
- Coverage reporting with Codecov
- Automated releases
- Security scanning (CodeQL, dependency review)
- Issue Templates: Bug reports, feature requests, questions
- Pull Request Template: Comprehensive PR checklist
- License: MIT License
- Setup.py: Package configuration for PyPI
- Requirements Files: Core and development dependencies
- Getting Started guide with 5-minute quick start
- Power BI Semantic Models explained
- Ontology Format specification
- Fabric IQ Integration guide
- Use Cases and examples
- API Reference documentation
- Contributing guidelines
- Code of conduct
- Unit tests for all core modules (>200 test cases)
- Integration tests for complete workflows
- Schema drift detection tests (critical $4.6M prevention)
- DAX parsing tests with multiple scenarios
- Export format validation tests
- CLI command tests with Click's CliRunner
- Test fixtures and sample data
- Coverage reporting with pytest-cov
- Dependency review workflow
- CodeQL security analysis
- Secure handling of .pbix files
- No hardcoded secrets or credentials
0.0.1 - 2025-01-15
- Project initialization
- Basic project structure
- Initial README
- License (MIT)
- Basic setup.py configuration
- Initial .gitignore