Microsoft Fabric external data sharing is a powerful feature that
allows us to share data with external users. This is particularly
interesting because it enables data to be shared in-place from
the sharer’s tenant without any data copy. We simply create shortcuts.
The use case for the customer in question involves data from
Microsoft Dynamics 365 (D365) residing on two different Azure
tenants. I needed a solution to share data from one tenant to the
other.
The sempy Python library in Fabric is quite powerful and offers a
range of capabilities that make working with Fabric environments more
efficient and flexible. One of the most useful features I’ve
implemented in my projects is the ability to trigger semantic model
refreshes directly from a Spark notebook.
This approach allows to trigger the refresh right after the data load
is finished.
import sempy.fabric as fabric
import time
workspace = fabric.resolve_workspace_name()
dataset = "My_Amazing_Semantic_Model"
refresh_request_id = fabric.refresh_dataset(workspace=workspace, dataset=dataset, refresh_type="full")
# refresh api is async, so we need to poll until it completes
while True:
time.sleep(60)
res = fabric.get_refresh_execution_details(
dataset=dataset, workspace=workspace, refresh_request_id=refresh_request_id
)
if res.status != "Unknown":
break
if res.status == "Completed":
print(f"Refresh Dataset completed with success {res.extended_status}")
else:
errors = res.messages["Message"].str.cat(sep="\n")
raise Exception(f"Refresh Dataset failed: \n\n{errors}")
This script starts by resolving the current workspace and identifying
the target dataset. It then initiates a full refresh of that dataset
and waits for the process to complete, checking periodically for
updates.