What's New
SAP Business Data Cloud (BDC) Connect SDK now supports publishing in SAP Databricks – Views as custom data products — not just physical tables. This unlocks a clean, flexible pattern for sharing data from Databricks environments that use native Databricks types not directly supported by CAP's CDS type system.
The Solution: A View as the Publication Layer
You now create a Databricks View that handles all type conversions at the SQL layer, then publish that view directly. No duplication, no extra tables.
Step 1 — Create a Type-Compatible View
CREATE VIEW demo.default.customer_view AS
SELECT
customer_id,
CAST(loyalty_level AS INT) AS loyalty_level, — TINYINT → cds.Integer
CAST(age_group AS INT) AS age_group, — SMALLINT → cds.Integer
CAST(credit_score AS DOUBLE) AS credit_score, — FLOAT → cds.Double
HEX(profile_hash) AS profile_hash, — BINARY → cds.String
CAST(country_code AS STRING) AS country_code, — CHAR(2) → cds.String
customer_name,
CAST(created_ts AS TIMESTAMP) AS created_ts, — TIMESTAMP_NTZ → cds.Timestamp
TO_JSON(favorite_colors) AS favorite_colors, — ARRAY → JSON String
TO_JSON(preferences) AS preferences, — MAP → JSON String
TO_JSON(address) AS address — STRUCT → JSON String
FROM demo.default.customer_raw;Type mapping reference:
Databricks Type CDS-Compatible Type Conversion
TINYINT / SMALLINT | cds.Integer | CAST(… AS INT) |
FLOAT | cds.Double | CAST(… AS DOUBLE) |
BINARY | cds.String | HEX(…) |
CHAR(n) | cds.String | CAST(… AS STRING) |
TIMESTAMP_NTZ | cds.Timestamp | CAST(… AS TIMESTAMP) |
ARRAY<T>, MAP<K,V>, STRUCT | cds.String (JSON) | TO_JSON(…) |
Step 2 — Install the SDK
pip install sap-bdc-connect-sdkStep 3 — Register the Share with ORD Metadata
you can refer this blog in detail about Data Product Sharing
from bdc_connect_sdk.auth import BdcConnectClient, DataBricksClient
bdc_connect_client = BdcConnectClient(
DataBricksClient(dbutils, “bdc-partner-connect-tenant-<your-tenant-id>”)
)
share_name = “demo_dbx_view”
bdc_connect_client.create_or_update_share(
share_name,
{
“@openResourceDiscoveryV1”: {
“title”: “Demo DBX View”,
“shortDescription”: “Databricks Data Product”,
“description”: “Databricks data product from a View without a primary key”
}
}
)
Step 4 — Generate and Register the CSN Schema
from bdc_connect_sdk.utils import csn_generator
csn_schema = csn_generator.generate_csn_template(share_name)
bdc_connect_client.create_or_update_share_csn(share_name, csn_schema)
The SDK inspects the view schema and auto-generates the CDS Schema Notation (CSN) definition. You can review and adjust it before registering.
Step 5 — Publish
bdc_connect_client.publish_data_product(share_name)The data product is now available in SAP Business Data Cloud for downstream consumption.
Why This Matters
No primary key required. Views do not need a primary key — a common blocker with raw or analytical tables.
Data governance at the SQL layer. The view becomes your data contract. Consumers see a clean, typed schema; the raw table stays untouched. Masking, filtering, and reshaping happen in SQL.
No data redundancy. Type conversion happens on-the-fly in the view — no intermediate tables needed.
Flexible schema evolution. Decouple the physical table from the published schema. Evolve either side independently.
Before vs. After
| Before | Now | |
| Supported source | Delta tables only | Delta tables and Views |
| Type compatibility | Must match CDS types in the table | Cast incompatible types in the view |
| Primary key | Required | Not required for views |
| Data duplication | Sometimes unavoidable | Not needed |
Publishing Databricks Views as SAP BDC custom data products is especially valuable in medallion architectures where bronze/silver layers carry raw SAP Databricks types that are not directly shareable. The view pattern gives data teams a lightweight, maintainable bridge between the Databricks schema world and the SAP data product ecosystem — without modifying or duplicating source data.
