<?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: Delta sharing for external table to external users who has no access to external storage? in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/delta-sharing-for-external-table-to-external-users-who-has-no/m-p/108861#M43163</link>
    <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/147359"&gt;@tonykun_sg&lt;/a&gt;,&lt;/P&gt;&lt;P class=""&gt;It looks like ADLS Gen2 might be restricting access to the data through an ACL, which is why Databricks allows access but the underlying files remain protected. Could you check with your team to temporarily enable access for testing?&lt;/P&gt;&lt;P class=""&gt;Another option to consider is creating a &lt;SPAN class=""&gt;&lt;STRONG&gt;Service Principal&lt;/STRONG&gt;&lt;/SPAN&gt; with a token that has access to a &lt;SPAN class=""&gt;&lt;STRONG&gt;Databricks SQL Warehouse&lt;/STRONG&gt;&lt;/SPAN&gt;. The user could authenticate with the Service Principal, send a request to the warehouse, and retrieve the data—all without needing direct access to the storage.&lt;/P&gt;&lt;P class=""&gt;Additionally, &lt;SPAN class=""&gt;&lt;STRONG&gt;permissions can be refined&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp;(Unity Catalog) to allow access &lt;SPAN class=""&gt;&lt;STRONG&gt;only to the selected tables&lt;/STRONG&gt;&lt;/SPAN&gt;, ensuring that the user gets access strictly to the necessary datasets.&lt;/P&gt;&lt;P class=""&gt;This approach wouldn’t even require a Python script; the user could do everything through &lt;SPAN class=""&gt;&lt;STRONG&gt;DBeaver or a similar SQL client&lt;/STRONG&gt;&lt;/SPAN&gt;. Let me know if this sounds like a viable workaround for your case!&lt;BR /&gt;&lt;BR /&gt;&lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
    <pubDate>Tue, 04 Feb 2025 23:52:27 GMT</pubDate>
    <dc:creator>Isi</dc:creator>
    <dc:date>2025-02-04T23:52:27Z</dc:date>
    <item>
      <title>Delta sharing for external table to external users who has no access to external storage?</title>
      <link>https://community.databricks.com/t5/data-engineering/delta-sharing-for-external-table-to-external-users-who-has-no/m-p/108334#M43040</link>
      <description>&lt;P&gt;We used delta sharing (authentication type: token) to generate the config.share file and share with external users not from our organisation, the users faced the "FileNotFoundError" error while using&amp;nbsp;python "delta_sharing.load_as_pandas" method to read the external table (underlying storage in Azure ADLS gen2). Looks like because the users have no access to our private ADLS gen2. We attempted to whitelist ip in storage networking settings, but no use. How to resolve the issue?&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 02 Feb 2025 04:33:51 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/delta-sharing-for-external-table-to-external-users-who-has-no/m-p/108334#M43040</guid>
      <dc:creator>tonykun_sg</dc:creator>
      <dc:date>2025-02-02T04:33:51Z</dc:date>
    </item>
    <item>
      <title>Re: Delta sharing for external table to external users who has no access to external storage?</title>
      <link>https://community.databricks.com/t5/data-engineering/delta-sharing-for-external-table-to-external-users-who-has-no/m-p/108468#M43056</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/147359"&gt;@tonykun_sg&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;I don't think it has to do with credentials issue at this point, otherwise it would have failed with permission denied.&lt;/P&gt;
&lt;P&gt;Looks like this might not be correct:&amp;nbsp;&lt;/P&gt;
&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;The profile URL &lt;/SPAN&gt;config.share#tony-sharing-test.bronze.saps4_config_dd031_t_d&lt;SPAN class="s1"&gt; might be incorrect&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 02 Feb 2025 22:10:19 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/delta-sharing-for-external-table-to-external-users-who-has-no/m-p/108468#M43056</guid>
      <dc:creator>Alberto_Umana</dc:creator>
      <dc:date>2025-02-02T22:10:19Z</dc:date>
    </item>
    <item>
      <title>Re: Delta sharing for external table to external users who has no access to external storage?</title>
      <link>https://community.databricks.com/t5/data-engineering/delta-sharing-for-external-table-to-external-users-who-has-no/m-p/108473#M43060</link>
      <description>&lt;P&gt;Hey&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/147359"&gt;@tonykun_sg&lt;/a&gt;&amp;nbsp;,&lt;BR /&gt;&lt;BR /&gt;I share with you a complete example of delta sharing &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;import delta_sharing
import json

# Point to the profile file. It can be a file on the local file system or a file on a remote storage.
profile_file = "config.share"

# Create a SharingClient.
client = delta_sharing.SharingClient(profile_file)

# Show tables
tables = client.list_all_tables()
for t in tables:
    print(t)

# Read table
table_url = profile_file + "#&amp;lt;share-name&amp;gt;.&amp;lt;schema-name&amp;gt;.&amp;lt;table-name&amp;gt;"
df_table = delta_sharing.load_as_pandas(table_url)
print(df_table.head())

# Read using table predicates example

