feat: Add support for powerbi datamarts#28050
Conversation
✅ TypeScript Types Auto-UpdatedThe generated TypeScript types have been automatically updated based on JSON schema changes in this PR. |
There was a problem hiding this comment.
Pull request overview
This PR extends OpenMetadata’s dashboard data model support to include Power BI Datamarts, enabling them to be ingested as DashboardDataModel entities and participate in ownership and lineage extraction.
Changes:
- Add
PowerBIDatamartto theDashboardDataModel.dataModelTypeenum in the JSON schema. - Extend the PowerBI ingestion models to parse datamarts and their upstream datamart references.
- Update the PowerBI ingestion source to ingest datamarts as data models, set their source URLs, map owner access rights, and emit upstream datamart lineage.
Reviewed changes
Copilot reviewed 3 out of 5 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| openmetadata-spec/src/main/resources/json/schema/entity/data/dashboardDataModel.json | Adds PowerBIDatamart as a supported dataModelType value. |
| ingestion/src/metadata/ingestion/source/dashboard/powerbi/models.py | Introduces Datamart-related Pydantic models and adds datamarts to workspace parsing. |
| ingestion/src/metadata/ingestion/source/dashboard/powerbi/metadata.py | Ingests datamarts as DashboardDataModel, adds URL helper, owner access-right mapping, and upstream lineage emission. |
| def _get_datamodels_list(self) -> List[Union[Dataset, Dataflow, Datamart]]: # noqa: UP006, UP007 | ||
| """ | ||
| Get All the Powerbi Datasets | ||
| """ | ||
| return self.context.get().workspace.datasets + self.context.get().workspace.dataflows | ||
| return ( | ||
| self.context.get().workspace.datasets | ||
| + self.context.get().workspace.dataflows | ||
| + (self.context.get().workspace.datamarts or []) | ||
| ) |
| elif isinstance(dataset, Datamart): | ||
| data_model_type = DataModelType.PowerBIDatamart.value | ||
| datamodel_columns = [] | ||
| source_url = self._get_datamart_url( | ||
| workspace_id=self.context.get().workspace.id, | ||
| datamart_id=dataset.id, | ||
| ) |
| elif isinstance(datamodel, Datamart): | ||
| # 7. datamart-upstreamDatamart lineage | ||
| yield from self.create_datamart_upstream_datamart_lineage(datamodel, datamodel_entity) |
Code Review ✅ ApprovedAdds support for PowerBI datamarts under DashboardDatamodels to enable new ingestion capabilities. No issues found. OptionsDisplay: compact → Showing less information. Comment with these commands to change:
Was this helpful? React with 👍 / 👎 | Gitar |
|
🔴 Playwright Results — 8 failure(s), 16 flaky✅ 4055 passed · ❌ 8 failed · 🟡 16 flaky · ⏭️ 92 skipped
Genuine Failures (failed on all attempts)❌
|



Describe your changes:
Fix #28051
Type of change:
High-level design:
N/A — small change.
Tests:
Use cases covered
Unit tests
Backend integration tests
Ingestion integration tests
Playwright (UI) tests
Manual testing performed
UI screen recording / screenshots:
Not applicable.
Checklist:
Fixes <issue-number>: <short explanation>Fixes #<issue-number>above.