Skip to content

feat: Add support for powerbi datamarts#28050

Open
harshsoni2024 wants to merge 2 commits into
mainfrom
feat/add-support-powerbi-datamarts
Open

feat: Add support for powerbi datamarts#28050
harshsoni2024 wants to merge 2 commits into
mainfrom
feat/add-support-powerbi-datamarts

Conversation

@harshsoni2024
Copy link
Copy Markdown
Contributor

@harshsoni2024 harshsoni2024 commented May 12, 2026

Describe your changes:

Fix #28051

  • Add support for PowerBI datamarts under DashboardDatamodels

Type of change:

  • Bug fix
  • Improvement
  • New feature
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation

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:

  • I have read the CONTRIBUTING document.
  • My PR title is Fixes <issue-number>: <short explanation>
  • My PR is linked to a GitHub issue via Fixes #<issue-number> above.
  • I have commented on my code, particularly in hard-to-understand areas.
  • For JSON Schema changes: I updated the migration scripts or explained why it is not needed.
  • For UI changes: I attached a screen recording and/or screenshots above.
  • I have added tests (unit / integration / Playwright as applicable) and listed them above.

Copilot AI review requested due to automatic review settings May 12, 2026 05:42
@harshsoni2024 harshsoni2024 requested a review from a team as a code owner May 12, 2026 05:42
@github-actions github-actions Bot added Ingestion safe to test Add this label to run secure Github workflows on PRs labels May 12, 2026
@github-actions
Copy link
Copy Markdown
Contributor

✅ TypeScript Types Auto-Updated

The generated TypeScript types have been automatically updated based on JSON schema changes in this PR.

@github-actions github-actions Bot requested a review from a team as a code owner May 12, 2026 05:46
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 PowerBIDatamart to the DashboardDataModel.dataModelType enum 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.

Comment on lines +616 to +624
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 [])
)
Comment on lines +658 to +664
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,
)
Comment on lines +2135 to +2137
elif isinstance(datamodel, Datamart):
# 7. datamart-upstreamDatamart lineage
yield from self.create_datamart_upstream_datamart_lineage(datamodel, datamodel_entity)
@gitar-bot
Copy link
Copy Markdown

gitar-bot Bot commented May 12, 2026

Code Review ✅ Approved

Adds support for PowerBI datamarts under DashboardDatamodels to enable new ingestion capabilities. No issues found.

Options

Display: compact → Showing less information.

Comment with these commands to change:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

@sonarqubecloud
Copy link
Copy Markdown

@github-actions
Copy link
Copy Markdown
Contributor

🔴 Playwright Results — 8 failure(s), 16 flaky

✅ 4055 passed · ❌ 8 failed · 🟡 16 flaky · ⏭️ 92 skipped

Shard Passed Failed Flaky Skipped
✅ Shard 1 299 0 0 4
🔴 Shard 2 747 8 7 14
🟡 Shard 3 780 0 1 7
🟡 Shard 4 788 0 2 18
🟡 Shard 5 707 0 2 41
🟡 Shard 6 734 0 4 8

Genuine Failures (failed on all attempts)

