5.4 Delta Sharing
Key Takeaways
- Delta Sharing is an open protocol for secure data sharing across organizations without copying data.
- The data provider defines shares containing tables/partitions, and recipients access shared data through credentials or open connectors.
- Recipients do not need a Databricks account — they can access shared data using Pandas, Spark, Power BI, or any Delta Sharing-compatible client.
- Databricks-to-Databricks sharing allows seamless access through Unity Catalog without additional client setup.
- Shares can include whole tables, specific partitions, or views with row-level filtering for fine-grained control.
Delta Sharing
Quick Answer: Delta Sharing is an open protocol for sharing live data securely across organizations without copying. Providers create shares containing tables; recipients access shared data using any compatible client (Spark, Pandas, Power BI) — no Databricks account required.
How Delta Sharing Works
Architecture
Data Provider Data Recipient
┌──────────────┐ ┌──────────────────┐
│ Unity Catalog │ ── Share ──> │ Any Delta Sharing │
│ Delta Tables │ (no data copy) │ Compatible Client │
│ + Shares │ │ (Spark, Pandas, │
│ + Recipients │ │ Power BI, etc.) │
└──────────────┘ └──────────────────┘
Key Concepts
| Concept | Description |
|---|---|
| Share | A named collection of tables (or table partitions) to be shared |
| Recipient | An entity (organization, team, user) authorized to access a share |
| Provider | The Databricks account that owns and shares the data |
| Activation link | Credential file sent to recipients for authentication |
Provider Setup (Sharing Data)
Create a Share
-- Create a share
CREATE SHARE customer_data_share;
-- Add tables to the share
ALTER SHARE customer_data_share ADD TABLE prod.sales.orders;
ALTER SHARE customer_data_share ADD TABLE prod.sales.customers;
-- Add a table with partition filtering
ALTER SHARE customer_data_share ADD TABLE prod.sales.orders
PARTITION (region = 'US');
-- Add a view (for row-level filtering)
ALTER SHARE customer_data_share ADD TABLE prod.sales.filtered_orders;
Create a Recipient
-- Open sharing: any Delta Sharing client (non-Databricks)
CREATE RECIPIENT external_partner;
-- Databricks-to-Databricks sharing
CREATE RECIPIENT partner_workspace
USING ID '<partner-metastore-sharing-id>';
-- Grant share access to recipient
GRANT SELECT ON SHARE customer_data_share TO RECIPIENT external_partner;
Manage Shares
-- List all shares
SHOW SHARES;
-- Show tables in a share
SHOW ALL IN SHARE customer_data_share;
-- Show recipients of a share
SHOW GRANTS ON SHARE customer_data_share;
-- Remove a table from a share
ALTER SHARE customer_data_share REMOVE TABLE prod.sales.orders;
-- Drop a share
DROP SHARE customer_data_share;
Recipient Access (Consuming Shared Data)
Databricks-to-Databricks
When both provider and recipient use Databricks:
-- Recipient sees the shared data as a catalog
-- No additional client setup needed
SELECT * FROM partner_share.sales.orders;
Open Sharing (Non-Databricks Recipients)
Recipients download a credential file and use any Delta Sharing client:
# Python with delta-sharing library
import delta_sharing
# Read shared data
profile = "config.share" # Credential file from provider
table_url = profile + "#share_name.schema_name.table_name"
# Read as Pandas DataFrame
df = delta_sharing.load_as_pandas(table_url)
# Read as Spark DataFrame
df = delta_sharing.load_as_spark(table_url)
Supported Open Sharing Clients
- Apache Spark (Python, Scala, Java)
- Pandas (Python)
- Power BI
- Tableau
- Rust, Go, Node.js, and other language connectors
Benefits of Delta Sharing
| Benefit | Description |
|---|---|
| No data copying | Recipients read live data from provider storage |
| Open protocol | No vendor lock-in; works with any compatible client |
| Fine-grained control | Share specific tables, partitions, or filtered views |
| Revocable access | Provider can revoke recipient access instantly |
| Audit trail | All access events logged in Unity Catalog audit logs |
| Fresh data | Recipients always see the latest version of the data |
On the Exam: Know that Delta Sharing does not copy data (recipients read from the provider's storage), recipients do not need Databricks, and shares can include whole tables or filtered partitions/views.
Does a recipient need a Databricks account to access data shared via Delta Sharing?
What happens to the data when a provider shares a Delta table via Delta Sharing?
A data provider wants to share only US region data from their orders table. How can they achieve this with Delta Sharing?