diff --git a/docs/content/integrations/powerbi.mdx b/docs/content/integrations/powerbi.mdx
index df45d280a6d86..2622ff0df049e 100644
--- a/docs/content/integrations/powerbi.mdx
+++ b/docs/content/integrations/powerbi.mdx
@@ -70,6 +70,10 @@ defs = dg.Definitions(
)
```
+By default, Dagster will attempt to snapshot your entire workspace using Power BI's [metadata scanner APIs](https://learn.microsoft.com/en-us/fabric/governance/metadata-scanning-overview), which are able to retrieve more detailed information about your Power BI assets, but rely on the workspace being configured to allow this access.
+
+If you encounter issues with the scanner APIs, you may disable them using `load_powerbi_asset_specs(power_bi_workspace, use_workspace_scan=False)`.
+
### Customize asset definition metadata for Power BI assets
By default, Dagster will generate asset keys for each Power BI asset based on its type and name and populate default metadata. You can further customize asset properties by passing a custom subclass to the function. This subclass can implement methods to customize the asset keys or specs for each Power BI asset type.
diff --git a/python_modules/libraries/dagster-powerbi/dagster_powerbi/resource.py b/python_modules/libraries/dagster-powerbi/dagster_powerbi/resource.py
index 40b789bad38eb..246f699b223dd 100644
--- a/python_modules/libraries/dagster-powerbi/dagster_powerbi/resource.py
+++ b/python_modules/libraries/dagster-powerbi/dagster_powerbi/resource.py
@@ -383,7 +383,9 @@ def build_defs(
build_semantic_model_refresh_asset_definition(resource_key, spec)
if PowerBITagSet.extract(spec.tags).asset_type == "semantic_model"
else spec
- for spec in load_powerbi_asset_specs(self, dagster_powerbi_translator)
+ for spec in load_powerbi_asset_specs(
+ self, dagster_powerbi_translator, use_workspace_scan=False
+ )
],
resources={resource_key: self},
)
@@ -393,14 +395,14 @@ def build_defs(
def load_powerbi_asset_specs(
workspace: PowerBIWorkspace,
dagster_powerbi_translator: Type[DagsterPowerBITranslator] = DagsterPowerBITranslator,
- use_workspace_scan: bool = False,
+ use_workspace_scan: bool = True,
) -> Sequence[AssetSpec]:
"""Returns a list of AssetSpecs representing the Power BI content in the workspace.
Args:
workspace (PowerBIWorkspace): The Power BI workspace to load assets from.
use_workspace_scan (bool): Whether to scan the entire workspace using admin APIs
- at once to get all content. Defaults to False.
+ at once to get all content. Defaults to True.
Returns:
List[AssetSpec]: The set of assets representing the Power BI content in the workspace.
diff --git a/python_modules/libraries/dagster-powerbi/dagster_powerbi_tests/test_asset_specs.py b/python_modules/libraries/dagster-powerbi/dagster_powerbi_tests/test_asset_specs.py
index 4c6fb7fbde618..1c3ce099ebe8d 100644
--- a/python_modules/libraries/dagster-powerbi/dagster_powerbi_tests/test_asset_specs.py
+++ b/python_modules/libraries/dagster-powerbi/dagster_powerbi_tests/test_asset_specs.py
@@ -64,7 +64,7 @@ def test_translator_dashboard_spec(workspace_data_api_mocks: None, workspace_id:
credentials=PowerBIToken(api_token=fake_token),
workspace_id=workspace_id,
)
- all_assets = load_powerbi_asset_specs(resource)
+ all_assets = load_powerbi_asset_specs(resource, use_workspace_scan=False)
# 1 dashboard, 1 report, 1 semantic model
assert len(all_assets) == 3
@@ -94,8 +94,8 @@ def state_derived_defs_two_workspaces() -> Definitions:
)
return Definitions(
assets=[
- *load_powerbi_asset_specs(resource),
- *load_powerbi_asset_specs(resource_second_workspace),
+ *load_powerbi_asset_specs(resource, use_workspace_scan=False),
+ *load_powerbi_asset_specs(resource_second_workspace, use_workspace_scan=False),
]
)
@@ -125,7 +125,7 @@ def test_refreshable_semantic_model(
workspace_id=workspace_id,
refresh_poll_interval=0,
)
- all_specs = load_powerbi_asset_specs(resource)
+ all_specs = load_powerbi_asset_specs(resource, use_workspace_scan=False)
assets_with_semantic_models = [
build_semantic_model_refresh_asset_definition(resource_key="powerbi", spec=spec)
@@ -235,7 +235,7 @@ def state_derived_defs() -> Definitions:
credentials=PowerBIToken(api_token=fake_token),
workspace_id="a2122b8f-d7e1-42e8-be2b-a5e636ca3221",
)
- powerbi_specs = load_powerbi_asset_specs(resource)
+ powerbi_specs = load_powerbi_asset_specs(resource, use_workspace_scan=False)
@asset
def my_materializable_asset(): ...