Publish SAP Databricks Views as Custom Data Products in SAP Business Data Cloud
Share

[[{“value”:”

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.

2026-09-29_13-08-59 (1).gif

Process Overview with Steps2026-09-29_13-29-46 (1).gif

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(...)

Yogananda_0-1790679670368.png


Step 2 — Install the SDK

pip install sap-bdc-connect-sdk

Step 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.

“}]] 

 [[{“value”:”What’s NewSAP 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.Process Overview with StepsThe Solution: A View as the Publication LayerYou 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 ViewCREATE 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 ConversionTINYINT / SMALLINTcds.IntegerCAST(… AS INT)FLOATcds.DoubleCAST(… AS DOUBLE)BINARYcds.StringHEX(…)CHAR(n)cds.StringCAST(… AS STRING)TIMESTAMP_NTZcds.TimestampCAST(… AS TIMESTAMP)ARRAY<T>, MAP<K,V>, STRUCTcds.String (JSON)TO_JSON(…)Step 2 — Install the SDKpip install sap-bdc-connect-sdkStep 3 — Register the Share with ORD Metadatayou can refer this blog in detail about Data Product Sharingfrom 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 Schemafrom 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 — Publishbdc_connect_client.publish_data_product(share_name)The data product is now available in SAP Business Data Cloud for downstream consumption.Why This MattersNo 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   BeforeNowSupported sourceDelta tables onlyDelta tables and ViewsType compatibilityMust match CDS types in the tableCast incompatible types in the viewPrimary keyRequiredNot required for viewsData duplicationSometimes unavoidableNot neededPublishing 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.”}]] Read More Technology Blog Posts by SAP articles 

#SAPCHANNEL

By ali

Leave a Reply