<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: create a new deployment rule to update default lakehouse of all Notebooks in Data Engineering</title>
    <link>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4372346#M6268</link>
    <description>&lt;P&gt;Thanks for the reply. but this lakehouse value would be overwritten every time I dpeloy from DEV to UAT&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 20 Jan 2025 19:14:27 GMT</pubDate>
    <dc:creator>akaur</dc:creator>
    <dc:date>2025-01-20T19:14:27Z</dc:date>
    <item>
      <title>create a new deployment rule to update default lakehouse of all Notebooks</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4372312#M6265</link>
      <description>&lt;P&gt;I see we can use Fabric REST APIs to PATCH notebooks in Fabric&amp;nbsp; but it only updates the notebook descriptions and names. I want to update the default lakehouse of each NB when deploying from DEV to UAT. I want to do it programatically.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/rest/api/fabric/notebook/items/update-notebook?tabs=HTTP" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/rest/api/fabric/notebook/items/update-notebook?tabs=HTTP&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 20 Jan 2025 18:22:58 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4372312#M6265</guid>
      <dc:creator>akaur</dc:creator>
      <dc:date>2025-01-20T18:22:58Z</dc:date>
    </item>
    <item>
      <title>Re: create a new deployment rule to update default lakehouse of all Notebooks</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4372344#M6266</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="356335" data-lia-user-login="akaur" class="lia-mention lia-mention-user"&gt;akaur&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;there is no direct rest api endpoint to set the default lakehouse as of now&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;but to do it programmatically , please give this a try&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;from notebookutils import mssparkutils&lt;/P&gt;&lt;P&gt;mssparkutils.notebook.updateDefinition(&lt;BR /&gt;name="&amp;lt;notebook name&amp;gt;",&lt;BR /&gt;workspaceId="&amp;lt;workspace id of the notebook&amp;gt;",&lt;BR /&gt;defaultLakehouse="&amp;lt;lakehouse name of the new lakehouse&amp;gt;",&lt;BR /&gt;defaultLakehouseWorkspace="&amp;lt;workspace id of new lakehouse to be added&amp;gt;"&lt;BR /&gt;)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The `updateDefinition` function is part of the newer `notebookutils` library, which is the updated version of `mssparkutils`&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;please accept this solution if this is helpful&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;thanks&lt;/P&gt;</description>
      <pubDate>Mon, 20 Jan 2025 19:07:33 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4372344#M6266</guid>
      <dc:creator>nilendraFabric</dc:creator>
      <dc:date>2025-01-20T19:07:33Z</dc:date>
    </item>
    <item>
      <title>Re: create a new deployment rule to update default lakehouse of all Notebooks</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4372345#M6267</link>
      <description>&lt;P&gt;The default lakehouse is part of a notebook's definition, rather than the top level metadata.&amp;nbsp; You would need to use updatedefinition to change it.&lt;BR /&gt;See this link for more information:&amp;nbsp;&amp;nbsp;&lt;A href="https://fabric.guru/programmatically-removing-updating-default-lakehouse-of-a-fabric-notebook" target="_blank" rel="noopener"&gt;https://fabric.guru/programmatically-removing-updating-default-lakehouse-of-a-fabric-notebook&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;If this helps, please consider &lt;EM&gt;Accepting as a Solution&lt;/EM&gt; so others can find it more easily.&lt;/P&gt;</description>
      <pubDate>Mon, 20 Jan 2025 19:17:47 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4372345#M6267</guid>
      <dc:creator>spencer_sa</dc:creator>
      <dc:date>2025-01-20T19:17:47Z</dc:date>
    </item>
    <item>
      <title>Re: create a new deployment rule to update default lakehouse of all Notebooks</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4372346#M6268</link>
      <description>&lt;P&gt;Thanks for the reply. but this lakehouse value would be overwritten every time I dpeloy from DEV to UAT&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 20 Jan 2025 19:14:27 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4372346#M6268</guid>
      <dc:creator>akaur</dc:creator>
      <dc:date>2025-01-20T19:14:27Z</dc:date>
    </item>
    <item>
      <title>Re: create a new deployment rule to update default lakehouse of all Notebooks</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4383439#M6571</link>
      <description>&lt;P&gt;Hi &lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="356335" data-lia-user-login="akaur" class="lia-mention lia-mention-user"&gt;akaur&lt;/a&gt;&amp;nbsp;,&lt;BR /&gt;Thank you for reaching out microsoft fabric community forum.&lt;/P&gt;