predicate_hints = {
    "op": "and",
    "children": [
        {
            "op": "equal",
            "children": [
                {"op": "column", "name": "is_outlet", "valueType": "int"},
                {"op": "literal", "value": 0, "valueType": "int"}
            ]
        },
        {
            "op": "equal",
            "children": [
                {"op": "column", "name": "iso_country", "valueType": "string"},
                {"op": "literal", "value": "AD", "valueType": "string"}
            ]
        }
    ]
}

predicate_hints_json = json.dumps(predicate_hints)

df_table_2 = delta_sharing.load_as_pandas(
    table_url,
    jsonPredicateHints=predicate_hints_json
)

print(df_table_2.head())&lt;/LI-CODE&gt;&lt;P&gt;In my example my config.share is in the same path, locally. Maybe you could save in Azure Key Vault retrieve the value and save in temporary file to avoid this problem.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Hope this helps &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 02 Feb 2025 22:40:44 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/delta-sharing-for-external-table-to-external-users-who-has-no/m-p/108473#M43060</guid>
      <dc:creator>Isi</dc:creator>
      <dc:date>2025-02-02T22:40:44Z</dc:date>
    </item>
    <item>
      <title>Re: Delta sharing for external table to external users who has no access to external storage?</title>
      <link>https://community.databricks.com/t5/data-engineering/delta-sharing-for-external-table-to-external-users-who-has-no/m-p/108490#M43064</link>
      <description>&lt;P&gt;Hi Albert&lt;/P&gt;&lt;P&gt;I used a similar way as&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/145555"&gt;@Isi&lt;/a&gt;&amp;nbsp; suggested, I put the config.share file in the local directory, and I can list the table successfully. But the error occured while loading as pandas dataframe, indicating access issue to underlying storage. Thanks for the response.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 03 Feb 2025 02:34:34 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/delta-sharing-for-external-table-to-external-users-who-has-no/m-p/108490#M43064</guid>
      <dc:creator>tonykun_sg</dc:creator>
      <dc:date>2025-02-03T02:34:34Z</dc:date>
    </item>
    <item>
      <title>Re: Delta sharing for external table to external users who has no access to external storage?</title>
      <link>https://community.databricks.com/t5/data-engineering/delta-sharing-for-external-table-to-external-users-who-has-no/m-p/108505#M43068</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/145555"&gt;@Isi&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;Thanks for sharing your scripts,&amp;nbsp; I can listed the tables created in the share, however, data loading was blocked while using "load_as_pandas" method if I disable my vpn. Once vpn was enabled, I can access the private storage, then the dataset can be read successfully. In my opinion, the external user must have direct access to the storage as well. I'm not sure if my understanding is correct or not.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 03 Feb 2025 05:38:55 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/delta-sharing-for-external-table-to-external-users-who-has-no/m-p/108505#M43068</guid>
      <dc:creator>tonykun_sg</dc:creator>
      <dc:date>2025-02-03T05:38:55Z</dc:date>
    </item>
    <item>
      <title>Re: Delta sharing for external table to external users who has no access to external storage?</title>
      <link>https://community.databricks.com/t5/data-engineering/delta-sharing-for-external-table-to-external-users-who-has-no/m-p/108861#M43163</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/147359"&gt;@tonykun_sg&lt;/a&gt;,&lt;/P&gt;&lt;P class=""&gt;It looks like ADLS Gen2 might be restricting access to the data through an ACL, which is why Databricks allows access but the underlying files remain protected. Could you check with your team to temporarily enable access for testing?&lt;/P&gt;&lt;P class=""&gt;Another option to consider is creating a &lt;SPAN class=""&gt;&lt;STRONG&gt;Service Principal&lt;/STRONG&gt;&lt;/SPAN&gt; with a token that has access to a &lt;SPAN class=""&gt;&lt;STRONG&gt;Databricks SQL Warehouse&lt;/STRONG&gt;&lt;/SPAN&gt;. The user could authenticate with the Service Principal, send a request to the warehouse, and retrieve the data—all without needing direct access to the storage.&lt;/P&gt;&lt;P class=""&gt;Additionally, &lt;SPAN class=""&gt;&lt;STRONG&gt;permissions can be refined&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp;(Unity Catalog) to allow access &lt;SPAN class=""&gt;&lt;STRONG&gt;only to the selected tables&lt;/STRONG&gt;&lt;/SPAN&gt;, ensuring that the user gets access strictly to the necessary datasets.&lt;/P&gt;&lt;P class=""&gt;This approach wouldn’t even require a Python script; the user could do everything through &lt;SPAN class=""&gt;&lt;STRONG&gt;DBeaver or a similar SQL client&lt;/STRONG&gt;&lt;/SPAN&gt;. Let me know if this sounds like a viable workaround for your case!&lt;BR /&gt;&lt;BR /&gt;&lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 04 Feb 2025 23:52:27 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/delta-sharing-for-external-table-to-external-users-who-has-no/m-p/108861#M43163</guid>
      <dc:creator>Isi</dc:creator>
      <dc:date>2025-02-04T23:52:27Z</dc:date>
    </item>
  </channel>
</rss>