Features/DataQuality/IncidentManagerDateFilter.spec.ts › should show "Created At" as the default sort field label (shard 2)
Error: �[2mexpect(�[22m�[31mreceived�[39m�[2m).�[22mtoBe�[2m(�[22m�[32mexpected�[39m�[2m) // Object.is equality�[22m

Expected: �[32m200�[39m
Received: �[31m400�[39m
Features/DataQuality/IncidentManagerDateFilter.spec.ts › should open sort field dropdown on click (shard 2)
Error: �[2mexpect(�[22m�[31mreceived�[39m�[2m).�[22mtoBe�[2m(�[22m�[32mexpected�[39m�[2m) // Object.is equality�[22m

Expected: �[32m200�[39m
Received: �[31m400�[39m
Features/DataQuality/IncidentManagerDateFilter.spec.ts › should switch to "Updated At" and call API with dateField=updatedAt (shard 2)
Error: �[2mexpect(�[22m�[31mreceived�[39m�[2m).�[22mtoBe�[2m(�[22m�[32mexpected�[39m�[2m) // Object.is equality�[22m

Expected: �[32m200�[39m
Received: �[31m400�[39m
Features/DataQuality/IncidentManagerDateFilter.spec.ts › should switch back to "Created at" and call API with dateField=timestamp (shard 2)
Error: �[2mexpect(�[22m�[31mreceived�[39m�[2m).�[22mtoBe�[2m(�[22m�[32mexpected�[39m�[2m) // Object.is equality�[22m

Expected: �[32m200�[39m
Received: �[31m400�[39m
Features/DataQuality/IncidentManagerDateFilter.spec.ts › should close sort dropdown after selecting an option (shard 2)
Error: �[2mexpect(�[22m�[31mreceived�[39m�[2m).�[22mtoBe�[2m(�[22m�[32mexpected�[39m�[2m) // Object.is equality�[22m

Expected: �[32m200�[39m
Received: �[31m400�[39m
Features/DataQuality/IncidentManagerDateFilter.spec.ts › Date picker shows placeholder by default on Incident Manager page (shard 2)
Error: �[2mexpect(�[22m�[31mreceived�[39m�[2m).�[22mtoBe�[2m(�[22m�[32mexpected�[39m�[2m) // Object.is equality�[22m

Expected: �[32m200�[39m
Received: �[31m400�[39m
Features/DataQuality/IncidentManagerDateFilter.spec.ts › Select and clear date range on Incident Manager page (shard 2)
Error: �[2mexpect(�[22m�[31mreceived�[39m�[2m).�[22mtoBe�[2m(�[22m�[32mexpected�[39m�[2m) // Object.is equality�[22m

Expected: �[32m200�[39m
Received: �[31m400�[39m
Features/IncidentManager.spec.ts › Complete Incident lifecycle with table owner (shard 2)
Error: Wait for incident pw_test_case_1ebe92ab to appear in Incident Manager

�[2mexpect(�[22m�[31mreceived�[39m�[2m).�[22mtoBe�[2m(�[22m�[32mexpected�[39m�[2m) // Object.is equality�[22m

Expected: �[32mtrue�[39m
Received: �[31mfalse�[39m

Call Log:
- Timeout 60000ms exceeded while waiting on the predicate
🟡 16 flaky test(s) (passed on retry)
  • Features/ActivityAPI.spec.ts › Activity event shows the actor who made the change (shard 2, 1 retry)
  • Features/BulkEditEntity.spec.ts › Glossary (shard 2, 2 retries)
  • Features/BulkImport.spec.ts › Keyboard Delete selection (shard 2, 1 retry)
  • Features/KnowledgeCenter.spec.ts › Article mentions in description should working for Knowledge Center (shard 2, 1 retry)
  • Features/KnowledgeCenterTextEditor.spec.ts › Rich Text Editor - Text Formatting (shard 2, 1 retry)
  • Features/KnowledgeCenterTextEditor.spec.ts › Rich Text Editor - Text Formatting (shard 2, 1 retry)
  • Features/KnowledgeCenterTextEditor.spec.ts › Rich Text Editor - Text Formatting (shard 2, 1 retry)
  • Flow/PersonaDeletionUserProfile.spec.ts › User profile loads correctly before and after persona deletion (shard 3, 1 retry)
  • Pages/DataContracts.spec.ts › Create Data Contract and validate for Topic (shard 4, 1 retry)
  • Pages/DataContractsSemanticRules.spec.ts › Validate Description Rule Is_Not_Set (shard 4, 1 retry)
  • Pages/EntityDataConsumer.spec.ts › Tier Add, Update and Remove (shard 5, 1 retry)
  • Pages/ExplorePageRightPanel_KnowledgeCenter.spec.ts › Should remove user owner for knowledgeCenter (shard 5, 1 retry)
  • Pages/Lineage/DataAssetLineage.spec.ts › Column lineage for apiEndpoint -> searchIndex (shard 6, 1 retry)
  • Pages/Lineage/LineageFilters.spec.ts › Verify Impact Analysis service filter selection (shard 6, 1 retry)
  • Pages/ODCSImportExport.spec.ts › Multi-object ODCS contract - object selector shows all schema objects (shard 6, 1 retry)
  • Pages/Users.spec.ts › User Performance across different entities pages (shard 6, 1 retry)

📦 Download artifacts

How to debug locally
# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip    # view trace

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Ingestion safe to test Add this label to run secure Github workflows on PRs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

New Feature: Add support for PowerBI datamarts

2 participants