&lt;P&gt;May we know how exactly is the solutions provided by&amp;nbsp;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="679603" data-lia-user-login="spencer_sa" class="lia-mention lia-mention-user"&gt;spencer_sa&lt;/a&gt;&amp;nbsp; and&amp;nbsp;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="913195" data-lia-user-login="nilendraFabric" class="lia-mention lia-mention-user"&gt;nilendraFabric&lt;/a&gt;&amp;nbsp; are not meeting your exact requirement, based on that info we will try to look for a better solution.&lt;BR /&gt;Thank you.&lt;/P&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 28 Jan 2025 04:20:17 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4383439#M6571</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2025-01-28T04:20:17Z</dc:date>
    </item>
    <item>
      <title>Re: create a new deployment rule to update default lakehouse of all Notebooks</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4384401#M6606</link>
      <description>&lt;P&gt;Both their solutions are good. but the default lakehouses get overriden when I deploy the 2nd time from dev to UAT. Its hard to create a depoyment rule one by one for each NB. So I was wondering if there is an API call that I can make to create/update deployment rules for all NBs altogther in one shot that updates the default lakehouse.&amp;nbsp;&lt;/P&gt;&lt;P&gt;But I have created a function that loops through all NBs that needs an updated default lakehouse using&amp;nbsp;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="913195" data-lia-user-login="nilendraFabric" class="lia-mention lia-mention-user"&gt;nilendraFabric&lt;/a&gt;&amp;nbsp; `s code.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;# Get Azure AD access token&lt;BR /&gt;access_token = get_access_token(TENANT_ID, CLIENT_ID, CLIENT_SECRET)&lt;BR /&gt;api_url = f'&lt;A href="https://api.fabric.microsoft.com/v1/workspaces/{Workspace_ID}/notebooks" target="_blank"&gt;https://api.fabric.microsoft.com/v1/workspaces/{Workspace_ID}/notebooks&lt;/A&gt;'&lt;BR /&gt;# Set up headers for subsequent calls&lt;BR /&gt;headers = {&lt;BR /&gt;"Content-Type": "application/json",&lt;BR /&gt;"Authorization": f"Bearer {access_token}"&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#get list of all NBs in that workspace&lt;/P&gt;&lt;P&gt;res = requests.get(api_url,headers=headers)&lt;BR /&gt;note = res.json().get("value",[])&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;def update_def_lakehouses(notebook_name, workspace_id):&lt;BR /&gt;try:&lt;BR /&gt;nb = json.loads(notebookutils.notebook.getDefinition(notebook_name, workspaceId=workspace_id))&lt;BR /&gt;except:&lt;BR /&gt;print("Error, check notebook &amp;amp; workspace id")&lt;/P&gt;&lt;P&gt;#check if default LH points to DEV then update&lt;BR /&gt;if nb['metadata']['dependencies']['lakehouse']['default_lakehouse'] == DevWorkspaceID:&lt;BR /&gt;notebookutils.notebook.updateDefinition(&lt;BR /&gt;name = notebook_name,&lt;BR /&gt;workspaceId=Workspace_ID,&lt;BR /&gt;defaultLakehouse="Your NewLH Name",&lt;BR /&gt;defaultLakehouseWorkspace=NewLHWorkspaceID&lt;BR /&gt;)&lt;BR /&gt;print(nb['metadata']['dependencies']['lakehouse'])&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;for i in note:&lt;BR /&gt;if i['type'] == 'Notebook':&lt;BR /&gt;update_def_lakehouses(i['displayName'], Workspace_ID )&lt;/P&gt;</description>
      <pubDate>Tue, 28 Jan 2025 13:08:34 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4384401#M6606</guid>
      <dc:creator>akaur</dc:creator>
      <dc:date>2025-01-28T13:08:34Z</dc:date>
    </item>
    <item>
      <title>Re: create a new deployment rule to update default lakehouse of all Notebooks</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4388709#M6733</link>
      <description>&lt;P&gt;btw, if you use the Sempy python library and FabricRESTClient then you don't need to generate your authentication token as it uses the credentials of the person running the notebook.&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jan 2025 19:06:02 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4388709#M6733</guid>
      <dc:creator>spencer_sa</dc:creator>
      <dc:date>2025-01-30T19:06:02Z</dc:date>
    </item>
    <item>
      <title>Re: create a new deployment rule to update default lakehouse of all Notebooks</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4666116#M8814</link>
      <description>&lt;P&gt;Can somebody explain to my why the code from&amp;nbsp;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="913195" data-lia-user-login="nilendraFabric" class="lia-mention lia-mention-user"&gt;nilendraFabric&lt;/a&gt;&amp;nbsp;is giving me this error:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;Py4JJavaError                             Traceback (most recent call last)
Cell In[20], line 10
      8 print(f"ws : {ws_id}" )
      9 print(f"nb : {current_notebook_name}" )
---&amp;gt; 10 mssparkutils.notebook.notebook.updateDefinition(
     11 name=current_notebook_name,
     12 workspaceId=ws_id,
     13 defaultLakehouse="lh_d_test_for_rest_api",
     14 defaultLakehouseWorkspace=ws_id
     15 )

File ~/cluster-env/trident_env/lib/python3.11/site-packages/notebookutils/notebook.py:67, in updateDefinition(name, content, defaultLakehouse, defaultLakehouseWorkspace, workspaceId, environmentId, environmentWorkspaceId)
     60 def updateDefinition(name,
     61                      content=None,
     62                      defaultLakehouse="",
   (...)
     65                      environmentId="",
     66                      environmentWorkspaceId=""):
---&amp;gt; 67     return nb.updateDefinition(name, content,
     68                                defaultLakehouse,
     69                                defaultLakehouseWorkspace,
     70                                workspaceId,
     71                                environmentId,
     72                                environmentWorkspaceId)

File ~/cluster-env/trident_env/lib/python3.11/site-packages/notebookutils/mssparkutils/handlers/notebookHandler.py:253, in SynapseNotebookHandler.updateDefinition(self, name, content, defaultLakehouse, defaultLakehouseWorkspace, workspaceId, environmentId, environmentWorkspaceId)
    251 defaultLakehouseWorkspace = self._getWorkspaceId(defaultLakehouseWorkspace)
    252 environmentWorkspaceId = self._getWorkspaceId(environmentWorkspaceId)
--&amp;gt; 253 return self.notebookutils.updateDefinition(name, content, defaultLakehouse,
    254                                            defaultLakehouseWorkspace, workspaceId,
    255                                            environmentId, environmentWorkspaceId)

File ~/cluster-env/trident_env/lib/python3.11/site-packages/py4j/java_gateway.py:1322, in JavaMember.__call__(self, *args)
   1316 command = proto.CALL_COMMAND_NAME +\
   1317     self.command_header +\
   1318     args_command +\
   1319     proto.END_COMMAND_PART
   1321 answer = self.gateway_client.send_command(command)
-&amp;gt; 1322 return_value = get_return_value(
   1323     answer, self.gateway_client, self.target_id, self.name)
   1325 for temp_arg in temp_args:
   1326     if hasattr(temp_arg, "_detach"):

File /opt/spark/python/lib/pyspark.zip/pyspark/errors/exceptions/captured.py:179, in capture_sql_exception.&amp;lt;locals&amp;gt;.deco(*a, **kw)
    177 def deco(*a: Any, **kw: Any) -&amp;gt; Any:
    178     try:
--&amp;gt; 179         return f(*a, **kw)
    180     except Py4JJavaError as e:
    181         converted = convert_exception(e.java_exception)

File ~/cluster-env/trident_env/lib/python3.11/site-packages/py4j/protocol.py:326, in get_return_value(answer, gateway_client, target_id, name)
    324 value = OUTPUT_CONVERTER[type](answer[2:], gateway_client)
    325 if answer[1] == REFERENCE_TYPE:
--&amp;gt; 326     raise Py4JJavaError(
    327         "An error occurred while calling {0}{1}{2}.\n".
    328         format(target_id, ".", name), value)
    329 else:
    330     raise Py4JError(
    331         "An error occurred while calling {0}{1}{2}. Trace:\n{3}\n".
    332         format(target_id, ".", name, value))

Py4JJavaError: An error occurred while calling z:notebookutils.notebook.updateDefinition.
: com.microsoft.spark.notebook.msutils.ForbiddenException: Cannot update current artifact definition
	at com.microsoft.spark.notebook.msutils.impl.fabric.MSArtifactUtilsImpl.updateDefinition(MSArtifactUtilsImpl.scala:151)
	at com.microsoft.spark.notebook.msutils.impl.MSNotebookUtilsImpl.updateDefinition(MSNotebookUtilsImpl.scala:768)
	at notebookutils.notebook$.$anonfun$updateDefinition$1(notebook.scala:50)
	at scala.runtime.java8.JFunction0$mcZ$sp.apply(JFunction0$mcZ$sp.java:23)
	at com.microsoft.spark.notebook.common.trident.CertifiedTelemetryUtils$.withTelemetry(CertifiedTelemetryUtils.scala:82)
	at notebookutils.notebook$.updateDefinition(notebook.scala:49)
	at notebookutils.notebook.updateDefinition(notebook.scala)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
	at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)
	at py4j.Gateway.invoke(Gateway.java:282)
	at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
	at py4j.commands.CallCommand.execute(CallCommand.java:79)
	at py4j.GatewayConnection.run(GatewayConnection.java:238)
	at java.base/java.lang.Thread.run(Thread.java:829)&lt;/LI-CODE&gt;&lt;P&gt;&lt;BR /&gt;My code&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;from notebookutils import mssparkutils
import sempy.fabric as fabric

current_notebook_name = notebookutils.runtime.context['currentNotebookName']
ws_id = fabric.get_notebook_workspace_id()
print(f"ws : {ws_id}" )
print(f"nb : {current_notebook_name}" )
mssparkutils.notebook.notebook.updateDefinition(
name=current_notebook_name,
workspaceId=ws_id,
defaultLakehouse="lh_d_test_for_rest_api",
defaultLakehouseWorkspace=ws_id
)&lt;/LI-CODE&gt;&lt;P&gt;Thanks in advance&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 24 Apr 2025 07:18:11 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4666116#M8814</guid>
      <dc:creator>wbeke</dc:creator>
      <dc:date>2025-04-24T07:18:11Z</dc:date>
    </item>
    <item>
      <title>Re: create a new deployment rule to update default lakehouse of all Notebooks</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4666558#M8824</link>
      <description>&lt;P&gt;Looks like you can't update the definition of the running notebook.&lt;BR /&gt;I've tried it interactively (as you have above) and from within a pipeline.&amp;nbsp; I've not tested from within a DAG, but I suspect that'll be the same.&lt;BR /&gt;Incidentally, you get a different error message running it from a pipeline;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Py4JJavaError: An error occurred while calling z:notebookutils.notebook.updateDefinition. : com.microsoft.spark.notebook.msutils.ForbiddenException: Cannot update current artifact definition at &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;I have successfully changed the default lakehouse of another notebook though.&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If this helps, please consider&amp;nbsp;&lt;/SPAN&gt;&lt;EM&gt;Accepting as a Solution&lt;/EM&gt;&lt;SPAN&gt;&amp;nbsp;so others can find it more easily.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 24 Apr 2025 11:31:45 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/create-a-new-deployment-rule-to-update-default-lakehouse-of-all/m-p/4666558#M8824</guid>
      <dc:creator>spencer_sa</dc:creator>
      <dc:date>2025-04-24T11:31:45Z</dc:date>
    </item>
  </channel>
</rss>

